3#include <AMReX_Config.H>
14#ifdef AMREX_USE_BITTREE
15#include <Bittree_BittreeAmr.h>
29#if defined(AMREX_USE_GPU)
73 const int* is_per =
nullptr);
102 [[nodiscard]]
int MaxRefRatio (
int lev)
const noexcept;
117 r.reserve(a_finest_lev-a_coarsest_lev+1);
118 for (
int lev = a_coarsest_lev; lev <= a_finest_lev; ++lev) {
119 r.push_back(
geom[lev]);
125 r.reserve(a_finest_lev-a_coarsest_lev+1);
126 for (
int lev = a_coarsest_lev; lev <= a_finest_lev; ++lev) {
127 r.push_back(
grids[lev]);
133 r.reserve(a_finest_lev-a_coarsest_lev+1);
134 for (
int lev = a_coarsest_lev; lev <= a_finest_lev; ++lev) {
135 r.push_back(
dmap[lev]);
186 [[nodiscard]]
int GetLevel (
Box const& domain)
const noexcept;
192 [[nodiscard]]
int nErrorBuf (
int lev,
int direction = 0) const noexcept {
return n_error_buf[lev][direction]; }
209 [[nodiscard]]
bool LevelDefined (
int lev)
const noexcept;
274#ifdef AMREX_USE_BITTREE
275 bool use_bittree =
false;
276 std::unique_ptr<bittree::BittreeAmr> btmesh;
290 const RealBox* rb =
nullptr,
int coord = -1,
291 const int* is_per =
nullptr);
297std::ostream&
operator<< (std::ostream& os, AmrMesh
const& amr_mesh);
#define AMREX_D_PICK(a, b, c)
Definition AMReX_SPACE.H:173
#define AMREX_D_DECL(a, b, c)
Definition AMReX_SPACE.H:171
Definition AMReX_AmrMesh.H:63
void SetBlockingFactor(const Vector< IntVect > &new_bf) noexcept
Definition AMReX_AmrMesh.H:171
const Geometry & Geom(int lev) const noexcept
Definition AMReX_AmrMesh.H:111
AmrMesh()
Definition AMReX_AmrMesh.cpp:18
Vector< Geometry > geom
Definition AMReX_AmrMesh.H:270
const Vector< DistributionMapping > & DistributionMap() const noexcept
Definition AMReX_AmrMesh.H:108
virtual void MakeNewLevelFromScratch(int, Real, const BoxArray &, const DistributionMapping &)
Definition AMReX_AmrMesh.H:245
int maxLevel() const noexcept
Return the max level.
Definition AMReX_AmrMesh.H:93
void SetIterateToFalse() noexcept
Definition AMReX_AmrMesh.H:284
unsigned int num_setdm
Definition AMReX_AmrMesh.H:279
void SetBlockingFactor(const Vector< int > &new_bf) noexcept
Definition AMReX_AmrMesh.H:165
friend std::ostream & operator<<(std::ostream &os, AmrMesh const &amr_mesh)
Definition AMReX_AmrMesh.cpp:1236
const BoxArray & boxArray(int lev) const noexcept
Definition AMReX_AmrMesh.H:113
void SetBoxArray(int lev, const BoxArray &ba_in) noexcept
Definition AMReX_AmrMesh.cpp:406
const IntVect & nErrorBufVect(int lev) const noexcept
Return the number of buffer cells (as an IntVect) in error estimator.
Definition AMReX_AmrMesh.H:195
AmrMesh(AmrMesh &&rhs)=default
unsigned int num_setba
Definition AMReX_AmrMesh.H:280
void SetDistributionMap(int lev, const DistributionMapping &dmap_in) noexcept
Definition AMReX_AmrMesh.cpp:399
void SetMaxGridSize(int new_mgs) noexcept
Definition AMReX_AmrMesh.H:143
bool LevelDefined(int lev) const noexcept
Definition AMReX_AmrMesh.cpp:441
void SetUseNewChop() noexcept
Definition AMReX_AmrMesh.H:285
static void ProjPeriodic(BoxList &blout, const Box &domain, Array< int, 3 > const &is_per)
Definition AMReX_AmrMesh.cpp:1047
const IntVect & blockingFactor(int lev) const noexcept
Return the blocking factor at level lev.
Definition AMReX_AmrMesh.H:204
Vector< DistributionMapping > DistributionMap(int a_coarsest_lev, int a_finest_lev) const noexcept
Definition AMReX_AmrMesh.H:131
Vector< Geometry > Geom(int a_coarsest_lev, int a_finest_lev) const noexcept
Definition AMReX_AmrMesh.H:115
int useFixedUpToLevel() const noexcept
Up to what level should we keep the coarser grids fixed (and not regrid those levels)?
Definition AMReX_AmrMesh.H:215
int finestLevel() const noexcept
Return the finest level.
Definition AMReX_AmrMesh.H:96
int GetLevel(Box const &domain) const noexcept
Given domain box, return AMR level. Return -1 if there is no match.
Definition AMReX_AmrMesh.cpp:419
void SetGridEff(Real eff) noexcept
Definition AMReX_AmrMesh.H:175
int finest_level
Current finest level.
Definition AMReX_AmrMesh.H:269
Geometry & Geom(int lev) noexcept
Definition AMReX_AmrMesh.H:141
Real gridEff() const noexcept
Return the minimum allowable grid efficiency.
Definition AMReX_AmrMesh.H:198
IntVect refRatio(int lev) const noexcept
Return the refinement ratio for level lev.
Definition AMReX_AmrMesh.H:99
void ChopGrids(int lev, BoxArray &ba, int target_size) const
"Try" to chop up grids so that the number of boxes in the BoxArray is greater than the target_size.
Definition AMReX_AmrMesh.cpp:467
virtual void ErrorEst(int, TagBoxArray &, Real, int)
Tag cells for refinement. TagBoxArray tags is built on level lev grids.
Definition AMReX_AmrMesh.H:248
int MaxRefRatio(int lev) const noexcept
Return the maximum refinement ratio in any direction.
Definition AMReX_AmrMesh.cpp:389
virtual ~AmrMesh()=default
void checkInput()
Definition AMReX_AmrMesh.cpp:1118
void SetMaxGridSize(const IntVect &new_mgs) noexcept
Definition AMReX_AmrMesh.H:146
virtual BoxArray GetAreaNotToTag(int)
Definition AMReX_AmrMesh.H:261
Vector< BoxArray > boxArray(int a_coarsest_lev, int a_finest_lev) const noexcept
Definition AMReX_AmrMesh.H:123
int Verbose() const noexcept
Definition AMReX_AmrMesh.H:90
int nProper() const noexcept
Return the number of cells to define proper nesting.
Definition AMReX_AmrMesh.H:201
AmrMesh(const AmrMesh &rhs)=delete
void SetGeometry(int lev, const Geometry &geom_in) noexcept
Definition AMReX_AmrMesh.cpp:413
const DistributionMapping & DistributionMap(int lev) const noexcept
Definition AMReX_AmrMesh.H:112
void SetFinestLevel(int new_finest_level) noexcept
Set ref_ratio would require rebuilding Geometry objects.
Definition AMReX_AmrMesh.H:180
const IntVect & maxGridSize(int lev) const noexcept
Return the largest allowable grid.
Definition AMReX_AmrMesh.H:207
void InitAmrMesh(int max_level_in, const Vector< int > &n_cell_in, Vector< IntVect > refrat=Vector< IntVect >(), const RealBox *rb=nullptr, int coord=-1, const int *is_per=nullptr)
Definition AMReX_AmrMesh.cpp:75
Vector< DistributionMapping > dmap
Definition AMReX_AmrMesh.H:271
void SetBlockingFactor(int new_bf) noexcept
Definition AMReX_AmrMesh.H:159
virtual void ManualTagsPlacement(int, TagBoxArray &, const Vector< IntVect > &)
Manually tag. Note that tags is built on level lev grids coarsened by bf_lev[lev].
Definition AMReX_AmrMesh.H:251
virtual DistributionMapping MakeDistributionMap(int lev, BoxArray const &ba)
Definition AMReX_AmrMesh.cpp:447
const Vector< IntVect > & refRatio() const noexcept
Return refinement ratios between all levels.
Definition AMReX_AmrMesh.H:105
const Vector< Geometry > & Geom() const noexcept
Definition AMReX_AmrMesh.H:107
BoxArray MakeBaseGrids() const
Make a level 0 grids covering the whole domain. It does NOT install the new grids.
Definition AMReX_AmrMesh.cpp:521
void MakeNewGrids(int lbase, Real time, int &new_finest, Vector< BoxArray > &new_grids)
Make new grids based on error estimates. This function expects that valid BoxArrays exist in this->gr...
Definition AMReX_AmrMesh.cpp:548
Vector< Geometry > & Geom() noexcept
Definition AMReX_AmrMesh.H:140
int nErrorBuf(int lev, int direction=0) const noexcept
Return the number of buffer cells (as a single integer) in error estimator.
Definition AMReX_AmrMesh.H:192
virtual void PostProcessBaseGrids(BoxArray &) const
Definition AMReX_AmrMesh.H:259
void SetMaxGridSize(const Vector< IntVect > &new_mgs) noexcept
Definition AMReX_AmrMesh.H:155
Long CountCells(int lev) const noexcept
Definition AMReX_AmrMesh.cpp:1231
void SetBlockingFactor(const IntVect &new_bf) noexcept
Definition AMReX_AmrMesh.H:162
void SetMaxGridSize(const Vector< int > &new_mgs) noexcept
Definition AMReX_AmrMesh.H:149
Vector< BoxArray > grids
Definition AMReX_AmrMesh.H:272
AmrMesh & operator=(const AmrMesh &rhs)=delete
void SetNProper(int n) noexcept
Definition AMReX_AmrMesh.H:176
bool useFixedCoarseGrids() const noexcept
Should we keep the coarser grids fixed (and not regrid those levels) at all?
Definition AMReX_AmrMesh.H:212
const Vector< BoxArray > & boxArray() const noexcept
Definition AMReX_AmrMesh.H:109
void ClearDistributionMap(int lev) noexcept
Definition AMReX_AmrMesh.cpp:429
void ClearBoxArray(int lev) noexcept
Definition AMReX_AmrMesh.cpp:435
A collection of Boxes stored in an Array.
Definition AMReX_BoxArray.H:567
A class for managing a List of Boxes that share a common IndexType. This class implements operations ...
Definition AMReX_BoxList.H:52
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:43
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:74
A Box with real dimensions.
Definition AMReX_RealBox.H:26
An array of TagBoxes.
Definition AMReX_TagBox.H:150
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:28
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:79
amrex_long Long
Definition AMReX_INT.H:30
std::array< T, N > Array
Definition AMReX_Array.H:25
Definition AMReX_Amr.cpp:49
IntVectND< 3 > IntVect
IntVect is an alias for amrex::IntVectND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:30
std::ostream & operator<<(std::ostream &os, AmrMesh const &amr_mesh)
Definition AMReX_AmrMesh.cpp:1236
Definition AMReX_AmrMesh.H:20
int n_proper
Cells required for proper nesting.
Definition AMReX_AmrMesh.H:39
bool refine_grid_layout
Definition AMReX_AmrMesh.H:47
bool use_fixed_coarse_grids
Definition AMReX_AmrMesh.H:41
Vector< IntVect > ref_ratio
Refinement ratios.
Definition AMReX_AmrMesh.H:25
bool use_new_chop
Definition AMReX_AmrMesh.H:56
Real grid_eff
Grid efficiency.
Definition AMReX_AmrMesh.H:37
bool iterate_on_new_grids
Definition AMReX_AmrMesh.H:57
bool check_input
Definition AMReX_AmrMesh.H:55
Vector< IntVect > n_error_buf
Buffer cells around each tagged cell.
Definition AMReX_AmrMesh.H:35
int max_level
Maximum allowed level.
Definition AMReX_AmrMesh.H:23
IntVect refine_grid_layout_dims
Definition AMReX_AmrMesh.H:53
Vector< IntVect > max_grid_size
Maximum allowable grid size (by level).
Definition AMReX_AmrMesh.H:30
int use_fixed_upto_level
Definition AMReX_AmrMesh.H:40
int verbose
Definition AMReX_AmrMesh.H:21
Vector< IntVect > blocking_factor
Blocking factor in grid generation (by level).
Definition AMReX_AmrMesh.H:27