Block-Structured AMR Software Framework
amrex::TagBoxArray Class Reference

An array of TagBoxes. More...

#include <AMReX_TagBox.H>

Inheritance diagram for amrex::TagBoxArray:
amrex::FabArray< TagBox > amrex::FabArrayBase

Public Types

using TagType = TagBox::TagType
 The type of each tag. More...
 
- Public Types inherited from amrex::FabArray< TagBox >
using value_type = typename std::conditional_t< IsBaseFab< TagBox >::value, TagBox, FABType >::value_type
 
using fab_type = TagBox
 
- Public Types inherited from amrex::FabArrayBase
enum  CpOp { COPY = 0 , ADD = 1 }
 parallel copy or add More...
 
using CopyComTagsContainer = CopyComTag::CopyComTagsContainer
 
using MapOfCopyComTagContainers = CopyComTag::MapOfCopyComTagContainers
 
using FPinfoCache = std::multimap< BDKey, FabArrayBase::FPinfo * >
 
using FPinfoCacheIter = FPinfoCache::iterator
 
using CFinfoCache = std::multimap< BDKey, FabArrayBase::CFinfo * >
 
using CFinfoCacheIter = CFinfoCache::iterator
 
using TAMap = std::map< std::pair< IntVect, IntVect >, TileArray >
 
using TACache = std::map< BDKey, TAMap >
 
using FBCache = std::multimap< BDKey, FabArrayBase::FB * >
 
using FBCacheIter = FBCache::iterator
 
using CPCache = std::multimap< BDKey, FabArrayBase::CPC * >
 
using CPCacheIter = CPCache::iterator
 
using RB90Cache = std::multimap< BDKey, FabArrayBase::RB90 * >
 
using RB90CacheIter = RB90Cache::iterator
 
using RB180Cache = std::multimap< BDKey, FabArrayBase::RB180 * >
 
using RB180CacheIter = RB180Cache::iterator
 
using PolarBCache = std::multimap< BDKey, FabArrayBase::PolarB * >
 
using PolarBCacheIter = PolarBCache::iterator
 

Public Member Functions

 TagBoxArray (const BoxArray &ba, const DistributionMapping &dm, int _ngrow=0)
 The constructor. More...
 
 TagBoxArray (const BoxArray &ba, const DistributionMapping &dm, const IntVect &_ngrow)
 
 ~TagBoxArray ()=default
 
 TagBoxArray (TagBoxArray &&rhs) noexcept=default
 
TagBoxArrayoperator= (TagBoxArray &&rhs) noexcept=default
 
 TagBoxArray (const TagBoxArray &rhs)=delete
 
TagBoxArrayoperator= (const TagBoxArray &rhs)=delete
 
void buffer (const IntVect &nbuf)
 Calls buffer() on all contained TagBoxes. More...
 
void mapPeriodicRemoveDuplicates (const Geometry &geom)
 This function does two things. Map tagged cells through a periodic boundary to other grids in TagBoxArray cells, and remove duplicates. More...
 
void setVal (const BoxArray &ba, TagBox::TagVal val)
 Set values in ba to val. More...
 
void coarsen (const IntVect &ratio)
 Calls coarsen() on all contained TagBoxes. More...
 
void collate (Gpu::PinnedVector< IntVect > &TheGlobalCollateSpace) const
 Calls collate() on all contained TagBoxes. More...
 
bool hasTags (Box const &bx) const
 
void local_collate_cpu (Gpu::PinnedVector< IntVect > &v) const
 
void local_collate_gpu (Gpu::PinnedVector< IntVect > &v) const
 
- Public Member Functions inherited from amrex::FabArray< TagBox >
 FabArray () noexcept
 Constructs an empty FabArray<FAB>. More...
 
 FabArray (Arena *a) noexcept
 Construct an empty FabArray<FAB> that has a default Arena. More...
 
 FabArray (const BoxArray &bxs, const DistributionMapping &dm, int nvar, int ngrow, const MFInfo &info=MFInfo(), const FabFactory< TagBox > &factory=DefaultFabFactory< TagBox >())
 Construct a FabArray<FAB> with a valid region defined by bxs and a region of definition defined by the grow factor ngrow and the number of components nvar. More...
 
 FabArray (const BoxArray &bxs, const DistributionMapping &dm, int nvar, const IntVect &ngrow, const MFInfo &info=MFInfo(), const FabFactory< TagBox > &factory=DefaultFabFactory< TagBox >())
 
 FabArray (const FabArray< TagBox > &rhs, MakeType maketype, int scomp, int ncomp)
 
 FabArray (FabArray< TagBox > &&rhs) noexcept
 
 FabArray (const FabArray< TagBox > &rhs)=delete
 
 ~FabArray ()
 The destructor – deletes all FABs in the array. More...
 
FabArray< TagBox > & operator= (FabArray< TagBox > &&rhs) noexcept
 
FabArray< TagBox > & operator= (const FabArray< TagBox > &rhs)=delete
 
FabArray< TagBox > & operator= (value_type val)
 Set all components in the entire region of each FAB to val. More...
 
