Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor > Class Template Reference

#include <AMReX_NeighborParticles.H>

Inheritance diagram for amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >:
amrex::ParticleContainer_impl< T_ParticleType, 0, 0, DefaultAllocator, DefaultAssignor > amrex::ParticleContainerBase

Classes

struct  NeighborTask

Public Types

using ParticleContainerType
using ParticleType = typename ParticleContainerType::ParticleType
using SuperParticleType = typename ParticleContainerType::SuperParticleType
using NeighborListContainerType
using MyParIter = typename ParticleContainerType::ParIterType
using PairIndex = std::pair<int, int>
using NeighborCommMap = std::map<NeighborCommTag, Vector<char> >
using AoS = typename ParticleContainerType::AoS
using ParticleVector = typename ParticleContainerType::ParticleVector
using ParticleTile = typename ParticleContainerType::ParticleTileType
using IntVector = typename ParticleContainerType::IntVector
using PTDType = typename ParticleContainerType::PTDType
using ConstPTDType = typename ParticleContainerType::ConstPTDType
Public Types inherited from amrex::ParticleContainer_impl< T_ParticleType, 0, 0, DefaultAllocator, DefaultAssignor >
using ParticleType
using ConstParticleType
using CellAssignor
using AllocatorType
 The memory allocator in use.
using SuperParticleType
 The type of the "SuperParticle" which stored all components in AoS form.
using RealType
 The type of the Real data.
using ParticleContainerType
using ParticleTileType
using ParticleInitData
using ParticleLevel
using PTDType
using ConstPTDType
using AoS
using SoA
using RealVector
using IntVector
using ParticleVector
using CharVector
using ParIterType
using ParConstIterType
using ContainerLike
using FlagsVector

Public Member Functions

 NeighborParticleContainer_impl (ParGDBBase *gdb, int ncells)
 NeighborParticleContainer_impl (const Geometry &geom, const DistributionMapping &dmap, const BoxArray &ba, int nneighbor)
 NeighborParticleContainer_impl (const Vector< Geometry > &geom, const Vector< DistributionMapping > &dmap, const Vector< BoxArray > &ba, const Vector< int > &rr, int nneighbor)
 ~NeighborParticleContainer_impl () override=default
 NeighborParticleContainer_impl (const NeighborParticleContainer_impl &)=delete
NeighborParticleContainer_impl & operator= (const NeighborParticleContainer_impl &)=delete
 NeighborParticleContainer_impl (NeighborParticleContainer_impl &&)=default
NeighborParticleContainer_impl & operator= (NeighborParticleContainer_impl &&)=default
void Regrid (const DistributionMapping &dmap, const BoxArray &ba)
void Regrid (const DistributionMapping &dmap, const BoxArray &ba, int lev)
void Regrid (const Vector< DistributionMapping > &dmap, const Vector< BoxArray > &ba)
void fillNeighbors ()
void fillNeighbors (amrex::Real search_radius)
void sumNeighbors (int real_start_comp, int real_num_comp, int int_start_comp, int int_num_comp)
void updateNeighbors (bool boundary_neighbors_only=false)
void clearNeighbors ()
template<class CheckPair>
void buildNeighborList (CheckPair const &check_pair, bool sort=false)
template<class CheckPair>
void buildNeighborList (CheckPair const &check_pair, amrex::Real bin_size, bool sort=false)
template<class CheckPair, class OtherPCType>
void buildNeighborList (CheckPair const &check_pair, OtherPCType &other, Vector< std::map< std::pair< int, int >, amrex::NeighborList< typename OtherPCType::ParticleType > > > &neighbor_lists, bool sort=false)
template<class CheckPair, class OtherPCType>
void buildNeighborList (CheckPair const &check_pair, OtherPCType &other, Vector< std::map< std::pair< int, int >, amrex::NeighborList< typename OtherPCType::ParticleType > > > &neighbor_lists, amrex::Real bin_size, bool sort=false)
template<class CheckPair>
void buildNeighborList (CheckPair const &check_pair, int type_ind, int *ref_ratio, int num_bin_types=1, bool sort=false)
template<class CheckPair>
void selectActualNeighbors (CheckPair const &check_pair, int num_cells=1)
void printNeighborList ()
void setRealCommComp (int i, bool value)
void setIntCommComp (int i, bool value)
ParticleTile & GetNeighbors (int lev, int grid, int tile)
const ParticleTile & GetNeighbors (int lev, int grid, int tile) const
template<std::same_as< bool > T>
void AddRealComp (T communicate=true)
template<std::same_as< bool > T>
void AddIntComp (T communicate=true)
void Redistribute (int lev_min=0, int lev_max=-1, int nGrow=0, int local=0, bool remove_negative=true)
void Redistribute (int lev_min, int lev_max, IntVect nGrow, bool local, IntVect max_cells_moved, bool remove_negative=true)
void RedistributeLocal (bool remove_negative=true)
void fillNeighborsGPU ()
void updateNeighborsGPU (bool boundary_neighbors_only=false)
void clearNeighborsGPU ()
void setEnableInverse (bool flag)
bool enableInverse ()
void buildNeighborMask ()
void buildNeighborCopyOp (bool use_boundary_neighbor=false)
Public Member Functions inherited from amrex::ParticleContainer_impl< T_ParticleType, 0, 0, DefaultAllocator, DefaultAssignor >
 ParticleContainer_impl ()
 Default constructor - construct an empty particle container that has no concept of a level hierarchy. Must be properly initialized later.
 ~ParticleContainer_impl () override=default
