1 #ifndef AMREX_PARTICLE_CONTAINER_H_
2 #define AMREX_PARTICLE_CONTAINER_H_
3 #include <AMReX_Config.H>
64 #include <type_traits>
70 #ifdef AMREX_USE_HDF5_ASYNC
71 extern hid_t es_par_g;
113 template<
int NStructReal,
int NStructInt,
int NArrayReal,
int NArrayInt>
122 template <
bool is_const,
typename T_ParticleType,
int NArrayReal,
int NArrayInt,
123 template<
class>
class Allocator,
class CellAssignor>
139 template <
typename T_ParticleType,
int T_NArrayReal,
int T_NArrayInt,
166 template <
typename T>
173 #ifdef AMREX_SINGLE_PRECISION_PARTICLES
387 const IntVect* Nrep =
nullptr);
503 void Redistribute (
int lev_min = 0,
int lev_max = -1,
int nGrow = 0,
int local=0,
504 bool remove_negative=
true);
518 template <
class index_type>
560 bool OK (
int lev_min = 0,
int lev_max = -1,
int nGrow = 0)
const;
675 template <
class PCType,
676 std::enable_if_t<IsParticleContainer<PCType>::value,
int> foo = 0>
686 template <
class PCType,
687 std::enable_if_t<IsParticleContainer<PCType>::value,
int> foo = 0>
704 template <
class F,
class PCType,
705 std::enable_if_t<IsParticleContainer<PCType>::value,
int> foo = 0,
706 std::enable_if_t<! std::is_integral_v<F>,
int> bar = 0>
722 template <
class F,
class PCType,
723 std::enable_if_t<IsParticleContainer<PCType>::value,
int> foo = 0,
724 std::enable_if_t<! std::is_integral_v<F>,
int> bar = 0>
754 void Checkpoint (
const std::string& dir,
const std::string& name,
758 Checkpoint(dir, name,
true, real_comp_names, int_comp_names);
766 void Checkpoint (
const std::string& dir,
const std::string& name,
bool is_checkpoint,
786 const std::string& name,
791 F&&
f,
bool is_checkpoint=
false)
const;
803 void Restart (
const std::string& dir,
const std::string& file);
812 void Restart (
const std::string& dir,
const std::string& file,
bool is_checkpoint);
820 void WritePlotFile (
const std::string& dir,
const std::string& name)
const;
833 template <
class F, std::enable_if_t<!std::is_same_v<std::decay_t<F>, Vector<std::
string>>>* =
nullptr>
834 void WritePlotFile (
const std::string& dir,
const std::string& name, F&&
f)
const;
844 void WritePlotFile (
const std::string& dir,
const std::string& name,
874 void WritePlotFile (
const std::string& dir,
const std::string& name,
890 template <
class F, std::enable_if_t<!std::is_same_v<std::decay_t<F>, Vector<std::
string>>>* =
nullptr>
904 const std::string& name,
924 const std::string& name,
942 const std::string& name,
968 const std::string& name,
1046 {
return m_particles[lev].at(std::make_pair(grid, tile)); }
1071 {
return m_particles[lev].at(std::make_pair(grid, tile)); }
1094 template <
class Iterator>
1096 {
return ParticlesAt(lev, iter.index(), iter.LocalTileIndex()); }
1119 template <
class Iterator>
1121 {
return ParticlesAt(lev, iter.index(), iter.LocalTileIndex()); }
1172 template <
class Iterator>
1175 auto index = std::make_pair(iter.index(), iter.LocalTileIndex());
1191 Vector<std::unique_ptr<MultiFab> >& mf_to_be_filled,
1192 int lev_min,
int ncomp,
int finest_level,
int ngrow=2)
const;
1195 int ncomp=1,
int particle_lvl_offset = 0)
const;
1197 template <
typename P,
typename Assignor=CellAssignor>
1217 template <
typename P>
1242 void RedistributeCPU (
int lev_min = 0,
int lev_max = -1,
int nGrow = 0,
int local=0,
1243 bool remove_negative=
true);
1245 void RedistributeGPU (
int lev_min = 0,
int lev_max = -1,
int nGrow = 0,
int local=0,
1246 bool remove_negative=
true);
1250 template <
typename T,
1251 std::enable_if_t<std::is_same_v<T,bool>,
int> = 0>
1261 for (
int lev = 0; lev <
numLevels(); ++lev) {
1264 auto np = tile.numParticles();
1266 auto& soa = tile.GetStructOfArrays();
1273 template <
typename T,
1274 std::enable_if_t<std::is_same_v<T,bool>,
int> = 0>
1284 for (
int lev = 0; lev <
numLevels(); ++lev) {
1287 auto np = tile.numParticles();
1289 auto& soa = tile.GetStructOfArrays();
1377 template <
typename P>
1379 int lev_min = 0,
int lev_max = -1,
int nGrow=0,
int local_grid=-1)
const;
1392 template <
typename P>
1394 int lev_min = 0,
int lev_max = -1,
int local_grid=-1)
const;
1401 const Vector<std::map<std::pair<int, int>,
IntVector>>& particle_io_flags,
bool is_checkpoint)
const;
1402 #ifdef AMREX_USE_HDF5
1408 template <
class RTYPE>
1409 void ReadParticles (
int cnt,
int grd,
int lev, std::ifstream& ifs,
int finest_level_in_file,
bool convert_ids);
1423 int lev_min = 0,
int lev_max = 0,
int nGrow = 0,
int local=0);
1425 template <
typename P>
1427 int lev_min,
int lev_max,
int nGrow,
int local_grid=-1)
const;
1440 template <
int T_NStructReal,
int T_NStructInt,
int T_NArrayReal,
int T_NArrayInt,
template<
class>
class Allocator,
class CellAssignor>
1451 #ifdef AMREX_USE_HDF5
#define AMREX_D_DECL(a, b, c)
Definition: AMReX_SPACE.H:104
Definition: AMReX_GpuAllocators.H:114
A collection of Boxes stored in an Array.
Definition: AMReX_BoxArray.H:530
A container for storing items in a set of bins.
Definition: AMReX_DenseBins.H:77
Calculates the distribution of FABs to MPI processes.
Definition: AMReX_DistributionMapping.H:41
static const RealDescriptor & Native64RealDescriptor()
Definition: AMReX_FPC.cpp:137
static const RealDescriptor & Native32RealDescriptor()
NativeRealDescriptor is equivalent to Native32RealDescriptor if BL_FLOAT is used. Otherwise,...
Definition: AMReX_FPC.cpp:124
Rectangular problem domain geometry.
Definition: AMReX_Geometry.H:73
Definition: AMReX_MFIter.H:57
bool isValid() const noexcept
Is the iterator valid i.e. is it associated with a FAB?
Definition: AMReX_MFIter.H:141
A collection (stored as an array) of FArrayBox objects.
Definition: AMReX_MultiFab.H:38
Definition: AMReX_PODVector.H:246
Definition: AMReX_ParIter.H:142
Definition: AMReX_ParGDB.H:13
Definition: AMReX_ParIter.H:32
Definition: AMReX_ParIter.H:113
Definition: AMReX_ParticleContainerBase.H:23
ParGDBBase * m_gdb
Definition: AMReX_ParticleContainerBase.H:264
void Define(ParGDBBase *gdb)
Definition: AMReX_ParticleContainerBase.H:83
int numLevels() const
the number of defined levels in the ParticleContainer
Definition: AMReX_ParticleContainerBase.H:222
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:1234
Vector< ParticleLevel > m_particles
Definition: AMReX_ParticleContainer.H:1437
Vector< Long > nParticlesAtLevelPrePost
Definition: AMReX_ParticleContainer.H:1355
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:1222
size_t superparticle_size
Definition: AMReX_ParticleContainer.H:1435
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:1351
Vector< Vector< int > > whichPrePost
Definition: AMReX_ParticleContainer.H:1356
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:1095
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:1359
Vector< Vector< Long > > wherePrePost
Definition: AMReX_ParticleContainer.H:1358
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:1145
int nOutFilesPrePost
Definition: AMReX_ParticleContainer.H:1353
int maxnextidPrePost
Definition: AMReX_ParticleContainer.H:1352
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:754
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:1349
ContainerLike< NewAllocator > make_alike() const
Definition: AMReX_ParticleContainer.H:1332
void WriteAsciiFile(const std::string &file)
Definition: AMReX_ParticleIO.H:1128
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
static constexpr int NArrayReal
Number of extra Real components stored in struct-of-array form.
Definition: AMReX_ParticleContainer.H:155
int GetMaxNextIDPrePost() const
Definition: AMReX_ParticleContainer.H:1231
std::array< Long, 3 > PrintCapacity() const
Definition: AMReX_ParticleContainerI.H:511
bool GetUsePrePost() const
Definition: AMReX_ParticleContainer.H:1227
ParticleContainer_impl & operator=(const ParticleContainer_impl &)=delete
bool PeriodicShift(P &p) const
Returns true if the particle was shifted.
typename ParticleTileType::AoS AoS
Definition: AMReX_ParticleContainer.H:186
ParticleInitType< NStructReal, NStructInt, NArrayReal, NArrayInt > ParticleInitData
Definition: AMReX_ParticleContainer.H:181
typename SoA::RealVector RealVector
Definition: AMReX_ParticleContainer.H:189
typename ParticleType::ConstType ConstParticleType
Definition: AMReX_ParticleContainer.H:147
ParticleContainer_impl(const ParticleContainer_impl &)=delete
void WriteParticles(int level, std::ofstream &ofs, int fnum, Vector< int > &which, Vector< int > &count, Vector< Long > &where, const Vector< int > &write_real_comp, const Vector< int > &write_int_comp, const Vector< std::map< std::pair< int, int >, IntVector >> &particle_io_flags, bool is_checkpoint) const
Definition: AMReX_ParticleIO.H:580
ParticleContainer_impl(const Geometry &geom, const DistributionMapping &dmap, const BoxArray &ba)
Construct a particle container using a given Geometry, DistributionMapping, and BoxArray....
Definition: AMReX_ParticleContainer.H:232
Long NumberOfParticlesAtLevel(int level, bool only_valid=true, bool only_local=false) const
Returns # of particles at specified the level.
Definition: AMReX_ParticleContainerI.H:421
void AssignCellDensitySingleLevel(int rho_index, MultiFab &mf, int level, int ncomp=1, int particle_lvl_offset=0) const
Definition: AMReX_ParticleContainerI.H:2361
void Increment(MultiFab &mf, int level)
Definition: AMReX_ParticleContainerI.H:571
void SetLevelDirectoriesCreated(bool tf)
Definition: AMReX_ParticleContainer.H:1220
void ReorderParticles(int lev, const MFIter &mfi, const index_type *permutations)
Reorder particles on the tile given by lev and mfi using a the permutations array.
typename AoS::ParticleVector ParticleVector
Definition: AMReX_ParticleContainer.H:191
const ParticleLevel & GetParticles(int lev) const
Return the ParticleLevel for level "lev". Const version.
Definition: AMReX_ParticleContainer.H:1006
void Define(const Geometry &geom, const DistributionMapping &dmap, const BoxArray &ba)
Define a default-constructed ParticleContainer using a ParGDB object. Single-level version.
Definition: AMReX_ParticleContainer.H:320
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:1224
int NumRealComps() const
Definition: AMReX_ParticleContainer.H:1299
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:1173
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:1346
typename ParticleTileType::SoA SoA
Definition: AMReX_ParticleContainer.H:187
virtual void correctCellVectors(int, int, int, const ParticleType &)
Definition: AMReX_ParticleContainer.H:1419
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:2300
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:1297
Long GetNParticlesPrePost() const
Definition: AMReX_ParticleContainer.H:1232
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:2501
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:1413
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:1439
int m_num_runtime_int
Definition: AMReX_ParticleContainer.H:1433
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:1296
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:1354
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:1432
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:1360
void RedistributeGPU(int lev_min=0, int lev_max=-1, int nGrow=0, int local=0, bool remove_negative=true)
Definition: AMReX_ParticleContainerI.H:1249
int numLocalTilesAtLevel(int lev) const
The total number of tiles on this rank on this level.
Definition: AMReX_ParticleContainer.H:368
void reserveData() override
This reserves data in the vector of dummy MultiFabs used by the ParticleContainer for the maximum num...
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:1345
typename Particle< NStructReal, NStructInt >::RealType RealType
The type of the Real data.
Definition: AMReX_ParticleContainer.H:171
bool GetUseUnlink() const
Definition: AMReX_ParticleContainer.H:1238
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:1300
Allocator< T > AllocatorType
The memory allocator in use.
Definition: AMReX_ParticleContainer.H:167
void RedistributeMPI(std::map< int, Vector< char > > ¬_ours, int lev_min=0, int lev_max=0, int nGrow=0, int local=0)
Definition: AMReX_ParticleContainerI.H:1953
void AddIntComp(T communicate=true)
Definition: AMReX_ParticleContainer.H:1275
ParticleLevel & GetParticles(int lev)
Return the ParticleLevel for level "lev". Non-const version.
Definition: AMReX_ParticleContainer.H:1021
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.
void ShrinkToFit()
Definition: AMReX_ParticleContainerI.H:551
void addParticles(const PCType &other, F const &f, bool local=false)
Add particles from other to this ParticleContainer. local controls whether or not to call Redistribut...
Vector< ParticleLevel > & GetParticles()
Return the underlying Vector (over AMR levels) of ParticleLevels. Non-const version.
Definition: AMReX_ParticleContainer.H:991
bool Where(const P &prt, ParticleLocData &pld, int lev_min=0, int lev_max=-1, int nGrow=0, int local_grid=-1) const
Checks a particle's location on levels lev_min and higher. Returns false if the particle does not exi...
void Restart(const std::string &dir, const std::string &file, bool is_checkpoint)
Older version, for backwards compatibility.
void AddRealComp(T communicate=true)
Definition: AMReX_ParticleContainer.H:1252
void Define(ParGDBBase *gdb)
Define a default-constructed ParticleContainer using a ParGDB object. The container will track change...
Definition: AMReX_ParticleContainer.H:306
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:1248
typename SoA::IntVector IntVector
Definition: AMReX_ParticleContainer.H:190
int num_int_comm_comps
Definition: AMReX_ParticleContainer.H:1436
size_t particle_size
Definition: AMReX_ParticleContainer.H:1435
void SortParticlesByBin(IntVect bin_size)
Sort the particles on each tile by groups of cells, given an IntVect bin_size.
Definition: AMReX_ParticleContainerI.H:1186
virtual void particlePostLocate(ParticleType &, const ParticleLocData &, const int)
Definition: AMReX_ParticleContainer.H:1416
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.
void SortParticlesByCell()
Sort the particles on each tile by cell, using Fortran ordering.
Definition: AMReX_ParticleContainerI.H:1177
ParticleTileType & ParticlesAt(int lev, int grid, int tile)
Return the ParticleTile for level "lev", grid "grid" and tile "tile." Non-const version.
Definition: AMReX_ParticleContainer.H:1070
void ResizeRuntimeIntComp(int new_size, bool communicate)
Definition: AMReX_ParticleContainerI.H:2527
void InitFromBinaryMetaFile(const std::string &file, int extradata)
Definition: AMReX_ParticleInit.H:929
void resizeData() override
This resizes the vector of dummy MultiFabs used by the ParticleContainer for the current number of le...
Definition: AMReX_ParticleContainerI.H:305
int num_real_comm_comps
Definition: AMReX_ParticleContainer.H:1436
ParticleTileType & ParticlesAt(int lev, const Iterator &iter)
Return the ParticleTile for level "lev" and Iterator "iter". Non-const version.
Definition: AMReX_ParticleContainer.H:1120
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
Long IncrementWithTotal(MultiFab &mf, int level, bool local=false)
Definition: AMReX_ParticleContainerI.H:598
const Vector< ParticleLevel > & GetParticles() const
Return the underlying Vector (over AMR levels) of ParticleLevels. Const version.
Definition: AMReX_ParticleContainer.H:985
void InitOnePerCell(Real x_off, Real y_off, Real z_off, const ParticleInitData &pdata)
This initializes the particle container with one particle per cell, where the other particle data and...
Definition: AMReX_ParticleInit.H:1463
const ParticleTileType & ParticlesAt(int lev, int grid, int tile) const
Return the ParticleTile for level "lev", grid "grid" and tile "tile." Const version.
Definition: AMReX_ParticleContainer.H:1045
void SortParticlesForDeposition(IntVect idx_type)
Sort particles on each tile such that particles adjacent in memory are likely to map to adjacent cell...
Definition: AMReX_ParticleContainerI.H:1219
~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:1431
Vector< Vector< int > > countPrePost
Definition: AMReX_ParticleContainer.H:1357
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:1350
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
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition: AMReX_Vector.H:27
Long size() const noexcept
Definition: AMReX_Vector.H:50
AMREX_GPU_HOST_DEVICE Long size(T const &b) noexcept
integer version
Definition: AMReX_GpuRange.H:26
static int f(amrex::Real t, N_Vector y_data, N_Vector y_rhs, void *user_data)
Definition: AMReX_SundialsIntegrator.H:44
static constexpr int P
Definition: AMReX_OpenBC.H:14
Definition: AMReX_Amr.cpp:49
amrex::ArenaAllocator< T > DefaultAllocator
Definition: AMReX_GpuAllocators.H:194
int verbose
Definition: AMReX_DistributionMapping.cpp:36
Definition: AMReX_ParticleUtil.H:432
A struct used for communicating particle data across processes during multi-level operations.
Definition: AMReX_ParticleContainer.H:78
ParticleReal RealType
Definition: AMReX_ParticleContainer.H:79
int m_grid
Definition: AMReX_ParticleContainer.H:81
RealType m_data[1+AMREX_SPACEDIM]
Definition: AMReX_ParticleContainer.H:83
IntVect m_cell
Definition: AMReX_ParticleContainer.H:82
int m_lev
Definition: AMReX_ParticleContainer.H:80
A struct used to pass initial data into the various Init methods. This struct is used to pass initial...
Definition: AMReX_ParticleContainer.H:115
std::array< int, NStructInt > int_struct_data
Definition: AMReX_ParticleContainer.H:117
std::array< int, NArrayInt > int_array_data
Definition: AMReX_ParticleContainer.H:119
std::array< double, NArrayReal > real_array_data
Definition: AMReX_ParticleContainer.H:118
std::array< double, NStructReal > real_struct_data
Definition: AMReX_ParticleContainer.H:116
A struct used for storing a particle's position in the AMR hierarchy.
Definition: AMReX_ParticleContainer.H:90
Box m_grown_gridbox
Definition: AMReX_ParticleContainer.H:97
IntVect m_cell
Definition: AMReX_ParticleContainer.H:94
int m_grid
Definition: AMReX_ParticleContainer.H:92
int m_tile
Definition: AMReX_ParticleContainer.H:93
int m_lev
Definition: AMReX_ParticleContainer.H:91
Box m_tilebox
Definition: AMReX_ParticleContainer.H:96
Box m_gridbox
Definition: AMReX_ParticleContainer.H:95
Definition: AMReX_ParticleTile.H:690
std::conditional_t< ParticleType::is_soa_particle, StructOfArrays< NArrayReal, NArrayInt, Allocator, true >, StructOfArrays< NArrayReal, NArrayInt, Allocator, false > > SoA
Definition: AMReX_ParticleTile.H:713
std::conditional_t< ParticleType::is_soa_particle, ThisParticleTileHasNoAoS, ArrayOfStructs< ParticleType, Allocator > > AoS
Definition: AMReX_ParticleTile.H:707
The struct used to store particles.
Definition: AMReX_Particle.H:295
ParticleReal RealType
The floating point type used for the particles.
Definition: AMReX_Particle.H:307