void define (const BoxArray &bxs, const DistributionMapping &dm, int nvar, int ngrow, const MFInfo &info=MFInfo(), const FabFactory< TagBox > &factory=DefaultFabFactory< TagBox >())
 Define this FabArray identically to that performed by the constructor having an analogous function signature. This is only valid if this FabArray was defined using the default constructor. More...
 
void define (const BoxArray &bxs, const DistributionMapping &dm, int nvar, const IntVect &ngrow, const MFInfo &info=MFInfo(), const FabFactory< TagBox > &factory=DefaultFabFactory< TagBox >())
 
const FabFactory< TagBox > & Factory () const noexcept
 
Arenaarena () const noexcept
 
const Vector< std::string > & tags () const noexcept
 
bool hasEBFabFactory () const noexcept
 
value_typesingleChunkPtr () noexcept
 
value_type const * singleChunkPtr () const noexcept
 
std::size_t singleChunkSize () const noexcept
 
bool isAllRegular () const noexcept
 
bool ok () const
 Return true if the FabArray is well-defined. That is, the FabArray has a BoxArray and DistributionMapping, the FABs are allocated for each Box in the BoxArray and the sizes of the FABs and the number of components are consistent with the definition of the FabArray. More...
 
bool isDefined () const
 
const TagBoxoperator[] (const MFIter &mfi) const noexcept
 Return a constant reference to the FAB associated with mfi. More...
 
TagBoxoperator[] (const MFIter &mfi) noexcept
 Returns a reference to the FAB associated mfi. More...
 
const TagBoxoperator[] (int K) const noexcept
 Return a constant reference to the FAB associated with the Kth element. More...
 
TagBoxoperator[] (int K) noexcept
 Return a reference to the FAB associated with the Kth element. More...
 
const TagBoxget (const MFIter &mfi) const noexcept
 Return a constant reference to the FAB associated with mfi. More...
 
TagBoxget (const MFIter &mfi) noexcept
 Returns a reference to the FAB associated mfi. More...
 
const TagBoxget (int K) const noexcept
 Return a constant reference to the FAB associated with the Kth element. More...
 
TagBoxget (int K) noexcept
 Return a reference to the FAB associated with the Kth element. More...
 
TagBoxatLocalIdx (int L) noexcept
 Return a reference to the FAB associated with local index L. More...
 
const TagBoxatLocalIdx (int L) const noexcept
 
TagBoxfabPtr (const MFIter &mfi) noexcept
 Return pointer to FAB. More...
 
TagBox const * fabPtr (const MFIter &mfi) const noexcept
 
TagBoxfabPtr (int K) noexcept
 
TagBox const * fabPtr (int K) const noexcept
 
void prefetchToHost (const MFIter &mfi) const noexcept
 
void prefetchToDevice (const MFIter &mfi) const noexcept
 
Array4< typename FabArray< TagBox >::value_type const > array (const MFIter &mfi) const noexcept
 
Array4< typename FabArray< TagBox >::value_typearray (const MFIter &mfi) noexcept
 
Array4< typename FabArray< TagBox >::value_type const > array (int K) const noexcept
 
Array4< typename FabArray< TagBox >::value_typearray (int K) noexcept
 
Array4< typename FabArray< TagBox >::value_type const > array (const MFIter &mfi, int start_comp) const noexcept
 
Array4< typename FabArray< TagBox >::value_typearray (const MFIter &mfi, int start_comp) noexcept
 
Array4< typename FabArray< TagBox >::value_type const > array (int K, int start_comp) const noexcept
 
Array4< typename FabArray< TagBox >::value_typearray (int K, int start_comp) noexcept
 
Array4< typename FabArray< TagBox >::value_type const > const_array (const MFIter &mfi) const noexcept
 
Array4< typename FabArray< TagBox >::value_type const > const_array (int K) const noexcept
 
Array4< typename FabArray< TagBox >::value_type const > const_array (const MFIter &mfi, int start_comp) const noexcept
 
Array4< typename FabArray< TagBox >::value_type const > const_array (int K, int start_comp) const noexcept
 
MultiArray4< typename FabArray< TagBox >::value_typearrays () noexcept
 
MultiArray4< typename FabArray< TagBox >::value_type const > arrays () const noexcept
 
MultiArray4< typename FabArray< TagBox >::value_type const > const_arrays () const noexcept
 
void setFab (int boxno, std::unique_ptr< TagBox > elem)
 Explicitly set the Kth FAB in the FabArray to point to elem. More...
 
void setFab (int boxno, TagBox &&elem)
 Explicitly set the Kth FAB in the FabArray to point to elem. More...
 
void setFab (const MFIter &mfi, std::unique_ptr< TagBox > elem)
 Explicitly set the FAB associated with mfi in the FabArray to point to elem. More...
 
void setFab (const MFIter &mfi, TagBox &&elem)
 Explicitly set the FAB associated with mfi in the FabArray to point to elem. More...
 
AMREX_NODISCARD TagBoxrelease (int K)
 Release ownership of the FAB. This function is not thread safe. More...
 
AMREX_NODISCARD TagBoxrelease (const MFIter &mfi)
 Release ownership of the FAB. This function is not thread safe. More...
 
void clear ()
 Releases FAB memory in the FabArray. More...
 
void LocalCopy (FabArray< SFAB > const &src, int scomp, int dcomp, int ncomp, IntVect const &nghost)
 Perform local copy of FabArray data. More...
 
