diff --git a/bfps/NavierStokes.py b/bfps/NavierStokes.py index 790d13d0ee570a837baa595731722d7182b6128f..1279e7e4b66bf65b9017f8affa724b2d6d0eb0ee 100644 --- a/bfps/NavierStokes.py +++ b/bfps/NavierStokes.py @@ -234,6 +234,12 @@ class NavierStokes(bfps.fluid_base.fluid_particle_base): 'int *kindices;\n' + 'int nksamples;\n' + 'hid_t H5T_field_complex;\n') + self.fluid_definitions += """ + typedef struct {{ + {0} re; + {0} im; + }} tmp_complex_type; + """.format(self.C_dtype) self.write_fluid_stats() if self.dtype == np.float32: field_H5T = 'H5T_NATIVE_FLOAT' @@ -268,10 +274,6 @@ class NavierStokes(bfps.fluid_base.fluid_particle_base): kindices = new int[nksamples*2]; H5Dread(dset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, kindices); H5Dclose(dset); - typedef struct {{ - double re; /*real part*/ - double im; /*imaginary part*/ - }} tmp_complex_type; H5T_field_complex = H5Tcreate(H5T_COMPOUND, sizeof(tmp_complex_type)); H5Tinsert(H5T_field_complex, "r", HOFFSET(tmp_complex_type, re), {2}); H5Tinsert(H5T_field_complex, "i", HOFFSET(tmp_complex_type, im), {2}); @@ -286,12 +288,12 @@ class NavierStokes(bfps.fluid_base.fluid_particle_base): self.fluid_output + '\n}\n') self.fluid_end = ('if (fs->iteration % niter_out != 0)\n{\n' + self.fluid_output + '\n}\n' + - 'delete fs;\n' + 'if (fs->cd->myrank == 0)\n' + '{\n' + 'delete[] kindices;\n' + 'H5Tclose(H5T_field_complex);\n' + - '}\n') + '}\n' + + 'delete fs;\n') return None def add_particle_fields( self,