diff --git a/lbstep.py b/lbstep.py index 0814f0fcea3c927b4c06ef7b67a23e6184a587ad..593aa955261803abdcfcd1053c9c0af622c5d125 100644 --- a/lbstep.py +++ b/lbstep.py @@ -36,6 +36,8 @@ class LatticeBoltzmannStep: method_parameters['stencil'] = 'D2Q9' if data_handling.dim == 2 else 'D3Q27' method_parameters, optimization = update_with_default_parameters(method_parameters, optimization) + field_dtype = np.float64 if optimization['double_precision'] else np.float32 + del method_parameters['kernel_type'] if lbm_kernel: @@ -55,18 +57,18 @@ class LatticeBoltzmannStep: self._gpu = target == 'gpu' layout = optimization['field_layout'] self._data_handling.add_array(self._pdf_arr_name, values_per_cell=q, gpu=self._gpu, layout=layout, - latex_name='src') + latex_name='src', dtype=field_dtype) self._data_handling.add_array(self._tmp_arr_name, values_per_cell=q, gpu=self._gpu, cpu=not self._gpu, - layout=layout, latex_name='dst') + layout=layout, latex_name='dst', dtype=field_dtype) if velocity_data_name is None: self._data_handling.add_array(self.velocity_data_name, values_per_cell=self._data_handling.dim, gpu=self._gpu and compute_velocity_in_every_step, - layout=layout, latex_name='u') + layout=layout, latex_name='u', dtype=field_dtype) if density_data_name is None: self._data_handling.add_array(self.density_data_name, values_per_cell=1, gpu=self._gpu and compute_density_in_every_step, - layout=layout, latex_name='ρ') + layout=layout, latex_name='ρ', dtype=field_dtype) if compute_velocity_in_every_step: method_parameters['output']['velocity'] = self._data_handling.fields[self.velocity_data_name] @@ -78,7 +80,8 @@ class LatticeBoltzmannStep: if velocity_input_array_name is not None: method_parameters['velocity_input'] = self._data_handling.fields[velocity_input_array_name] if method_parameters['omega_output_field'] and isinstance(method_parameters['omega_output_field'], str): - method_parameters['omega_output_field'] = data_handling.add_array(method_parameters['omega_output_field']) + method_parameters['omega_output_field'] = data_handling.add_array(method_parameters['omega_output_field'], + dtype=field_dtype) self.kernel_params = kernel_params.copy()