Skip to content

Commit 7204b2d

Browse files
committed
Fix BTD/Scrape Flush Count with Filters
Move the counting of already flushed particles for writers that call the I/O backends multiple time per data set, e.g., BTD and boundary scraping, into the I/O backend. Currently, filtering is done as the first step in I/O backends and thus the previous count outside of the I/O backends was over-counting particles that might still get filtered out.
1 parent fa422b5 commit 7204b2d

18 files changed

+96
-75
lines changed

Source/Diagnostics/BTDiagnostics.H

-2
Original file line numberDiff line numberDiff line change
@@ -399,8 +399,6 @@ private:
399399
lab-frame data. */
400400
void InitializeParticleFunctors () override;
401401

402-
/** Update total number of particles flushed for all species for ith snapshot */
403-
void UpdateTotalParticlesFlushed(int i_buffer);
404402
/** Reset total number of particles in the particle buffer to 0 for ith snapshot */
405403
void ResetTotalParticlesInBuffer(int i_buffer);
406404
/** Clear particle data stored in the particle buffer */

Source/Diagnostics/BTDiagnostics.cpp

+4-13
Original file line numberDiff line numberDiff line change
@@ -1066,11 +1066,12 @@ BTDiagnostics::Flush (int i_buffer, bool force_flush)
10661066
}
10671067
m_flush_format->WriteToFile(
10681068
m_varnames, m_mf_output[i_buffer], m_geom_output[i_buffer], warpx.getistep(),
1069-
labtime, m_output_species[i_buffer], nlev_output, file_name, m_file_min_digits,
1069+
labtime,
1070+
m_totalParticles_flushed_already[i_buffer],
1071+
m_output_species[i_buffer], nlev_output, file_name, m_file_min_digits,
10701072
m_plot_raw_fields, m_plot_raw_fields_guards,
10711073
use_pinned_pc, isBTD, i_buffer, m_buffer_flush_counter[i_buffer],
1072-
m_max_buffer_multifabs[i_buffer], m_geom_snapshot[i_buffer][0], isLastBTDFlush,
1073-
m_totalParticles_flushed_already[i_buffer]);
1074+
m_max_buffer_multifabs[i_buffer], m_geom_snapshot[i_buffer][0], isLastBTDFlush);
10741075

10751076
// Rescaling the box for plotfile after WriteToFile. This is because, for plotfiles, when writing particles, amrex checks if the particles are within the bounds defined by the box. However, in BTD, particles can be (at max) 1 cell outside the bounds of the geometry. So we keep a one-cell bigger box for plotfile when writing out the particle data and rescale after.
10761077
if (m_format == "plotfile") {
@@ -1104,7 +1105,6 @@ BTDiagnostics::Flush (int i_buffer, bool force_flush)
11041105
NullifyFirstFlush(i_buffer);
11051106
// if particles are selected for output then update and reset counters
11061107
if (!m_output_species_names.empty()) {
1107-
UpdateTotalParticlesFlushed(i_buffer);
11081108
ResetTotalParticlesInBuffer(i_buffer);
11091109
ClearParticleBuffer(i_buffer);
11101110
}
@@ -1489,15 +1489,6 @@ BTDiagnostics::PrepareParticleDataForOutput()
14891489
}
14901490
}
14911491

1492-
void
1493-
BTDiagnostics::UpdateTotalParticlesFlushed(int i_buffer)
1494-
{
1495-
for (int isp = 0; isp < m_totalParticles_flushed_already[i_buffer].size(); ++isp) {
1496-
m_totalParticles_flushed_already[i_buffer][isp] += static_cast<int>(
1497-
m_particles_buffer[i_buffer][isp]->TotalNumberOfParticles());
1498-
}
1499-
}
1500-
15011492
void
15021493
BTDiagnostics::ResetTotalParticlesInBuffer(int i_buffer)
15031494
{

Source/Diagnostics/BoundaryScrapingDiagnostics.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,12 @@ BoundaryScrapingDiagnostics::Flush (int i_buffer, bool /* force_flush */)
158158

159159
m_flush_format->WriteToFile(
160160
m_varnames, m_mf_output[i_buffer], m_geom_output[i_buffer], warpx.getistep(),
161-
warpx.gett_new(0), m_output_species[i_buffer], nlev_output, file_prefix,
161+
warpx.gett_new(0),
162+
m_totalParticles_flushed_already[i_buffer],
163+
m_output_species[i_buffer], nlev_output, file_prefix,
162164
m_file_min_digits, false, false, use_pinned_pc, isBTD,
163165
warpx.getistep(0), bufferID, numBTDBuffers, geom,
164-
isLastBTD, m_totalParticles_flushed_already[i_buffer]);
166+
isLastBTD);
165167

