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