void LocalAdd (FabArray< TagBox > const &src, int scomp, int dcomp, int ncomp, IntVect const &nghost)
 Perform local addition of FabArray data. More...
 
void setVal (value_type val)
 Set all components in the entire region of each FAB to val. More...
 
void setVal (value_type val, int comp, int ncomp, int nghost=0)
 Set the value of num_comp components in the valid region of each FAB in the FabArray, starting at component comp to val. Also set the value of nghost boundary cells. More...
 
void setVal (value_type val, int comp, int ncomp, const IntVect &nghost)
 
void setVal (value_type val, const Box &region, int comp, int ncomp, int nghost=0)
 Set the value of num_comp components in the valid region of each FAB in the FabArray, starting at component comp, as well as nghost boundary cells, to val, provided they also intersect with the Box region. More...
 
void setVal (value_type val, const Box &region, int comp, int ncomp, const IntVect &nghost)
 
void setVal (value_type val, int nghost)
 Set all components in the valid region of each FAB in the FabArray to val, including nghost boundary cells. More...
 
void setVal (value_type val, const IntVect &nghost)
 
void setVal (value_type val, const Box &region, int nghost)
 Set all components in the valid region of each FAB in the FabArray to val, including nghost boundary cells, that also intersect the Box region. More...
 
void setVal (value_type val, const Box &region, const IntVect &nghost)
 
void setVal (value_type val, const CommMetaData &thecmd, int scomp, int ncomp)
 
void abs (int comp, int ncomp, int nghost=0)
 
void abs (int comp, int ncomp, const IntVect &nghost)
 
void plus (value_type val, int comp, int num_comp, int nghost=0)
 
void plus (value_type val, const Box &region, int comp, int num_comp, int nghost=0)
 
void mult (value_type val, int comp, int num_comp, int nghost=0)
 
void mult (value_type val, const Box &region, int comp, int num_comp, int nghost=0)
 
void invert (value_type numerator, int comp, int num_comp, int nghost=0)
 
void invert (value_type numerator, const Box &region, int comp, int num_comp, int nghost=0)
 
void setBndry (value_type val)
 Set all values in the boundary region to val. More...
 
void setBndry (value_type val, int strt_comp, int ncomp)
 Set ncomp values in the boundary region, starting at start_comp to val. More...
 
void setDomainBndry (value_type val, const Geometry &geom)
 Set all values outside the Geometry domain to val. More...
 
void setDomainBndry (value_type val, int strt_comp, int ncomp, const Geometry &geom)
 Set ncomp values outside the Geometry domain to val, starting at start_comp. More...
 
F::value_type sum (int comp, IntVect const &nghost, bool local=false) const
 Returns the sum of component "comp". More...
 
void ParallelAdd (const FabArray< TagBox > &src, const Periodicity &period=Periodicity::NonPeriodic())
 This function copies data from src to this FabArray. Each FAB in fa is intersected with all FABs in this FabArray and a copy is performed on the region of intersection. The intersection is restricted to the valid regions. More...
 
void ParallelAdd (const FabArray< TagBox > &src, int src_comp, int dest_comp, int num_comp, const Periodicity &period=Periodicity::NonPeriodic())
 This function copies data from src to this FabArray. Each FAB in src is intersected with all FABs in this FabArray and a copy is performed on the region of intersection. The intersection is restricted to the num_comp components starting at src_comp in the FabArray src, with the destination components in this FabArray starting at dest_comp. More...
 
void ParallelAdd (const FabArray< TagBox > &src, int src_comp, int dest_comp, int num_comp, int src_nghost, int dst_nghost, const Periodicity &period=Periodicity::NonPeriodic())
 Similar to the above function, except that source and destination are grown by src_nghost and dst_nghost, respectively. More...
 
void ParallelAdd (const FabArray< TagBox > &src, int src_comp, int dest_comp, int num_comp, const IntVect &src_nghost, const IntVect &dst_nghost, const Periodicity &period=Periodicity::NonPeriodic())
 
void ParallelCopy (const FabArray< TagBox > &src, const Periodicity &period=Periodicity::NonPeriodic(), CpOp op=FabArrayBase::COPY)
 
void ParallelCopy (const FabArray< TagBox > &src, int src_comp, int dest_comp, int num_comp, const Periodicity &period=Periodicity::NonPeriodic(), CpOp op=FabArrayBase::COPY)
 
void ParallelCopy (const FabArray< TagBox > &src, int src_comp, int dest_comp, int num_comp, int src_nghost, int dst_nghost, const Periodicity &period=Periodicity::NonPeriodic(), CpOp op=FabArrayBase::COPY)
 
void ParallelCopy (const FabArray< TagBox > &src, int scomp, int dcomp, int ncomp, const IntVect &snghost, const IntVect &dnghost, const Periodicity &period=Periodicity::NonPeriodic(), CpOp op=FabArrayBase::COPY, const FabArrayBase::CPC *a_cpc=nullptr)
 
void copy (const FabArray< TagBox > &src, const Periodicity &period=Periodicity::NonPeriodic(), CpOp op=FabArrayBase::COPY)
 