166168
// Now that the data has been written out, clear out the buffer
167169
particle_buffer.clearParticles(i_buffer);

Source/Diagnostics/Diagnostics.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,16 @@ Diagnostics::InitBaseData ()
516516

517517
// allocate vector of particle buffers
518518
m_output_species.resize(m_num_buffers);
519+
520+
// Initialize total number of particles flushed
521+
m_totalParticles_flushed_already.resize(m_num_buffers);
522+
for (int i_buffer = 0; i_buffer < m_num_buffers; ++i_buffer) {
523+
int const n_species = static_cast<int>(m_output_species_names.size());
524+
m_totalParticles_flushed_already[i_buffer].resize(n_species);
525+
for (int i_species=0; i_species<n_species; i_species++) {
526+
m_totalParticles_flushed_already[i_buffer][i_species] = 0;
527+
}
528+
}
519529
}
520530

521531
void

Source/Diagnostics/FlushFormats/FlushFormat.H

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public:
1616
const amrex::Vector<amrex::MultiFab>& mf,
1717
amrex::Vector<amrex::Geometry>& geom,
1818
amrex::Vector<int> iteration, double time,
19+
amrex::Vector<int>& totalParticlesFlushedAlready,
1920
const amrex::Vector<ParticleDiag>& particle_diags, int nlev,
2021
std::string prefix, int file_min_digits,
2122
bool plot_raw_fields,
@@ -24,8 +25,7 @@ public:
2425
bool isBTD = false, int snapshotID = -1,
2526
int bufferID = 1, int numBuffers = 1,
2627
const amrex::Geometry& full_BTD_snapshot = amrex::Geometry(),
27-
bool isLastBTDFlush = false,
28-
const amrex::Vector<int>& totalParticlesFlushedAlready = amrex::Vector<int>() ) const = 0;
28+
bool isLastBTDFlush = false) const = 0;
2929

3030
FlushFormat () = default;
3131
virtual ~FlushFormat() = default;

Source/Diagnostics/FlushFormats/FlushFormatAscent.H

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public:
3333
const amrex::Vector<amrex::MultiFab>& mf,
3434
amrex::Vector<amrex::Geometry>& geom,
3535
amrex::Vector<int> iteration, double time,
36+
amrex::Vector<int>& totalParticlesFlushedAlready,
3637
const amrex::Vector<ParticleDiag>& particle_diags, int nlev,
3738
std::string prefix, int file_min_digits,
3839
bool plot_raw_fields,
@@ -41,8 +42,7 @@ public:
4142
bool isBTD = false, int snapshotID = -1,
4243
int bufferID = 1, int numBuffers = 1,
4344
const amrex::Geometry& full_BTD_snapshot = amrex::Geometry(),
44-
bool isLastBTDFlush = false,
45-
const amrex::Vector<int>& totalParticlesFlushedAlready = amrex::Vector<int>() ) const override;
45+
bool isLastBTDFlush = false ) const override;
4646

