From ac6755c3431f5f4cf57ac6d717a098fe18cf8e9e Mon Sep 17 00:00:00 2001 From: Cristian C Lalescu <Cristian.Lalescu@ds.mpg.de> Date: Tue, 9 Jun 2020 10:31:26 +0200 Subject: [PATCH] fixes sampling example for test_tracer_set --- TurTLE/TEST.py | 6 +++ cpp/full_code/test_tracer_set.cpp | 43 ++++++++++++++++--- .../interpolation/abstract_particle_set.hpp | 4 +- 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/TurTLE/TEST.py b/TurTLE/TEST.py index e2c42bf9..110e51e9 100644 --- a/TurTLE/TEST.py +++ b/TurTLE/TEST.py @@ -410,6 +410,12 @@ class TEST(_code): if not os.path.exists(os.path.join(self.work_dir, self.simname + '.h5')): self.write_par( particle_ic = particle_initial_condition) + if self.dns_type == 'test_tracer_set': + ofile = h5py.File(os.path.join(self.work_dir, 'test_particle_sample.h5'), 'w') + ofile.create_group('tracers0') + ofile.create_group('tracers0/position') + ofile.create_group('tracers0/velocity') + ofile.close() if self.dns_type == 'test_interpolation': if type(particle_initial_condition) == type(None): pbase_shape = (self.parameters['nparticles'],) diff --git a/cpp/full_code/test_tracer_set.cpp b/cpp/full_code/test_tracer_set.cpp index a9cefdc1..094582bc 100644 --- a/cpp/full_code/test_tracer_set.cpp +++ b/cpp/full_code/test_tracer_set.cpp @@ -102,26 +102,59 @@ int test_tracer_set<rnumber>::do_work(void) pset.init(bla); // initialize particle output object - particles_output_hdf5<long long int, double, 3> *particles_output_writer_mpi = new particles_output_hdf5< + particles_output_hdf5<long long int, double, 3> *particle_output_writer = new particles_output_hdf5< long long int, double, 3>( MPI_COMM_WORLD, "tracers0", pset.getTotalNumberOfParticles(), 0); + particles_output_sampling_hdf5<long long int, double, 3> *particle_sample_writer = new particles_output_sampling_hdf5< + long long int, double, 3>( + MPI_COMM_WORLD, + pset.getTotalNumberOfParticles(), + "test_particle_sample.h5", + "tracers0", + "position/0"); fti->set_field(vec_field); trhs->setVelocity(fti); particle_solver psolver(pset, 0); + particle_output_writer->open_file("test_particle_checkpoint.h5"); + psolver.template writeCheckpoint<3>(particle_output_writer); + pset.writeSample( + vec_field, + particle_sample_writer, + "tracers0", + "velocity", + psolver.getIteration()); + pset.writeStateTriplet( + 0, + particle_sample_writer, + "tracers0", + "position", + psolver.getIteration()); psolver.Euler(0.001, *trhs); psolver.setIteration(1); - particles_output_writer_mpi->open_file("test_particle_checkpoint.h5"); - psolver.template writeCheckpoint<3>(particles_output_writer_mpi); - particles_output_writer_mpi->close_file(); + psolver.template writeCheckpoint<3>(particle_output_writer); + pset.writeSample( + vec_field, + particle_sample_writer, + "tracers0", + "velocity", + psolver.getIteration()); + pset.writeStateTriplet( + 0, + particle_sample_writer, + "tracers0", + "position", + psolver.getIteration()); + particle_output_writer->close_file(); // deallocate - delete particles_output_writer_mpi; + delete particle_sample_writer; + delete particle_output_writer; delete trhs; delete fti; delete kk; diff --git a/cpp/particles/interpolation/abstract_particle_set.hpp b/cpp/particles/interpolation/abstract_particle_set.hpp index 4a54e6e6..2361b142 100644 --- a/cpp/particles/interpolation/abstract_particle_set.hpp +++ b/cpp/particles/interpolation/abstract_particle_set.hpp @@ -159,7 +159,7 @@ class abstract_particle_set template <typename field_rnumber, field_backend be, field_components fc> - int sample( + int writeSample( field<field_rnumber, be, fc> *field_to_sample, particles_output_sampling_hdf5<partsize_t, particle_rnumber, 3> *particle_sample_writer, const std::string species_name, @@ -190,7 +190,7 @@ class abstract_particle_set return EXIT_SUCCESS; } - int sample_state_triple( + int writeStateTriplet( const int i0, particles_output_sampling_hdf5<partsize_t, particle_rnumber, 3> *particle_sample_writer, const std::string species_name, -- GitLab