ParticleContainer_impl & operator= (const ParticleContainer_impl &)=delete
void Define (ParGDBBase *gdb)
 Define a default-constructed ParticleContainer using a ParGDB object. The container will track changes in the grid structure of the ParGDB automatically.
int numLocalTilesAtLevel (int lev) const
 The total number of tiles on this rank on this level.
void reserveData () override
 This reserves data in the vector of dummy MultiFabs used by the ParticleContainer for the maximum number of levels possible.
void resizeData () override
 This resizes the vector of dummy MultiFabs used by the ParticleContainer for the current number of levels and calls RedefineDummyMF on each level. Note that this must be done prior to using ParticleIterator.
void InitFromAsciiFile (const std::string &file, int extradata, const IntVect *Nrep=nullptr)
void InitFromBinaryFile (const std::string &file, int extradata)
void InitFromBinaryMetaFile (const std::string &file, int extradata)
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. If serialize is true, then the particles will all be generated on the IO Process, and the particle positions will be broadcast to all other process. If serialize is false, then the particle positions will be randomly generated in parallel, which each process using the random seed iseed + MyProc. The particles can be constrained to lie within the RealBox bx, if so desired. The default is the full domain.
void InitRandomPerBox (Long icount, ULong iseed, const ParticleInitData &pdata)
 This initializes the container with icount randomly distributed particles per box, using the random seed iseed. All the particles have the same data and attributes, which are passed using the pdata struct.
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 attributes are all constant. The coarsest level is used to generate the particle positions. The particle variable values are passed in through the pdata struct. The parameters x_off, y_off, and z_off represent offsets between 0 and 1 that show where inside the cells to place the particles. 0.5 means cell centered.
void InitNRandomPerCell (int n_per_cell, const ParticleInitData &pdata)
 This initializes the particle container with n_per_cell randomly distributed particles per cell, where the other particle data and and attributes are all constant. The cells on the coarsest level are used to generate the particle positions. The particle variable values are passed in through the pdata struct.
void Increment (MultiFab &mf, int level)
Long IncrementWithTotal (MultiFab &mf, int level, bool local=false)
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).
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.
void SortParticlesForDeposition (IntVect idx_type)
 Sort particles on each tile such that particles adjacent in memory are likely to map to adjacent cells. This ordering can be beneficial for performance on GPU when deposition quantities onto a grid.
void SortParticlesByCell ()
 Sort the particles on each tile by cell, using Fortran ordering.
void SortParticlesByBin (IntVect bin_size)
 Sort the particles on each tile by groups of cells, given an IntVect bin_size.
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).
std::array< Long, 3 > ByteSpread () const
std::array< Long, 3 > PrintCapacity () const
void ShrinkToFit ()
Long NumberOfParticlesAtLevel (int level, bool only_valid=true, bool only_local=false) const
 Returns # of particles at specified the level.
Vector< Long > NumberOfParticlesInGrid (int level, bool only_valid=true, bool only_local=false) const
void CapacityOfParticlesInGrid (LayoutData< Int > &mem, int lev) const
 Return capacity of memory for particles at specific grid.
Long TotalNumberOfParticles (bool only_valid=true, bool only_local=false) const
 Returns # of particles at all levels.
void RemoveParticlesAtLevel (int level)
 The Following methods are for managing Virtual and Ghost Particles.
void RemoveParticlesNotAtFinestLevel ()
void CreateVirtualParticles (int level, AoS &virts) const
 Creates virtual particles for a given level that represent in some capacity all particles at finer levels.
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 level-1.
void AddParticlesAtLevel (AoS &particles, int level, int nGrow=0)
 Add particles from a pbox to the grid at this level.
void clearParticles ()
 Clear all the particles in this container. This does not free memory.
void copyParticles (const PCType &other, bool local=false)
 Copy particles from other to this ParticleContainer. Will clear all the particles from this container first. local controls whether or not to call Redistribute() after adding the particles.
void addParticles (const PCType &other, bool local=false)
 Add particles from other to this ParticleContainer. local controls whether or not to call Redistribute after adding the particles.
void WriteParticleRealData (void *data, size_t size, std::ostream &os) const
 Write a contiguous chunk of real particle data to an ostream.
void ReadParticleRealData (void *data, size_t size, std::istream &is)
 Read a contiguous chunk of real particle data from an istream.
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.
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 const &f, bool is_checkpoint=false) const
 Writes particle data to disk in the AMReX native format.
void CheckpointPre ()
void CheckpointPost ()
void Restart (const std::string &dir, const std::string &file)
 Restart from checkpoint.
void WritePlotFile (const std::string &dir, const std::string &name) const
 This version of WritePlotFile writes all components and assigns component names.
void WritePlotFilePre ()
void WritePlotFilePost ()
void WriteAsciiFile (const std::string &file)
const Vector< ParticleLevel > & GetParticles () const
 Return the underlying Vector (over AMR levels) of ParticleLevels. Const version.
