1#ifndef BL_FABARRAYBASE_H_
2#define BL_FABARRAYBASE_H_
3#include <AMReX_Config.H>
30template <
typename FAB>
class FabFactory;
31template <
typename FAB>
class FabArray;
78 [[nodiscard]]
int nGrow (
int direction = 0) const noexcept {
return n_grow[direction]; }
107 [[nodiscard]]
Box fabbox (
int K)
const noexcept;
120 auto low = std::ranges::lower_bound(
indexArray, K);
122 return static_cast<int>(low -
indexArray.begin());
135 [[nodiscard]]
bool is_nodal () const noexcept;
139 [[nodiscard]]
bool is_nodal (
int dir) const noexcept;
168 explicit CacheStats (std::string name_)
169 :
name(std::move(name_)) {}
170 void recordBuild () noexcept {
173 maxsize = std::max(maxsize,
size);
175 void recordErase (
Long n)
noexcept {
179 maxuse = std::max(maxuse, n);
181 void recordUse () noexcept { ++nuse; }
182 void print ()
const {
184 <<
" tot # of builds : " << nbuild <<
"\n"
185 <<
" tot # of erasures: " << nerase <<
"\n"
186 <<
" tot # of uses : " << nuse <<
"\n"
187 <<
" max cache size : " << maxsize <<
"\n"
188 <<
" max # of uses : " << maxuse <<
"\n";
232 : m_ba_id(baid), m_dm_id(dmid) {}
234 return (m_ba_id < rhs.m_ba_id) ||
235 ((m_ba_id == rhs.m_ba_id) && (m_dm_id < rhs.m_dm_id));
238 return m_ba_id == rhs.m_ba_id && m_dm_id == rhs.m_dm_id;
241 return m_ba_id != rhs.m_ba_id || m_dm_id != rhs.m_dm_id;
307 const Box& dstdomain,
355 bool include_periodic,
356 bool include_physbndry);
361 bool include_periodic,
bool include_physbndry);
386 bool include_periodic,
387 bool include_physbndry);
467 bool no_assertion=
false)
const;
481 const Periodicity& period,
bool multi_ghost)
const;
490 bool enforce_periodicity_only,
bool override_sync,
491 bool multi_ghost,
IntVect const& sumboundary_src_nghost);
493 std::uint64_t
m_id = std::numeric_limits<std::uint64_t>::max();
506#if defined(__CUDACC__) && defined (AMREX_USE_CUDA)
507 CudaGraph<CopyMemory> m_localCopy;
508 CudaGraph<CopyMemory> m_copyToBuffer;
509 CudaGraph<CopyMemory> m_copyFromBuffer;
519 bool build_recv_tag);
522 using FBCache = std::multimap<BDKey,FabArrayBase::FB*>;
529 bool cross=
false,
bool enforce_periodicity_only =
false,
530 bool override_sync =
false,
540 const Periodicity& period,
bool to_ghost_cells_only =
false,
552 std::uint64_t
m_id = std::numeric_limits<std::uint64_t>::max();
574 using CPCache = std::multimap<BDKey,FabArrayBase::CPC*>;
581 const Periodicity& period,
bool to_ghost_cells_only =
false,
596 using RB90Cache = std::multimap<BDKey,FabArrayBase::RB90*>;
603 void flushRB90 (
bool no_assertion=
false)
const;
618 using RB180Cache = std::multimap<BDKey,FabArrayBase::RB180*>;
625 void flushRB180 (
bool no_assertion=
false)
const;
719 <<
" tot # of builds : " <<
num_build <<
"\n"
735 void flushFB (
bool no_assertion=
false)
const;
736 static void flushFBCache ();
738 void flushCPC (
bool no_assertion=
false)
const;
739 static void flushCPCache ();
744 class SingleChunkArena final
748 SingleChunkArena (Arena* a_arena, std::size_t a_size);
749 ~SingleChunkArena ()
override;
751 SingleChunkArena () =
delete;
752 SingleChunkArena (
const SingleChunkArena& rhs) =
delete;
753 SingleChunkArena (SingleChunkArena&& rhs) =
delete;
754 SingleChunkArena& operator= (
const SingleChunkArena& rhs) =
delete;
755 SingleChunkArena& operator= (SingleChunkArena&& rhs) =
delete;
757 [[nodiscard]]
void* alloc (std::size_t sz)
override;
758 void free (
void* pt)
override;
761 [[nodiscard]]
bool isDeviceAccessible ()
const override;
762 [[nodiscard]]
bool isHostAccessible ()
const override;
764 [[nodiscard]]
bool isManaged ()
const override;
765 [[nodiscard]]
bool isDevice ()
const override;
766 [[nodiscard]]
bool isPinned ()
const override;
768 [[nodiscard]]
void* data () const noexcept {
return (
void*) m_root; }
771 DataAllocator m_dallocator;
772 char* m_root =
nullptr;
773 char* m_free =
nullptr;
774 std::size_t m_size = 0;
779[[nodiscard]]
int nComp (FabArrayBase
const& fa);
781[[nodiscard]] BoxArray
const&
boxArray (FabArrayBase
const& fa);
782[[nodiscard]] DistributionMapping
const&
DistributionMap (FabArrayBase
const& fa);
785bool CheckRcvStats (Vector<MPI_Status>& recv_stats,
const Vector<std::size_t>& recv_size,
int tag);
788std::ostream&
operator<< (std::ostream& os,
const FabArrayBase::BDKey&
id);
#define AMREX_EXPORT
Definition AMReX_Extension.H:191
Array4< int const > offset
Definition AMReX_HypreMLABecLap.cpp:1139
A virtual base class for objects that manage their own dynamic memory allocation.
Definition AMReX_Arena.H:132
A collection of Boxes stored in an Array.
Definition AMReX_BoxArray.H:564
IndexType ixType() const noexcept
Return index type of this BoxArray.
Definition AMReX_BoxArray.H:854
RefID getRefID() const noexcept
Return a unique ID of the reference.
Definition AMReX_BoxArray.H:851
Long size() const noexcept
Return the number of boxes in the BoxArray.
Definition AMReX_BoxArray.H:611
bool empty() const noexcept
Return whether the BoxArray is empty.
Definition AMReX_BoxArray.H:617
Definition AMReX_Box.H:1266
__host__ __device__ const IntVectND< dim > & smallEnd() const &noexcept
Return the inclusive lower bound of the box.
Definition AMReX_Box.H:112
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:43
RefID getRefID() const noexcept
This gives a unique ID of the reference, which is different from dmID above.
Definition AMReX_DistributionMapping.H:385
Definition AMReX_EB2.H:28
Base class for FabArray.
Definition AMReX_FabArrayBase.H:42
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:80
static std::multimap< BDKey, ParForInfo * > m_TheParForCache
Definition AMReX_FabArrayBase.H:678
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()
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:331
Vector< int > indexArray
Definition AMReX_FabArrayBase.H:445
static void pushRegionTag(const char *t)
Definition AMReX_FabArrayBase.cpp:2669
static TACache m_TheTileArrayCache
Definition AMReX_FabArrayBase.H:461
const Vector< int > & IndexArray() const noexcept
Return constant reference to indices in the FabArray that we have access.
Definition AMReX_FabArrayBase.H:116
void define_fb_metadata(CommMetaData &cmd, const IntVect &nghost, bool cross, const Periodicity &period, bool multi_ghost) const
Definition AMReX_FabArrayBase.cpp:666
const TileArray * getTileArray(const IntVect &tilesize) const
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:725
static bool getAllocSingleChunk()
Definition AMReX_FabArrayBase.H:729
BDKey m_bdkey
Definition AMReX_FabArrayBase.H:449
void addThisBD()
add the current BD into BD count database
Definition AMReX_FabArrayBase.cpp:2550
void setNGrowFilled(IntVect const &ng) noexcept
Definition AMReX_FabArrayBase.H:151
static void popRegionTag()
Definition AMReX_FabArrayBase.cpp:2681
static CFinfoCache m_TheCrseFineCache
Definition AMReX_FabArrayBase.H:379
RB90Cache::iterator RB90CacheIter
Definition AMReX_FabArrayBase.H:597
const RB90 & getRB90(const IntVect &nghost, const Box &domain) const
Definition AMReX_FabArrayBase.cpp:1508
static PolarBCache m_ThePolarBCache
Definition AMReX_FabArrayBase.H:643
void flushParForInfo(bool no_assertion=false) const
Definition AMReX_FabArrayBase.cpp:2774
void updateBDKey()
Definition AMReX_FabArrayBase.cpp:2562
static CacheStats m_FBC_stats
Definition AMReX_FabArrayBase.H:526
void buildTileArray(const IntVect &tilesize, TileArray &ta) const
Definition AMReX_FabArrayBase.cpp:2377
FBCache::iterator FBCacheIter
Definition AMReX_FabArrayBase.H:523
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:413
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:448
static void printMemUsage()
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
Definition AMReX_FabArrayBase.cpp:1298
static CacheStats m_FPinfo_stats
Definition AMReX_FabArrayBase.H:336
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:438
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:86
static Long queryMemUsageHWM(const std::string &tag=std::string("All"))
Definition AMReX_FabArrayBase.cpp:2658
int size() const noexcept
Return the number of FABs in the FabArray.
Definition AMReX_FabArrayBase.H:110
void flushCFinfo(bool no_assertion=false) const
Definition AMReX_FabArrayBase.cpp:2284
std::multimap< BDKey, FabArrayBase::RB180 * > RB180Cache
Definition AMReX_FabArrayBase.H:618
static CacheStats m_CPC_stats
Definition AMReX_FabArrayBase.H:578
static RB180Cache m_TheRB180Cache
Definition AMReX_FabArrayBase.H:621
IntVect nGrowFilled() const noexcept
Definition AMReX_FabArrayBase.H:150
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:462
static CacheStats m_CFinfo_stats
Definition AMReX_FabArrayBase.H:381
void setMultiGhost(bool a_multi_ghost)
Definition AMReX_FabArrayBase.H:145
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:437
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
Definition AMReX_FabArrayBase.cpp:576
static void updateMemUsage(std::string const &tag, Long nbytes, Arena const *ar)
Definition AMReX_FabArrayBase.cpp:2627
static FPinfoCache m_TheFillPatchCache
Definition AMReX_FabArrayBase.H:334
static IntVect mfiter_tile_size
Default tilesize in MFIter.
Definition AMReX_FabArrayBase.H:288
ParForInfo const & getParForInfo(const IntVect &nghost) const
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:687
static bool m_alloc_single_chunk
Definition AMReX_FabArrayBase.H:727
std::map< std::pair< IntVect, IntVect >, TileArray > TAMap
Definition AMReX_FabArrayBase.H:458
int nGrow(int direction=0) const noexcept
Return the grow factor that defines the region of definition.
Definition AMReX_FabArrayBase.H:78
CPCache::iterator CPCacheIter
Definition AMReX_FabArrayBase.H:575
CopyComTag::CopyComTagsContainer CopyComTagsContainer
Definition AMReX_FabArrayBase.H:219
static FBCache m_TheFBCache
Definition AMReX_FabArrayBase.H:525
std::multimap< BDKey, FabArrayBase::FB * > FBCache
Definition AMReX_FabArrayBase.H:522
RB180Cache::iterator RB180CacheIter
Definition AMReX_FabArrayBase.H:619
BDKey getBDKey() const noexcept
Definition AMReX_FabArrayBase.H:249
static void flushParForCache()
Definition AMReX_FabArrayBase.cpp:2786
CopyComTag::MapOfCopyComTagContainers MapOfCopyComTagContainers
Definition AMReX_FabArrayBase.H:220
static std::map< std::string, meminfo > m_mem_usage
Definition AMReX_FabArrayBase.H:402
int localindex(int K) const noexcept
Return local index in the vector of FABs.
Definition AMReX_FabArrayBase.H:119
FabArrayBase(const FabArrayBase &rhs)=default
const DistributionMapping & DistributionMap() const noexcept
Return constant reference to associated DistributionMapping.
Definition AMReX_FabArrayBase.H:130
static CPCache m_TheCPCache
Definition AMReX_FabArrayBase.H:577
int local_size() const noexcept
Return the number of local FABs in the FabArray.
Definition AMReX_FabArrayBase.H:113
IntVect n_grow
Definition AMReX_FabArrayBase.H:447
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"))
Definition AMReX_FabArrayBase.cpp:2647
std::vector< bool > ownership
Definition AMReX_FabArrayBase.H:446
std::multimap< BDKey, FabArrayBase::CPC * > CPCache
Definition AMReX_FabArrayBase.H:574
std::multimap< BDKey, FabArrayBase::CFinfo * > CFinfoCache
Definition AMReX_FabArrayBase.H:376
bool empty() const noexcept
Definition AMReX_FabArrayBase.H:89
std::multimap< BDKey, FabArrayBase::RB90 * > RB90Cache
Definition AMReX_FabArrayBase.H:596
static RB90Cache m_TheRB90Cache
Definition AMReX_FabArrayBase.H:599
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:393
@ ADD
Definition AMReX_FabArrayBase.H:393
@ COPY
Definition AMReX_FabArrayBase.H:393
bool m_multi_ghost
Definition AMReX_FabArrayBase.H:451
IntVect n_filled
Definition AMReX_FabArrayBase.H:450
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:101
std::map< BDKey, TAMap > TACache
Definition AMReX_FabArrayBase.H:459
static void flushPolarBCache()
This flushes the entire cache.
Definition AMReX_FabArrayBase.cpp:1849
DistributionMapping distributionMap
Definition AMReX_FabArrayBase.H:444
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:332
friend void FillBoundary(Vector< FabArray< FAB > * > const &mf, const Periodicity &period)
CFinfoCache::iterator CFinfoCacheIter
Definition AMReX_FabArrayBase.H:377
static std::uint64_t getNextCommMetaDataId()
Definition AMReX_FabArrayBase.cpp:2797
static void Finalize()
Definition AMReX_FabArrayBase.cpp:2301
PolarBCache::iterator PolarBCacheIter
Definition AMReX_FabArrayBase.H:641
static int MaxComp
The maximum number of components to copy() at a time.
Definition AMReX_FabArrayBase.H:291
BoxArray boxarray
Definition AMReX_FabArrayBase.H:443
static IntVect comm_tile_size
communication tile size
Definition AMReX_FabArrayBase.H:301
int nComp() const noexcept
Return number of variables (aka components) associated with each point.
Definition AMReX_FabArrayBase.H:83
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:95
std::multimap< BDKey, FabArrayBase::PolarB * > PolarBCache
Definition AMReX_FabArrayBase.H:640
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:344
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
int nComp(FabArrayBase const &fa)
Definition AMReX_FabArrayBase.cpp:2852
DistributionMapping const & DistributionMap(FabArrayBase const &fa)
Definition AMReX_FabArrayBase.cpp:2867
IntVect nGrowVect(FabArrayBase const &fa)
Definition AMReX_FabArrayBase.cpp:2857
IntVectND< 3 > IntVect
IntVect is an alias for amrex::IntVectND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:33
const int[]
Definition AMReX_BLProfiler.cpp:1664
BoxArray const & boxArray(FabArrayBase const &fa)
Definition AMReX_FabArrayBase.cpp:2862
Definition AMReX_BoxArray.H:839
Definition AMReX_Box.H:2170
Definition AMReX_DistributionMapping.H:371
Definition AMReX_FabArrayBase.H:229
bool operator==(const BDKey &rhs) const noexcept
Definition AMReX_FabArrayBase.H:237
bool operator<(const BDKey &rhs) const noexcept
Definition AMReX_FabArrayBase.H:233
bool operator!=(const BDKey &rhs) const noexcept
Definition AMReX_FabArrayBase.H:240
friend std::ostream & operator<<(std::ostream &os, const BDKey &id)
Definition AMReX_FabArrayBase.cpp:2620
coarse/fine boundary
Definition AMReX_FabArrayBase.H:351
Box m_fine_domain
Definition AMReX_FabArrayBase.H:368
IntVect m_ng
Definition AMReX_FabArrayBase.H:369
Long bytes() const
Definition AMReX_FabArrayBase.cpp:2233
bool m_include_periodic
Definition AMReX_FabArrayBase.H:370
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:371
Long m_nuse
Definition AMReX_FabArrayBase.H:373
BoxArray ba_cfb
Definition AMReX_FabArrayBase.H:363
BDKey m_fine_bdk
Definition AMReX_FabArrayBase.H:367
Vector< int > fine_grid_idx
local array
Definition AMReX_FabArrayBase.H:365
DistributionMapping dm_cfb
Definition AMReX_FabArrayBase.H:364
parallel copy or add
Definition AMReX_FabArrayBase.H:537
BoxArray m_srcba
Definition AMReX_FabArrayBase.H:560
IntVect m_srcng
Definition AMReX_FabArrayBase.H:555
bool m_tgco
Definition AMReX_FabArrayBase.H:559
BoxArray m_dstba
Definition AMReX_FabArrayBase.H:561
BDKey m_srcbdk
Definition AMReX_FabArrayBase.H:553
std::uint64_t m_id
Definition AMReX_FabArrayBase.H:552
Long bytes() const
Definition AMReX_FabArrayBase.cpp:234
BDKey m_dstbdk
Definition AMReX_FabArrayBase.H:554
Long m_nuse
Definition AMReX_FabArrayBase.H:563
IntVect m_offset
Definition AMReX_FabArrayBase.H:557
Periodicity m_period
Definition AMReX_FabArrayBase.H:558
IntVect m_dstng
Definition AMReX_FabArrayBase.H:556
Used by a bunch of routines when communicating via MPI.
Definition AMReX_FabArrayBase.H:194
Box sbox
Definition AMReX_FabArrayBase.H:196
CopyComTag() noexcept=default
std::vector< CopyComTag > CopyComTagsContainer
Definition AMReX_FabArrayBase.H:212
bool operator<(const CopyComTag &rhs) const noexcept
Definition AMReX_FabArrayBase.H:202
int srcIndex
Definition AMReX_FabArrayBase.H:198
Box dbox
Definition AMReX_FabArrayBase.H:195
int dstIndex
Definition AMReX_FabArrayBase.H:197
std::map< int, CopyComTagsContainer > MapOfCopyComTagContainers
Definition AMReX_FabArrayBase.H:214
FillBoundary.
Definition AMReX_FabArrayBase.H:487
bool m_multi_ghost
Definition AMReX_FabArrayBase.H:504
Long m_nuse
Definition AMReX_FabArrayBase.H:503
IntVect m_ngrow
Definition AMReX_FabArrayBase.H:496
bool m_cross
Definition AMReX_FabArrayBase.H:498
IndexType m_typ
Definition AMReX_FabArrayBase.H:494
Long bytes() const
Definition AMReX_FabArrayBase.cpp:254
Periodicity m_period
Definition AMReX_FabArrayBase.H:501
std::uint64_t m_id
Definition AMReX_FabArrayBase.H:493
bool m_epo
Definition AMReX_FabArrayBase.H:499
bool m_override_sync
Definition AMReX_FabArrayBase.H:500
IntVect m_crse_ratio
BoxArray in FabArrayBase may have crse_ratio.
Definition AMReX_FabArrayBase.H:495
IntVect m_sb_snghost
Definition AMReX_FabArrayBase.H:497
Definition AMReX_FabArrayBase.H:304
std::unique_ptr< FabFactory< FArrayBox > > fact_crse_patch
Definition AMReX_FabArrayBase.H:319
DistributionMapping dm_patch
Definition AMReX_FabArrayBase.H:318
BDKey m_srcbdk
Definition AMReX_FabArrayBase.H:322
Long bytes() const
Definition AMReX_FabArrayBase.cpp:2057
BoxArray ba_crse_patch
Definition AMReX_FabArrayBase.H:316
std::unique_ptr< FabFactory< FArrayBox > > fact_fine_patch
Definition AMReX_FabArrayBase.H:320
std::unique_ptr< BoxConverter > m_coarsener
Definition AMReX_FabArrayBase.H:326
Box m_dstdomain
Definition AMReX_FabArrayBase.H:324
IntVect m_dstng
Definition AMReX_FabArrayBase.H:325
Long m_nuse
Definition AMReX_FabArrayBase.H:328
BDKey m_dstbdk
Definition AMReX_FabArrayBase.H:323
BoxArray ba_fine_patch
Definition AMReX_FabArrayBase.H:317
Definition AMReX_FabArrayBase.H:696
Long num_build
Definition AMReX_FabArrayBase.H:701
void recordDelete() noexcept
Definition AMReX_FabArrayBase.H:708
int max_num_boxarrays
Definition AMReX_FabArrayBase.H:699
void recordMaxNumBAUse(int n) noexcept
Definition AMReX_FabArrayBase.H:714
void recordMaxNumBoxArrays(int n) noexcept
Definition AMReX_FabArrayBase.H:711
void print() const
Definition AMReX_FabArrayBase.H:717
int max_num_fabarrays
Definition AMReX_FabArrayBase.H:698
int max_num_ba_use
Definition AMReX_FabArrayBase.H:700
int num_fabarrays
Definition AMReX_FabArrayBase.H:697
void recordBuild() noexcept
Definition AMReX_FabArrayBase.H:703
Used for collecting information used in communicating FABs.
Definition AMReX_FabArrayBase.H:271
int srcComp
Definition AMReX_FabArrayBase.H:276
int toProc
Definition AMReX_FabArrayBase.H:273
int fromProc
Definition AMReX_FabArrayBase.H:272
int fabArrayId
Definition AMReX_FabArrayBase.H:280
int procThatHasData
Definition AMReX_FabArrayBase.H:283
int procThatNeedsData
Definition AMReX_FabArrayBase.H:282
int destComp
Definition AMReX_FabArrayBase.H:277
int face
Definition AMReX_FabArrayBase.H:279
Box box
Definition AMReX_FabArrayBase.H:284
int fabIndex
Definition AMReX_FabArrayBase.H:274
int nComp
Definition AMReX_FabArrayBase.H:278
int fineIndex
Definition AMReX_FabArrayBase.H:275
int fillBoxId
Definition AMReX_FabArrayBase.H:281
For ParallelFor(FabArray)
Definition AMReX_FabArrayBase.H:654
ParForInfo(ParForInfo const &)=delete
Long m_ncellsmax
Definition AMReX_FabArrayBase.H:671
BATransformer m_bat
Definition AMReX_FabArrayBase.H:669
ParForInfo(ParForInfo &&)=delete
BoxIndexer const * getBoxes() const
Definition AMReX_FabArrayBase.H:661
char * m_hp
Definition AMReX_FabArrayBase.H:673
int getNBlocksPerBox(int nthreads) const
Definition AMReX_FabArrayBase.H:658
void operator=(ParForInfo const &)=delete
~ParForInfo()
Definition AMReX_FabArrayBase.cpp:2749
IntVect m_ng
Definition AMReX_FabArrayBase.H:670
BoxIndexer * m_boxes
Definition AMReX_FabArrayBase.H:672
Fill polar boundary in spherical coordinates.
Definition AMReX_FabArrayBase.H:632
Box m_domain
Definition AMReX_FabArrayBase.H:635
IntVect m_ngrow
Definition AMReX_FabArrayBase.H:634
Rotate Boundary by 180.
Definition AMReX_FabArrayBase.H:610
IntVect m_ngrow
Definition AMReX_FabArrayBase.H:612
Box m_domain
Definition AMReX_FabArrayBase.H:613
Rotate Boundary by 90.
Definition AMReX_FabArrayBase.H:588
Box m_domain
Definition AMReX_FabArrayBase.H:591
IntVect m_ngrow
Definition AMReX_FabArrayBase.H:590
Definition AMReX_FabArrayBase.H:414
~RegionTag()
Definition AMReX_FabArrayBase.H:421
RegionTag & operator=(RegionTag const &)=delete
RegionTag(RegionTag &&rhs) noexcept
Definition AMReX_FabArrayBase.H:418
RegionTag(const std::string &t)
Definition AMReX_FabArrayBase.H:416
RegionTag(RegionTag const &)=delete
RegionTag(const char *t)
Definition AMReX_FabArrayBase.H:415
Tiling.
Definition AMReX_FabArrayBase.H:258
Vector< int > indexMap
Definition AMReX_FabArrayBase.H:261
Vector< int > localIndexMap
Definition AMReX_FabArrayBase.H:262
Long bytes() const
Definition AMReX_FabArrayBase.cpp:274
Vector< int > localTileIndexMap
Definition AMReX_FabArrayBase.H:263
Vector< int > numLocalTiles
Definition AMReX_FabArrayBase.H:260
Long nuse
Definition AMReX_FabArrayBase.H:259
Vector< Box > tileArray
Definition AMReX_FabArrayBase.H:264
Definition AMReX_FabArrayBase.H:398
Long nbytes
Definition AMReX_FabArrayBase.H:399
Long nbytes_hwm
Definition AMReX_FabArrayBase.H:400