void copy (const FabArray< TagBox > &src, int src_comp, int dest_comp, int num_comp, const Periodicity &period=Periodicity::NonPeriodic(), CpOp op=FabArrayBase::COPY)
 
void copy (const FabArray< TagBox > &src, int src_comp, int dest_comp, int num_comp, int src_nghost, int dst_nghost, const Periodicity &period=Periodicity::NonPeriodic(), CpOp op=FabArrayBase::COPY)
 
void copy (const FabArray< TagBox > &src, int src_comp, int dest_comp, int num_comp, const IntVect &src_nghost, const IntVect &dst_nghost, const Periodicity &period=Periodicity::NonPeriodic(), CpOp op=FabArrayBase::COPY)
 
void ParallelAdd_nowait (const FabArray< TagBox > &src, const Periodicity &period=Periodicity::NonPeriodic())
 
void ParallelAdd_nowait (const FabArray< TagBox > &src, int src_comp, int dest_comp, int num_comp, const Periodicity &period=Periodicity::NonPeriodic())
 
void ParallelAdd_nowait (const FabArray< TagBox > &src, int src_comp, int dest_comp, int num_comp, int src_nghost, int dst_nghost, const Periodicity &period=Periodicity::NonPeriodic())
 
void ParallelAdd_nowait (const FabArray< TagBox > &src, int src_comp, int dest_comp, int num_comp, const IntVect &src_nghost, const IntVect &dst_nghost, const Periodicity &period=Periodicity::NonPeriodic())
 
void ParallelCopy_nowait (const FabArray< TagBox > &src, const Periodicity &period=Periodicity::NonPeriodic(), CpOp op=FabArrayBase::COPY)
 
void ParallelCopy_nowait (const FabArray< TagBox > &src, int src_comp, int dest_comp, int num_comp, const Periodicity &period=Periodicity::NonPeriodic(), CpOp op=FabArrayBase::COPY)
 
void ParallelCopy_nowait (const FabArray< TagBox > &src, int src_comp, int dest_comp, int num_comp, int src_nghost, int dst_nghost, const Periodicity &period=Periodicity::NonPeriodic(), CpOp op=FabArrayBase::COPY)
 
void ParallelCopy_nowait (const FabArray< TagBox > &src, int scomp, int dcomp, int ncomp, const IntVect &snghost, const IntVect &dnghost, const Periodicity &period=Periodicity::NonPeriodic(), CpOp op=FabArrayBase::COPY, const FabArrayBase::CPC *a_cpc=nullptr, bool to_ghost_cells_only=false)
 
void ParallelCopy_finish ()
 
void ParallelCopyToGhost (const FabArray< TagBox > &src, int scomp, int dcomp, int ncomp, const IntVect &snghost, const IntVect &dnghost, const Periodicity &period=Periodicity::NonPeriodic())
 
void ParallelCopyToGhost_nowait (const FabArray< TagBox > &src, int scomp, int dcomp, int ncomp, const IntVect &snghost, const IntVect &dnghost, const Periodicity &period=Periodicity::NonPeriodic())
 
void ParallelCopyToGhost_finish ()
 
void Redistribute (const FabArray< TagBox > &src, int scomp, int dcomp, int ncomp, const IntVect &nghost)
 Copy from src to this. this and src have the same BoxArray, but different DistributionMapping. More...
 
void copyTo (TagBox &dest, int nghost=0) const
 Copy the values contained in the intersection of the valid + nghost region of this FabArray with the FAB dest into dest. Note that FAB dest is assumed to be identical on each process. More...
 
void copyTo (TagBox &dest, int scomp, int dcomp, int ncomp, int nghost=0) const
 Copy the values contained in the intersection of the num_comp component valid + nghost region of this FabArray, starting at component src_comp, with the FAB dest into dest, starting at component dest_comp in dest. Note that FAB dest is assumed to be identical on each process. More...
 
void shift (const IntVect &v)
 Shift the boxarray by vector v. More...
 
bool defined (int K) const noexcept
 
bool defined (const MFIter &mfi) const noexcept
 
void FillBoundary (bool cross=false)
 Copy on intersection within a FabArray. Data is copied from valid regions to intersecting regions of definition. The purpose is to fill in the boundary regions of each FAB in the FabArray. If cross=true, corner cells are not filled. If the length of periodic is provided, periodic boundaries are also filled. Note that FabArray itself does not contains any periodicity information. FillBoundary expects that its cell-centered version of its BoxArray is non-overlapping. More...
 
void FillBoundary (const Periodicity &period, bool cross=false)
 
void FillBoundary (const IntVect &nghost, const Periodicity &period, bool cross=false)
 
void FillBoundary (int scomp, int ncomp, bool cross=false)
 Same as FillBoundary(), but only copies ncomp components starting at scomp. More...
 
void FillBoundary (int scomp, int ncomp, const Periodicity &period, bool cross=false)
 
void FillBoundary (int scomp, int ncomp, const IntVect &nghost, const Periodicity &period, bool cross=false)
 
void FillBoundary_nowait (bool cross=false)
 
void FillBoundary_nowait (const Periodicity &period, bool cross=false)
 
void FillBoundary_nowait (const IntVect &nghost, const Periodicity &period, bool cross=false)
 
void FillBoundary_nowait (int scomp, int ncomp, bool cross=false)
 