const ParticleTileType & ParticlesAt (int lev, int grid, int tile) const
 Return the ParticleTile for level "lev", grid "grid" and tile "tile." Const version.
ParticleTileType & DefineAndReturnParticleTile (int lev, int grid, int tile)
 Define and return the ParticleTile for level "lev", grid "grid" and tile "tile.".
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.
void AssignCellDensitySingleLevel (int rho_index, MultiFab &mf, int level, int ncomp=1, int particle_lvl_offset=0) const
IntVect Index (const P &p, int lev) const
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 domain. May need work (see inline comments).
bool PeriodicShift (P &p) const
 Returns true if the particle was shifted.
void SetLevelDirectoriesCreated (bool tf)
bool GetLevelDirectoriesCreated () const
void SetUsePrePost (bool tf) const
bool GetUsePrePost () const
Long GetMaxNextIDPrePost () const
Long GetNParticlesPrePost () const
void SetUseUnlink (bool tf) const
bool GetUseUnlink () const
void Redistribute_impl (int lev_min=0, int lev_max=-1, int nGrow=0, int local=0, bool remove_negative=true)
void ReserveForRedistribute (ParticleCopyPlan const &plan)
Long superParticleSize () const
void AddRealComp (std::string const &name, int communicate=1)
void AddIntComp (std::string const &name, int communicate=1)
int NumRuntimeRealComps () const
int NumRuntimeIntComps () const
int NumRealComps () const
int NumIntComps () const
void ResizeRuntimeRealComp (int new_size, bool communicate)
void ResizeRuntimeIntComp (int new_size, bool communicate)
ContainerLike< NewAllocator > make_alike () const
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 >, FlagsVector > > &particle_io_flags, bool is_checkpoint) const
void SetSoACompileTimeNames (std::vector< std::string > const &rdata_name, std::vector< std::string > const &idata_name)
std::vector< std::string > GetRealSoANames () const
std::vector< std::string > GetIntSoANames () const
bool HasRealComp (std::string const &name)
bool HasIntComp (std::string const &name)
int GetRealCompIndex (std::string const &name)
int GetIntCompIndex (std::string const &name)
Public Member Functions inherited from amrex::ParticleContainerBase
 ParticleContainerBase ()=default
 ParticleContainerBase (ParGDBBase *gdb)
 ParticleContainerBase (const Geometry &geom, const DistributionMapping &dmap, const BoxArray &ba)
 ParticleContainerBase (const Vector< Geometry > &geom, const Vector< DistributionMapping > &dmap, const Vector< BoxArray > &ba, const Vector< int > &rr)
 ParticleContainerBase (const Vector< Geometry > &geom, const Vector< DistributionMapping > &dmap, const Vector< BoxArray > &ba, const Vector< IntVect > &rr)
virtual ~ParticleContainerBase ()=default
 ParticleContainerBase (const ParticleContainerBase &)=delete
ParticleContainerBase & operator= (const ParticleContainerBase &)=delete
 ParticleContainerBase (ParticleContainerBase &&) noexcept=default
ParticleContainerBase & operator= (ParticleContainerBase &&) noexcept=default
void Define (ParGDBBase *gdb)
void Define (const Geometry &geom, const DistributionMapping &dmap, const BoxArray &ba)
void Define (const Vector< Geometry > &geom, const Vector< DistributionMapping > &dmap, const Vector< BoxArray > &ba, const Vector< int > &rr)
void Define (const Vector< Geometry > &geom, const Vector< DistributionMapping > &dmap, const Vector< BoxArray > &ba, const Vector< IntVect > &rr)
bool isDefined () const
void RedefineDummyMF (int lev)
MFIter MakeMFIter (int lev, const MFItInfo &info) const
MFIter MakeMFIter (int lev) const
MFIter MakeMFIter (int lev, bool tile) const
void SetParGDB (const Geometry &geom, const DistributionMapping &dmap, const BoxArray &ba)
 Set the particle Geometry, DistributionMapping, and BoxArray. If the container was previously set to to track the AMR hierarchy of an AmrCore or AmrLevel object, that correspondence will be broken here. This is the single-level version.
void SetParGDB (const Vector< Geometry > &geom, const Vector< DistributionMapping > &dmap, const Vector< BoxArray > &ba, const Vector< IntVect > &rr)
 Set the particle Geometry, DistributionMapping, ref ratios, and BoxArray. If the container was previously set to to track the AMR hierarchy of an AmrCore or AmrLevel object, that correspondence will be broken here. This is the multi-level version.
void SetParGDB (const Vector< Geometry > &geom, const Vector< DistributionMapping > &dmap, const Vector< BoxArray > &ba, const Vector< int > &rr)
 Set the particle Geometry, DistributionMapping, ref ratios, and BoxArray. If the container was previously set to to track the AMR hierarchy of an AmrCore or AmrLevel object, that correspondence will be broken here. This is the multi-level version.
void SetParticleBoxArray (int lev, BoxArray new_ba)
 Set the particle BoxArray. If the container was previously set to to track the AMR hierarchy of an AmrCore or AmrLevel object, that correspondence will be broken here.