4747
#ifdef AMREX_USE_ASCENT
4848
/** \brief Do in-situ visualization for particle data.

Source/Diagnostics/FlushFormats/FlushFormatAscent.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,14 @@ FlushFormatAscent::WriteToFile (
1515
const amrex::Vector<amrex::MultiFab>& mf,
1616
amrex::Vector<amrex::Geometry>& geom,
1717
const amrex::Vector<int> iteration, const double time,
18+
amrex::Vector<int>& /* totalParticlesFlushedAlready*/,
1819
const amrex::Vector<ParticleDiag>& particle_diags, int nlev,
1920
const std::string prefix, int file_min_digits, bool plot_raw_fields,
2021
bool plot_raw_fields_guards,
2122
const bool /*use_pinned_pc*/,
2223
bool isBTD, int /*snapshotID*/, int /*bufferID*/, int /*numBuffers*/,
2324
const amrex::Geometry& /*full_BTD_snapshot*/,
24-
bool /*isLastBTDFlush*/, const amrex::Vector<int>& /* totalParticlesFlushedAlready*/) const
25+
bool /*isLastBTDFlush*/) const
2526
{
2627
#ifdef AMREX_USE_ASCENT
2728
WARPX_PROFILE("FlushFormatAscent::WriteToFile()");

Source/Diagnostics/FlushFormats/FlushFormatCheckpoint.H

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class FlushFormatCheckpoint final : public FlushFormatPlotfile
2020
const amrex::Vector<amrex::MultiFab>& mf,
2121
amrex::Vector<amrex::Geometry>& geom,
2222
amrex::Vector<int> iteration, double time,
23+
amrex::Vector<int>& totalParticlesFlushedAlready,
2324
const amrex::Vector<ParticleDiag>& particle_diags, int nlev,
2425
std::string prefix, int file_min_digits,
2526
bool plot_raw_fields,
@@ -28,8 +29,7 @@ class FlushFormatCheckpoint final : public FlushFormatPlotfile
2829
bool isBTD = false, int snapshotID = -1,
2930
int bufferID = 1, int numBuffers = 1,
3031
const amrex::Geometry& full_BTD_snapshot = amrex::Geometry(),
31-
bool isLastBTDFlush = false,
32-
const amrex::Vector<int>& totalParticlesFlushedAlready = amrex::Vector<int>() ) const final;
32+
bool isLastBTDFlush = false) const final;
3333

3434
void CheckpointParticles (const std::string& dir,
3535
const amrex::Vector<ParticleDiag>& particle_diags) const;

Source/Diagnostics/FlushFormats/FlushFormatCheckpoint.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ FlushFormatCheckpoint::WriteToFile (
3131
const amrex::Vector<amrex::MultiFab>& /*mf*/,
3232
amrex::Vector<amrex::Geometry>& geom,
3333
const amrex::Vector<int> iteration, const double /*time*/,
34+
amrex::Vector<int>& /* totalParticlesFlushedAlready*/,
3435
const amrex::Vector<ParticleDiag>& particle_diags, int nlev,
3536
const std::string prefix, int file_min_digits,
3637
bool /*plot_raw_fields*/,
@@ -39,7 +40,7 @@ FlushFormatCheckpoint::WriteToFile (
3940
bool /*isBTD*/, int /*snapshotID*/,
4041
int /*bufferID*/, int /*numBuffers*/,
4142
const amrex::Geometry& /*full_BTD_snapshot*/,
42-
bool /*isLastBTDFlush*/, const amrex::Vector<int>& /* totalParticlesFlushedAlready*/) const
43+
bool /*isLastBTDFlush*/) const
4344
{
4445
WARPX_PROFILE("FlushFormatCheckpoint::WriteToFile()");
4546

Source/Diagnostics/FlushFormats/FlushFormatOpenPMD.H

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public:
3232
const amrex::Vector<amrex::MultiFab>& mf,
3333
amrex::Vector<amrex::Geometry>& geom,
3434
amrex::Vector<int> iteration, double time,
35+
amrex::Vector<int>& totalParticlesFlushedAlready,
3536
const amrex::Vector<ParticleDiag>& particle_diags, int output_levels,
3637
std::string prefix, int file_min_digits,
3738
bool plot_raw_fields,
@@ -40,8 +41,7 @@ public:
4041
bool isBTD = false, int snapshotID = -1,
4142
int bufferID = 1, int numBuffers = 1,
4243
const amrex::Geometry& full_BTD_snapshot = amrex::Geometry(),
43-
bool isLastBTDFlush = false,
44-
const amrex::Vector<int>& totalParticlesFlushedAlready = amrex::Vector<int>() ) const override;
44+
bool isLastBTDFlush = false ) const override;
4545