void FillBoundary_nowait (int scomp, int ncomp, const Periodicity &period, bool cross=false)
 
void FillBoundary_nowait (int scomp, int ncomp, const IntVect &nghost, const Periodicity &period, bool cross=false)
 
void FillBoundary_finish ()
 
void FillBoundary_finish ()
 
void FillBoundary_test ()
 
void FillBoundaryAndSync (const Periodicity &period=Periodicity::NonPeriodic())
 Fill ghost cells and synchronize nodal data. Ghost regions are filled with data from the intersecting valid regions. The synchronization will override valid regions by the intersecting valid regions with a higher precedence. The smaller the global box index is, the higher precedence the box has. With periodic boundaries, for cells in the same box, those near the lower corner have higher precedence than those near the upper corner. More...
 
void FillBoundaryAndSync (int scomp, int ncomp, const IntVect &nghost, const Periodicity &period)
 Fill ghost cells and synchronize nodal data. Ghost regions are filled with data from the intersecting valid regions. The synchronization will override valid regions by the intersecting valid regions with a higher precedence. The smaller the global box index is, the higher precedence the box has. With periodic boundaries, for cells in the same box, those near the lower corner have higher precedence than those near the upper corner. More...
 
void FillBoundaryAndSync_nowait (const Periodicity &period=Periodicity::NonPeriodic())
 
void FillBoundaryAndSync_nowait (int scomp, int ncomp, const IntVect &nghost, const Periodicity &period)
 
void FillBoundaryAndSync_finish ()
 
void OverrideSync (const Periodicity &period=Periodicity::NonPeriodic())
 Synchronize nodal data. The synchronization will override valid regions by the intersecting valid regions with a higher precedence. The smaller the global box index is, the higher precedence the box has. With periodic boundaries, for cells in the same box, those near the lower corner have higher precedence than those near the upper corner. More...
 
void OverrideSync (int scomp, int ncomp, const Periodicity &period)
 Synchronize nodal data. The synchronization will override valid regions by the intersecting valid regions with a higher precedence. The smaller the global box index is, the higher precedence the box has. With periodic boundaries, for cells in the same box, those near the lower corner have higher precedence than those near the upper corner. More...
 
void OverrideSync_nowait (const Periodicity &period=Periodicity::NonPeriodic())
 
void OverrideSync_nowait (int scomp, int ncomp, const Periodicity &period)
 
void OverrideSync_finish ()
 
void SumBoundary (const Periodicity &period=Periodicity::NonPeriodic())
 Sum values in overlapped cells. The destination is limited to valid cells. More...
 
void SumBoundary (int scomp, int ncomp, const Periodicity &period=Periodicity::NonPeriodic())
 
void SumBoundary (int scomp, int ncomp, IntVect const &nghost, const Periodicity &period=Periodicity::NonPeriodic())
 Sum values in overlapped cells. The destination is limited to valid + ngrow cells. More...
 
void SumBoundary (int scomp, int ncomp, IntVect const &src_nghost, IntVect const &dst_nghost, const Periodicity &period=Periodicity::NonPeriodic())
 Sum values in overlapped cells. For computing the overlap, the dst is grown by dst_ngrow, while the src uses src_ngrow. More...
 
void SumBoundary_nowait (const Periodicity &period=Periodicity::NonPeriodic())
 
void SumBoundary_nowait (int scomp, int ncomp, const Periodicity &period=Periodicity::NonPeriodic())
 
void SumBoundary_nowait (int scomp, int ncomp, IntVect const &nghost, const Periodicity &period=Periodicity::NonPeriodic())
 
void SumBoundary_nowait (int scomp, int ncomp, IntVect const &src_nghost, IntVect const &dst_nghost, const Periodicity &period=Periodicity::NonPeriodic())
 
void SumBoundary_finish ()
 
void EnforcePeriodicity (const Periodicity &period)
 Fill ghost cells with values from their corresponding cells across periodic boundaries, regardless of whether the corresponding cells are valid. This differs from FillBoundary, which only fills from valid cells, and does not fill from ghost cells. The BoxArray is allowed to be overlapping. More...
 
void EnforcePeriodicity (int scomp, int ncomp, const Periodicity &period)
 
void EnforcePeriodicity (int scomp, int ncomp, const IntVect &nghost, const Periodicity &period)
 
void BuildMask (const Box &phys_domain, const Periodicity &period, value_type covered, value_type notcovered, value_type physbnd, value_type interior)
 
void FBEP_nowait (int scomp, int ncomp, const IntVect &nghost, const Periodicity &period, bool cross, bool enforce_periodicity_only=false, bool override_sync=false)
 
void FBEP_nowait (int scomp, int ncomp, const IntVect &nghost, const Periodicity &period, bool cross, bool enforce_periodicity_only, bool override_sync)
 
void FB_local_copy_cpu (const FB &TheFB, int scomp, int ncomp)
 
void PC_local_cpu (const CPC &thecpc, FabArray< TagBox > const &src, int scomp, int dcomp, int ncomp, CpOp op)
 
LayoutData< int > RecvLayoutMask (const CommMetaData &thecmd)
 
void FB_local_copy_gpu (const FB &TheFB, int scomp, int ncomp)
 