void SetParticleDistributionMap (int lev, DistributionMapping new_dmap)
 Set the particle DistributionMapping. If the container was previously set to to track the AMR hierarchy of an AmrCore or AmrLevel object, that correspondence will be broken here.
void SetParticleGeometry (int lev, Geometry new_geom)
 Set the particle Geometry. If the container was previously set to to track the AMR hierarchy of an AmrCore or AmrLevel object, that correspondence will be broken here.
const BoxArray & ParticleBoxArray (int lev) const
 Get the BoxArray for a given level.
const DistributionMapping & ParticleDistributionMap (int lev) const
 Get the DistributionMapping for a given level.
const Geometry & Geom (int lev) const
 Get the Geometry for a given level.
const Geometry & ParticleGeom (int lev) const
 Get the particle Geometry for a given level.
int finestLevel () const
 the finest level actually defined for the ParticleContainer
int maxLevel () const
 the finest allowed level in the ParticleContainer, whether it is defined or not.
int numLevels () const
 the number of defined levels in the ParticleContainer
const ParGDBBase * GetParGDB () const
 Get the ParGDB object used to define this container (const version).
ParGDBBase * GetParGDB ()
 Get the ParGDB object used to define this container.
int Verbose () const
void SetVerbose (int verbose)
int stableRedistribute () const
void setStableRedistribute (int stable)
const ParticleBufferMap & BufferMap () const
void ensureParticleHandshakeWindow () const
Long * particleHandshakeBuffer () const
MPI_Win particleHandshakeWindow () const
Vector< int > NeighborProcs (IntVect ngrow) const
Vector< int > NeighborProcs (int ngrow) const
template<class MF>
bool OnSameGrids (int level, const MF &mf) const
Arena * arena () const
void SetArena (Arena *a)

Static Public Attributes

static constexpr int NArrayReal = ParticleContainerType::NArrayReal
static constexpr int NArrayInt = ParticleContainerType::NArrayInt
static constexpr int NStructReal = ParticleContainerType::NStructReal
static constexpr int NStructInt = ParticleContainerType::NStructInt
static constexpr int RealCommCompStart = ParticleType::is_soa_particle ? 0 : 3 + NStructReal
static constexpr int IntCommCompStart = 2 + NStructInt
Static Public Attributes inherited from amrex::ParticleContainer_impl< T_ParticleType, 0, 0, DefaultAllocator, DefaultAssignor >
static constexpr int NStructReal
 Number of extra Real components in the particle struct.
static constexpr int NStructInt
 Number of extra integer components in the particle struct.
static constexpr int NArrayReal
 Number of extra Real components stored in struct-of-array form.
static constexpr int NArrayInt
 Number of extra integer components stored in struct-of-array form.
static constexpr bool is_rtsoa_pc
static constexpr bool has_polymorphic_allocator
Static Public Attributes inherited from amrex::ParticleContainerBase
static bool do_tiling = false
static IntVect tile_size { 1024000,8,8 }
static bool memEfficientSort = true
static bool use_comms_arena = false

Protected Member Functions

int numRealCommComps () const
int numIntCommComps () const
void cacheNeighborInfo (amrex::Real search_radius=amrex::Real(0))
void BuildMasks (amrex::Real search_radius=amrex::Real(0))
bool areMasksValid (amrex::Real search_radius=amrex::Real(0))
void GetNeighborCommTags (amrex::Real search_radius=amrex::Real(0))
void GetCommTagsBox (Vector< NeighborCommTag > &tags, int lev, const Box &in_box, amrex::Real search_radius=amrex::Real(0))
void resizeContainers (int num_levels)
void initializeCommComps ()
void calcCommSize ()
void fillNeighborsMPI (bool reuse_rcv_counts)
void sumNeighborsMPI (std::map< int, Vector< char > > &not_ours, int real_start_comp, int real_num_comp, int int_start_comp, int int_num_comp)
void getRcvCountsMPI ()
template<typename P>
void getNeighborTags (Vector< NeighborCopyTag > &tags, const P &p, int nGrow, const NeighborCopyTag &src_tag, const MyParIter &pti, amrex::Real search_radius=amrex::Real(0))
template<typename P>
void getNeighborTags (Vector< NeighborCopyTag > &tags, const P &p, const IntVect &nGrow, const NeighborCopyTag &src_tag, const MyParIter &pti, amrex::Real search_radius=amrex::Real(0))
IntVect computeRefFac (int src_lev, int lev)
bool hasNeighbors () const
Protected Member Functions inherited from amrex::ParticleContainer_impl< T_ParticleType, 0, 0, DefaultAllocator, DefaultAssignor >
bool Where (const P &prt, ParticleLocData &pld, int lev_min=0, int lev_max=-1, IntVect nGrow=IntVect(0), int local_grid=-1) const
 Checks a particle's location on levels lev_min and higher. Returns false if the particle does not exist on that level. Only if lev_min == lev_max, nGrow can be nonzero (i.e., including nGrow ghost cells).
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_min and higher.
void ReadParticles (int cnt, int grd, int lev, std::ifstream &ifs, int finest_level_in_file, bool convert_ids)
void SetParticleSize ()
Protected Member Functions inherited from amrex::ParticleContainerBase
bool RedistributeMaskLooksCheap (int lev, IntVect nghost) const
void BuildRedistributeMask (int lev, IntVect nghost) const
void BuildRedistributeMask (int lev, int nghost=1) const
void defineBufferMap () const

