3#include <AMReX_Config.H>
49 "Have you forgot to call EB2::build? It's required even if the geometry is all regular.");
79 int required_coarsening_level,
int max_coarsening_level,
80 int ngrow,
bool build_coarse_level_by_coarsening,
97 return m_geom.back().Domain();
102 void setShift (
int direction,
int ncells)
override;
104 using F =
typename G::FunctionType;
127 int required_coarsening_level,
int max_coarsening_level,
128 int ngrow = 4,
bool build_coarse_level_by_coarsening =
true,
134 required_coarsening_level,
135 max_coarsening_level,
136 ngrow, build_coarse_level_by_coarsening,
149 std::sort(geom.begin(), geom.end(), [] (
Geometry const& a,
Geometry const&
b) { return a.Domain().numPts() > b.Domain().numPts(); });
157 int required_coarsening_level,
158 int max_coarsening_level,
160 bool build_coarse_level_by_coarsening =
true,
166 int required_coarsening_level,
167 int max_coarsening_level,
169 bool build_coarse_level_by_coarsening =
true,
#define BL_PROFILE(a)
Definition AMReX_BLProfiler.H:551
#define AMREX_ALWAYS_ASSERT_WITH_MESSAGE(EX, MSG)
Definition AMReX_BLassert.H:49
#define AMREX_EXPORT
Definition AMReX_Extension.H:191
Definition AMReX_EB2.H:75
typename G::FunctionType F
Definition AMReX_EB2.H:104
const Box & coarsestDomain() const final
Definition AMReX_EB2.H:96
const Level & getLevel(const Geometry &geom) const final
Definition AMReX_EB2_IndexSpaceI.H:94
Vector< GShopLevel< G > > m_gslevel
Definition AMReX_EB2.H:113
Vector< int > m_ngrow
Definition AMReX_EB2.H:116
int m_num_coarsen_opt
Definition AMReX_EB2.H:111
~IndexSpaceImp() override=default
void addFineLevels(int num_new_fine_levels) final
Definition AMReX_EB2_IndexSpaceI.H:112
IndexSpaceImp(IndexSpaceImp< G > const &)=delete
Vector< Geometry > m_geom
Definition AMReX_EB2.H:114
void addRegularCoarseLevels(int num_new_coarse_levels) final
Definition AMReX_EB2_IndexSpaceI.H:138
G m_gshop
Definition AMReX_EB2.H:108
Vector< Box > m_domain
Definition AMReX_EB2.H:115
bool m_extend_domain_face
Definition AMReX_EB2.H:110
const Geometry & getGeometry(const Box &dom) const final
Definition AMReX_EB2_IndexSpaceI.H:103
IndexSpaceImp(IndexSpaceImp< G > &&)=delete
bool m_build_coarse_level_by_coarsening
Definition AMReX_EB2.H:109
void operator=(IndexSpaceImp< G > const &)=delete
void setShift(int direction, int ncells) override
Definition AMReX_EB2_IndexSpaceI.H:184
Definition AMReX_EB2.H:26
virtual const Geometry & getGeometry(const Box &domain) const =0
virtual const Level & getLevel(const Geometry &geom) const =0
IndexSpace() noexcept=default
virtual void addFineLevels(int num_new_fine_levels)=0
static void pop() noexcept
Definition AMReX_EB2.H:45
static void push(IndexSpace *ispace)
Definition AMReX_EB2.cpp:53
static bool empty() noexcept
Definition AMReX_EB2.H:52
virtual void addRegularCoarseLevels(int num_new_coarse_levels)=0
static Vector< std::unique_ptr< IndexSpace > > m_instance
Definition AMReX_EB2.H:66
static int size() noexcept
Definition AMReX_EB2.H:53
virtual ~IndexSpace()=default
virtual const Box & coarsestDomain() const =0
static void clear() noexcept
Definition AMReX_EB2.H:46
virtual void setShift(int, int)
Definition AMReX_EB2.H:61
static IndexSpace & top()
Definition AMReX_EB2.H:47
static void erase(IndexSpace *ispace)
Definition AMReX_EB2.cpp:66
Definition AMReX_EB2_Level.H:33
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:73
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:28
Definition AMReX_FabArrayBase.H:33
int NumCoarsenOpt()
Definition AMReX_EB2.cpp:47
void Build(const Geometry &geom, int required_coarsening_level, int max_coarsening_level, int ngrow, bool build_coarse_level_by_coarsening, bool a_extend_domain_face, int a_num_coarsen_opt)
Definition AMReX_EB2.cpp:84
void addRegularCoarseLevels(int num_new_coarse_levels)
Definition AMReX_EB2.cpp:246
bool ExtendDomainFace()
Definition AMReX_EB2.cpp:42
int maxCoarseningLevel(const Geometry &geom)
Definition AMReX_EB2.cpp:282
void Initialize()
Definition AMReX_EB2.cpp:27
int max_grid_size
Definition AMReX_EB2.cpp:23
void addFineLevels(int num_new_fine_levels)
Definition AMReX_EB2.cpp:237
const IndexSpace * TopIndexSpace() noexcept
Definition AMReX_EB2.H:70
int num_coarsen_opt
Definition AMReX_EB2.cpp:25
bool extend_domain_face
Definition AMReX_EB2.cpp:24
const IndexSpace * TopIndexSpaceIfPresent() noexcept
Definition AMReX_EB2.cpp:76
void BuildFromChkptFile(std::string const &fname, const Geometry &geom, int required_coarsening_level, int max_coarsening_level, int ngrow, bool build_coarse_level_by_coarsening, bool a_extend_domain_face)
Definition AMReX_EB2.cpp:255
void Finalize()
Definition AMReX_EB2.cpp:37
void Abort(const std::string &msg)
Print out message to cerr and exit via abort().
Definition AMReX.cpp:230