1#ifndef AMREX_EBFABFACTORY_H_
2#define AMREX_EBFABFACTORY_H_
3#include <AMReX_Config.H>
74 {
return m_ebdc->getMultiEBCellFlagFab(); }
96 return m_ebdc->getAreaFrac();
102 return m_ebdc->getFaceCent();
107 return m_ebdc->getEdgeCent();
114 [[nodiscard]] EB2::Level const*
getEBLevel () const noexcept {
return m_parent; }
125 [[nodiscard]] const
Geometry&
Geom () const noexcept {
return m_geom; }
128 [[nodiscard]]
bool hasEBInfo() const noexcept;
145 EB2::Level const* m_parent =
nullptr;
146 Gpu::DeviceVector<
Array4<
Real const>> m_eb_data;
#define AMREX_NODISCARD
Definition AMReX_Extension.H:252
A collection of Boxes stored in an Array.
Definition AMReX_BoxArray.H:568
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:43
Definition AMReX_EB2.H:28
Definition AMReX_EB2_Level.H:42
FAB storing EBCellFlag data per cell.
Definition AMReX_EBCellFlag.H:324
Aggregates the EB data required to build EB-aware MultiFabs/FabFactories.
Definition AMReX_EBDataCollection.H:27
Definition AMReX_EBFabFactory.H:32
const MultiCutFab & getBndryArea() const noexcept
Boundary area.
Definition AMReX_EBFabFactory.H:92
void destroy(FArrayBox *fab) const final
Destroy a FAB produced by this factory.
Definition AMReX_EBFabFactory.cpp:127
EBFArrayBoxFactory * clone() const final
Produce a deep copy of this factory (excluding EB level ownership).
Definition AMReX_EBFabFactory.cpp:142
EB2::IndexSpace const * getEBIndexSpace() const noexcept
Definition AMReX_EBFabFactory.cpp:154
EB2::Level const * getEBLevel() const noexcept
Definition AMReX_EBFabFactory.H:114
const MultiCutFab & getBndryNormal() const noexcept
Boundary normals.
Definition AMReX_EBFabFactory.H:89
const FabArray< EBCellFlagFab > & getMultiEBCellFlagFab() const noexcept
EB cell flags for all boxes.
Definition AMReX_EBFabFactory.H:73
bool isAllRegular() const noexcept
Definition AMReX_EBFabFactory.cpp:148
const BoxArray & boxArray() const noexcept
BoxArray describing the FAB layout.
Definition AMReX_EBFabFactory.cpp:177
EBData getEBData(MFIter const &mfi) const noexcept
Convenience wrapper returning EBData views for the FAB referenced by mfi.
Definition AMReX_EBFabFactory.cpp:189
iMultiFab const * getCutCellMask() const noexcept
Definition AMReX_EBFabFactory.H:132
int maxCoarseningLevel() const noexcept
Maximum coarse level supported by the EB hierarchy.
Definition AMReX_EBFabFactory.cpp:160
const DistributionMapping & DistributionMap() const noexcept
Distribution mapping describing the FABs this factory allocates.
Definition AMReX_EBFabFactory.cpp:171
FArrayBox * create_alias(FArrayBox const &rhs, int scomp, int ncomp) const final
Create an alias view into an existing EB-aware FAB.
Definition AMReX_EBFabFactory.cpp:113
const MultiCutFab & getCentroid() const noexcept
Cell centroid.
Definition AMReX_EBFabFactory.H:83
Array< const MultiCutFab *, 3 > getEdgeCent() const noexcept
Edge centroids.
Definition AMReX_EBFabFactory.H:106
EBFArrayBoxFactory()=delete
const MultiCutFab & getBndryCent() const noexcept
Boundary centroid.
Definition AMReX_EBFabFactory.H:86
EBFArrayBoxFactory(EBFArrayBoxFactory &&) noexcept=default
Array< const MultiCutFab *, 3 > getAreaFrac() const noexcept
Area fractions along each axis.
Definition AMReX_EBFabFactory.H:95
Array< const MultiCutFab *, 3 > getFaceCent() const noexcept
Definition AMReX_EBFabFactory.H:101
bool hasEBInfo() const noexcept
True if EB geometric data beyond flags is available.
Definition AMReX_EBFabFactory.cpp:183
~EBFArrayBoxFactory() override=default
const MultiFab & getLevelSet() const noexcept
Level set field.
Definition AMReX_EBFabFactory.H:77
const MultiFab & getVolFrac() const noexcept
Volume fraction.
Definition AMReX_EBFabFactory.H:80
const Geometry & Geom() const noexcept
Geometry inherited from the EB level.
Definition AMReX_EBFabFactory.H:125
FArrayBox * create(const Box &box, int ncomps, const FabInfo &info, int box_index) const final
Allocate an EB-aware FAB for box with ncomps components.
Definition AMReX_EBFabFactory.cpp:97
EBDataArrays getEBDataArrays() const noexcept
Return GPU-accessible array views for all FABs owned by this factory.
Definition AMReX_EBFabFactory.cpp:202
EBFArrayBoxFactory(const EBFArrayBoxFactory &)=default
A Fortran Array of REALs.
Definition AMReX_FArrayBox.H:231
An Array of FortranArrayBox(FAB)-like Objects.
Definition AMReX_FabArray.H:350
Definition AMReX_FabFactory.H:50
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:74
Iterator for looping ever tiles and boxes of amrex::FabArray based containers.
Definition AMReX_MFIter.H:88
FabArray façade that only allocates cut-cell Fabs (skipping regular cells).
Definition AMReX_MultiCutFab.H:87
A collection (stored as an array) of FArrayBox objects.
Definition AMReX_MultiFab.H:40
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:28
A Collection of IArrayBoxes.
Definition AMReX_iMultiFab.H:34
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:79
std::unique_ptr< EBFArrayBoxFactory > makeEBFabFactory(const Geometry &a_geom, const BoxArray &a_ba, const DistributionMapping &a_dm, const Vector< int > &a_ngrow, EBSupport a_support)
Definition AMReX_EBFabFactory.cpp:215
std::array< T, N > Array
Definition AMReX_Array.H:26
Definition AMReX_Amr.cpp:49
EBSupport
Requested EB metadata level for factories and utilities.
Definition AMReX_EBSupport.H:14
A multidimensional array accessor.
Definition AMReX_Array4.H:283
Views aggregating EBData for multiple boxes.
Definition AMReX_EBData.H:207
Set of Array4 views to EB data for a single box (plus helpers).
Definition AMReX_EBData.H:34
Definition AMReX_FabFactory.H:27