Protected Attributes

Vector< std::map< PairIndex, Vector< InverseCopyTag > > > inverse_tags
Vector< std::map< PairIndex, ParticleTile > > neighbors
Vector< std::map< PairIndex, IntVector > > neighbor_list
size_t cdata_size
int m_num_neighbor_cells
Vector< NeighborCommTag > local_neighbors
Vector< std::unique_ptr< iMultiFab > > mask_ptr
Vector< std::map< PairIndex, Vector< Vector< NeighborCopyTag > > > > buffer_tag_cache
Vector< std::map< PairIndex, int > > local_neighbor_sizes
Vector< int > neighbor_procs
Vector< Long > rcvs
Long num_snds
std::map< int, Vector< char > > send_data
Vector< int > ghost_real_comp
Vector< int > ghost_int_comp
bool m_neighbor_mask_initialized = false
amrex::BoxArray m_cached_neighbor_ba
amrex::DistributionMapping m_cached_neighbor_dm
std::map< int, std::vector< std::vector< NeighborCode > > > m_grid_map
std::map< int, amrex::Gpu::DeviceVector< NeighborCode > > m_code_array
std::map< int, amrex::Gpu::DeviceVector< Box > > m_isec_boxes
std::map< int, amrex::Gpu::DeviceVector< int > > m_code_offsets
ParticleCopyOp neighbor_copy_op
ParticleCopyPlan neighbor_copy_plan
amrex::PODVector< char, PolymorphicArenaAllocator< char > > snd_buffer
amrex::PODVector< char, PolymorphicArenaAllocator< char > > rcv_buffer
Gpu::PinnedVector< char > pinned_snd_buffer
Gpu::PinnedVector< char > pinned_rcv_buffer
NeighborListContainerType m_neighbor_list
Vector< std::map< std::pair< int, int >, amrex::Gpu::DeviceVector< int > > > m_boundary_particle_ids
bool m_has_neighbors = false
Protected Attributes inherited from amrex::ParticleContainer_impl< T_ParticleType, 0, 0, DefaultAllocator, DefaultAssignor >
DenseBins< typename ParticleTileType::ParticleTileDataType > m_bins
Protected Attributes inherited from amrex::ParticleContainerBase
int m_verbose {0}
int m_stable_redistribute = 0
std::unique_ptr< ParGDB > m_gdb_object = std::make_unique<ParGDB>()
ParGDBBase * m_gdb {nullptr}
Vector< std::unique_ptr< MultiFab > > m_dummy_mf
Arena * m_arena = nullptr
std::unique_ptr< iMultiFab > redistribute_mask_ptr
IntVect redistribute_mask_nghost = IntVect(std::numeric_limits<int>::min())
bool redistribute_mask_cost_cached = false
bool redistribute_mask_cost = false
IntVect redistribute_mask_cost_nghost = IntVect(std::numeric_limits<int>::min())
BoxArray redistribute_mask_cost_ba
DistributionMapping redistribute_mask_cost_dmap
amrex::Vector< int > neighbor_procs
ParticleBufferMap m_buffer_map
std::unique_ptr< ParticleHandshakeWindow > m_particle_handshake_window

Static Protected Attributes

static constexpr size_t pdata_size = sizeof(ParticleType)
static constexpr int num_mask_comps = 3
 grid, tile, level
static bool use_mask
static bool enable_inverse

Friends

std::ostream & operator<< (std::ostream &os, const InverseCopyTag &tag)

Additional Inherited Members

Static Public Member Functions inherited from amrex::ParticleContainerBase
static const std::string & CheckpointVersion ()
static const std::string & PlotfileVersion ()
static const std::string & DataPrefix ()
static int MaxReaders ()
static Long MaxParticlesPerRead ()
static const std::string & AggregationType ()
static int AggregationBuffer ()
Public Attributes inherited from amrex::ParticleContainer_impl< T_ParticleType, 0, 0, DefaultAllocator, DefaultAssignor >
RealDescriptor ParticleRealDescriptor
Vector< int > h_redistribute_real_comp
Vector< int > h_redistribute_int_comp
bool levelDirectoriesCreated
 Variables for i/o optimization saved for pre and post checkpoint.
bool usePrePost
bool doUnlink
Long maxnextidPrePost
int nOutFilesPrePost
Long nparticlesPrePost
Vector< Long > nParticlesAtLevelPrePost
Vector< Vector< int > > whichPrePost
Vector< Vector< int > > countPrePost
Vector< Vector< Long > > wherePrePost
std::string HdrFileNamePrePost
Vector< std::string > filePrefixPrePost
Public Attributes inherited from amrex::ParticleContainerBase
AmrParticleLocator< DenseBins< Box > > m_particle_locator

Detailed Description

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
class amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >

This is a container for particles that undergo short-range interactions. In addition to the normal ParticleContainer methods, each tile contains a "neighbor buffer" that is filled with data corresponding to the particles within 1 neighbor cell of the tile boundaries. This allows the N^2 search over each pair of particles to proceed locally, instead of over the entire domain.

Note that neighbor particles are different than "ghost" particles, which are used in AMR subcycling to keep track of coarse level particles that may move on to fine levels during a fine level time step.

