From 46b0ba2cc013a1cc9bbd40d9025e615cd8d2a41b Mon Sep 17 00:00:00 2001 From: Chichi Lalescu <chichilalescu@gmail.com> Date: Sun, 21 May 2017 22:44:06 +0200 Subject: [PATCH] broken --- need to open particle stat group before sampling --- bfps/DNS.py | 3 ++ bfps/cpp/full_code/NSVEparticles.cpp | 47 ++++++++++++++++++++++------ 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/bfps/DNS.py b/bfps/DNS.py index 8121f5f7..be0ba764 100644 --- a/bfps/DNS.py +++ b/bfps/DNS.py @@ -915,6 +915,9 @@ class DNS(_code): self.generate_tracer_state( species = 0, rseed = opt.particle_rand_seed) + if not os.path.exists(self.get_particle_file_name()): + with particle_file = h5py.File(self.get_particle_file_name(), 'w'): + particle_file.create_group('tracers0/velocity') self.run( nb_processes = opt.nb_processes, nb_threads_per_process = opt.nb_threads_per_process, diff --git a/bfps/cpp/full_code/NSVEparticles.cpp b/bfps/cpp/full_code/NSVEparticles.cpp index a5b5f409..35585285 100644 --- a/bfps/cpp/full_code/NSVEparticles.cpp +++ b/bfps/cpp/full_code/NSVEparticles.cpp @@ -69,18 +69,47 @@ int NSVEparticles<rnumber>::do_stats() // fluid stats go here this->NSVE<rnumber>::do_stats(); + + if (!(this->iteration % this->niter_part == 0)) + return EXIT_SUCCESS; + + hid_t file_id, pgroup_id; + + // open particle file, and tracers0 group + hid_t plist_id_par = H5Pcreate(H5P_FILE_ACCESS); + assert(plist_id_par >= 0); + int retTest = H5Pset_fapl_mpio( + plist_id_par, + this->particles_output_writer_mpi->getComWriter(), + MPI_INFO_NULL); + assert(retTest >= 0); + + // Parallel HDF5 write + file_id = H5Fopen( + (this->simname + "_particles.h5").c_str(), + H5F_ACC_RDWR | H5F_ACC_DEBUG, + plist_id_par); + // file_id = H5Fcreate(filename.c_str(), H5F_ACC_TRUNC | H5F_ACC_DEBUG/*H5F_ACC_EXCL*/, H5P_DEFAULT/*H5F_ACC_RDWR*/, plist_id_par); + assert(file_id >= 0); + H5Pclose(plist_id_par); + + pgroup_id = H5Gopen( + file_id, + "tracers0", + H5P_DEFAULT); + //after fluid stats, cvelocity contains Fourier representation of vel field this->fs->cvelocity->ift(); - if (this->iteration % this->niter_part == 0) - { - // sample velocity - //sample_from_particles_system(*this->fs->cvelocity,// field to save - // this->ps, - // 0, // hdf5 datagroup TODO - // "TODO" // dataset basename TODO - // ); - } + + // sample velocity + sample_from_particles_system(*this->fs->cvelocity,// field to save + this->ps, + pgroup_id, // hdf5 datagroup TODO + "velocity" // dataset basename TODO + ); + H5Gclose(pgroup_id); + H5Fclose(file_id); return EXIT_SUCCESS; } -- GitLab