3#include <AMReX_Config.H>
53 "Have you forgot to call EB2::build? It's required even if the geometry is all regular.");
83 int required_coarsening_level,
int max_coarsening_level,
84 int ngrow,
bool build_coarse_level_by_coarsening,
85 bool extend_domain_face,
int num_coarsen_opt);
89 bool extend_domain_face,
int num_coarsen_opt);
101 return m_geom.back().Domain();
106 void setShift (
int direction,
int ncells)
override;
108 using F =
typename G::FunctionType;
113 bool m_build_coarse_level_by_coarsening;
114 bool m_extend_domain_face;
115 int m_num_coarsen_opt;
132 int required_coarsening_level,
int max_coarsening_level,
133 int ngrow = 4,
bool build_coarse_level_by_coarsening =
true,
139 (gshop, geom, required_coarsening_level, max_coarsening_level,
140 ngrow, build_coarse_level_by_coarsening,extend_domain_face,
153 std::sort(geom.begin(), geom.end(), [] (
Geometry const& a,
Geometry const& b) { return a.Domain().numPts() > b.Domain().numPts(); });
155 (gshop, geom, ngrow, extend_domain_face, num_coarsen_opt));
160 int required_coarsening_level,
161 int max_coarsening_level,
163 bool build_coarse_level_by_coarsening =
true,
166 bool support_mvmc =
false);
169 int required_coarsening_level,
170 int max_coarsening_level,
172 bool build_coarse_level_by_coarsening =
true,
178 int required_coarsening_level,
179 int max_coarsening_level,
181 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:79
typename G::FunctionType F
Definition AMReX_EB2.H:108
const Box & coarsestDomain() const final
Definition AMReX_EB2.H:100
const Level & getLevel(const Geometry &geom) const final
Definition AMReX_EB2_IndexSpaceI.H:94
~IndexSpaceImp() override=default
void addFineLevels(int num_new_fine_levels) final
Definition AMReX_EB2_IndexSpaceI.H:112
IndexSpaceImp(IndexSpaceImp< G > const &)=delete
void addRegularCoarseLevels(int num_new_coarse_levels) final
Definition AMReX_EB2_IndexSpaceI.H:138
const Geometry & getGeometry(const Box &dom) const final
Definition AMReX_EB2_IndexSpaceI.H:103
IndexSpaceImp(IndexSpaceImp< G > &&)=delete
void operator=(IndexSpaceImp< G > const &)=delete
void setShift(int direction, int ncells) override
Definition AMReX_EB2_IndexSpaceI.H:184
Definition AMReX_EB2.H:28
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:49
static void push(IndexSpace *ispace)
Definition AMReX_EB2.cpp:64
static bool empty() noexcept
Definition AMReX_EB2.H:56
virtual void addRegularCoarseLevels(int num_new_coarse_levels)=0
static Vector< std::unique_ptr< IndexSpace > > m_instance
Definition AMReX_EB2.H:70
static int size() noexcept
Definition AMReX_EB2.H:57
virtual ~IndexSpace()=default
virtual const Box & coarsestDomain() const =0
static void clear() noexcept
Definition AMReX_EB2.H:50
virtual void setShift(int, int)
Definition AMReX_EB2.H:65
static IndexSpace & top()
Definition AMReX_EB2.H:51
static void erase(IndexSpace *ispace)
Definition AMReX_EB2.cpp:83
Definition AMReX_EB2_Level.H:40
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:74
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:28
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, bool support_mvmc)
Definition AMReX_EB2.cpp:101
Definition AMReX_FabArrayBase.H:33
int NumCoarsenOpt()
Definition AMReX_EB2.cpp:58
void addRegularCoarseLevels(int num_new_coarse_levels)
Definition AMReX_EB2.cpp:264
bool ExtendDomainFace()
Definition AMReX_EB2.cpp:53
int maxCoarseningLevel(const Geometry &geom)
Definition AMReX_EB2.cpp:298
void Initialize()
Definition AMReX_EB2.cpp:35
void addFineLevels(int num_new_fine_levels)
Definition AMReX_EB2.cpp:255
const IndexSpace * TopIndexSpace() noexcept
Definition AMReX_EB2.H:74
void BuildMultiValuedMultiCut(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:314
const IndexSpace * TopIndexSpaceIfPresent() noexcept
Definition AMReX_EB2.cpp:93
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:273
void Finalize()
Definition AMReX_EB2.cpp:45
void Abort(const std::string &msg)
Print out message to cerr and exit via abort().
Definition AMReX.cpp:230