Member Typedef Documentation

◆ AoS

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
using amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::AoS = typename ParticleContainerType::AoS

◆ ConstPTDType

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
using amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::ConstPTDType = typename ParticleContainerType::ConstPTDType

◆ IntVector

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
using amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::IntVector = typename ParticleContainerType::IntVector

◆ MyParIter

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
using amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::MyParIter = typename ParticleContainerType::ParIterType

◆ NeighborCommMap

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
using amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::NeighborCommMap = std::map<NeighborCommTag, Vector<char> >

◆ NeighborListContainerType

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
using amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::NeighborListContainerType
Initial value:
Definition AMReX_NeighborList.H:309
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:29

◆ PairIndex

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
using amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::PairIndex = std::pair<int, int>

◆ ParticleContainerType

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
using amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::ParticleContainerType

◆ ParticleTile

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
using amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::ParticleTile = typename ParticleContainerType::ParticleTileType

◆ ParticleType

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
using amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::ParticleType = typename ParticleContainerType::ParticleType

◆ ParticleVector

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
using amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::ParticleVector = typename ParticleContainerType::ParticleVector

◆ PTDType

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
using amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::PTDType = typename ParticleContainerType::PTDType

◆ SuperParticleType

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
using amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::SuperParticleType = typename ParticleContainerType::SuperParticleType

Constructor & Destructor Documentation

◆ NeighborParticleContainer_impl() [1/5]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::NeighborParticleContainer_impl ( ParGDBBase * gdb,
int ncells )

◆ NeighborParticleContainer_impl() [2/5]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::NeighborParticleContainer_impl ( const Geometry & geom,
const DistributionMapping & dmap,
const BoxArray & ba,
int nneighbor )

◆ NeighborParticleContainer_impl() [3/5]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::NeighborParticleContainer_impl ( const Vector< Geometry > & geom,
const Vector< DistributionMapping > & dmap,
const Vector< BoxArray > & ba,
const Vector< int > & rr,
int nneighbor )

◆ ~NeighborParticleContainer_impl()

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::~NeighborParticleContainer_impl ( )
overridedefault

◆ NeighborParticleContainer_impl() [4/5]

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::NeighborParticleContainer_impl ( const NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor > & )
delete

◆ NeighborParticleContainer_impl() [5/5]

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::NeighborParticleContainer_impl ( NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor > && )
default

Member Function Documentation

◆ AddIntComp()

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
template<std::same_as< bool > T>
void amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::AddIntComp ( T communicate = true)
inline

◆ AddRealComp()

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
template<std::same_as< bool > T>
void amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::AddRealComp ( T communicate = true)
inline

◆ areMasksValid()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
bool amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::areMasksValid ( amrex::Real search_radius = amrex::Real(0))
protected

Are the masks computed by the above function still valid? When search_radius > 0, masks are additionally invalid if their per-level grow is smaller than ceil(search_radius / min(dx_lev)).

◆ BuildMasks()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::BuildMasks ( amrex::Real search_radius = amrex::Real(0))
protected

This builds the internal mask data structure used for looking up neighbors. When search_radius > 0, the mask grow is sized to cover that physical distance per level; otherwise the constructor's m_num_neighbor_cells is used.

◆ buildNeighborCopyOp()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::buildNeighborCopyOp ( bool use_boundary_neighbor = false)

◆ buildNeighborList() [1/5]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
template<class CheckPair>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::buildNeighborList ( CheckPair const & check_pair,
amrex::Real bin_size,
bool sort = false )

Build a Neighbor List for each tile, using custom bin_size instead of the mesh cell size. Useful when the interaction radius is much smaller than dx.

◆ buildNeighborList() [2/5]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
template<class CheckPair>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::buildNeighborList ( CheckPair const & check_pair,
bool sort = false )

Build a Neighbor List for each tile

◆ buildNeighborList() [3/5]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
template<class CheckPair>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::buildNeighborList ( CheckPair const & check_pair,
int type_ind,
int * ref_ratio,
int num_bin_types = 1,
bool sort = false )

Build a Neighbor List for each tile

◆ buildNeighborList() [4/5]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
template<class CheckPair, class OtherPCType>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::buildNeighborList ( CheckPair const & check_pair,
OtherPCType & other,
Vector< std::map< std::pair< int, int >, amrex::NeighborList< typename OtherPCType::ParticleType > > > & neighbor_lists,
amrex::Real bin_size,
bool sort = false )

Build a cross-container Neighbor List for each tile, using custom bin_size instead of the mesh cell size. Useful when the interaction radius is much smaller than dx.

◆ buildNeighborList() [5/5]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
template<class CheckPair, class OtherPCType>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::buildNeighborList ( CheckPair const & check_pair,
OtherPCType & other,
Vector< std::map< std::pair< int, int >, amrex::NeighborList< typename OtherPCType::ParticleType > > > & neighbor_lists,
bool sort = false )

Build a Neighbor List for each tile

◆ buildNeighborMask()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::buildNeighborMask ( )

◆ cacheNeighborInfo()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::cacheNeighborInfo ( amrex::Real search_radius = amrex::Real(0))
protected

◆ calcCommSize()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::calcCommSize ( )
protected