4646
~FlushFormatOpenPMD () override = default;
4747

Source/Diagnostics/FlushFormats/FlushFormatOpenPMD.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -120,13 +120,14 @@ FlushFormatOpenPMD::WriteToFile (
120120
const amrex::Vector<amrex::MultiFab>& mf,
121121
amrex::Vector<amrex::Geometry>& geom,
122122
const amrex::Vector<int> iteration, const double time,
123+
amrex::Vector<int>& totalParticlesFlushedAlready,
123124
const amrex::Vector<ParticleDiag>& particle_diags, int output_levels,
124125
const std::string prefix, int file_min_digits, bool plot_raw_fields,
125126
bool plot_raw_fields_guards,
126127
const bool use_pinned_pc,
127128
bool isBTD, int snapshotID, int bufferID, int numBuffers,
128129
const amrex::Geometry& full_BTD_snapshot,
129-
bool isLastBTDFlush, const amrex::Vector<int>& totalParticlesFlushedAlready) const
130+
bool isLastBTDFlush) const
130131
{
131132
WARPX_PROFILE("FlushFormatOpenPMD::WriteToFile()");
132133
const std::string& filename = amrex::Concatenate(prefix, iteration[0], file_min_digits);
@@ -164,7 +165,7 @@ FlushFormatOpenPMD::WriteToFile (
164165

165166
// particles: all (reside only on locally finest level)
166167
m_OpenPMDPlotWriter->WriteOpenPMDParticles(
167-
particle_diags, static_cast<amrex::Real>(time), use_pinned_pc, isBTD, isLastBTDFlush, totalParticlesFlushedAlready);
168+
particle_diags, static_cast<amrex::Real>(time), totalParticlesFlushedAlready, use_pinned_pc, isBTD, isLastBTDFlush);
168169

169170
// signal that no further updates will be written to this iteration
170171
m_OpenPMDPlotWriter->CloseStep(isBTD, isLastBTDFlush);

Source/Diagnostics/FlushFormats/FlushFormatPlotfile.H

+4-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public:
2727
const amrex::Vector<amrex::MultiFab>& mf,
2828
amrex::Vector<amrex::Geometry>& geom,
2929
amrex::Vector<int> iteration, double time,
30+
amrex::Vector<int>& totalParticlesFlushedAlready,
3031
const amrex::Vector<ParticleDiag>& particle_diags, int nlev,
3132
std::string prefix, int file_min_digits,
3233
bool plot_raw_fields,
@@ -35,8 +36,7 @@ public:
3536
bool isBTD = false, int snapshotID = -1,
3637
int bufferID = 1, int numBuffers = 1,
3738
const amrex::Geometry& full_BTD_snapshot = amrex::Geometry(),
38-
bool isLastBTDFlush = false,
39-
const amrex::Vector<int>& totalParticlesFlushedAlready = amrex::Vector<int>() ) const override;
39+
bool isLastBTDFlush = false) const override;
4040

4141
/** Write general info of the run into the plotfile */
4242
void WriteJobInfo(const std::string& dir) const;
@@ -49,11 +49,13 @@ public:
4949
* \param[in] dir name of output directory
5050
* \param[in] particle_diags Each element of this vector handles output of 1 species.
5151
* \param[in] time the simulation time on the coarsest level
52+
* \param[inout] totalParticlesFlushedAlready already flushed particles per species
5253
* \param[in] isBTD whether this is a back-transformed diagnostic
5354
*/
5455
void WriteParticles(const std::string& dir,
5556
const amrex::Vector<ParticleDiag>& particle_diags,
5657
amrex::Real time,
58+
amrex::Vector<int>& totalParticlesFlushedAlready,
5759
bool isBTD = false) const;
5860

5961
FlushFormatPlotfile () = default;

Source/Diagnostics/FlushFormats/FlushFormatPlotfile.cpp

