From 2d047faf838a86147f4a203856310bdab4233ad1 Mon Sep 17 00:00:00 2001 From: ax3l Date: Fri, 29 Mar 2024 23:38:51 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20main=20from=20@=20AMReX-Codes/?= =?UTF-8?q?amrex@47347f785f5c26f1f9e65bef8e10f2d383406ef7=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../amrex.pdf | Bin 8635637 -> 8635637 bytes .../AMReX__NeighborParticles_8H_source.html | 2 +- .../AMReX__ParticleContainerI_8H_source.html | 24 +- .../AMReX__ParticleContainer_8H_source.html | 358 +++++++++--------- .../doxygen/AMReX__ParticleContainerI_8H.xml | 24 +- .../doxygen/AMReX__ParticleContainer_8H.xml | 296 ++++++++------- .../classamrex_1_1ParticleContainer__impl.xml | 88 ++--- amrex/docs_xml/doxygen/namespaceamrex.xml | 2 +- 8 files changed, 399 insertions(+), 395 deletions(-) diff --git a/amrex/docs_html/_downloads/008eb6dbfab802633dff40122ece848c/amrex.pdf b/amrex/docs_html/_downloads/008eb6dbfab802633dff40122ece848c/amrex.pdf index 3e7c81a2d800ad7e7c3b81b6c09a1d992559c9bc..7c543acacc937725a33aefa55f497fe2656147ed 100644 GIT binary patch delta 388 zcmajV*;Y*f0D$3zGE_*$NKO%DYM;H&&`IL#y-&u>V}vM86v{ls`EFcs+Y5LCYxM*k zse6_eaPeP#|MIu*HOqfnu)<2K)Tp)E8f&dnr(T2gHrS}qCQUZmVykVo+o9P`yR_J? z)gBpb+U>PZhy4!d)a9T<4m;wgZh@>&Bqy(+s7Fb!WBMG|?}U@eVu@76fKyI823!<wQB)M{f(0uIXzs+3PT7Df@Elg) zl9*~eD~vTZEUtJ%4DO$U`J!;!1zcqJTaPTPr5@Cx}r=dg#S4Ad$u;z rRF115n~(FwN--|wLcUOqD@n+ei|LT0)45X8m+Dz+nT!6^{
Particle< NStructReal+NArrayReal, NStructInt+NArrayInt > SuperParticleType
The type of the "SuperParticle" which stored all components in AoS form.
Definition: AMReX_ParticleContainer.H:169
typename ParticleTileType::AoS AoS
Definition: AMReX_ParticleContainer.H:186
typename AoS::ParticleVector ParticleVector
Definition: AMReX_ParticleContainer.H:191
-
void AddIntComp(T communicate=true)
Definition: AMReX_ParticleContainer.H:1263
+
void AddIntComp(T communicate=true)
Definition: AMReX_ParticleContainer.H:1264
void AddRealComp(T communicate=true)
Definition: AMReX_ParticleContainer.H:1241
typename SoA::IntVector IntVector
Definition: AMReX_ParticleContainer.H:190
void Redistribute(int lev_min=0, int lev_max=-1, int nGrow=0, int local=0, bool remove_negative=true)
Redistribute puts all the particles back in the right places (for some value of right)
Definition: AMReX_ParticleContainerI.H:1066
diff --git a/amrex/docs_html/doxygen/AMReX__ParticleContainerI_8H_source.html b/amrex/docs_html/doxygen/AMReX__ParticleContainerI_8H_source.html index 99f6cc6409..b66f40f340 100644 --- a/amrex/docs_html/doxygen/AMReX__ParticleContainerI_8H_source.html +++ b/amrex/docs_html/doxygen/AMReX__ParticleContainerI_8H_source.html @@ -1382,16 +1382,16 @@
1291  for (auto& kv : plev)
1292  {
1293  int gid = kv.first.first;
-
1294  int tid = kv.first.second;
+
1294  int tid = kv.first.second;
1295  auto index = std::make_pair(gid, tid);
-
1296 
+
1297  auto& src_tile = plev[index];
1298  const size_t np = src_tile.numParticles();
1299 
1300  int num_stay = partitionParticlesByDest(src_tile, assign_grid,
-
1301  std::forward<CellAssignor>(CellAssignor{}),
+
1301  std::forward<CellAssignor>(CellAssignor{}),
1302  BufferMap(),
-
1303  plo, phi, rlo, rhi, is_per, lev, gid, tid,
+
1303  plo, phi, rlo, rhi, is_per, lev, gid, tid,
1304  lev_min, lev_max, nGrow, remove_negative);
1305 
1306  int num_move = np - num_stay;
@@ -1486,9 +1486,9 @@
1396  communicateParticlesStart(*this, plan, snd_buffer, pinned_rcv_buffer);
1397  } else {
-
1398  pinned_snd_buffer.resize(snd_buffer.size());
+
1398  pinned_snd_buffer.resize(snd_buffer.size());
1399  Gpu::dtoh_memcpy_async(pinned_snd_buffer.dataPtr(), snd_buffer.dataPtr(), snd_buffer.size());
-
1400  plan.buildMPIFinish(BufferMap());
+
1400  plan.buildMPIFinish(BufferMap());
1402  communicateParticlesStart(*this, plan, pinned_snd_buffer, pinned_rcv_buffer);
1403  }
@@ -1497,21 +1497,21 @@
1406  unpackBuffer(*this, plan, snd_buffer, RedistributeUnpackPolicy());
1408  Gpu::htod_memcpy_async(rcv_buffer.dataPtr(), pinned_rcv_buffer.dataPtr(), pinned_rcv_buffer.size());
-
1409  unpackRemotes(*this, plan, rcv_buffer, RedistributeUnpackPolicy());
+
1409  unpackRemotes(*this, plan, rcv_buffer, RedistributeUnpackPolicy());
1410  }
-
1411 
+
1413  AMREX_ASSERT(numParticlesOutOfRange(*this, lev_min, lev_max, nGrow) == 0);
1414 #else
1415  amrex::ignore_unused(lev_min,lev_max,nGrow,local,remove_negative);
-
1416 #endif
+
1416 #endif
1417 }
-
1418 
+
1419 //
1420 // The CPU implementation of Redistribute
1421 //
-
1422 template <typename ParticleType, int NArrayReal, int NArrayInt,
-
1423  template<class> class Allocator, class CellAssignor>
+
1422 template <typename ParticleType, int NArrayReal, int NArrayInt,
+
1423  template<class> class Allocator, class CellAssignor>
1424 void
1426 ::RedistributeCPU (int lev_min, int lev_max, int nGrow, int local, bool remove_negative)
diff --git a/amrex/docs_html/doxygen/AMReX__ParticleContainer_8H_source.html b/amrex/docs_html/doxygen/AMReX__ParticleContainer_8H_source.html index 0459ddb043..640129fdf7 100644 --- a/amrex/docs_html/doxygen/AMReX__ParticleContainer_8H_source.html +++ b/amrex/docs_html/doxygen/AMReX__ParticleContainer_8H_source.html @@ -631,159 +631,161 @@
1245  h_redistribute_real_comp.push_back(communicate);
1246  SetParticleSize();
-
1247 
-
1248  // resize runtime SoA
-
1249  for (int lev = 0; lev < numLevels(); ++lev) {
-
1250  for (ParIterType pti(*this,lev); pti.isValid(); ++pti) {
-
1251  auto& tile = DefineAndReturnParticleTile(lev, pti);
-
1252  auto np = tile.numParticles();
-
1253  if (np > 0) {
-
1254  auto& soa = tile.GetStructOfArrays();
-
1255  soa.resize(np);
-
1256  }
-
1257  }
-
1258  }
-
1259  }
-
1260 
-
1261  template <typename T,
-
1262  std::enable_if_t<std::is_same_v<T,bool>,int> = 0>
-
1263  void AddIntComp (T communicate=true)
-
1264  {
-
1265  m_runtime_comps_defined = true;
- -
1267  h_redistribute_int_comp.push_back(communicate);
-
1268  SetParticleSize();
-
1269 
-
1270  // resize runtime SoA
-
1271  for (int lev = 0; lev < numLevels(); ++lev) {
-
1272  for (ParIterType pti(*this,lev); pti.isValid(); ++pti) {
-
1273  auto& tile = DefineAndReturnParticleTile(lev, pti);
-
1274  auto np = tile.numParticles();
-
1275  if (np > 0) {
-
1276  auto& soa = tile.GetStructOfArrays();
-
1277  soa.resize(np);
-
1278  }
-
1279  }
-
1280  }
-
1281  }
-
1282 
-
1283  int NumRuntimeRealComps () const { return m_num_runtime_real; }
-
1284  int NumRuntimeIntComps () const { return m_num_runtime_int; }
-
1285 
-
1286  int NumRealComps () const { return NArrayReal + NumRuntimeRealComps(); }
-
1287  int NumIntComps () const { return NArrayInt + NumRuntimeIntComps() ; }
-
1288 
-
1294  void ResizeRuntimeRealComp (int new_size, bool communicate);
-
1295 
-
1301  void ResizeRuntimeIntComp (int new_size, bool communicate);
-
1302 
-
1304  template <template<class> class NewAllocator=amrex::DefaultAllocator>
- -
1306 
-
1317  template <template<class> class NewAllocator=amrex::DefaultAllocator>
- -
1319  make_alike () const
-
1320  {
- -
1322 
-
1323  // add runtime real comps to tmp
-
1324  for (int ic = 0; ic < this->NumRuntimeRealComps(); ++ic) { tmp.AddRealComp(false); }
-
1325 
-
1326  // add runtime int comps to tmp
-
1327  for (int ic = 0; ic < this->NumRuntimeIntComps(); ++ic) { tmp.AddIntComp(false); }
-
1328 
-
1329  return tmp;
-
1330  }
-
1331 
- - -
1334 
- -
1337  mutable bool usePrePost;
-
1338  mutable bool doUnlink;
- -
1340  mutable int nOutFilesPrePost;
- - - - - -
1346  mutable std::string HdrFileNamePrePost;
- -
1348 
-
1349 protected:
+
1247  this->resizeData();
+
1248 
+
1249  // resize runtime SoA
+
1250  for (int lev = 0; lev < numLevels(); ++lev) {
+
1251  for (ParIterType pti(*this,lev); pti.isValid(); ++pti) {
+
1252  auto& tile = DefineAndReturnParticleTile(lev, pti);
+
1253  auto np = tile.numParticles();
+
1254  if (np > 0) {
+
1255  auto& soa = tile.GetStructOfArrays();
+
1256  soa.resize(np);
+
1257  }
+
1258  }
+
1259  }
+
1260  }
+
1261 
+
1262  template <typename T,
+
1263  std::enable_if_t<std::is_same_v<T,bool>,int> = 0>
+
1264  void AddIntComp (T communicate=true)
+
1265  {
+
1266  m_runtime_comps_defined = true;
+ +
1268  h_redistribute_int_comp.push_back(communicate);
+
1269  SetParticleSize();
+
1270  this->resizeData();
+
1271 
+
1272  // resize runtime SoA
+
1273  for (int lev = 0; lev < numLevels(); ++lev) {
+
1274  for (ParIterType pti(*this,lev); pti.isValid(); ++pti) {
+
1275  auto& tile = DefineAndReturnParticleTile(lev, pti);
+
1276  auto np = tile.numParticles();
+
1277  if (np > 0) {
+
1278  auto& soa = tile.GetStructOfArrays();
+
1279  soa.resize(np);
+
1280  }
+
1281  }
+
1282  }
+
1283  }
+
1284 
+
1285  int NumRuntimeRealComps () const { return m_num_runtime_real; }
+
1286  int NumRuntimeIntComps () const { return m_num_runtime_int; }
+
1287 
+
1288  int NumRealComps () const { return NArrayReal + NumRuntimeRealComps(); }
+
1289  int NumIntComps () const { return NArrayInt + NumRuntimeIntComps() ; }
+
1290 
+
1296  void ResizeRuntimeRealComp (int new_size, bool communicate);
+
1297 
+
1303  void ResizeRuntimeIntComp (int new_size, bool communicate);
+
1304 
+
1306  template <template<class> class NewAllocator=amrex::DefaultAllocator>
+ +
1308 
+
1319  template <template<class> class NewAllocator=amrex::DefaultAllocator>
+ +
1321  make_alike () const
+
1322  {
+ +
1324 
+
1325  // add runtime real comps to tmp
+
1326  for (int ic = 0; ic < this->NumRuntimeRealComps(); ++ic) { tmp.AddRealComp(false); }
+
1327 
+
1328  // add runtime int comps to tmp
+
1329  for (int ic = 0; ic < this->NumRuntimeIntComps(); ++ic) { tmp.AddIntComp(false); }
+
1330 
+
1331  return tmp;
+
1332  }
+
1333 
+ + +
1336 
+ +
1339  mutable bool usePrePost;
+
1340  mutable bool doUnlink;
+ +
1342  mutable int nOutFilesPrePost;
+ + + + + +
1348  mutable std::string HdrFileNamePrePost;
+
1350 
-
1364  template <typename P>
-
1365  bool Where (const P& prt, ParticleLocData& pld,
-
1366  int lev_min = 0, int lev_max = -1, int nGrow=0, int local_grid=-1) const;
-
1367 
-
1368 
-
1379  template <typename P>
- -
1381  int lev_min = 0, int lev_max = -1, int local_grid=-1) const;
-
1382 
-
1383 public:
-
1384  void
-
1385  WriteParticles (int level, std::ofstream& ofs, int fnum,
-
1386  Vector<int>& which, Vector<int>& count, Vector<Long>& where,
-
1387  const Vector<int>& write_real_comp, const Vector<int>& write_int_comp,
-
1388  const Vector<std::map<std::pair<int, int>,IntVector>>& particle_io_flags, bool is_checkpoint) const;
-
1389 #ifdef AMREX_USE_HDF5
-
1390 #include "AMReX_ParticlesHDF5.H"
-
1391 #endif
-
1392 
-
1393 protected:
+
1351 protected:
+
1352 
+
1366  template <typename P>
+
1367  bool Where (const P& prt, ParticleLocData& pld,
+
1368  int lev_min = 0, int lev_max = -1, int nGrow=0, int local_grid=-1) const;
+
1369 
+
1370 
+
1381  template <typename P>
+ +
1383  int lev_min = 0, int lev_max = -1, int local_grid=-1) const;
+
1384 
+
1385 public:
+
1386  void
+
1387  WriteParticles (int level, std::ofstream& ofs, int fnum,
+
1388  Vector<int>& which, Vector<int>& count, Vector<Long>& where,
+
1389  const Vector<int>& write_real_comp, const Vector<int>& write_int_comp,
+
1390  const Vector<std::map<std::pair<int, int>,IntVector>>& particle_io_flags, bool is_checkpoint) const;
+
1391 #ifdef AMREX_USE_HDF5
+
1392 #include "AMReX_ParticlesHDF5.H"
+
1393 #endif
1394 
-
1395  template <class RTYPE>
-
1396  void ReadParticles (int cnt, int grd, int lev, std::ifstream& ifs, int finest_level_in_file, bool convert_ids);
-
1397 
-
1398  void SetParticleSize ();
+
1395 protected:
+
1396 
+
1397  template <class RTYPE>
+
1398  void ReadParticles (int cnt, int grd, int lev, std::ifstream& ifs, int finest_level_in_file, bool convert_ids);
1399 
- +
1400  void SetParticleSize ();
1401 
-
1402 private:
-
1403  virtual void particlePostLocate (ParticleType& /*p*/, const ParticleLocData& /*pld*/,
-
1404  const int /*lev*/) {}
-
1405 
-
1406  virtual void correctCellVectors (int /*old_index*/, int /*new_index*/,
-
1407  int /*grid*/, const ParticleType& /*p*/) {}
-
1408 
-
1409  void RedistributeMPI (std::map<int, Vector<char> >& not_ours,
-
1410  int lev_min = 0, int lev_max = 0, int nGrow = 0, int local=0);
-
1411 
-
1412  template <typename P>
- -
1414  int lev_min, int lev_max, int nGrow, int local_grid=-1) const;
-
1415 
-
1416  void Initialize ();
+ +
1403 
+
1404 private:
+
1405  virtual void particlePostLocate (ParticleType& /*p*/, const ParticleLocData& /*pld*/,
+
1406  const int /*lev*/) {}
+
1407 
+
1408  virtual void correctCellVectors (int /*old_index*/, int /*new_index*/,
+
1409  int /*grid*/, const ParticleType& /*p*/) {}
+
1410 
+
1411  void RedistributeMPI (std::map<int, Vector<char> >& not_ours,
+
1412  int lev_min = 0, int lev_max = 0, int nGrow = 0, int local=0);
+
1413 
+
1414  template <typename P>
+ +
1416  int lev_min, int lev_max, int nGrow, int local_grid=-1) const;
1417 
- - - -
1421 
- - - -
1425 };
-
1426 
-
1427 template <int T_NStructReal, int T_NStructInt, int T_NArrayReal, int T_NArrayInt, template<class> class Allocator, class CellAssignor>
-
1428 using ParticleContainer = ParticleContainer_impl<Particle<T_NStructReal, T_NStructInt>, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor>;
-
1429 
-
1430 template <int T_NArrayReal, int T_NArrayInt, template<class> class Allocator=DefaultAllocator, class CellAssignor=DefaultAssignor>
-
1431 using ParticleContainerPureSoA = ParticleContainer_impl<SoAParticle<T_NArrayReal, T_NArrayInt>, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor>;
-
1432 
-
1433 
-
1434 #include "AMReX_ParticleInit.H"
-
1435 #include "AMReX_ParticleContainerI.H"
-
1436 #include "AMReX_ParticleIO.H"
-
1437 
-
1438 #ifdef AMREX_USE_HDF5
-
1439 #include "AMReX_ParticleHDF5.H"
-
1440 #endif
-
1441 
-
1442 }
+
1418  void Initialize ();
+
1419 
+ + + +
1423 
+ + + +
1427 };
+
1428 
+
1429 template <int T_NStructReal, int T_NStructInt, int T_NArrayReal, int T_NArrayInt, template<class> class Allocator, class CellAssignor>
+
1430 using ParticleContainer = ParticleContainer_impl<Particle<T_NStructReal, T_NStructInt>, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor>;
+
1431 
+
1432 template <int T_NArrayReal, int T_NArrayInt, template<class> class Allocator=DefaultAllocator, class CellAssignor=DefaultAssignor>
+
1433 using ParticleContainerPureSoA = ParticleContainer_impl<SoAParticle<T_NArrayReal, T_NArrayInt>, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor>;
+
1434 
+
1435 
+
1436 #include "AMReX_ParticleInit.H"
+
1437 #include "AMReX_ParticleContainerI.H"
+
1438 #include "AMReX_ParticleIO.H"
+
1439 
+
1440 #ifdef AMREX_USE_HDF5
+
1441 #include "AMReX_ParticleHDF5.H"
+
1442 #endif
1443 
-
1444 #endif /*_PARTICLES_H_*/
+
1444 }
+
1445 
+
1446 #endif /*_PARTICLES_H_*/
@@ -850,34 +852,34 @@
A distributed container for Particles sorted onto the levels, grids, and tiles of a block-structured ...
Definition: AMReX_ParticleContainer.H:144
void AssignDensity(int rho_index, Vector< std::unique_ptr< MultiFab > > &mf_to_be_filled, int lev_min, int ncomp, int finest_level, int ngrow=2) const
Functions depending the layout of the data. Use with caution.
Definition: AMReX_AmrParticles.H:17
void SetUseUnlink(bool tf) const
Definition: AMReX_ParticleContainer.H:1223
-
Vector< ParticleLevel > m_particles
Definition: AMReX_ParticleContainer.H:1424
-
Vector< Long > nParticlesAtLevelPrePost
Definition: AMReX_ParticleContainer.H:1342
+
Vector< ParticleLevel > m_particles
Definition: AMReX_ParticleContainer.H:1426
+
Vector< Long > nParticlesAtLevelPrePost
Definition: AMReX_ParticleContainer.H:1344
void WriteBinaryParticleData(const std::string &dir, const std::string &name, const Vector< int > &write_real_comp, const Vector< int > &write_int_comp, const Vector< std::string > &real_comp_names, const Vector< std::string > &int_comp_names, F &&f, bool is_checkpoint=false) const
Writes particle data to disk in the AMReX native format.
void InitFromBinaryFile(const std::string &file, int extradata)
Definition: AMReX_ParticleInit.H:483
bool GetLevelDirectoriesCreated() const
Definition: AMReX_ParticleContainer.H:1211
-
size_t superparticle_size
Definition: AMReX_ParticleContainer.H:1422
+
size_t superparticle_size
Definition: AMReX_ParticleContainer.H:1424
std::array< Long, 3 > ByteSpread() const
Definition: AMReX_ParticleContainerI.H:467
void clearParticles()
Clear all the particles in this container. This does not free memory.
Definition: AMReX_ParticleContainerI.H:976
void copyParticles(const PCType &other, bool local=false)
Copy particles from other to this ParticleContainer. Will clear all the particles from this container...
-
bool doUnlink
Definition: AMReX_ParticleContainer.H:1338
-
Vector< Vector< int > > whichPrePost
Definition: AMReX_ParticleContainer.H:1343
+
bool doUnlink
Definition: AMReX_ParticleContainer.H:1340
+
Vector< Vector< int > > whichPrePost
Definition: AMReX_ParticleContainer.H:1345
void WriteParticleRealData(void *data, size_t size, std::ostream &os) const
Write a contiguous chunk of real particle data to an ostream.
Definition: AMReX_ParticleIO.H:11
const ParticleTileType & ParticlesAt(int lev, const Iterator &iter) const
Return the ParticleTile for level "lev" and Iterator "iter". Const version.
Definition: AMReX_ParticleContainer.H:1084
ParticleContainer_impl(const Vector< Geometry > &geom, const Vector< DistributionMapping > &dmap, const Vector< BoxArray > &ba, const Vector< IntVect > &rr)
Same as the above, but accepts different refinement ratios in each direction.
Definition: AMReX_ParticleContainer.H:276
-
std::string HdrFileNamePrePost
Definition: AMReX_ParticleContainer.H:1346
-
Vector< Vector< Long > > wherePrePost
Definition: AMReX_ParticleContainer.H:1345
+
std::string HdrFileNamePrePost
Definition: AMReX_ParticleContainer.H:1348
+
Vector< Vector< Long > > wherePrePost
Definition: AMReX_ParticleContainer.H:1347
void WritePlotFile(const std::string &dir, const std::string &name, const Vector< std::string > &real_comp_names, F &&f) const
This version of WritePlotFile writes all components and allows the user to specify the names of the c...
RealDescriptor ParticleRealDescriptor
Definition: AMReX_ParticleContainer.H:176
ParticleTileType & DefineAndReturnParticleTile(int lev, int grid, int tile)
Define and return the ParticleTile for level "lev", grid "grid" and tile "tile.".
Definition: AMReX_ParticleContainer.H:1134
-
int nOutFilesPrePost
Definition: AMReX_ParticleContainer.H:1340
-
int maxnextidPrePost
Definition: AMReX_ParticleContainer.H:1339
+
int nOutFilesPrePost
Definition: AMReX_ParticleContainer.H:1342
+
int maxnextidPrePost
Definition: AMReX_ParticleContainer.H:1341
void WritePlotFile(const std::string &dir, const std::string &name, F &&f) const
This version of WritePlotFile writes all components and assigns component names.
ParticleContainer_impl(ParticleContainer_impl &&) noexcept=default
void Checkpoint(const std::string &dir, const std::string &name, const Vector< std::string > &real_comp_names=Vector< std::string >(), const Vector< std::string > &int_comp_names=Vector< std::string >()) const
Writes a particle checkpoint to file, suitable for restarting.
Definition: AMReX_ParticleContainer.H:743
void addParticles(const PCType &other, bool local=false)
Add particles from other to this ParticleContainer. local controls whether or not to call Redistribut...
std::map< std::pair< int, int >, ParticleTileType > ParticleLevel
Definition: AMReX_ParticleContainer.H:185
-
bool levelDirectoriesCreated
Variables for i/o optimization saved for pre and post checkpoint.
Definition: AMReX_ParticleContainer.H:1336
-
ContainerLike< NewAllocator > make_alike() const
Definition: AMReX_ParticleContainer.H:1319
+
bool levelDirectoriesCreated
Variables for i/o optimization saved for pre and post checkpoint.
Definition: AMReX_ParticleContainer.H:1338
+
ContainerLike< NewAllocator > make_alike() const
Definition: AMReX_ParticleContainer.H:1321
void WriteAsciiFile(const std::string &file)
Definition: AMReX_ParticleIO.H:1134
static constexpr int NArrayInt
Number of extra integer components stored in struct-of-array form.
Definition: AMReX_ParticleContainer.H:157
void Initialize()
Definition: AMReX_ParticleContainerI.H:33
@@ -905,59 +907,59 @@
static constexpr int NStructInt
Number of extra integer components in the particle struct.
Definition: AMReX_ParticleContainer.H:153
ParticleContainer_impl()
Default constructor - construct an empty particle container that has no concept of a level hierarchy....
Definition: AMReX_ParticleContainer.H:198
void SetUsePrePost(bool tf) const
Definition: AMReX_ParticleContainer.H:1213
-
int NumRealComps() const
Definition: AMReX_ParticleContainer.H:1286
+
int NumRealComps() const
Definition: AMReX_ParticleContainer.H:1288
void WritePlotFilePre()
Definition: AMReX_ParticleIO.H:560
bool EnforcePeriodicWhere(P &prt, ParticleLocData &pld, int lev_min=0, int lev_max=-1, int local_grid=-1) const
Checks whether the particle has crossed a periodic boundary in such a way that it is on levels lev_mi...
void RemoveParticlesAtLevel(int level)
The Following methods are for managing Virtual and Ghost Particles.
Definition: AMReX_ParticleContainerI.H:608
void InitFromAsciiFile(const std::string &file, int extradata, const IntVect *Nrep=nullptr)
Definition: AMReX_ParticleInit.H:37
ParticleTileType & DefineAndReturnParticleTile(int lev, const Iterator &iter)
Define and return the ParticleTile for level "lev", and Iterator "iter".
Definition: AMReX_ParticleContainer.H:1162
Long TotalNumberOfParticles(bool only_valid=true, bool only_local=false) const
Returns # of particles at all levels.
Definition: AMReX_ParticleContainerI.H:351
-
Vector< int > h_redistribute_int_comp
Definition: AMReX_ParticleContainer.H:1333
+
Vector< int > h_redistribute_int_comp
Definition: AMReX_ParticleContainer.H:1335
typename ParticleTileType::SoA SoA
Definition: AMReX_ParticleContainer.H:187
-
virtual void correctCellVectors(int, int, int, const ParticleType &)
Definition: AMReX_ParticleContainer.H:1406
+
virtual void correctCellVectors(int, int, int, const ParticleType &)
Definition: AMReX_ParticleContainer.H:1408
void WritePlotFile(const std::string &dir, const std::string &name, const Vector< std::string > &real_comp_names, const Vector< std::string > &int_comp_names, F &&f) const
This version of WritePlotFile writes all components and allows the user to specify the names of the c...
bool OK(int lev_min=0, int lev_max=-1, int nGrow=0) const
OK checks that all particles are in the right places (for some value of right)
Definition: AMReX_ParticleContainerI.H:2287
void locateParticle(P &p, ParticleLocData &pld, int lev_min, int lev_max, int nGrow, int local_grid=-1) const
-
int NumRuntimeIntComps() const
Definition: AMReX_ParticleContainer.H:1284
+
int NumRuntimeIntComps() const
Definition: AMReX_ParticleContainer.H:1286
Long GetNParticlesPrePost() const
Definition: AMReX_ParticleContainer.H:1221
void InitRandom(Long icount, ULong iseed, const ParticleInitData &pdata, bool serialize=false, RealBox bx=RealBox())
This initializes the particle container with icount randomly distributed particles....
Definition: AMReX_ParticleInit.H:968
void ResizeRuntimeRealComp(int new_size, bool communicate)
Definition: AMReX_ParticleContainerI.H:2488
T_CellAssignor CellAssignor
Definition: AMReX_ParticleContainer.H:148
void RemoveParticlesNotAtFinestLevel()
Definition: AMReX_ParticleContainerI.H:622
-
DenseBins< typename ParticleTileType::ParticleTileDataType > m_bins
Definition: AMReX_ParticleContainer.H:1400
+
DenseBins< typename ParticleTileType::ParticleTileDataType > m_bins
Definition: AMReX_ParticleContainer.H:1402
void ReadParticleRealData(void *data, size_t size, std::istream &is)
Read a contiguous chunk of real particle data from an istream.
Definition: AMReX_ParticleIO.H:25
void RedistributeCPU(int lev_min=0, int lev_max=-1, int nGrow=0, int local=0, bool remove_negative=true)
Definition: AMReX_ParticleContainerI.H:1426
-
int m_num_runtime_int
Definition: AMReX_ParticleContainer.H:1420
+
int m_num_runtime_int
Definition: AMReX_ParticleContainer.H:1422
ParticleContainer_impl(ParGDBBase *gdb)
Construct a particle container using a ParGDB object. The container will track changes in the grid st...
Definition: AMReX_ParticleContainer.H:214
void Restart(const std::string &dir, const std::string &file)
Restart from checkpoint.
Definition: AMReX_ParticleIO.H:644
void WritePlotFilePost()
Definition: AMReX_ParticleIO.H:570
void Define(const Vector< Geometry > &geom, const Vector< DistributionMapping > &dmap, const Vector< BoxArray > &ba, const Vector< IntVect > &rr)
Define a default-constructed ParticleContainer using a ParGDB object. Multi-level version.
Definition: AMReX_ParticleContainer.H:357
void ReadParticles(int cnt, int grd, int lev, std::ifstream &ifs, int finest_level_in_file, bool convert_ids)
void CreateVirtualParticles(int level, AoS &virts) const
Creates virtual particles for a given level that represent in some capacity all particles at finer le...
Definition: AMReX_ParticleContainerI.H:689
-
int NumRuntimeRealComps() const
Definition: AMReX_ParticleContainer.H:1283
+
int NumRuntimeRealComps() const
Definition: AMReX_ParticleContainer.H:1285
void Checkpoint(const std::string &dir, const std::string &name, bool is_checkpoint, const Vector< std::string > &real_comp_names=Vector< std::string >(), const Vector< std::string > &int_comp_names=Vector< std::string >()) const
Writes a particle checkpoint to file, suitable for restarting. This version allows the particle compo...
-
Long nparticlesPrePost
Definition: AMReX_ParticleContainer.H:1341
+
Long nparticlesPrePost
Definition: AMReX_ParticleContainer.H:1343
void InitNRandomPerCell(int n_per_cell, const ParticleInitData &pdata)
This initializes the particle container with n_per_cell randomly distributed particles per cell,...
Definition: AMReX_ParticleInit.H:1547
void WritePlotFile(const std::string &dir, const std::string &name) const
This version of WritePlotFile writes all components and assigns component names.
Definition: AMReX_ParticleIO.H:97
void WritePlotFile(const std::string &dir, const std::string &name, const Vector< int > &write_real_comp, const Vector< int > &write_int_comp, F &&f) const
This version of WritePlotFile assigns component names, but allows the user to pass in a vector of int...
-
int m_num_runtime_real
Definition: AMReX_ParticleContainer.H:1419
+
int m_num_runtime_real
Definition: AMReX_ParticleContainer.H:1421
void copyParticles(const PCType &other, F &&f, bool local=false)
Copy particles from other to this ParticleContainer. Will clear all the particles from this container...
void CheckpointPre()
Definition: AMReX_ParticleIO.H:447
ParticleLocData Reset(ParticleType &prt, bool update, bool verbose=true, ParticleLocData pld=ParticleLocData()) const
Updates a particle's location (Where), tries to periodic shift any particles that have left the domai...
Definition: AMReX_ParticleContainerI.H:262
-
Vector< std::string > filePrefixPrePost
Definition: AMReX_ParticleContainer.H:1347
+
Vector< std::string > filePrefixPrePost
Definition: AMReX_ParticleContainer.H:1349
void RedistributeGPU(int lev_min=0, int lev_max=-1, int nGrow=0, int local=0, bool remove_negative=true)
Definition: AMReX_ParticleContainerI.H:1236
int numLocalTilesAtLevel(int lev) const
The total number of tiles on this rank on this level.
Definition: AMReX_ParticleContainer.H:368
void reserveData() override
Definition: AMReX_ParticleContainerI.H:296
void WritePlotFile(const std::string &dir, const std::string &name, const Vector< int > &write_real_comp, const Vector< int > &write_int_comp, const Vector< std::string > &real_comp_names, const Vector< std::string > &int_comp_names, F &&f) const
This is the most general version of WritePlotFile, which takes component names and flags for whether ...
static constexpr int NStructReal
Number of extra Real components in the particle struct.
Definition: AMReX_ParticleContainer.H:151
-
Vector< int > h_redistribute_real_comp
Definition: AMReX_ParticleContainer.H:1332
+
Vector< int > h_redistribute_real_comp
Definition: AMReX_ParticleContainer.H:1334
typename Particle< NStructReal, NStructInt >::RealType RealType
The type of the Real data.
Definition: AMReX_ParticleContainer.H:171
bool GetUseUnlink() const
Definition: AMReX_ParticleContainer.H:1227
Vector< Long > NumberOfParticlesInGrid(int level, bool only_valid=true, bool only_local=false) const
Definition: AMReX_ParticleContainerI.H:366
-
int NumIntComps() const
Definition: AMReX_ParticleContainer.H:1287
+
int NumIntComps() const
Definition: AMReX_ParticleContainer.H:1289
Allocator< T > AllocatorType
The memory allocator in use.
Definition: AMReX_ParticleContainer.H:167
void RedistributeMPI(std::map< int, Vector< char > > &not_ours, int lev_min=0, int lev_max=0, int nGrow=0, int local=0)
Definition: AMReX_ParticleContainerI.H:1940
-
void AddIntComp(T communicate=true)
Definition: AMReX_ParticleContainer.H:1263
+
void AddIntComp(T communicate=true)
Definition: AMReX_ParticleContainer.H:1264
ParticleLevel & GetParticles(int lev)
Return the ParticleLevel for level "lev". Non-const version.
Definition: AMReX_ParticleContainer.H:1010
void CreateGhostParticles(int level, int ngrow, ParticleTileType &ghosts) const
Create ghost particles for a given level that are copies of particles near coarse->fine boundaries in...
void AddParticlesAtLevel(ParticleTileType &particles, int level, int nGrow=0)
Add particles from a pbox to the grid at this level.
@@ -971,10 +973,10 @@
ParticleContainer_impl(const Vector< Geometry > &geom, const Vector< DistributionMapping > &dmap, const Vector< BoxArray > &ba, const Vector< int > &rr)
Construct a particle container using a given Geometry, DistributionMapping, BoxArray and Vector of re...
Definition: AMReX_ParticleContainer.H:254
Long superParticleSize() const
Definition: AMReX_ParticleContainer.H:1237
typename SoA::IntVector IntVector
Definition: AMReX_ParticleContainer.H:190
-
int num_int_comm_comps
Definition: AMReX_ParticleContainer.H:1423
-
size_t particle_size
Definition: AMReX_ParticleContainer.H:1422
+
int num_int_comm_comps
Definition: AMReX_ParticleContainer.H:1425
+
size_t particle_size
Definition: AMReX_ParticleContainer.H:1424
void SortParticlesByBin(IntVect bin_size)
Sort the particles on each tile by groups of cells, given an IntVect bin_size.
Definition: AMReX_ParticleContainerI.H:1173
-
virtual void particlePostLocate(ParticleType &, const ParticleLocData &, const int)
Definition: AMReX_ParticleContainer.H:1403
+
virtual void particlePostLocate(ParticleType &, const ParticleLocData &, const int)
Definition: AMReX_ParticleContainer.H:1405
void CreateGhostParticles(int level, int ngrow, AoS &ghosts) const
Create ghost particles for a given level that are copies of particles near coarse->fine boundaries in...
void Define(const Vector< Geometry > &geom, const Vector< DistributionMapping > &dmap, const Vector< BoxArray > &ba, const Vector< int > &rr)
Define a default-constructed ParticleContainer using a ParGDB object. Multi-level version.
Definition: AMReX_ParticleContainer.H:338
void AddParticlesAtLevel(AoS &particles, int level, int nGrow=0)
Add particles from a pbox to the grid at this level.
@@ -983,7 +985,7 @@
void ResizeRuntimeIntComp(int new_size, bool communicate)
Definition: AMReX_ParticleContainerI.H:2514
void InitFromBinaryMetaFile(const std::string &file, int extradata)
Definition: AMReX_ParticleInit.H:929
void resizeData() override
Definition: AMReX_ParticleContainerI.H:305
-
int num_real_comm_comps
Definition: AMReX_ParticleContainer.H:1423
+
int num_real_comm_comps
Definition: AMReX_ParticleContainer.H:1425
ParticleTileType & ParticlesAt(int lev, const Iterator &iter)
Return the ParticleTile for level "lev" and Iterator "iter". Non-const version.
Definition: AMReX_ParticleContainer.H:1109
IntVect Index(const P &p, int lev) const
void Redistribute(int lev_min=0, int lev_max=-1, int nGrow=0, int local=0, bool remove_negative=true)
Redistribute puts all the particles back in the right places (for some value of right)
Definition: AMReX_ParticleContainerI.H:1066
@@ -995,10 +997,10 @@
~ParticleContainer_impl() override=default
void CheckpointPost()
Definition: AMReX_ParticleIO.H:504
T_ParticleType ParticleType
Definition: AMReX_ParticleContainer.H:146
-
bool m_runtime_comps_defined
Definition: AMReX_ParticleContainer.H:1418
-
Vector< Vector< int > > countPrePost
Definition: AMReX_ParticleContainer.H:1344
+
bool m_runtime_comps_defined
Definition: AMReX_ParticleContainer.H:1420
+
Vector< Vector< int > > countPrePost
Definition: AMReX_ParticleContainer.H:1346
void InitRandomPerBox(Long icount, ULong iseed, const ParticleInitData &pdata)
This initializes the container with icount randomly distributed particles per box,...
Definition: AMReX_ParticleInit.H:1362
-
bool usePrePost
Definition: AMReX_ParticleContainer.H:1337
+
bool usePrePost
Definition: AMReX_ParticleContainer.H:1339
void SetParticleSize()
Definition: AMReX_ParticleContainerI.H:7
A Box with real dimensions. A RealBox is OK iff volume >= 0.
Definition: AMReX_RealBox.H:21
A Descriptor of the Real Type.
Definition: AMReX_FabConv.H:105
diff --git a/amrex/docs_xml/doxygen/AMReX__ParticleContainerI_8H.xml b/amrex/docs_xml/doxygen/AMReX__ParticleContainerI_8H.xml index 43bff164f2..81985ecdd9 100644 --- a/amrex/docs_xml/doxygen/AMReX__ParticleContainerI_8H.xml +++ b/amrex/docs_xml/doxygen/AMReX__ParticleContainerI_8H.xml @@ -1376,16 +1376,16 @@ for(auto&kv:plev) { intgid=kv.first.first; -inttid=kv.first.second; +inttid=kv.first.second; autoindex=std::make_pair(gid,tid); - + auto&src_tile=plev[index]; constsize_tnp=src_tile.numParticles(); intnum_stay=partitionParticlesByDest(src_tile,assign_grid, -std::forward<CellAssignor>(CellAssignor{}), +std::forward<CellAssignor>(CellAssignor{}), BufferMap(), -plo,phi,rlo,rhi,is_per,lev,gid,tid, +plo,phi,rlo,rhi,is_per,lev,gid,tid, lev_min,lev_max,nGrow,remove_negative); intnum_move=np-num_stay; @@ -1480,9 +1480,9 @@ Gpu::Device::streamSynchronize(); communicateParticlesStart(*this,plan,snd_buffer,pinned_rcv_buffer); }else{ -pinned_snd_buffer.resize(snd_buffer.size()); +pinned_snd_buffer.resize(snd_buffer.size()); Gpu::dtoh_memcpy_async(pinned_snd_buffer.dataPtr(),snd_buffer.dataPtr(),snd_buffer.size()); -plan.buildMPIFinish(BufferMap()); +plan.buildMPIFinish(BufferMap()); Gpu::Device::streamSynchronize(); communicateParticlesStart(*this,plan,pinned_snd_buffer,pinned_rcv_buffer); } @@ -1491,21 +1491,21 @@ unpackBuffer(*this,plan,snd_buffer,RedistributeUnpackPolicy()); communicateParticlesFinish(plan); Gpu::htod_memcpy_async(rcv_buffer.dataPtr(),pinned_rcv_buffer.dataPtr(),pinned_rcv_buffer.size()); -unpackRemotes(*this,plan,rcv_buffer,RedistributeUnpackPolicy()); +unpackRemotes(*this,plan,rcv_buffer,RedistributeUnpackPolicy()); } - + Gpu::Device::streamSynchronize(); AMREX_ASSERT(numParticlesOutOfRange(*this,lev_min,lev_max,nGrow)==0); #else amrex::ignore_unused(lev_min,lev_max,nGrow,local,remove_negative); -#endif +#endif } - + // //TheCPUimplementationofRedistribute // -template<typenameParticleType,intNArrayReal,intNArrayInt, -template<class>classAllocator,classCellAssignor> +template<typenameParticleType,intNArrayReal,intNArrayInt, +template<class>classAllocator,classCellAssignor> void ParticleContainer_impl<ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor> ::RedistributeCPU(intlev_min,intlev_max,intnGrow,intlocal,boolremove_negative) diff --git a/amrex/docs_xml/doxygen/AMReX__ParticleContainer_8H.xml b/amrex/docs_xml/doxygen/AMReX__ParticleContainer_8H.xml index 2424b3f18c..78467455da 100644 --- a/amrex/docs_xml/doxygen/AMReX__ParticleContainer_8H.xml +++ b/amrex/docs_xml/doxygen/AMReX__ParticleContainer_8H.xml @@ -3342,159 +3342,161 @@ m_num_runtime_real++; h_redistribute_real_comp.push_back(communicate); SetParticleSize(); - -//resizeruntimeSoA -for(intlev=0;lev<numLevels();++lev){ -for(ParIterTypepti(*this,lev);pti.isValid();++pti){ -auto&tile=DefineAndReturnParticleTile(lev,pti); -autonp=tile.numParticles(); -if(np>0){ -auto&soa=tile.GetStructOfArrays(); -soa.resize(np); -} -} -} -} - -template<typenameT, -std::enable_if_t<std::is_same_v<T,bool>,int>=0> -voidAddIntComp(Tcommunicate=true) -{ -m_runtime_comps_defined=true; -m_num_runtime_int++; -h_redistribute_int_comp.push_back(communicate); -SetParticleSize(); - -//resizeruntimeSoA -for(intlev=0;lev<numLevels();++lev){ -for(ParIterTypepti(*this,lev);pti.isValid();++pti){ -auto&tile=DefineAndReturnParticleTile(lev,pti); -autonp=tile.numParticles(); -if(np>0){ -auto&soa=tile.GetStructOfArrays(); -soa.resize(np); -} -} -} -} - -intNumRuntimeRealComps()const{returnm_num_runtime_real;} -intNumRuntimeIntComps()const{returnm_num_runtime_int;} - -intNumRealComps()const{returnNArrayReal+NumRuntimeRealComps();} -intNumIntComps()const{returnNArrayInt+NumRuntimeIntComps();} - -voidResizeRuntimeRealComp(intnew_size,boolcommunicate); - -voidResizeRuntimeIntComp(intnew_size,boolcommunicate); - -template<template<class>classNewAllocator=amrex::DefaultAllocator> -usingContainerLike=amrex::ParticleContainer_impl<ParticleType, NArrayReal, NArrayInt, NewAllocator>; - -template<template<class>classNewAllocator=amrex::DefaultAllocator> -ContainerLike<NewAllocator> -make_alike()const -{ -ContainerLike<NewAllocator>tmp(m_gdb); - -//addruntimerealcompstotmp -for(intic=0;ic<this->NumRuntimeRealComps();++ic){tmp.AddRealComp(false);} - -//addruntimeintcompstotmp -for(intic=0;ic<this->NumRuntimeIntComps();++ic){tmp.AddIntComp(false);} - -returntmp; -} - -Vector<int>h_redistribute_real_comp; -Vector<int>h_redistribute_int_comp; - -mutableboollevelDirectoriesCreated; -mutableboolusePrePost; -mutablebooldoUnlink; -intmaxnextidPrePost; -mutableintnOutFilesPrePost; -LongnparticlesPrePost; -Vector<Long>nParticlesAtLevelPrePost; -mutableVector<Vector<int>>whichPrePost; -mutableVector<Vector<int>>countPrePost; -mutableVector<Vector<Long>>wherePrePost; -mutablestd::stringHdrFileNamePrePost; -mutableVector<std::string>filePrefixPrePost; - -protected: +this->resizeData(); + +//resizeruntimeSoA +for(intlev=0;lev<numLevels();++lev){ +for(ParIterTypepti(*this,lev);pti.isValid();++pti){ +auto&tile=DefineAndReturnParticleTile(lev,pti); +autonp=tile.numParticles(); +if(np>0){ +auto&soa=tile.GetStructOfArrays(); +soa.resize(np); +} +} +} +} + +template<typenameT, +std::enable_if_t<std::is_same_v<T,bool>,int>=0> +voidAddIntComp(Tcommunicate=true) +{ +m_runtime_comps_defined=true; +m_num_runtime_int++; +h_redistribute_int_comp.push_back(communicate); +SetParticleSize(); +this->resizeData(); + +//resizeruntimeSoA +for(intlev=0;lev<numLevels();++lev){ +for(ParIterTypepti(*this,lev);pti.isValid();++pti){ +auto&tile=DefineAndReturnParticleTile(lev,pti); +autonp=tile.numParticles(); +if(np>0){ +auto&soa=tile.GetStructOfArrays(); +soa.resize(np); +} +} +} +} + +intNumRuntimeRealComps()const{returnm_num_runtime_real;} +intNumRuntimeIntComps()const{returnm_num_runtime_int;} + +intNumRealComps()const{returnNArrayReal+NumRuntimeRealComps();} +intNumIntComps()const{returnNArrayInt+NumRuntimeIntComps();} + +voidResizeRuntimeRealComp(intnew_size,boolcommunicate); + +voidResizeRuntimeIntComp(intnew_size,boolcommunicate); + +template<template<class>classNewAllocator=amrex::DefaultAllocator> +usingContainerLike=amrex::ParticleContainer_impl<ParticleType, NArrayReal, NArrayInt, NewAllocator>; + +template<template<class>classNewAllocator=amrex::DefaultAllocator> +ContainerLike<NewAllocator> +make_alike()const +{ +ContainerLike<NewAllocator>tmp(m_gdb); + +//addruntimerealcompstotmp +for(intic=0;ic<this->NumRuntimeRealComps();++ic){tmp.AddRealComp(false);} + +//addruntimeintcompstotmp +for(intic=0;ic<this->NumRuntimeIntComps();++ic){tmp.AddIntComp(false);} + +returntmp; +} + +Vector<int>h_redistribute_real_comp; +Vector<int>h_redistribute_int_comp; + +mutableboollevelDirectoriesCreated; +mutableboolusePrePost; +mutablebooldoUnlink; +intmaxnextidPrePost; +mutableintnOutFilesPrePost; +LongnparticlesPrePost; +Vector<Long>nParticlesAtLevelPrePost; +mutableVector<Vector<int>>whichPrePost; +mutableVector<Vector<int>>countPrePost; +mutableVector<Vector<Long>>wherePrePost; +mutablestd::stringHdrFileNamePrePost; +mutableVector<std::string>filePrefixPrePost; -template<typenameP> -boolWhere(constP&prt,ParticleLocData&pld, -intlev_min=0,intlev_max=-1,intnGrow=0,intlocal_grid=-1)const; - - -template<typenameP> -boolEnforcePeriodicWhere(P&prt,ParticleLocData&pld, -intlev_min=0,intlev_max=-1,intlocal_grid=-1)const; - -public: -void -WriteParticles(intlevel,std::ofstream&ofs,intfnum, -Vector<int>&which,Vector<int>&count,Vector<Long>&where, -constVector<int>&write_real_comp,constVector<int>&write_int_comp, -constVector<std::map<std::pair<int,int>,IntVector>>&particle_io_flags,boolis_checkpoint)const; -#ifdefAMREX_USE_HDF5 -#include"AMReX_ParticlesHDF5.H" -#endif - -protected: +protected: + +template<typenameP> +boolWhere(constP&prt,ParticleLocData&pld, +intlev_min=0,intlev_max=-1,intnGrow=0,intlocal_grid=-1)const; + + +template<typenameP> +boolEnforcePeriodicWhere(P&prt,ParticleLocData&pld, +intlev_min=0,intlev_max=-1,intlocal_grid=-1)const; + +public: +void +WriteParticles(intlevel,std::ofstream&ofs,intfnum, +Vector<int>&which,Vector<int>&count,Vector<Long>&where, +constVector<int>&write_real_comp,constVector<int>&write_int_comp, +constVector<std::map<std::pair<int,int>,IntVector>>&particle_io_flags,boolis_checkpoint)const; +#ifdefAMREX_USE_HDF5 +#include"AMReX_ParticlesHDF5.H" +#endif -template<classRTYPE> -voidReadParticles(intcnt,intgrd,intlev,std::ifstream&ifs,intfinest_level_in_file,boolconvert_ids); - -voidSetParticleSize(); +protected: + +template<classRTYPE> +voidReadParticles(intcnt,intgrd,intlev,std::ifstream&ifs,intfinest_level_in_file,boolconvert_ids); -DenseBins<typename ParticleTileType::ParticleTileDataType>m_bins; +voidSetParticleSize(); -private: -virtualvoidparticlePostLocate(ParticleType&/*p*/,constParticleLocData&/*pld*/, -constint/*lev*/){} - -virtualvoidcorrectCellVectors(int/*old_index*/,int/*new_index*/, -int/*grid*/,constParticleType&/*p*/){} - -voidRedistributeMPI(std::map<int,Vector<char>>&not_ours, -intlev_min=0,intlev_max=0,intnGrow=0,intlocal=0); - -template<typenameP> -voidlocateParticle(P&p,ParticleLocData&pld, -intlev_min,intlev_max,intnGrow,intlocal_grid=-1)const; - -voidInitialize(); +DenseBins<typename ParticleTileType::ParticleTileDataType>m_bins; + +private: +virtualvoidparticlePostLocate(ParticleType&/*p*/,constParticleLocData&/*pld*/, +constint/*lev*/){} + +virtualvoidcorrectCellVectors(int/*old_index*/,int/*new_index*/, +int/*grid*/,constParticleType&/*p*/){} + +voidRedistributeMPI(std::map<int,Vector<char>>&not_ours, +intlev_min=0,intlev_max=0,intnGrow=0,intlocal=0); + +template<typenameP> +voidlocateParticle(P&p,ParticleLocData&pld, +intlev_min,intlev_max,intnGrow,intlocal_grid=-1)const; -boolm_runtime_comps_defined{false}; -intm_num_runtime_real{0}; -intm_num_runtime_int{0}; - -size_tparticle_size,superparticle_size; -intnum_real_comm_comps,num_int_comm_comps; -Vector<ParticleLevel>m_particles; -}; - -template<intT_NStructReal,intT_NStructInt,intT_NArrayReal,intT_NArrayInt,template<class>classAllocator,classCellAssignor> -usingParticleContainer=ParticleContainer_impl<Particle<T_NStructReal, T_NStructInt>,T_NArrayReal,T_NArrayInt,Allocator,CellAssignor>; - -template<intT_NArrayReal,intT_NArrayInt,template<class>classAllocator=DefaultAllocator,classCellAssignor=DefaultAssignor> -usingParticleContainerPureSoA=ParticleContainer_impl<SoAParticle<T_NArrayReal, T_NArrayInt>,T_NArrayReal,T_NArrayInt,Allocator,CellAssignor>; - - -#include"AMReX_ParticleInit.H" -#include"AMReX_ParticleContainerI.H" -#include"AMReX_ParticleIO.H" - -#ifdefAMREX_USE_HDF5 -#include"AMReX_ParticleHDF5.H" -#endif - -} +voidInitialize(); + +boolm_runtime_comps_defined{false}; +intm_num_runtime_real{0}; +intm_num_runtime_int{0}; + +size_tparticle_size,superparticle_size; +intnum_real_comm_comps,num_int_comm_comps; +Vector<ParticleLevel>m_particles; +}; + +template<intT_NStructReal,intT_NStructInt,intT_NArrayReal,intT_NArrayInt,template<class>classAllocator,classCellAssignor> +usingParticleContainer=ParticleContainer_impl<Particle<T_NStructReal, T_NStructInt>,T_NArrayReal,T_NArrayInt,Allocator,CellAssignor>; + +template<intT_NArrayReal,intT_NArrayInt,template<class>classAllocator=DefaultAllocator,classCellAssignor=DefaultAssignor> +usingParticleContainerPureSoA=ParticleContainer_impl<SoAParticle<T_NArrayReal, T_NArrayInt>,T_NArrayReal,T_NArrayInt,Allocator,CellAssignor>; + + +#include"AMReX_ParticleInit.H" +#include"AMReX_ParticleContainerI.H" +#include"AMReX_ParticleIO.H" + +#ifdefAMREX_USE_HDF5 +#include"AMReX_ParticleHDF5.H" +#endif -#endif/*_PARTICLES_H_*/ +} + +#endif/*_PARTICLES_H_*/ diff --git a/amrex/docs_xml/doxygen/classamrex_1_1ParticleContainer__impl.xml b/amrex/docs_xml/doxygen/classamrex_1_1ParticleContainer__impl.xml index 6f19c3ed53..aae4efe66e 100644 --- a/amrex/docs_xml/doxygen/classamrex_1_1ParticleContainer__impl.xml +++ b/amrex/docs_xml/doxygen/classamrex_1_1ParticleContainer__impl.xml @@ -295,7 +295,7 @@ - + @@ -421,7 +421,7 @@ - + Vector< int > @@ -434,7 +434,7 @@ - + bool @@ -448,7 +448,7 @@ - + bool @@ -461,7 +461,7 @@ - + bool @@ -474,7 +474,7 @@ - + int @@ -487,7 +487,7 @@ - + int @@ -500,7 +500,7 @@ - + Long @@ -513,7 +513,7 @@ - + Vector< Long > @@ -526,7 +526,7 @@ - + Vector< Vector< int > > @@ -539,7 +539,7 @@ - + Vector< Vector< int > > @@ -552,7 +552,7 @@ - + Vector< Vector< Long > > @@ -565,7 +565,7 @@ - + std::string @@ -578,7 +578,7 @@ - + Vector< std::string > @@ -591,7 +591,7 @@ - + @@ -606,7 +606,7 @@ - + @@ -622,7 +622,7 @@ - + int @@ -636,7 +636,7 @@ - + int @@ -650,7 +650,7 @@ - + size_t @@ -663,7 +663,7 @@ - + size_t @@ -676,7 +676,7 @@ - + int @@ -689,7 +689,7 @@ - + int @@ -702,7 +702,7 @@ - + Vector< ParticleLevel > @@ -715,7 +715,7 @@ - + @@ -4785,7 +4785,7 @@ - + @@ -4812,7 +4812,7 @@ - + int @@ -4825,7 +4825,7 @@ - + int @@ -4838,7 +4838,7 @@ - + int @@ -4851,7 +4851,7 @@ - + int @@ -4864,7 +4864,7 @@ - + void @@ -4904,7 +4904,7 @@ - + void @@ -4944,7 +4944,7 @@ - + @@ -4979,7 +4979,7 @@ - + void @@ -5032,7 +5032,7 @@ - + @@ -5766,7 +5766,7 @@ - + @@ -5850,7 +5850,7 @@ - + @@ -5892,7 +5892,7 @@ - + void @@ -5905,7 +5905,7 @@ - + @@ -5929,7 +5929,7 @@ - + void @@ -5954,7 +5954,7 @@ - + void @@ -5991,7 +5991,7 @@ - + @@ -6034,7 +6034,7 @@ - + void @@ -6047,7 +6047,7 @@ - + @@ -6328,7 +6328,7 @@ - + amrex::ParticleContainer_implAddIntComp amrex::ParticleContainer_impladdParticles diff --git a/amrex/docs_xml/doxygen/namespaceamrex.xml b/amrex/docs_xml/doxygen/namespaceamrex.xml index 0d823da4e4..3a57e74251 100644 --- a/amrex/docs_xml/doxygen/namespaceamrex.xml +++ b/amrex/docs_xml/doxygen/namespaceamrex.xml @@ -4028,7 +4028,7 @@ - + ParIter< AMREX_SPACEDIM >