◆ clearNeighbors()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::clearNeighbors ( )

Each tile clears its neighbors, freeing the memory

◆ clearNeighborsGPU()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::clearNeighborsGPU ( )

◆ computeRefFac()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
IntVect amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::computeRefFac ( int src_lev,
int lev )
protected

◆ enableInverse()

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
bool amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::enableInverse ( )
inline

◆ fillNeighbors() [1/2]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::fillNeighbors ( )

This fills the neighbor buffers for each tile with the proper data

◆ fillNeighbors() [2/2]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::fillNeighbors ( amrex::Real search_radius)

Fill neighbor buffers, but only communicate particles within physical distance search_radius of tile boundaries. Reduces communication volume when search_radius << cell size. CPU build only; the GPU path is not yet implemented.

◆ fillNeighborsGPU()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::fillNeighborsGPU ( )

◆ fillNeighborsMPI()

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::fillNeighborsMPI ( bool reuse_rcv_counts)
protected

Perform the MPI communication necessary to fill neighbor buffers

◆ GetCommTagsBox()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::GetCommTagsBox ( Vector< NeighborCommTag > & tags,
int lev,
const Box & in_box,
amrex::Real search_radius = amrex::Real(0) )
protected

◆ GetNeighborCommTags()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::GetNeighborCommTags ( amrex::Real search_radius = amrex::Real(0))
protected

◆ GetNeighbors() [1/2]

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
ParticleTile & amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::GetNeighbors ( int lev,
int grid,
int tile )
inline

◆ GetNeighbors() [2/2]

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
const ParticleTile & amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::GetNeighbors ( int lev,
int grid,
int tile ) const
inline

◆ getNeighborTags() [1/2]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
template<typename P>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::getNeighborTags ( Vector< NeighborCopyTag > & tags,
const P & p,
const IntVect & nGrow,
const NeighborCopyTag & src_tag,
const MyParIter & pti,
amrex::Real search_radius = amrex::Real(0) )
protected

◆ getNeighborTags() [2/2]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
template<typename P>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::getNeighborTags ( Vector< NeighborCopyTag > & tags,
const P & p,
int nGrow,
const NeighborCopyTag & src_tag,
const MyParIter & pti,
amrex::Real search_radius = amrex::Real(0) )
protected

◆ getRcvCountsMPI()

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::getRcvCountsMPI ( )
protected

Perform handshake to figure out how many bytes each proc should receive

◆ hasNeighbors()

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
bool amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::hasNeighbors ( ) const
inlinenodiscardprotected

◆ initializeCommComps()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::initializeCommComps ( )
protected

◆ numIntCommComps()

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
int amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::numIntCommComps ( ) const
inlinenodiscardprotected

◆ numRealCommComps()

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
int amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::numRealCommComps ( ) const
inlinenodiscardprotected

◆ operator=() [1/2]

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
NeighborParticleContainer_impl & amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::operator= ( const NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor > & )
delete

◆ operator=() [2/2]

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
NeighborParticleContainer_impl & amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::operator= ( NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor > && )
default

◆ printNeighborList()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::printNeighborList ( )

◆ Redistribute() [1/2]

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::Redistribute ( int lev_min,
int lev_max,
IntVect nGrow,
bool local,
IntVect max_cells_moved,
bool remove_negative = true )
inline

◆ Redistribute() [2/2]

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::Redistribute ( int lev_min = 0,
int lev_max = -1,
int nGrow = 0,
int local = 0,
bool remove_negative = true )
inline

◆ RedistributeLocal()

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::RedistributeLocal ( bool remove_negative = true)
inline

◆ Regrid() [1/3]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::Regrid ( const DistributionMapping & dmap,
const BoxArray & ba )

Regrid functions

◆ Regrid() [2/3]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::Regrid ( const DistributionMapping & dmap,
const BoxArray & ba,
int lev )

◆ Regrid() [3/3]

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::Regrid ( const Vector< DistributionMapping > & dmap,
const Vector< BoxArray > & ba )

◆ resizeContainers()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::resizeContainers ( int num_levels)
protected

◆ selectActualNeighbors()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
template<class CheckPair>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::selectActualNeighbors ( CheckPair const & check_pair,
int num_cells = 1 )

◆ setEnableInverse()

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::setEnableInverse ( bool flag)
inline

◆ setIntCommComp()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::setIntCommComp ( int i,
bool value )

◆ setRealCommComp()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::setRealCommComp ( int i,
bool value )

◆ sumNeighbors()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::sumNeighbors ( int real_start_comp,
int real_num_comp,
int int_start_comp,
int int_num_comp )

This does an "inverse" fillNeighbors operation, meaning that it adds data from the ghost particles to the corresponding real ones.

◆ sumNeighborsMPI()

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::sumNeighborsMPI ( std::map< int, Vector< char > > & not_ours,
int real_start_comp,
int real_num_comp,
int int_start_comp,
int int_num_comp )
protected

◆ updateNeighbors()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::updateNeighbors ( bool boundary_neighbors_only = false)

This updates the neighbors with their current particle data.

◆ updateNeighborsGPU()