+11-4
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,14 @@ FlushFormatPlotfile::WriteToFile (
5959
const amrex::Vector<amrex::MultiFab>& mf,
6060
amrex::Vector<amrex::Geometry>& geom,
6161
const amrex::Vector<int> iteration, const double time,
62+
amrex::Vector<int>& totalParticlesFlushedAlready,
6263
const amrex::Vector<ParticleDiag>& particle_diags, int nlev,
6364
const std::string prefix, int file_min_digits, bool plot_raw_fields,
6465
bool plot_raw_fields_guards,
6566
const bool /*use_pinned_pc*/,
6667
bool isBTD, int snapshotID, int bufferID, int numBuffers,
6768
const amrex::Geometry& /*full_BTD_snapshot*/,
68-
bool isLastBTDFlush, const amrex::Vector<int>& /* totalParticlesFlushedAlready*/) const
69+
bool isLastBTDFlush) const
6970
{
7071
WARPX_PROFILE("FlushFormatPlotfile::WriteToFile()");
7172
auto & warpx = WarpX::GetInstance();
@@ -99,7 +100,7 @@ FlushFormatPlotfile::WriteToFile (
99100

100101
WriteAllRawFields(plot_raw_fields, nlev, filename, plot_raw_fields_guards);
101102

102-
WriteParticles(filename, particle_diags, static_cast<amrex::Real>(time), isBTD);
103+
WriteParticles(filename, particle_diags, static_cast<amrex::Real>(time), totalParticlesFlushedAlready, isBTD);
103104

104105
WriteJobInfo(filename);
105106

@@ -340,9 +341,11 @@ FlushFormatPlotfile::WriteWarpXHeader(
340341
void
341342
FlushFormatPlotfile::WriteParticles(const std::string& dir,
342343
const amrex::Vector<ParticleDiag>& particle_diags,
343-
const amrex::Real time, bool isBTD) const
344+
const amrex::Real time,
345+
amrex::Vector<int>& totalParticlesFlushedAlready,
346+
bool isBTD) const
344347
{
345-
348+
int i = 0;
346349
for (const auto& part_diag : particle_diags) {
347350
WarpXParticleContainer* pc = part_diag.getParticleContainer();
348351
PinnedMemoryParticleContainer* pinned_pc = part_diag.getPinnedParticleContainer();
@@ -418,6 +421,10 @@ FlushFormatPlotfile::WriteParticles(const std::string& dir,
418421
dir, part_diag.getSpeciesName(),
419422
real_flags, int_flags,
420423
real_names, int_names);
424+
425+
// keep book of filtered-and-written particles
426+
totalParticlesFlushedAlready[i] += tmp.TotalNumberOfParticles(false, true);
427+
i++;
421428
}
422429
}
423430

Source/Diagnostics/FlushFormats/FlushFormatSensei.H

+2-2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public:
5353
const amrex::Vector<amrex::MultiFab>& mf,
5454
amrex::Vector<amrex::Geometry>& geom,
5555
amrex::Vector<int> iteration, double time,
56+
amrex::Vector<int>& totalParticlesFlushedAlready,
5657
const amrex::Vector<ParticleDiag>& particle_diags, int nlev,
5758
std::string prefix, int file_min_digits,
5859
bool plot_raw_fields,
@@ -61,8 +62,7 @@ public:
6162
bool isBTD = false, int snapshotID = -1,
6263
int bufferID = 1, int numBuffers = 1,
6364
const amrex::Geometry& full_BTD_snapshot = amrex::Geometry(),
64-
bool isLastBTDFlush = false,
65-
const amrex::Vector<int>& totalParticlesFlushedAlready = amrex::Vector<int>() ) const override;
65+
bool isLastBTDFlush = false) const override;
6666

6767
/** \brief Do in-situ visualization for particle data.
6868
* \param[in] particle_diags Each element of this vector handles output of 1 species.

Source/Diagnostics/FlushFormats/FlushFormatSensei.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,13 @@ FlushFormatSensei::WriteToFile (
4848
const amrex::Vector<amrex::MultiFab>& mf,
4949
amrex::Vector<amrex::Geometry>& geom,
5050
const amrex::Vector<int> iteration, const double time,
51+
amrex::Vector<int>& totalParticlesFlushedAlready,
5152
const amrex::Vector<ParticleDiag>& particle_diags,
5253
int nlev, const std::string prefix, int file_min_digits,
5354
bool plot_raw_fields, bool plot_raw_fields_guards,
5455
const bool use_pinned_pc,
5556
bool isBTD, int /*snapshotID*/, int /*bufferID*/, int /*numBuffers*/,
56-
const amrex::Geometry& /*full_BTD_snapshot*/, bool /*isLastBTDFlush*/,
57-
const amrex::Vector<int>& totalParticlesFlushedAlready) const
57+
const amrex::Geometry& /*full_BTD_snapshot*/, bool /*isLastBTDFlush*/) const
5858
{
5959
amrex::ignore_unused(
6060
geom, nlev, prefix, file_min_digits,

Source/Diagnostics/FullDiagnostics.cpp

+13-1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,16 @@ FullDiagnostics::InitializeParticleBuffer ()
7575
m_output_species[i_buffer].push_back(ParticleDiag(m_diag_name, species, mpc.GetParticleContainerPtr(idx)));
7676
}
7777
}
78+
79+
// Initialize total number of particles flushed
80+
m_totalParticles_flushed_already.resize(m_num_buffers);
81+
for (int i_buffer = 0; i_buffer < m_num_buffers; ++i_buffer) {
82+
int const n_species = static_cast<int>(m_output_species_names.size());
83+
m_totalParticles_flushed_already[i_buffer].resize(n_species);
84+
for (int i_species=0; i_species<n_species; i_species++) {
85+
m_totalParticles_flushed_already[i_buffer][i_species] = 0;
86+
}
87+
}
7888
}
7989

8090
void
@@ -134,7 +144,9 @@ FullDiagnostics::Flush ( int i_buffer, bool /* force_flush */ )
134144

135145
m_flush_format->WriteToFile(
136146
m_varnames, m_mf_output[i_buffer], m_geom_output[i_buffer], warpx.getistep(),
137-
warpx.gett_new(0), m_output_species[i_buffer], nlev_output, m_file_prefix,
147+
warpx.gett_new(0),
148+
m_totalParticles_flushed_already[i_buffer],
149+
m_output_species[i_buffer], nlev_output, m_file_prefix,
138150
m_file_min_digits, m_plot_raw_fields, m_plot_raw_fields_guards);
139151

140152
FlushRaw();

Source/Diagnostics/WarpXOpenPMD.H

+5-5
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,10 @@ public:
123123
void WriteOpenPMDParticles (
124124
const amrex::Vector<ParticleDiag>& particle_diags,
125125
amrex::Real time,
126+
amrex::Vector<int>& totalParticlesFlushedAlready,
126127
bool use_pinned_pc = false,
127128
bool isBTD = false,
128-
bool isLastBTDFlush = false,
129-
const amrex::Vector<int>& totalParticlesFlushedAlready = amrex::Vector<int>());
129+
bool isLastBTDFlush = false);
130130

131131
/** Write out all openPMD fields for all active MR levels
132132
*
@@ -290,9 +290,9 @@ private:
290290
* @param[in] int_comp_names The int attribute names, from WarpX
291291
* @param[in] charge Charge of the particles (note: fix for ions)
292292
* @param[in] mass Mass of the particles
293+
* @param[inout] ParticleFlushOffset previously flushed number of particles in BTD
293294
* @param[in] isBTD is this a backtransformed diagnostics (BTD) write?
294295
* @param[in] isLastBTDFlush is this the last time we will flush this BTD station?
295-
* @param[in] ParticleFlushOffset previously flushed number of particles in BTD
296296
*/
297297
void DumpToFile (ParticleContainer* pc,
298298
const std::string& name,
@@ -303,9 +303,9 @@ private:
303303
const amrex::Vector<std::string>& int_comp_names,
304304
amrex::ParticleReal charge,
305305
amrex::ParticleReal mass,
306+
int & ParticleFlushOffset,
306307
bool isBTD = false,
307-
bool isLastBTDFlush = false,
308-
int ParticleFlushOffset = 0);
308+
bool isLastBTDFlush = false);
309309

310310
/** Get the openPMD-api filename for openPMD::Series
311311
*

0 commit comments

Comments
 (0)