void PC_local_gpu (const CPC &thecpc, FabArray< TagBox > const &src, int scomp, int dcomp, int ncomp, CpOp op)
 
void CMD_local_setVal_gpu (value_type x, const CommMetaData &thecmd, int scomp, int ncomp)
 
void CMD_remote_setVal_gpu (value_type x, const CommMetaData &thecmd, int scomp, int ncomp)
 
void pack_send_buffer_gpu (FabArray< TagBox > const &src, int scomp, int ncomp, Vector< char * > const &send_data, Vector< std::size_t > const &send_size, Vector< CopyComTagsContainer const * > const &send_cctc)
 
void unpack_recv_buffer_gpu (FabArray< TagBox > &dst, int dcomp, int ncomp, Vector< char * > const &recv_data, Vector< std::size_t > const &recv_size, Vector< CopyComTagsContainer const * > const &recv_cctc, CpOp op, bool is_thread_safe)
 
void pack_send_buffer_cpu (FabArray< TagBox > const &src, int scomp, int ncomp, Vector< char * > const &send_data, Vector< std::size_t > const &send_size, Vector< CopyComTagsContainer const * > const &send_cctc)
 
void unpack_recv_buffer_cpu (FabArray< TagBox > &dst, int dcomp, int ncomp, Vector< char * > const &recv_data, Vector< std::size_t > const &recv_size, Vector< CopyComTagsContainer const * > const &recv_cctc, CpOp op, bool is_thread_safe)
 
F::value_type norminf (int comp, int ncomp, IntVect const &nghost, bool local=false,[[maybe_unused]] bool ignore_covered=false) const
 Return infinity norm. More...
 
F::value_type norminf (FabArray< IFAB > const &mask, int comp, int ncomp, IntVect const &nghost, bool local=false) const
 Return infinity norm in masked region. More...
 
- Public Member Functions inherited from amrex::FabArrayBase
 FabArrayBase ()=default
 
 ~FabArrayBase ()=default
 
 FabArrayBase (const BoxArray &bxs, const DistributionMapping &dm, int nvar, int ngrow)
 
 FabArrayBase (const BoxArray &bxs, const DistributionMapping &dm, int nvar, const IntVect &ngrow)
 
 FabArrayBase (FabArrayBase &&rhs) noexcept=default
 
 FabArrayBase (const FabArrayBase &rhs)=default
 
FabArrayBaseoperator= (const FabArrayBase &rhs)=default
 
FabArrayBaseoperator= (FabArrayBase &&rhs)=default
 
void define (const BoxArray &bxs, const DistributionMapping &dm, int nvar, int ngrow)
 
void define (const BoxArray &bxs, const DistributionMapping &dm, int nvar, const IntVect &ngrow)
 
int nGrow (int direction=0) const noexcept
 Return the grow factor that defines the region of definition. More...
 
IntVect nGrowVect () const noexcept
 
int nComp () const noexcept
 Return number of variables (aka components) associated with each point. More...
 
IndexType ixType () const noexcept
 Return index type. More...
 
bool empty () const noexcept
 
const BoxArrayboxArray () const noexcept
 Return a constant reference to the BoxArray that defines the valid region associated with this FabArray. More...
 
Box box (int K) const noexcept
 Return the Kth Box in the BoxArray. That is, the valid region of the Kth grid. More...
 
Box fabbox (int K) const noexcept
 Return the Kth FABs Box in the FabArray. That is, the region the Kth fab is actually defined on. More...
 
int size () const noexcept
 Return the number of FABs in the FabArray. More...
 
int local_size () const noexcept
 Return the number of local FABs in the FabArray. More...
 
const Vector< int > & IndexArray () const noexcept
 Return constant reference to indices in the FabArray that we have access. More...
 
int localindex (int K) const noexcept
 Return local index in the vector of FABs. More...
 
const DistributionMappingDistributionMap () const noexcept
 Return constant reference to associated DistributionMapping. More...
 
bool is_nodal () const noexcept
 This tests on whether the FabArray is fully nodal. More...
 
bool is_nodal (int dir) const noexcept
 This tests on whether the FabArray is nodal in direction dir. More...
 
bool is_cell_centered () const noexcept
 This tests on whether the FabArray is cell-centered. More...
 
void setMultiGhost (bool a_multi_ghost)
 
IntVect nGrowFilled () const noexcept
 
void setNGrowFilled (IntVect const &ng) noexcept
 
bool isFusingCandidate () const noexcept
 Is this a good candidate for kernel fusing? More...
 
BDKey getBDKey () const noexcept
 
void updateBDKey ()
 
void flushFPinfo (bool no_assertion=false) const
 
void flushCFinfo (bool no_assertion=false) const
 
const TileArraygetTileArray (const IntVect &tilesize) const
 
void clear ()
 
const std::vector< bool > & OwnerShip () const noexcept
 Return owenership of fabs. The concept of ownership only applies when UPC++ team is used. In that case, each fab is shared by team workers, with one taking the ownership. More...
 
bool isOwner (int li) const noexcept
 
void buildTileArray (const IntVect &tilesize, TileArray &ta) const
 
void flushTileArray (const IntVect &tilesize=IntVect::TheZeroVector(), bool no_assertion=false) const
 