template<typename T_ParticleType, int NArrayReal, int NArrayInt, template< class > class Allocator, class CellAssignor>
void amrex::NeighborParticleContainer_impl< T_ParticleType, NArrayReal, NArrayInt, Allocator, CellAssignor >::updateNeighborsGPU ( bool boundary_neighbors_only = false)

◆ operator<<

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
std::ostream & operator<< ( std::ostream & os,
const InverseCopyTag & tag )
friend

Member Data Documentation

◆ buffer_tag_cache

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Vector<std::map<PairIndex, Vector<Vector<NeighborCopyTag> > > > amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::buffer_tag_cache
protected

◆ cdata_size

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
size_t amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::cdata_size
protected

◆ enable_inverse

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
bool amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::enable_inverse
staticprotected

◆ ghost_int_comp

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Vector<int> amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::ghost_int_comp
protected

◆ ghost_real_comp

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Vector<int> amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::ghost_real_comp
protected

◆ IntCommCompStart

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
int amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::IntCommCompStart = 2 + NStructInt
staticconstexpr

◆ inverse_tags

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Vector<std::map<PairIndex, Vector<InverseCopyTag> > > amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::inverse_tags
protected

◆ local_neighbor_sizes

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Vector<std::map<PairIndex, int> > amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::local_neighbor_sizes
protected

◆ local_neighbors

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Vector<NeighborCommTag> amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::local_neighbors
protected

◆ m_boundary_particle_ids

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Vector<std::map<std::pair<int, int>, amrex::Gpu::DeviceVector<int> > > amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::m_boundary_particle_ids
protected

◆ m_cached_neighbor_ba

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
amrex::BoxArray amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::m_cached_neighbor_ba
protected

◆ m_cached_neighbor_dm

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
amrex::DistributionMapping amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::m_cached_neighbor_dm
protected

◆ m_code_array

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
std::map<int, amrex::Gpu::DeviceVector<NeighborCode> > amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::m_code_array
protected

◆ m_code_offsets

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
std::map<int, amrex::Gpu::DeviceVector<int> > amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::m_code_offsets
protected

◆ m_grid_map

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
std::map<int, std::vector<std::vector<NeighborCode> > > amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::m_grid_map
protected

◆ m_has_neighbors

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
bool amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::m_has_neighbors = false
protected

◆ m_isec_boxes

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
std::map<int, amrex::Gpu::DeviceVector<Box> > amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::m_isec_boxes
protected

◆ m_neighbor_list

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
NeighborListContainerType amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::m_neighbor_list
protected

◆ m_neighbor_mask_initialized

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
bool amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::m_neighbor_mask_initialized = false
protected

◆ m_num_neighbor_cells

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
int amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::m_num_neighbor_cells
protected

◆ mask_ptr

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Vector<std::unique_ptr<iMultiFab> > amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::mask_ptr
protected

◆ NArrayInt

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
int amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::NArrayInt = ParticleContainerType::NArrayInt
staticconstexpr

◆ NArrayReal

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
int amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::NArrayReal = ParticleContainerType::NArrayReal
staticconstexpr

◆ neighbor_copy_op

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
ParticleCopyOp amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::neighbor_copy_op
protected

◆ neighbor_copy_plan

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
ParticleCopyPlan amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::neighbor_copy_plan
protected

◆ neighbor_list

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Vector<std::map<PairIndex, IntVector> > amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::neighbor_list
protected

◆ neighbor_procs

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Vector<int> amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::neighbor_procs
protected

each proc knows how many sends it will do, and how many bytes it will rcv from each other proc.

◆ neighbors

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Vector<std::map<PairIndex, ParticleTile> > amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::neighbors
protected

◆ NStructInt

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
int amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::NStructInt = ParticleContainerType::NStructInt
staticconstexpr

◆ NStructReal

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
int amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::NStructReal = ParticleContainerType::NStructReal
staticconstexpr

◆ num_mask_comps

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
int amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::num_mask_comps = 3
staticconstexprprotected

grid, tile, level

◆ num_snds

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Long amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::num_snds
protected

◆ pdata_size

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
size_t amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::pdata_size = sizeof(ParticleType)
staticconstexprprotected

◆ pinned_rcv_buffer

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Gpu::PinnedVector<char> amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::pinned_rcv_buffer
protected

◆ pinned_snd_buffer

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Gpu::PinnedVector<char> amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::pinned_snd_buffer
protected

◆ rcv_buffer

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
amrex::PODVector<char, PolymorphicArenaAllocator<char> > amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::rcv_buffer
protected

◆ rcvs

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
Vector<Long> amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::rcvs
protected

◆ RealCommCompStart

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
int amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::RealCommCompStart = ParticleType::is_soa_particle ? 0 : 3 + NStructReal
staticconstexpr

◆ send_data

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
std::map<int, Vector<char> > amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::send_data
protected

◆ snd_buffer

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
amrex::PODVector<char, PolymorphicArenaAllocator<char> > amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::snd_buffer
protected

◆ use_mask

template<typename T_ParticleType, int T_NArrayReal = 0, int T_NArrayInt = 0, template< class > class Allocator = DefaultAllocator, class CellAssignor = DefaultAssignor>
bool amrex::NeighborParticleContainer_impl< T_ParticleType, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor >::use_mask
staticprotected

The documentation for this class was generated from the following files: