1#ifndef BL_FABARRAYBASE_H_
2#define BL_FABARRAYBASE_H_
3#include <AMReX_Config.H>
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;
115 [[nodiscard]]
int size () const noexcept {
return static_cast<int>(
boxarray.size()); }
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";
221 (
sbox.smallEnd() < rhs.sbox.smallEnd()
222 || ((
sbox.smallEnd() == rhs.sbox.smallEnd()) && (
224 (
dbox.smallEnd() < rhs.dbox.smallEnd()))))))));
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,
386 bool include_periodic,
387 bool include_physbndry);
392 bool include_periodic,
bool include_physbndry);
417 bool include_periodic,
418 bool include_physbndry);
551 bool no_assertion=
false)
const;
574 const Periodicity& period,
bool multi_ghost)
const;
583 bool enforce_periodicity_only,
bool override_sync,
584 bool multi_ghost,
IntVect const& sumboundary_src_nghost);
586 std::uint64_t
m_id = std::numeric_limits<std::uint64_t>::max();
599#if defined(__CUDACC__) && defined (AMREX_USE_CUDA)
600 CudaGraph<CopyMemory> m_localCopy;
601 CudaGraph<CopyMemory> m_copyToBuffer;
602 CudaGraph<CopyMemory> m_copyFromBuffer;
612 bool build_recv_tag);
615 using FBCache = std::multimap<BDKey,FabArrayBase::FB*>;
635 bool cross=
false,
bool enforce_periodicity_only =
false,
636 bool override_sync =
false,
646 const Periodicity& period,
bool to_ghost_cells_only =
false,
658 std::uint64_t
m_id = std::numeric_limits<std::uint64_t>::max();
680 using CPCache = std::multimap<BDKey,FabArrayBase::CPC*>;
699 const Periodicity& period,
bool to_ghost_cells_only =
false,
714 using RB90Cache = std::multimap<BDKey,FabArrayBase::RB90*>;
723 void flushRB90 (
bool no_assertion=
false)
const;
738 using RB180Cache = std::multimap<BDKey,FabArrayBase::RB180*>;
747 void flushRB180 (
bool no_assertion=
false)
const;
875 <<
" tot # of builds : " <<
num_build <<
"\n"
893 void flushFB (
bool no_assertion=
false)
const;
894 static void flushFBCache ();
896 void flushCPC (
bool no_assertion=
false)
const;
897 static void flushCPCache ();
902 class SingleChunkArena final
906 SingleChunkArena (Arena* a_arena, std::size_t a_size);
907 ~SingleChunkArena ()
override;
909 SingleChunkArena () =
delete;
910 SingleChunkArena (
const SingleChunkArena& rhs) =
delete;
911 SingleChunkArena (SingleChunkArena&& rhs) =
delete;
912 SingleChunkArena& operator= (
const SingleChunkArena& rhs) =
delete;
913 SingleChunkArena& operator= (SingleChunkArena&& rhs) =
delete;
915 [[nodiscard]]
void* alloc (std::size_t sz)
override;
916 void free (
void* pt)
override;
919 [[nodiscard]]
bool isDeviceAccessible ()
const override;
920 [[nodiscard]]
bool isHostAccessible ()
const override;
922 [[nodiscard]]
bool isManaged ()
const override;
923 [[nodiscard]]
bool isDevice ()
const override;
924 [[nodiscard]]
bool isPinned ()
const override;
926 [[nodiscard]]
void* data () const noexcept {
return (
void*) m_root; }
929 DataAllocator m_dallocator;
930 char* m_root =
nullptr;
931 char* m_free =
nullptr;
932 std::size_t m_size = 0;
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:223
Convenience header for the core AMReX GPU facilities.
Abstract base class for memory arenas.
Definition AMReX_Arena.H:154
Reference-counted collection of Boxes.
Definition AMReX_BoxArray.H:681
Definition AMReX_Box.H:1292
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:51
Definition AMReX_EB2.H:28
A Fortran Array of REALs.
Definition AMReX_FArrayBox.H:237
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:2518
static Long bytesOfMapOfCopyComTagContainers(const MapOfCopyComTagContainers &)
Definition AMReX_FabArrayBase.cpp:224
IntVect nGrowVect() const noexcept
Definition AMReX_FabArrayBase.H:85
static std::multimap< BDKey, ParForInfo * > m_TheParForCache
Definition AMReX_FabArrayBase.H:834
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:2569
void clear()
Clear this object's BoxArray, DistributionMapping, local index/ownership data, and BDKey so the conta...
Definition AMReX_FabArrayBase.cpp:208
void flushPolarB(bool no_assertion=false) const
This flushes its own PolarB.
Definition AMReX_FabArrayBase.cpp:1834
friend class MFIter
Definition AMReX_FabArrayBase.H:48
std::multimap< BDKey, FabArrayBase::FPinfo * > FPinfoCache
Definition AMReX_FabArrayBase.H:359
Vector< int > indexArray
Definition AMReX_FabArrayBase.H:529
static void pushRegionTag(const char *t)
Push a memory-region tag used to classify subsequent FabArray allocations.
Definition AMReX_FabArrayBase.cpp:2718
static TACache m_TheTileArrayCache
Definition AMReX_FabArrayBase.H:545
const Vector< int > & IndexArray() const noexcept
Return constant reference to indices in the FabArray that we have access.
Definition AMReX_FabArrayBase.H:121
ParForInfo const & getParForInfoRedBlack() const
Obtain metadata for a red-black ParallelFor over the valid region.
Definition AMReX_FabArrayBase.cpp:2883
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:672
const TileArray * getTileArray(const IntVect &tilesize) const
Return the cached tile decomposition used by MFIter.
Definition AMReX_FabArrayBase.cpp:2391
static void flushRB90Cache()
This flushes the entire cache.
Definition AMReX_FabArrayBase.cpp:1496
static FabArrayStats m_FA_stats
Definition AMReX_FabArrayBase.H:881
static bool getAllocSingleChunk()
Query whether single-chunk allocation is enabled for new FabArrays.
Definition AMReX_FabArrayBase.H:886
BDKey m_bdkey
Definition AMReX_FabArrayBase.H:533
void addThisBD()
add the current BD into BD count database
Definition AMReX_FabArrayBase.cpp:2599
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:2730
static CFinfoCache m_TheCrseFineCache
Definition AMReX_FabArrayBase.H:410
RB90Cache::iterator RB90CacheIter
Definition AMReX_FabArrayBase.H:715
const RB90 & getRB90(const IntVect &nghost, const Box &domain) const
Definition AMReX_FabArrayBase.cpp:1505
static PolarBCache m_ThePolarBCache
Definition AMReX_FabArrayBase.H:765
void flushParForInfo(bool no_assertion=false) const
Definition AMReX_FabArrayBase.cpp:2902
void updateBDKey()
Refresh the cached BDKey after rebinding BoxArray or DistributionMapping data.
Definition AMReX_FabArrayBase.cpp:2611
static CacheStats m_FBC_stats
Definition AMReX_FabArrayBase.H:619
void buildTileArray(const IntVect &tilesize, TileArray &ta) const
Definition AMReX_FabArrayBase.cpp:2426
FBCache::iterator FBCacheIter
Definition AMReX_FabArrayBase.H:616
static void Initialize()
Initialize from ParmParse with "fabarray" prefix.
Definition AMReX_FabArrayBase.cpp:96
static std::vector< std::string > m_region_tag
Definition AMReX_FabArrayBase.H:490
FabArrayBase(FabArrayBase &&rhs) noexcept=default
static void flushRB180Cache()
This flushes the entire cache.
Definition AMReX_FabArrayBase.cpp:1660
int n_comp
Definition AMReX_FabArrayBase.H:532
static void printMemUsage()
Print the tracked memory usage table on the current subcommunicator's I/O process.
Definition AMReX_FabArrayBase.cpp:2684
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:1295
static CacheStats m_FPinfo_stats
Definition AMReX_FabArrayBase.H:364
bool isFusingCandidate() const noexcept
Is this a good candidate for kernel fusing?
Definition AMReX_FabArrayBase.cpp:2754
bool is_cell_centered() const noexcept
This tests on whether the FabArray is cell-centered.
Definition AMReX_FabArrayBase.cpp:2748
bool is_nodal() const noexcept
This tests on whether the FabArray is fully nodal.
Definition AMReX_FabArrayBase.cpp:2736
bool isOwner(int li) const noexcept
Definition AMReX_FabArrayBase.H:522
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:2075
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:2707
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:2333
std::multimap< BDKey, FabArrayBase::RB180 * > RB180Cache
Definition AMReX_FabArrayBase.H:738
static CacheStats m_CPC_stats
Definition AMReX_FabArrayBase.H:684
static RB180Cache m_TheRB180Cache
Definition AMReX_FabArrayBase.H:741
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:2144
void define(const BoxArray &bxs, const DistributionMapping &dm, int nvar, int ngrow)
Definition AMReX_FabArrayBase.cpp:176
const RB180 & getRB180(const IntVect &nghost, const Box &domain) const
Definition AMReX_FabArrayBase.cpp:1669
static CacheStats m_TAC_stats
Definition AMReX_FabArrayBase.H:546
static CacheStats m_CFinfo_stats
Definition AMReX_FabArrayBase.H:412
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:521
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:582
static void updateMemUsage(std::string const &tag, Long nbytes, Arena const *ar)
Accumulate memory usage statistics for diagnostics.
Definition AMReX_FabArrayBase.cpp:2676
static FPinfoCache m_TheFillPatchCache
Definition AMReX_FabArrayBase.H:362
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:2842
static std::map< BDKey, int > m_BD_count
Keep track of how many FabArrays are built with the same BDKey.
Definition AMReX_FabArrayBase.H:843
static bool m_alloc_single_chunk
Definition AMReX_FabArrayBase.H:883
std::map< std::pair< IntVect, IntVect >, TileArray > TAMap
Definition AMReX_FabArrayBase.H:542
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:681
CopyComTag::CopyComTagsContainer CopyComTagsContainer
Definition AMReX_FabArrayBase.H:236
static FBCache m_TheFBCache
Definition AMReX_FabArrayBase.H:618
std::multimap< BDKey, FabArrayBase::FB * > FBCache
Definition AMReX_FabArrayBase.H:615
RB180Cache::iterator RB180CacheIter
Definition AMReX_FabArrayBase.H:739
BDKey getBDKey() const noexcept
Definition AMReX_FabArrayBase.H:266
static void flushParForCache()
Definition AMReX_FabArrayBase.cpp:2914
CopyComTag::MapOfCopyComTagContainers MapOfCopyComTagContainers
Definition AMReX_FabArrayBase.H:237
static std::map< std::string, meminfo > m_mem_usage
Definition AMReX_FabArrayBase.H:459
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:683
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:531
static const CFinfo & TheCFinfo(const FabArrayBase &finefa, const Geometry &finegm, const IntVect &ng, bool include_periodic, bool include_physbndry)
Definition AMReX_FabArrayBase.cpp:2291
void flushRB90(bool no_assertion=false) const
This flushes its own RB90.
Definition AMReX_FabArrayBase.cpp:1484
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:2696
std::vector< bool > ownership
Definition AMReX_FabArrayBase.H:530
std::multimap< BDKey, FabArrayBase::CPC * > CPCache
Definition AMReX_FabArrayBase.H:680
std::multimap< BDKey, FabArrayBase::CFinfo * > CFinfoCache
Definition AMReX_FabArrayBase.H:407
bool empty() const noexcept
Definition AMReX_FabArrayBase.H:94
std::multimap< BDKey, FabArrayBase::RB90 * > RB90Cache
Definition AMReX_FabArrayBase.H:714
static RB90Cache m_TheRB90Cache
Definition AMReX_FabArrayBase.H:717
static void flushTileArrayCache()
This flushes the entire cache.
Definition AMReX_FabArrayBase.cpp:2555
void flushRB180(bool no_assertion=false) const
This flushes its own RB180.
Definition AMReX_FabArrayBase.cpp:1648
CpOp
parallel copy or add
Definition AMReX_FabArrayBase.H:424
@ ADD
Definition AMReX_FabArrayBase.H:424
@ COPY
Definition AMReX_FabArrayBase.H:424
bool m_multi_ghost
Definition AMReX_FabArrayBase.H:535
IntVect n_filled
Definition AMReX_FabArrayBase.H:534
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:543
static void flushPolarBCache()
This flushes the entire cache.
Definition AMReX_FabArrayBase.cpp:1846
DistributionMapping distributionMap
Definition AMReX_FabArrayBase.H:528
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:218
FPinfoCache::iterator FPinfoCacheIter
Definition AMReX_FabArrayBase.H:360
friend void FillBoundary(Vector< FabArray< FAB > * > const &mf, const Periodicity &period)
CFinfoCache::iterator CFinfoCacheIter
Definition AMReX_FabArrayBase.H:408
static std::uint64_t getNextCommMetaDataId()
Generate a monotonically increasing identifier for communication metadata objects.
Definition AMReX_FabArrayBase.cpp:2925
static void Finalize()
Definition AMReX_FabArrayBase.cpp:2350
PolarBCache::iterator PolarBCacheIter
Definition AMReX_FabArrayBase.H:763
static int MaxComp
The maximum number of components to copy() at a time.
Definition AMReX_FabArrayBase.H:309
BoxArray boxarray
Definition AMReX_FabArrayBase.H:527
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:762
const PolarB & getPolarB(const IntVect &nghost, const Box &domain) const
Definition AMReX_FabArrayBase.cpp:1855
An Array of FortranArrayBox(FAB)-like Objects.
Definition AMReX_FabArray.H:356
Abstract factory interface for creating, aliasing, and destroying FAB objects.
Definition AMReX_FabFactory.H:73
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:87
__host__ static __device__ constexpr IntVectND< dim > TheZeroVector() noexcept
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
amrex_long Long
Definition AMReX_INT.H:30
int MyProc() noexcept
Definition AMReX_ParallelDescriptor.H:128
Definition AMReX_FabArrayBase.H:38
std::string const & name()
Definition AMReX_Machine.cpp:46
Definition AMReX_Amr.cpp:50
BoxArray const & boxArray(FabArrayBase const &fa)
Convenience wrapper that forwards to fa.boxArray().
Definition AMReX_FabArrayBase.cpp:2990
DistributionMapping const & DistributionMap(FabArrayBase const &fa)
Convenience wrapper that forwards to fa.DistributionMap().
Definition AMReX_FabArrayBase.cpp:2995
BoxND< 3 > Box
Box is an alias for amrex::BoxND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:35
int nComp(FabArrayBase const &fa)
Convenience wrapper that forwards to fa.nComp().
Definition AMReX_FabArrayBase.cpp:2980
IndexTypeND< 3 > IndexType
IndexType is an alias for amrex::IndexTypeND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:41
IntVect nGrowVect(FabArrayBase const &fa)
Convenience wrapper that forwards to fa.nGrowVect().
Definition AMReX_FabArrayBase.cpp:2985
IntVectND< 3 > IntVect
IntVect is an alias for amrex::IntVectND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:38
BoxIndexerND< 3 > BoxIndexer
Definition AMReX_Box.H:2610
const int[]
Definition AMReX_BLProfiler.cpp:1665
std::ostream & operator<<(std::ostream &os, AmrMesh const &amr_mesh)
Stream helper; forwards to the friend declared inside AmrMesh.
Definition AMReX_AmrMesh.cpp:1372
Definition AMReX_BoxArray.H:1253
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:2669
coarse/fine boundary
Definition AMReX_FabArrayBase.H:382
Box m_fine_domain
Definition AMReX_FabArrayBase.H:399
IntVect m_ng
Definition AMReX_FabArrayBase.H:400
CFinfo(const FabArrayBase &finefa, const Geometry &finegm, const IntVect &ng, bool include_periodic, bool include_physbndry)
Definition AMReX_FabArrayBase.cpp:2218
Long bytes() const
Definition AMReX_FabArrayBase.cpp:2282
bool m_include_periodic
Definition AMReX_FabArrayBase.H:401
static Box Domain(const Geometry &geom, const IntVect &ng, bool include_periodic, bool include_physbndry)
Definition AMReX_FabArrayBase.cpp:2263
bool m_include_physbndry
Definition AMReX_FabArrayBase.H:402
Long m_nuse
Definition AMReX_FabArrayBase.H:404
BoxArray ba_cfb
Definition AMReX_FabArrayBase.H:394
BDKey m_fine_bdk
Definition AMReX_FabArrayBase.H:398
Vector< int > fine_grid_idx
local array
Definition AMReX_FabArrayBase.H:396
DistributionMapping dm_cfb
Definition AMReX_FabArrayBase.H:395
parallel copy or add
Definition AMReX_FabArrayBase.H:643
BoxArray m_srcba
Definition AMReX_FabArrayBase.H:666
CPC(const FabArrayBase &dstfa, const IntVect &dstng, const FabArrayBase &srcfa, const IntVect &srcng, const Periodicity &period, bool to_ghost_cells_only=false, const IntVect &offset=IntVect(0))
Definition AMReX_FabArrayBase.cpp:290
IntVect m_srcng
Definition AMReX_FabArrayBase.H:661
bool m_tgco
Definition AMReX_FabArrayBase.H:665
BoxArray m_dstba
Definition AMReX_FabArrayBase.H:667
BDKey m_srcbdk
Definition AMReX_FabArrayBase.H:659
std::uint64_t m_id
Definition AMReX_FabArrayBase.H:658
Long bytes() const
Definition AMReX_FabArrayBase.cpp:235
BDKey m_dstbdk
Definition AMReX_FabArrayBase.H:660
Long m_nuse
Definition AMReX_FabArrayBase.H:669
IntVect m_offset
Definition AMReX_FabArrayBase.H:663
Periodicity m_period
Definition AMReX_FabArrayBase.H:664
IntVect m_dstng
Definition AMReX_FabArrayBase.H:662
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:580
bool m_multi_ghost
Definition AMReX_FabArrayBase.H:597
Long m_nuse
Definition AMReX_FabArrayBase.H:596
IntVect m_ngrow
Definition AMReX_FabArrayBase.H:589
bool m_cross
Definition AMReX_FabArrayBase.H:591
IndexType m_typ
Definition AMReX_FabArrayBase.H:587
FB(const FabArrayBase &fa, const IntVect &nghost, bool cross, const Periodicity &period, bool enforce_periodicity_only, bool override_sync, bool multi_ghost, IntVect const &sumboundary_src_nghost)
Definition AMReX_FabArrayBase.cpp:639
Long bytes() const
Definition AMReX_FabArrayBase.cpp:255
Periodicity m_period
Definition AMReX_FabArrayBase.H:594
std::uint64_t m_id
Definition AMReX_FabArrayBase.H:586
bool m_epo
Definition AMReX_FabArrayBase.H:592
bool m_override_sync
Definition AMReX_FabArrayBase.H:593
IntVect m_crse_ratio
BoxArray in FabArrayBase may have crse_ratio.
Definition AMReX_FabArrayBase.H:588
IntVect m_sb_snghost
Definition AMReX_FabArrayBase.H:590
Definition AMReX_FabArrayBase.H:322
std::unique_ptr< FabArrayBase > keep_fine_patch
Definition AMReX_FabArrayBase.H:347
std::unique_ptr< FabFactory< FArrayBox > > fact_crse_patch
Definition AMReX_FabArrayBase.H:342
DistributionMapping dm_patch
Definition AMReX_FabArrayBase.H:341
~FPinfo()
Definition AMReX_FabArrayBase.cpp:2059
BDKey m_srcbdk
Definition AMReX_FabArrayBase.H:349
const EB2::IndexSpace * m_index_space
Definition AMReX_FabArrayBase.H:354
FPinfo(FPinfo const &)=delete
Long bytes() const
Definition AMReX_FabArrayBase.cpp:2066
BoxArray ba_crse_patch
Definition AMReX_FabArrayBase.H:339
std::unique_ptr< FabFactory< FArrayBox > > fact_fine_patch
Definition AMReX_FabArrayBase.H:343
std::unique_ptr< BoxConverter > m_coarsener
Definition AMReX_FabArrayBase.H:353
Box m_dstdomain
Definition AMReX_FabArrayBase.H:351
std::unique_ptr< FabArrayBase > keep_crse_patch
Definition AMReX_FabArrayBase.H:346
FPinfo(const FabArrayBase &srcfa, const FabArrayBase &dstfa, const Box &dstdomain, const IntVect &dstng, const BoxConverter &coarsener, const Box &fdomain, const Box &cdomain, const EB2::IndexSpace *index_space)
Definition AMReX_FabArrayBase.cpp:1876
IntVect m_dstng
Definition AMReX_FabArrayBase.H:352
Long m_nuse
Definition AMReX_FabArrayBase.H:356
BDKey m_dstbdk
Definition AMReX_FabArrayBase.H:350
FPinfo & operator=(FPinfo const &)=delete
BoxArray ba_fine_patch
Definition AMReX_FabArrayBase.H:340
Definition AMReX_FabArrayBase.H:852
Long num_build
Definition AMReX_FabArrayBase.H:857
void recordDelete() noexcept
Definition AMReX_FabArrayBase.H:864
int max_num_boxarrays
Definition AMReX_FabArrayBase.H:855
void recordMaxNumBAUse(int n) noexcept
Definition AMReX_FabArrayBase.H:870
void recordMaxNumBoxArrays(int n) noexcept
Definition AMReX_FabArrayBase.H:867
void print() const
Definition AMReX_FabArrayBase.H:873
int max_num_fabarrays
Definition AMReX_FabArrayBase.H:854
int max_num_ba_use
Definition AMReX_FabArrayBase.H:856
int num_fabarrays
Definition AMReX_FabArrayBase.H:853
void recordBuild() noexcept
Definition AMReX_FabArrayBase.H:859
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
Definition AMReX_FabArrayBase.H:780
For ParallelFor(FabArray).
Definition AMReX_FabArrayBase.H:778
ParForInfo(ParForInfo const &)=delete
Long m_ncellsmax
Definition AMReX_FabArrayBase.H:806
Kind
Definition AMReX_FabArrayBase.H:779
@ redblack
Definition AMReX_FabArrayBase.H:779
@ strided
Definition AMReX_FabArrayBase.H:779
@ full
Definition AMReX_FabArrayBase.H:779
BATransformer m_bat
Definition AMReX_FabArrayBase.H:801
ParForInfo(ParForInfo &&)=delete
BoxIndexer const * getBoxes() const
Definition AMReX_FabArrayBase.H:793
IntVect m_stride
Definition AMReX_FabArrayBase.H:804
char * m_hp
Definition AMReX_FabArrayBase.H:808
int getNBlocksPerBox(int nthreads) const
Definition AMReX_FabArrayBase.H:790
void operator=(ParForInfo const &)=delete
IntVect m_offset
Definition AMReX_FabArrayBase.H:805
~ParForInfo()
Definition AMReX_FabArrayBase.cpp:2836
ParForInfo(const FabArrayBase &fa, const IntVect &nghost)
One BoxIndexer per box, grown by nghost.
Definition AMReX_FabArrayBase.cpp:2779
IntVect m_ng
Definition AMReX_FabArrayBase.H:803
Kind m_kind
Definition AMReX_FabArrayBase.H:802
BoxIndexer * m_boxes
Definition AMReX_FabArrayBase.H:807
Fill polar boundary in spherical coordinates.
Definition AMReX_FabArrayBase.H:754
Box m_domain
Definition AMReX_FabArrayBase.H:757
PolarB(const FabArrayBase &fa, const IntVect &nghost, Box const &domain)
Definition AMReX_FabArrayBase.cpp:1690
IntVect m_ngrow
Definition AMReX_FabArrayBase.H:756
Rotate Boundary by 180.
Definition AMReX_FabArrayBase.H:730
IntVect m_ngrow
Definition AMReX_FabArrayBase.H:732
Box m_domain
Definition AMReX_FabArrayBase.H:733
RB180(const FabArrayBase &fa, const IntVect &nghost, Box const &domain)
Definition AMReX_FabArrayBase.cpp:1526
Rotate Boundary by 90.
Definition AMReX_FabArrayBase.H:706
RB90(const FabArrayBase &fa, const IntVect &nghost, Box const &domain)
Definition AMReX_FabArrayBase.cpp:1339
Box m_domain
Definition AMReX_FabArrayBase.H:709
IntVect m_ngrow
Definition AMReX_FabArrayBase.H:708
~RegionTag()
Definition AMReX_FabArrayBase.H:498
RegionTag & operator=(RegionTag const &)=delete
RegionTag(RegionTag &&rhs) noexcept
Definition AMReX_FabArrayBase.H:495
RegionTag(const std::string &t)
Definition AMReX_FabArrayBase.H:493
RegionTag(RegionTag const &)=delete
RegionTag(const char *t)
Definition AMReX_FabArrayBase.H:492
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:275
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:455
Long nbytes
Definition AMReX_FabArrayBase.H:456
Long nbytes_hwm
Definition AMReX_FabArrayBase.H:457