void define_fb_metadata (CommMetaData &cmd, const IntVect &nghost, bool cross, const Periodicity &period, bool multi_ghost) const
 
const FBgetFB (const IntVect &nghost, const Periodicity &period, bool cross=false, bool enforce_periodicity_only=false, bool override_sync=false) const
 
void flushFB (bool no_assertion=false) const
 This flushes its own FB. More...
 
const CPCgetCPC (const IntVect &dstng, const FabArrayBase &src, const IntVect &srcng, const Periodicity &period, bool to_ghost_cells_only=false) const
 
void flushCPC (bool no_assertion=false) const
 This flushes its own CPC. More...
 
const RB90getRB90 (const IntVect &nghost, const Box &domain) const
 
void flushRB90 (bool no_assertion=false) const
 This flushes its own RB90. More...
 
const RB180getRB180 (const IntVect &nghost, const Box &domain) const
 
void flushRB180 (bool no_assertion=false) const
 This flushes its own RB180. More...
 
const PolarBgetPolarB (const IntVect &nghost, const Box &domain) const
 
void flushPolarB (bool no_assertion=false) const
 This flushes its own PolarB. More...
 
ParForInfo const & getParForInfo (const IntVect &nghost, int nthreads) const
 
void flushParForInfo (bool no_assertion=false) const
 
void clearThisBD (bool no_assertion=false) const
 clear BD count and caches associated with this BD, if no other is using this BD. More...
 
void addThisBD ()
 add the current BD into BD count database More...
 

Additional Inherited Members

- Static Public Member Functions inherited from amrex::FabArray< TagBox >
static void pack_send_buffer_gpu (FabArray< TagBox > const &src, int scomp, int ncomp, Vector< char * > const &send_data, Vector< std::size_t > const &send_size, Vector< const CopyComTagsContainer * > const &send_cctc)
 
static void unpack_recv_buffer_gpu (FabArray< TagBox > &dst, int dcomp, int ncomp, Vector< char * > const &recv_data, Vector< std::size_t > const &recv_size, Vector< const CopyComTagsContainer * > const &recv_cctc, CpOp op, bool is_thread_safe)
 
static void pack_send_buffer_cpu (FabArray< TagBox > const &src, int scomp, int ncomp, Vector< char * > const &send_data, Vector< std::size_t > const &send_size, Vector< const CopyComTagsContainer * > const &send_cctc)
 
static void unpack_recv_buffer_cpu (FabArray< TagBox > &dst, int dcomp, int ncomp, Vector< char * > const &recv_data, Vector< std::size_t > const &recv_size, Vector< const CopyComTagsContainer * > const &recv_cctc, CpOp op, bool is_thread_safe)
 
static void Saxpy (FabArray< TagBox > &y, value_type a, FabArray< TagBox > const &x, int xcomp, int ycomp, int ncomp, IntVect const &nghost)
 y += a*x More...
 
static void Xpay (FabArray< TagBox > &y, value_type a, FabArray< TagBox > const &x, int xcomp, int ycomp, int ncomp, IntVect const &nghost)
 y = x + a*y More...
 
static void LinComb (FabArray< TagBox > &dst, value_type a, const FabArray< TagBox > &x, int xcomp, value_type b, const FabArray< TagBox > &y, int ycomp, int dstcomp, int numcomp, const IntVect &nghost)
 dst = a*x + b*y More...
 
- Static Public Member Functions inherited from amrex::FabArrayBase
static Long bytesOfMapOfCopyComTagContainers (const MapOfCopyComTagContainers &)
 
static void Initialize ()
 Initialize from ParmParse with "fabarray" prefix. More...
 
static void Finalize ()
 
static const FPinfoTheFPinfo (const FabArrayBase &srcfa, const FabArrayBase &dstfa, const IntVect &dstng, const BoxConverter &coarsener, const Geometry &fgeom, const Geometry &cgeom, const EB2::IndexSpace *)
 
static const CFinfoTheCFinfo (const FabArrayBase &finefa, const Geometry &finegm, const IntVect &ng, bool include_periodic, bool include_physbndry)
 
static void updateMemUsage (std::string const &tag, Long nbytes, Arena const *ar)
 
static void printMemUsage ()
 
static Long queryMemUsage (const std::string &tag=std::string("All"))
 
static Long queryMemUsageHWM (const std::string &tag=std::string("All"))
 
static void pushRegionTag (const char *t)
 
static void pushRegionTag (std::string t)
 
static void popRegionTag ()
 
static void flushTileArrayCache ()
 This flushes the entire cache. More...
 
static void flushFBCache ()
 This flushes the entire cache. More...
 
static void flushCPCache ()
 This flusheds the entire cache. More...
 
static void flushRB90Cache ()
 This flushes the entire cache. More...
 
static void flushRB180Cache ()
 This flushes the entire cache. More...
 
static void flushPolarBCache ()
 This flushes the entire cache. More...
 
static void flushParForCache ()
 
static bool getAllocSingleChunk ()
 
- Public Attributes inherited from amrex::FabArray< TagBox >
std::unique_ptr< FBData< TagBox > > fbd
 
std::unique_ptr< PCData< TagBox > > pcd
 
std::unique_ptr< FabArray< TagBox > > os_temp
 
