8 #include <AMReX_Geometry.H>
9 #include <AMReX_DistributionMapping.H>
10 #include <AMReX_BoxArray.H>
12 #include <AMReX_EB2.H>
13 #include <AMReX_EBFabFactory.H>
38 eb_ (amrex::Geometry
const& a_geom,
39 amrex::FArrayBox
const& terrain_fab,
40 amrex::Gpu::DeviceVector<amrex::Real>& a_dz_stretched,
53 amrex::Geometry
const& a_geom,
54 amrex::EB2::Level
const* a_eb_level,
66 amrex::Geometry
const& a_geom,
67 amrex::BoxArray
const& ba,
68 amrex::DistributionMapping
const& dm,
69 amrex::EB2::Level
const& a_eb_level);
80 amrex::Geometry
const& a_geom,
81 amrex::BoxArray
const& ba,
82 amrex::DistributionMapping
const& dm,
83 amrex::EB2::Level
const& a_eb_level);
93 #ifndef USE_FC_FACTORY
98 #define USE_FC_FACTORY 0
143 std::unique_ptr<amrex::EBFArrayBoxFactory>
m_factory =
nullptr;
169 amrex::EB2::GeometryShop<F> a_gshop)
171 int const req_lev(0);
172 int const max_lev(2);
174 amrex::EB2::Build(a_gshop, a_geom, req_lev, max_lev);
175 const amrex::EB2::IndexSpace& ebis = amrex::EB2::IndexSpace::top();
180 inline amrex::FabArray<amrex::EBCellFlagFab>&
183 const amrex::FabArray<amrex::EBCellFlagFab>& flags_const = ebfact.getMultiEBCellFlagFab();
184 return const_cast<amrex::FabArray<amrex::EBCellFlagFab>&
>(flags_const);
188 inline amrex::MultiFab&
191 const amrex::MultiFab& vfrac_const = ebfact.getVolFrac();
192 return const_cast<amrex::MultiFab&
>(vfrac_const);
196 inline amrex::MultiCutFab&
199 const amrex::MultiCutFab& vcent_const = ebfact.getCentroid();
200 return const_cast<amrex::MultiCutFab&
>(vcent_const);
204 inline amrex::Array<amrex::MultiCutFab*, AMREX_SPACEDIM>
207 auto afrac_const = ebfact.getAreaFrac();
208 amrex::Array<amrex::MultiCutFab*, AMREX_SPACEDIM> afrac;
209 for (
int dir = 0; dir < AMREX_SPACEDIM; ++dir) {
210 afrac[dir] =
const_cast<amrex::MultiCutFab*
>(afrac_const[dir]);
216 inline amrex::Array<amrex::MultiCutFab*, AMREX_SPACEDIM>
219 auto fcent_const = ebfact.getFaceCent();
220 amrex::Array<amrex::MultiCutFab*, AMREX_SPACEDIM> fcent;
221 for (
int dir = 0; dir < AMREX_SPACEDIM; ++dir) {
222 fcent[dir] =
const_cast<amrex::MultiCutFab*
>(fcent_const[dir]);
Declares auxiliary EB factories for face-centered data.
Owns and exposes cell-centered and face-centered EB factories.
Definition: ERF_EB.H:24
amrex::FabArray< amrex::EBCellFlagFab > & getNonConstEBCellFlags(const amrex::EBFArrayBoxFactory &ebfact)
Return mutable EB cell flags from an AMReX factory.
Definition: ERF_EB.H:181
eb_()
Construct an empty EB factory manager.
Definition: ERF_EB.cpp:30
void define(int level, amrex::Geometry const &a_geom, amrex::EB2::Level const *a_eb_level, bool is_anelastic)
Define the EB level metadata used by this factory manager.
void make_terrain(amrex::Geometry const &a_geom)
Build terrain EB geometry for the supplied Geometry.
eb_aux_ const * get_w_const_factory() const noexcept
Return the ERF auxiliary z-face EB factory.
Definition: ERF_EB.H:123
void build_level(amrex::Geometry const &a_geom, amrex::EB2::GeometryShop< F > a_gshop)
Construct EB levels from an AMReX GeometryShop.
Definition: ERF_EB.H:168
amrex::Array< amrex::MultiCutFab *, AMREX_SPACEDIM > getNonConstAreaFrac(const amrex::EBFArrayBoxFactory &ebfact)
Return mutable area-fraction arrays from an AMReX factory.
Definition: ERF_EB.H:205
amrex::EB2::Level const * m_eb_level
EB level constructed from building GeometryShop.
Definition: ERF_EB.H:141
void make_all_factories(int level, amrex::Geometry const &a_geom, amrex::BoxArray const &ba, amrex::DistributionMapping const &dm, amrex::EB2::Level const &a_eb_level)
Build cell-centered and staggered EB factories for the level.
Definition: ERF_EB.cpp:37
amrex::FabArray< amrex::EBCellFlagFab > * m_cellflags
Definition: ERF_EB.H:138
const std::unique_ptr< amrex::EBFArrayBoxFactory > & get_const_factory() const noexcept
Return the cell-centered EB factory.
Definition: ERF_EB.H:102
amrex::MultiFab & getNonConstVolFrac(const amrex::EBFArrayBoxFactory &ebfact)
Return mutable volume fractions from an AMReX factory.
Definition: ERF_EB.H:189
eb_aux_ m_w_factory
Definition: ERF_EB.H:148
std::unique_ptr< amrex::EBFArrayBoxFactory > m_factory
Definition: ERF_EB.H:143
amrex::EBSupport m_support_level
Definition: ERF_EB.H:134
int nghost_volume() const
Number of ghost cells needed for EB volume data.
Definition: ERF_EB.H:88
amrex::Array< amrex::MultiCutFab *, AMREX_SPACEDIM > getNonConstFaceCent(const amrex::EBFArrayBoxFactory &ebfact)
Return mutable face-centroid arrays from an AMReX factory.
Definition: ERF_EB.H:217
void make_cc_factory(int level, amrex::Geometry const &a_geom, amrex::BoxArray const &ba, amrex::DistributionMapping const &dm, amrex::EB2::Level const &a_eb_level)
Build only the cell-centered EB factory for the level.
Definition: ERF_EB.cpp:105
amrex::MultiCutFab & getNonConstCentroid(const amrex::EBFArrayBoxFactory &ebfact)
Return mutable cell centroids from an AMReX factory.
Definition: ERF_EB.H:197
eb_aux_ m_u_factory
Definition: ERF_EB.H:146
~eb_()
Destroy the EB factory manager.
Definition: ERF_EB.cpp:25
std::unique_ptr< amrex::EBFArrayBoxFactory > m_w_factory_fc
Definition: ERF_EB.H:153
eb_(amrex::Geometry const &a_geom, amrex::FArrayBox const &terrain_fab, amrex::Gpu::DeviceVector< amrex::Real > &a_dz_stretched, bool is_anelastic)
Construct an EB description from terrain data.
eb_aux_ const * get_v_const_factory() const noexcept
Return the ERF auxiliary y-face EB factory.
Definition: ERF_EB.H:121
eb_aux_ m_v_factory
Definition: ERF_EB.H:147
std::unique_ptr< amrex::EBFArrayBoxFactory > m_v_factory_fc
Definition: ERF_EB.H:152
int m_has_eb
Definition: ERF_EB.H:127
int nghost_full() const
Number of ghost cells needed for full EB geometric data.
Definition: ERF_EB.H:90
int nghost_basic() const
Number of ghost cells needed for basic EB flags.
Definition: ERF_EB.H:86
int m_write_eb_surface
Definition: ERF_EB.H:136
std::unique_ptr< amrex::EBFArrayBoxFactory > m_u_factory_fc
Definition: ERF_EB.H:151
eb_aux_ const * get_u_const_factory() const noexcept
Return the ERF auxiliary x-face EB factory.
Definition: ERF_EB.H:119
std::string m_type
Definition: ERF_EB.H:132
void set_connection_flags(amrex::EBFArrayBoxFactory *factory)
Disconnect covered neighbors in an EB factory's cell flags.
Definition: ERF_EB.cpp:124
Stores face-centered EB geometry reconstructed from a cell-centered factory.
Definition: ERF_EBAux.H:22