1#ifndef BL_FABARRAYBASE_H_
2#define BL_FABARRAYBASE_H_
3#include <AMReX_Config.H>
35template <
typename FAB>
class FabFactory;
36template <
typename FAB>
class FabArray;
83 [[nodiscard]]
int nGrow (
int direction = 0) const noexcept {
return n_grow[direction]; }
112 [[nodiscard]]
Box fabbox (
int K)
const noexcept;
125 auto low = std::ranges::lower_bound(
indexArray, K);
127 return static_cast<int>(low -
indexArray.begin());
140 [[nodiscard]]
bool is_nodal () const noexcept;
144 [[nodiscard]]
bool is_nodal (
int dir) const noexcept;
185 explicit CacheStats (std::string name_)
186 :
name(std::move(name_)) {}
187 void recordBuild () noexcept {
190 maxsize = std::max(maxsize,
size);
192 void recordErase (
Long n)
noexcept {
196 maxuse = std::max(maxuse, n);
198 void recordUse () noexcept { ++nuse; }
199 void print ()
const {
201 <<
" tot # of builds : " << nbuild <<
"\n"
202 <<
" tot # of erasures: " << nerase <<
"\n"
203 <<
" tot # of uses : " << nuse <<
"\n"
204 <<
" max cache size : " << maxsize <<
"\n"
205 <<
" max # of uses : " << maxuse <<
"\n";
249 : m_ba_id(baid), m_dm_id(dmid) {}
251 return (m_ba_id < rhs.m_ba_id) ||
252 ((m_ba_id == rhs.m_ba_id) && (m_dm_id < rhs.m_dm_id));
255 return m_ba_id == rhs.m_ba_id && m_dm_id == rhs.m_dm_id;
258 return m_ba_id != rhs.m_ba_id || m_dm_id != rhs.m_dm_id;
325 const Box& dstdomain,
373 bool include_periodic,
374 bool include_physbndry);
379 bool include_periodic,
bool include_physbndry);
404 bool include_periodic,
405 bool include_physbndry);
538 bool no_assertion=
false)
const;
561 const Periodicity& period,
bool multi_ghost)
const;
570 bool enforce_periodicity_only,
bool override_sync,
571 bool multi_ghost,
IntVect const& sumboundary_src_nghost);
573 std::uint64_t
m_id = std::numeric_limits<std::uint64_t>::max();
586#if defined(__CUDACC__) && defined (AMREX_USE_CUDA)
587 CudaGraph<CopyMemory> m_localCopy;
588 CudaGraph<CopyMemory> m_copyToBuffer;
589 CudaGraph<CopyMemory> m_copyFromBuffer;
599 bool build_recv_tag);
602 using FBCache = std::multimap<BDKey,FabArrayBase::FB*>;
622 bool cross=
false,
bool enforce_periodicity_only =
false,
623 bool override_sync =
false,
633 const Periodicity& period,
bool to_ghost_cells_only =
false,
645 std::uint64_t
m_id = std::numeric_limits<std::uint64_t>::max();
667 using CPCache = std::multimap<BDKey,FabArrayBase::CPC*>;
686 const Periodicity& period,
bool to_ghost_cells_only =
false,
701 using RB90Cache = std::multimap<BDKey,FabArrayBase::RB90*>;
710 void flushRB90 (
bool no_assertion=
false)
const;
725 using RB180Cache = std::multimap<BDKey,FabArrayBase::RB180*>;
734 void flushRB180 (
bool no_assertion=
false)
const;
835 <<
" tot # of builds : " <<
num_build <<
"\n"
853 void flushFB (
bool no_assertion=
false)
const;
854 static void flushFBCache ();
856 void flushCPC (
bool no_assertion=
false)
const;
857 static void flushCPCache ();
862 class SingleChunkArena final
866 SingleChunkArena (Arena* a_arena, std::size_t a_size);
867 ~SingleChunkArena ()
override;
869 SingleChunkArena () =
delete;
870 SingleChunkArena (
const SingleChunkArena& rhs) =
delete;
871 SingleChunkArena (SingleChunkArena&& rhs) =
delete;
872 SingleChunkArena& operator= (
const SingleChunkArena& rhs) =
delete;
873 SingleChunkArena& operator= (SingleChunkArena&& rhs) =
delete;
875 [[nodiscard]]
void* alloc (std::size_t sz)
override;
876 void free (
void* pt)
override;
879 [[nodiscard]]
bool isDeviceAccessible ()
const override;
880 [[nodiscard]]
bool isHostAccessible ()
const override;
882 [[nodiscard]]
bool isManaged ()
const override;
883 [[nodiscard]]
bool isDevice ()
const override;
884 [[nodiscard]]
bool isPinned ()
const override;
886 [[nodiscard]]
void* data () const noexcept {
return (
void*) m_root; }
889 DataAllocator m_dallocator;
890 char* m_root =
nullptr;
891 char* m_free =
nullptr;
892 std::size_t m_size = 0;
898[[nodiscard]]
int nComp (FabArrayBase
const& fa);
902[[nodiscard]] BoxArray
const&
boxArray (FabArrayBase
const& fa);
904[[nodiscard]] DistributionMapping
const&
DistributionMap (FabArrayBase
const& fa);
908bool CheckRcvStats (Vector<MPI_Status>& recv_stats,
const Vector<std::size_t>& recv_size,
int tag);
911std::ostream&
operator<< (std::ostream& os,
const FabArrayBase::BDKey&
id);
Memory arena base class and global arena accessors.
Container and helper utilities for sets of boxes on integer index space.
Lightweight Arena-backed allocator and deleter helpers.
Maps FABs in a FabArray to MPI processes.
#define AMREX_EXPORT
Definition AMReX_Extension.H:196
Array4< int const > offset
Definition AMReX_HypreMLABecLap.cpp:1129
Abstract base class for memory arenas.
Definition AMReX_Arena.H:153
Reference-counted collection of Boxes.
Definition AMReX_BoxArray.H:676
IndexType ixType() const noexcept
Return index type of this BoxArray.
Definition AMReX_BoxArray.H:1252
RefID getRefID() const noexcept
Return a unique ID of the reference.
Definition AMReX_BoxArray.H:1249
Long size() const noexcept
Return the number of boxes in the BoxArray.
Definition AMReX_BoxArray.H:753
bool empty() const noexcept
Return whether the BoxArray is empty.
Definition AMReX_BoxArray.H:759
Definition AMReX_Box.H:1292
__host__ __device__ const IntVectND< dim > & smallEnd() const &noexcept
Return the inclusive lower bound of the box.
Definition AMReX_Box.H:124
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:51
RefID getRefID() const noexcept
This gives a unique ID of the reference, which is different from dmID above.
Definition AMReX_DistributionMapping.H:542
Definition AMReX_EB2.H:28
Base class for FabArray.
Definition AMReX_FabArrayBase.H:47
void flushTileArray(const IntVect &tilesize=IntVect::TheZeroVector(), bool no_assertion=false) const
Definition AMReX_FabArrayBase.cpp:2469
static Long bytesOfMapOfCopyComTagContainers(const MapOfCopyComTagContainers &)
Definition AMReX_FabArrayBase.cpp:223
IntVect nGrowVect() const noexcept
Definition AMReX_FabArrayBase.H:85
static std::multimap< BDKey, ParForInfo * > m_TheParForCache
Definition AMReX_FabArrayBase.H:794
void clearThisBD(bool no_assertion=false) const
clear BD count and caches associated with this BD, if no other is using this BD.
Definition AMReX_FabArrayBase.cpp:2520
void clear()
Clear this object's BoxArray, DistributionMapping, local index/ownership data, and BDKey so the conta...
Definition AMReX_FabArrayBase.cpp:207
void flushPolarB(bool no_assertion=false) const
This flushes its own PolarB.
Definition AMReX_FabArrayBase.cpp:1837
std::multimap< BDKey, FabArrayBase::FPinfo * > FPinfoCache
Definition AMReX_FabArrayBase.H:349
Vector< int > indexArray
Definition AMReX_FabArrayBase.H:516
static void pushRegionTag(const char *t)
Push a memory-region tag used to classify subsequent FabArray allocations.
Definition AMReX_FabArrayBase.cpp:2669
static TACache m_TheTileArrayCache
Definition AMReX_FabArrayBase.H:532
const Vector< int > & IndexArray() const noexcept
Return constant reference to indices in the FabArray that we have access.
Definition AMReX_FabArrayBase.H:121
void define_fb_metadata(CommMetaData &cmd, const IntVect &nghost, bool cross, const Periodicity &period, bool multi_ghost) const
Populate communication metadata for FillBoundary-style operations.
Definition AMReX_FabArrayBase.cpp:666
const TileArray * getTileArray(const IntVect &tilesize) const
Return the cached tile decomposition used by MFIter.
Definition AMReX_FabArrayBase.cpp:2342
static void flushRB90Cache()
This flushes the entire cache.
Definition AMReX_FabArrayBase.cpp:1499
static FabArrayStats m_FA_stats
Definition AMReX_FabArrayBase.H:841
static bool getAllocSingleChunk()
Query whether single-chunk allocation is enabled for new FabArrays.
Definition AMReX_FabArrayBase.H:846
BDKey m_bdkey
Definition AMReX_FabArrayBase.H:520
void addThisBD()
add the current BD into BD count database
Definition AMReX_FabArrayBase.cpp:2550
void setNGrowFilled(IntVect const &ng) noexcept
Update the bookkeeping on how many ghost cells are known to be valid.
Definition AMReX_FabArrayBase.H:168
static void popRegionTag()
Pop the most recent region tag. The tag stack must be nonempty.
Definition AMReX_FabArrayBase.cpp:2681
static CFinfoCache m_TheCrseFineCache
Definition AMReX_FabArrayBase.H:397
RB90Cache::iterator RB90CacheIter
Definition AMReX_FabArrayBase.H:702
const RB90 & getRB90(const IntVect &nghost, const Box &domain) const
Definition AMReX_FabArrayBase.cpp:1508
static PolarBCache m_ThePolarBCache
Definition AMReX_FabArrayBase.H:752
void flushParForInfo(bool no_assertion=false) const
Definition AMReX_FabArrayBase.cpp:2774
void updateBDKey()
Refresh the cached BDKey after rebinding BoxArray or DistributionMapping data.
Definition AMReX_FabArrayBase.cpp:2562
static CacheStats m_FBC_stats
Definition AMReX_FabArrayBase.H:606
void buildTileArray(const IntVect &tilesize, TileArray &ta) const
Definition AMReX_FabArrayBase.cpp:2377
FBCache::iterator FBCacheIter
Definition AMReX_FabArrayBase.H:603
static void Initialize()
Initialize from ParmParse with "fabarray" prefix.
Definition AMReX_FabArrayBase.cpp:95
static std::vector< std::string > m_region_tag
Definition AMReX_FabArrayBase.H:477
FabArrayBase(FabArrayBase &&rhs) noexcept=default
static void flushRB180Cache()
This flushes the entire cache.
Definition AMReX_FabArrayBase.cpp:1663
int n_comp
Definition AMReX_FabArrayBase.H:519
static void printMemUsage()
Print the tracked memory usage table on the current subcommunicator's I/O process.
Definition AMReX_FabArrayBase.cpp:2635
const FB & getFB(const IntVect &nghost, const Periodicity &period, bool cross=false, bool enforce_periodicity_only=false, bool override_sync=false, IntVect const &sumboundary_src_nghost=IntVect(-1)) const
Retrieve (and cache) the FillBoundary metadata for the requested halo.
Definition AMReX_FabArrayBase.cpp:1298
static CacheStats m_FPinfo_stats
Definition AMReX_FabArrayBase.H:354
bool isFusingCandidate() const noexcept
Is this a good candidate for kernel fusing?
Definition AMReX_FabArrayBase.cpp:2705
bool is_cell_centered() const noexcept
This tests on whether the FabArray is cell-centered.
Definition AMReX_FabArrayBase.cpp:2699
bool is_nodal() const noexcept
This tests on whether the FabArray is fully nodal.
Definition AMReX_FabArrayBase.cpp:2687
bool isOwner(int li) const noexcept
Definition AMReX_FabArrayBase.H:509
static const FPinfo & TheFPinfo(const FabArrayBase &srcfa, const FabArrayBase &dstfa, const IntVect &dstng, const BoxConverter &coarsener, const Geometry &fgeom, const Geometry &cgeom, const EB2::IndexSpace *)
Definition AMReX_FabArrayBase.cpp:2066
IndexType ixType() const noexcept
Return index type.
Definition AMReX_FabArrayBase.H:91
static Long queryMemUsageHWM(const std::string &tag=std::string("All"))
Query the recorded high-water mark tracked under tag (defaults to the All tag).
Definition AMReX_FabArrayBase.cpp:2658
int size() const noexcept
Return the number of FABs in the FabArray.
Definition AMReX_FabArrayBase.H:115
void flushCFinfo(bool no_assertion=false) const
Definition AMReX_FabArrayBase.cpp:2284
std::multimap< BDKey, FabArrayBase::RB180 * > RB180Cache
Definition AMReX_FabArrayBase.H:725
static CacheStats m_CPC_stats
Definition AMReX_FabArrayBase.H:671
static RB180Cache m_TheRB180Cache
Definition AMReX_FabArrayBase.H:728
IntVect nGrowFilled() const noexcept
Return the halo width currently recorded as up to date.
Definition AMReX_FabArrayBase.H:162
FabArrayBase & operator=(const FabArrayBase &rhs)=default
void flushFPinfo(bool no_assertion=false) const
Definition AMReX_FabArrayBase.cpp:2126
void define(const BoxArray &bxs, const DistributionMapping &dm, int nvar, int ngrow)
Definition AMReX_FabArrayBase.cpp:175
const RB180 & getRB180(const IntVect &nghost, const Box &domain) const
Definition AMReX_FabArrayBase.cpp:1672
static CacheStats m_TAC_stats
Definition AMReX_FabArrayBase.H:533
static CacheStats m_CFinfo_stats
Definition AMReX_FabArrayBase.H:399
void setMultiGhost(bool a_multi_ghost)
Record whether this FabArrayBase participates in multi-ghost exchanges.
Definition AMReX_FabArrayBase.H:156
const std::vector< bool > & OwnerShip() const noexcept
Return owenership of fabs. The concept of ownership only applies when UPC++ team is used....
Definition AMReX_FabArrayBase.H:508
const CPC & getCPC(const IntVect &dstng, const FabArrayBase &src, const IntVect &srcng, const Periodicity &period, bool to_ghost_cells_only=false, const IntVect &offset=IntVect(0)) const
Retrieve (and cache) the ParallelCopy metadata between two FabArrays.
Definition AMReX_FabArrayBase.cpp:576
static void updateMemUsage(std::string const &tag, Long nbytes, Arena const *ar)
Accumulate memory usage statistics for diagnostics.
Definition AMReX_FabArrayBase.cpp:2627
static FPinfoCache m_TheFillPatchCache
Definition AMReX_FabArrayBase.H:352
static IntVect mfiter_tile_size
Default tilesize in MFIter.
Definition AMReX_FabArrayBase.H:306
ParForInfo const & getParForInfo(const IntVect &nghost) const
Obtain metadata describing how to launch device ParallelFor over this FabArray.
Definition AMReX_FabArrayBase.cpp:2755
static std::map< BDKey, int > m_BD_count
Keep track of how many FabArrays are built with the same BDKey.
Definition AMReX_FabArrayBase.H:803
static bool m_alloc_single_chunk
Definition AMReX_FabArrayBase.H:843
std::map< std::pair< IntVect, IntVect >, TileArray > TAMap
Definition AMReX_FabArrayBase.H:529
int nGrow(int direction=0) const noexcept
Return the grow factor that defines the region of definition.
Definition AMReX_FabArrayBase.H:83
CPCache::iterator CPCacheIter
Definition AMReX_FabArrayBase.H:668
CopyComTag::CopyComTagsContainer CopyComTagsContainer
Definition AMReX_FabArrayBase.H:236
static FBCache m_TheFBCache
Definition AMReX_FabArrayBase.H:605
std::multimap< BDKey, FabArrayBase::FB * > FBCache
Definition AMReX_FabArrayBase.H:602
RB180Cache::iterator RB180CacheIter
Definition AMReX_FabArrayBase.H:726
BDKey getBDKey() const noexcept
Definition AMReX_FabArrayBase.H:266
static void flushParForCache()
Definition AMReX_FabArrayBase.cpp:2786
CopyComTag::MapOfCopyComTagContainers MapOfCopyComTagContainers
Definition AMReX_FabArrayBase.H:237
static std::map< std::string, meminfo > m_mem_usage
Definition AMReX_FabArrayBase.H:446
int localindex(int K) const noexcept
Return local index in the vector of FABs.
Definition AMReX_FabArrayBase.H:124
FabArrayBase(const FabArrayBase &rhs)=default
const DistributionMapping & DistributionMap() const noexcept
Return constant reference to associated DistributionMapping.
Definition AMReX_FabArrayBase.H:135
static CPCache m_TheCPCache
Definition AMReX_FabArrayBase.H:670
int local_size() const noexcept
Return the number of local FABs in the FabArray.
Definition AMReX_FabArrayBase.H:118
IntVect n_grow
Definition AMReX_FabArrayBase.H:518
static const CFinfo & TheCFinfo(const FabArrayBase &finefa, const Geometry &finegm, const IntVect &ng, bool include_periodic, bool include_physbndry)
Definition AMReX_FabArrayBase.cpp:2242
void flushRB90(bool no_assertion=false) const
This flushes its own RB90.
Definition AMReX_FabArrayBase.cpp:1487
static Long queryMemUsage(const std::string &tag=std::string("All"))
Query the currently-live bytes tracked under tag (defaults to the All tag).
Definition AMReX_FabArrayBase.cpp:2647
std::vector< bool > ownership
Definition AMReX_FabArrayBase.H:517
std::multimap< BDKey, FabArrayBase::CPC * > CPCache
Definition AMReX_FabArrayBase.H:667
std::multimap< BDKey, FabArrayBase::CFinfo * > CFinfoCache
Definition AMReX_FabArrayBase.H:394
bool empty() const noexcept
Definition AMReX_FabArrayBase.H:94
std::multimap< BDKey, FabArrayBase::RB90 * > RB90Cache
Definition AMReX_FabArrayBase.H:701
static RB90Cache m_TheRB90Cache
Definition AMReX_FabArrayBase.H:704
static void flushTileArrayCache()
This flushes the entire cache.
Definition AMReX_FabArrayBase.cpp:2506
void flushRB180(bool no_assertion=false) const
This flushes its own RB180.
Definition AMReX_FabArrayBase.cpp:1651
CpOp
parallel copy or add
Definition AMReX_FabArrayBase.H:411
@ ADD
Definition AMReX_FabArrayBase.H:411
@ COPY
Definition AMReX_FabArrayBase.H:411
bool m_multi_ghost
Definition AMReX_FabArrayBase.H:522
IntVect n_filled
Definition AMReX_FabArrayBase.H:521
Box box(int K) const noexcept
Return the Kth Box in the BoxArray. That is, the valid region of the Kth grid.
Definition AMReX_FabArrayBase.H:106
std::map< BDKey, TAMap > TACache
Definition AMReX_FabArrayBase.H:530
static void flushPolarBCache()
This flushes the entire cache.
Definition AMReX_FabArrayBase.cpp:1849
DistributionMapping distributionMap
Definition AMReX_FabArrayBase.H:515
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.
Definition AMReX_FabArrayBase.cpp:217
FPinfoCache::iterator FPinfoCacheIter
Definition AMReX_FabArrayBase.H:350
friend void FillBoundary(Vector< FabArray< FAB > * > const &mf, const Periodicity &period)
CFinfoCache::iterator CFinfoCacheIter
Definition AMReX_FabArrayBase.H:395
static std::uint64_t getNextCommMetaDataId()
Generate a monotonically increasing identifier for communication metadata objects.
Definition AMReX_FabArrayBase.cpp:2797
static void Finalize()
Definition AMReX_FabArrayBase.cpp:2301
PolarBCache::iterator PolarBCacheIter
Definition AMReX_FabArrayBase.H:750
static int MaxComp
The maximum number of components to copy() at a time.
Definition AMReX_FabArrayBase.H:309
BoxArray boxarray
Definition AMReX_FabArrayBase.H:514
static IntVect comm_tile_size
communication tile size
Definition AMReX_FabArrayBase.H:319
int nComp() const noexcept
Return number of variables (aka components) associated with each point.
Definition AMReX_FabArrayBase.H:88
const BoxArray & boxArray() const noexcept
Return a constant reference to the BoxArray that defines the valid region associated with this FabArr...
Definition AMReX_FabArrayBase.H:100
std::multimap< BDKey, FabArrayBase::PolarB * > PolarBCache
Definition AMReX_FabArrayBase.H:749
const PolarB & getPolarB(const IntVect &nghost, const Box &domain) const
Definition AMReX_FabArrayBase.cpp:1858
An Array of FortranArrayBox(FAB)-like Objects.
Definition AMReX_FabArray.H:356
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:75
__host__ static __device__ constexpr IntVectND< dim > TheZeroVector() noexcept
This static member function returns a reference to a constant IntVectND object, all of whose dim argu...
Definition AMReX_IntVect.H:771
Iterator for looping ever tiles and boxes of amrex::FabArray based containers.
Definition AMReX_MFIter.H:88
This provides length of period for periodic domains. 0 means it is not periodic in that direction....
Definition AMReX_Periodicity.H:17
This class provides the user with a few print options.
Definition AMReX_Print.H:35
static constexpr int AllProcs
Definition AMReX_Print.H:38
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:29
Long size() const noexcept
Definition AMReX_Vector.H:54
amrex_long Long
Definition AMReX_INT.H:30
int MyProc() noexcept
Definition AMReX_ParallelDescriptor.H:128
std::string const & name()
Definition AMReX_Machine.cpp:46
Definition AMReX_Amr.cpp:50
std::ostream & operator<<(std::ostream &os, AmrMesh const &amr_mesh)
Stream helper; forwards to the friend declared inside AmrMesh.
Definition AMReX_AmrMesh.cpp:1306
BoxArray const & boxArray(FabArrayBase const &fa)
Convenience wrapper that forwards to fa.boxArray().
Definition AMReX_FabArrayBase.cpp:2862
DistributionMapping const & DistributionMap(FabArrayBase const &fa)
Convenience wrapper that forwards to fa.DistributionMap().
Definition AMReX_FabArrayBase.cpp:2867
int nComp(FabArrayBase const &fa)
Convenience wrapper that forwards to fa.nComp().
Definition AMReX_FabArrayBase.cpp:2852
IntVectND< 3 > IntVect
IntVect is an alias for amrex::IntVectND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:38
IntVect nGrowVect(FabArrayBase const &fa)
Convenience wrapper that forwards to fa.nGrowVect().
Definition AMReX_FabArrayBase.cpp:2857
const int[]
Definition AMReX_BLProfiler.cpp:1664
Definition AMReX_BoxArray.H:1237
Utility that maps flattened point indices back to IntVectND coordinates.
Definition AMReX_Box.H:2494
Lightweight identity handle wrapping a pointer to the underlying Ref.
Definition AMReX_DistributionMapping.H:528
Definition AMReX_FabArrayBase.H:246
bool operator==(const BDKey &rhs) const noexcept
Definition AMReX_FabArrayBase.H:254
bool operator<(const BDKey &rhs) const noexcept
Definition AMReX_FabArrayBase.H:250
bool operator!=(const BDKey &rhs) const noexcept
Definition AMReX_FabArrayBase.H:257
friend std::ostream & operator<<(std::ostream &os, const BDKey &id)
Definition AMReX_FabArrayBase.cpp:2620
coarse/fine boundary
Definition AMReX_FabArrayBase.H:369
Box m_fine_domain
Definition AMReX_FabArrayBase.H:386
IntVect m_ng
Definition AMReX_FabArrayBase.H:387
Long bytes() const
Definition AMReX_FabArrayBase.cpp:2233
bool m_include_periodic
Definition AMReX_FabArrayBase.H:388
static Box Domain(const Geometry &geom, const IntVect &ng, bool include_periodic, bool include_physbndry)
Definition AMReX_FabArrayBase.cpp:2214
bool m_include_physbndry
Definition AMReX_FabArrayBase.H:389
Long m_nuse
Definition AMReX_FabArrayBase.H:391
BoxArray ba_cfb
Definition AMReX_FabArrayBase.H:381
BDKey m_fine_bdk
Definition AMReX_FabArrayBase.H:385
Vector< int > fine_grid_idx
local array
Definition AMReX_FabArrayBase.H:383
DistributionMapping dm_cfb
Definition AMReX_FabArrayBase.H:382
parallel copy or add
Definition AMReX_FabArrayBase.H:630
BoxArray m_srcba
Definition AMReX_FabArrayBase.H:653
IntVect m_srcng
Definition AMReX_FabArrayBase.H:648
bool m_tgco
Definition AMReX_FabArrayBase.H:652
BoxArray m_dstba
Definition AMReX_FabArrayBase.H:654
BDKey m_srcbdk
Definition AMReX_FabArrayBase.H:646
std::uint64_t m_id
Definition AMReX_FabArrayBase.H:645
Long bytes() const
Definition AMReX_FabArrayBase.cpp:234
BDKey m_dstbdk
Definition AMReX_FabArrayBase.H:647
Long m_nuse
Definition AMReX_FabArrayBase.H:656
IntVect m_offset
Definition AMReX_FabArrayBase.H:650
Periodicity m_period
Definition AMReX_FabArrayBase.H:651
IntVect m_dstng
Definition AMReX_FabArrayBase.H:649
Used by a bunch of routines when communicating via MPI.
Definition AMReX_FabArrayBase.H:211
Box sbox
Definition AMReX_FabArrayBase.H:213
CopyComTag() noexcept=default
std::vector< CopyComTag > CopyComTagsContainer
Definition AMReX_FabArrayBase.H:229
bool operator<(const CopyComTag &rhs) const noexcept
Definition AMReX_FabArrayBase.H:219
int srcIndex
Definition AMReX_FabArrayBase.H:215
Box dbox
Definition AMReX_FabArrayBase.H:212
int dstIndex
Definition AMReX_FabArrayBase.H:214
std::map< int, CopyComTagsContainer > MapOfCopyComTagContainers
Definition AMReX_FabArrayBase.H:231
FillBoundary.
Definition AMReX_FabArrayBase.H:567
bool m_multi_ghost
Definition AMReX_FabArrayBase.H:584
Long m_nuse
Definition AMReX_FabArrayBase.H:583
IntVect m_ngrow
Definition AMReX_FabArrayBase.H:576
bool m_cross
Definition AMReX_FabArrayBase.H:578
IndexType m_typ
Definition AMReX_FabArrayBase.H:574
Long bytes() const
Definition AMReX_FabArrayBase.cpp:254
Periodicity m_period
Definition AMReX_FabArrayBase.H:581
std::uint64_t m_id
Definition AMReX_FabArrayBase.H:573
bool m_epo
Definition AMReX_FabArrayBase.H:579
bool m_override_sync
Definition AMReX_FabArrayBase.H:580
IntVect m_crse_ratio
BoxArray in FabArrayBase may have crse_ratio.
Definition AMReX_FabArrayBase.H:575
IntVect m_sb_snghost
Definition AMReX_FabArrayBase.H:577
Definition AMReX_FabArrayBase.H:322
std::unique_ptr< FabFactory< FArrayBox > > fact_crse_patch
Definition AMReX_FabArrayBase.H:337
DistributionMapping dm_patch
Definition AMReX_FabArrayBase.H:336
BDKey m_srcbdk
Definition AMReX_FabArrayBase.H:340
Long bytes() const
Definition AMReX_FabArrayBase.cpp:2057
BoxArray ba_crse_patch
Definition AMReX_FabArrayBase.H:334
std::unique_ptr< FabFactory< FArrayBox > > fact_fine_patch
Definition AMReX_FabArrayBase.H:338
std::unique_ptr< BoxConverter > m_coarsener
Definition AMReX_FabArrayBase.H:344
Box m_dstdomain
Definition AMReX_FabArrayBase.H:342
IntVect m_dstng
Definition AMReX_FabArrayBase.H:343
Long m_nuse
Definition AMReX_FabArrayBase.H:346
BDKey m_dstbdk
Definition AMReX_FabArrayBase.H:341
BoxArray ba_fine_patch
Definition AMReX_FabArrayBase.H:335
Definition AMReX_FabArrayBase.H:812
Long num_build
Definition AMReX_FabArrayBase.H:817
void recordDelete() noexcept
Definition AMReX_FabArrayBase.H:824
int max_num_boxarrays
Definition AMReX_FabArrayBase.H:815
void recordMaxNumBAUse(int n) noexcept
Definition AMReX_FabArrayBase.H:830
void recordMaxNumBoxArrays(int n) noexcept
Definition AMReX_FabArrayBase.H:827
void print() const
Definition AMReX_FabArrayBase.H:833
int max_num_fabarrays
Definition AMReX_FabArrayBase.H:814
int max_num_ba_use
Definition AMReX_FabArrayBase.H:816
int num_fabarrays
Definition AMReX_FabArrayBase.H:813
void recordBuild() noexcept
Definition AMReX_FabArrayBase.H:819
Used for collecting information used in communicating FABs.
Definition AMReX_FabArrayBase.H:289
int srcComp
Definition AMReX_FabArrayBase.H:294
int toProc
Definition AMReX_FabArrayBase.H:291
int fromProc
Definition AMReX_FabArrayBase.H:290
int fabArrayId
Definition AMReX_FabArrayBase.H:298
int procThatHasData
Definition AMReX_FabArrayBase.H:301
int procThatNeedsData
Definition AMReX_FabArrayBase.H:300
int destComp
Definition AMReX_FabArrayBase.H:295
int face
Definition AMReX_FabArrayBase.H:297
Box box
Definition AMReX_FabArrayBase.H:302
int fabIndex
Definition AMReX_FabArrayBase.H:292
int nComp
Definition AMReX_FabArrayBase.H:296
int fineIndex
Definition AMReX_FabArrayBase.H:293
int fillBoxId
Definition AMReX_FabArrayBase.H:299
For ParallelFor(FabArray)
Definition AMReX_FabArrayBase.H:765
ParForInfo(ParForInfo const &)=delete
Long m_ncellsmax
Definition AMReX_FabArrayBase.H:782
BATransformer m_bat
Definition AMReX_FabArrayBase.H:780
ParForInfo(ParForInfo &&)=delete
BoxIndexer const * getBoxes() const
Definition AMReX_FabArrayBase.H:772
char * m_hp
Definition AMReX_FabArrayBase.H:784
int getNBlocksPerBox(int nthreads) const
Definition AMReX_FabArrayBase.H:769
void operator=(ParForInfo const &)=delete
~ParForInfo()
Definition AMReX_FabArrayBase.cpp:2749
IntVect m_ng
Definition AMReX_FabArrayBase.H:781
BoxIndexer * m_boxes
Definition AMReX_FabArrayBase.H:783
Fill polar boundary in spherical coordinates.
Definition AMReX_FabArrayBase.H:741
Box m_domain
Definition AMReX_FabArrayBase.H:744
IntVect m_ngrow
Definition AMReX_FabArrayBase.H:743
Rotate Boundary by 180.
Definition AMReX_FabArrayBase.H:717
IntVect m_ngrow
Definition AMReX_FabArrayBase.H:719
Box m_domain
Definition AMReX_FabArrayBase.H:720
Rotate Boundary by 90.
Definition AMReX_FabArrayBase.H:693
Box m_domain
Definition AMReX_FabArrayBase.H:696
IntVect m_ngrow
Definition AMReX_FabArrayBase.H:695
Definition AMReX_FabArrayBase.H:478
~RegionTag()
Definition AMReX_FabArrayBase.H:485
RegionTag & operator=(RegionTag const &)=delete
RegionTag(RegionTag &&rhs) noexcept
Definition AMReX_FabArrayBase.H:482
RegionTag(const std::string &t)
Definition AMReX_FabArrayBase.H:480
RegionTag(RegionTag const &)=delete
RegionTag(const char *t)
Definition AMReX_FabArrayBase.H:479
Tiling.
Definition AMReX_FabArrayBase.H:276
Vector< int > indexMap
Definition AMReX_FabArrayBase.H:279
Vector< int > localIndexMap
Definition AMReX_FabArrayBase.H:280
Long bytes() const
Definition AMReX_FabArrayBase.cpp:274
Vector< int > localTileIndexMap
Definition AMReX_FabArrayBase.H:281
Vector< int > numLocalTiles
Definition AMReX_FabArrayBase.H:278
Long nuse
Definition AMReX_FabArrayBase.H:277
Vector< Box > tileArray
Definition AMReX_FabArrayBase.H:282
Definition AMReX_FabArrayBase.H:442
Long nbytes
Definition AMReX_FabArrayBase.H:443
Long nbytes_hwm
Definition AMReX_FabArrayBase.H:444