- Public Attributes inherited from amrex::FabArrayBase
BoxArray boxarray
 
DistributionMapping distributionMap
 
Vector< intindexArray
 
std::vector< bool > ownership
 
IntVect n_grow
 
int n_comp
 
BDKey m_bdkey
 
IntVect n_filled
 
bool m_multi_ghost = false
 
- Static Public Attributes inherited from amrex::FabArrayBase
static AMREX_EXPORT IntVect mfiter_tile_size
 Default tilesize in MFIter. More...
 
static AMREX_EXPORT int MaxComp
 The maximum number of components to copy() at a time. More...
 
static AMREX_EXPORT IntVect comm_tile_size
 communication tile size More...
 
static FPinfoCache m_TheFillPatchCache
 
static CacheStats m_FPinfo_stats
 
static CFinfoCache m_TheCrseFineCache
 
static CacheStats m_CFinfo_stats
 
static std::map< std::string, meminfom_mem_usage
 
static AMREX_EXPORT std::vector< std::string > m_region_tag
 
static TACache m_TheTileArrayCache
 
static CacheStats m_TAC_stats
 
static FBCache m_TheFBCache
 
static CacheStats m_FBC_stats
 
static CPCache m_TheCPCache
 
static CacheStats m_CPC_stats
 
static RB90Cache m_TheRB90Cache
 
static RB180Cache m_TheRB180Cache
 
static PolarBCache m_ThePolarBCache
 
static std::multimap< BDKey, ParForInfo * > m_TheParForCache
 
static std::map< BDKey, intm_BD_count
 Keep track of how many FabArrays are built with the same BDKey. More...
 
static AMREX_EXPORT FabArrayStats m_FA_stats
 
static AMREX_EXPORT bool m_alloc_single_chunk
 
- Protected Member Functions inherited from amrex::FabArray< TagBox >
bool SharedMemory () const noexcept
 
- Protected Attributes inherited from amrex::FabArray< TagBox >
std::unique_ptr< FabFactory< TagBox > > m_factory
 
DataAllocator m_dallocator
 
std::unique_ptr< detail::SingleChunkArenam_single_chunk_arena
 
Long m_single_chunk_size
 
bool define_function_called
 has define() been called? More...
 
std::vector< TagBox * > m_fabs_v
 The data. More...
 
void * m_dp_arrays
 
void * m_hp_arrays
 
MultiArray4< value_typem_arrays
 
MultiArray4< value_type const > m_const_arrays
 
Vector< std::string > m_tags
 
ShMem shmem
 

Detailed Description

An array of TagBoxes.

A container class for TagBoxes.

Member Typedef Documentation

◆ TagType

The type of each tag.

Constructor & Destructor Documentation

◆ TagBoxArray() [1/4]

amrex::TagBoxArray::TagBoxArray ( const BoxArray ba,
const DistributionMapping dm,
int  _ngrow = 0 
)

The constructor.

Parameters
bs
dm
_ngrow

◆ TagBoxArray() [2/4]

amrex::TagBoxArray::TagBoxArray ( const BoxArray ba,
const DistributionMapping dm,
const IntVect _ngrow 
)

◆ ~TagBoxArray()

amrex::TagBoxArray::~TagBoxArray ( )
default

◆ TagBoxArray() [3/4]

amrex::TagBoxArray::TagBoxArray ( TagBoxArray &&  rhs)
defaultnoexcept

◆ TagBoxArray() [4/4]

amrex::TagBoxArray::TagBoxArray ( const TagBoxArray rhs)
delete

Member Function Documentation

◆ buffer()

void amrex::TagBoxArray::buffer ( const IntVect nbuf)

Calls buffer() on all contained TagBoxes.

Parameters
nbuf

◆ coarsen()

void amrex::TagBoxArray::coarsen ( const IntVect ratio)

Calls coarsen() on all contained TagBoxes.

Parameters
ratio

◆ collate()

void amrex::TagBoxArray::collate ( Gpu::PinnedVector< IntVect > &  TheGlobalCollateSpace) const

Calls collate() on all contained TagBoxes.

Parameters
TheGlobalCollateSpace

◆ hasTags()

bool amrex::TagBoxArray::hasTags ( Box const &  bx) const

◆ local_collate_cpu()

void amrex::TagBoxArray::local_collate_cpu ( Gpu::PinnedVector< IntVect > &  v) const

◆ local_collate_gpu()

void amrex::TagBoxArray::local_collate_gpu ( Gpu::PinnedVector< IntVect > &  v) const

◆ mapPeriodicRemoveDuplicates()

void amrex::TagBoxArray::mapPeriodicRemoveDuplicates ( const Geometry geom)

This function does two things. Map tagged cells through a periodic boundary to other grids in TagBoxArray cells, and remove duplicates.

Parameters
geom

◆ operator=() [1/2]

TagBoxArray& amrex::TagBoxArray::operator= ( const TagBoxArray rhs)
delete

◆ operator=() [2/2]

TagBoxArray& amrex::TagBoxArray::operator= ( TagBoxArray &&  rhs)
defaultnoexcept

◆ setVal()

void amrex::TagBoxArray::setVal ( const BoxArray ba,
TagBox::TagVal  val 
)

Set values in ba to val.

Parameters
ba
val

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