Block-Structured AMR Software Framework
AMReX_EBDataCollection.H
Go to the documentation of this file.
1 #ifndef AMREX_EB_DATA_COLLECTION_H_
2 #define AMREX_EB_DATA_COLLECTION_H_
3 #include <AMReX_Config.H>
4 
5 #include <AMReX_Geometry.H>
6 #include <AMReX_EBCellFlag.H>
7 #include <AMReX_EBSupport.H>
8 #include <AMReX_Array.H>
9 
10 namespace amrex {
11 
12 template <class T> class FabArray;
13 class MultiFab;
14 class iMultiFab;
15 class MultiCutFab;
16 namespace EB2 { class Level; }
17 
19 {
20 public:
21 
22  EBDataCollection (const EB2::Level& a_level, const Geometry& a_geom,
23  const BoxArray& a_ba, const DistributionMapping& a_dm,
24  Vector<int> a_ngrow, EBSupport a_support);
25 
27 
32 
33  [[nodiscard]] const FabArray<EBCellFlagFab>& getMultiEBCellFlagFab () const;
34  [[nodiscard]] const MultiFab& getLevelSet () const;
35  [[nodiscard]] const MultiFab& getVolFrac () const;
36  [[nodiscard]] const MultiCutFab& getCentroid () const;
37  [[nodiscard]] const MultiCutFab& getBndryCent () const;
38  [[nodiscard]] const MultiCutFab& getBndryArea () const;
39  [[nodiscard]] const MultiCutFab& getBndryNormal () const;
43  [[nodiscard]] const iMultiFab* getCutCellMask () const;
44 
45  // public for cuda
46  void extendDataOutsideDomain (IntVect const& level_ng);
47 
48 private:
49 
53 
54  // have to use pointer to break include loop
55 
56  // EBSupport::basic
58  MultiFab* m_levelset = nullptr;
59 
60  // EBSupport::volume
61  MultiFab* m_volfrac = nullptr;
62  MultiCutFab* m_centroid = nullptr;
63 
64  // EBSupport::full
71 
72  // for levels created by addRegularCoarseLevels only
74 };
75 
76 }
77 
78 #endif
#define AMREX_D_DECL(a, b, c)
Definition: AMReX_SPACE.H:104
A collection of Boxes stored in an Array.
Definition: AMReX_BoxArray.H:549
Calculates the distribution of FABs to MPI processes.
Definition: AMReX_DistributionMapping.H:41
Definition: AMReX_EB2_Level.H:33
Definition: AMReX_EBDataCollection.H:19
const MultiCutFab & getCentroid() const
Definition: AMReX_EBDataCollection.cpp:275
Array< MultiCutFab *, AMREX_SPACEDIM > m_facecent
Definition: AMReX_EBDataCollection.H:69
EBDataCollection(const EB2::Level &a_level, const Geometry &a_geom, const BoxArray &a_ba, const DistributionMapping &a_dm, Vector< int > a_ngrow, EBSupport a_support)
Definition: AMReX_EBDataCollection.cpp:13
iMultiFab * m_cutcellmask
Definition: AMReX_EBDataCollection.H:73
Array< MultiCutFab *, AMREX_SPACEDIM > m_edgecent
Definition: AMReX_EBDataCollection.H:70
EBDataCollection(EBDataCollection &&)=delete
FabArray< EBCellFlagFab > * m_cellflags
Definition: AMReX_EBDataCollection.H:57
void extendDataOutsideDomain(IntVect const &level_ng)
Definition: AMReX_EBDataCollection.cpp:86
Geometry m_geom
Definition: AMReX_EBDataCollection.H:52
MultiCutFab * m_bndrynorm
Definition: AMReX_EBDataCollection.H:67
const MultiFab & getLevelSet() const
Definition: AMReX_EBDataCollection.cpp:261
const MultiCutFab & getBndryCent() const
Definition: AMReX_EBDataCollection.cpp:282
MultiCutFab * m_bndrycent
Definition: AMReX_EBDataCollection.H:65
Vector< int > m_ngrow
Definition: AMReX_EBDataCollection.H:50
MultiCutFab * m_bndryarea
Definition: AMReX_EBDataCollection.H:66
const MultiCutFab & getBndryArea() const
Definition: AMReX_EBDataCollection.cpp:289
const iMultiFab * getCutCellMask() const
Definition: AMReX_EBDataCollection.cpp:324
const MultiFab & getVolFrac() const
Definition: AMReX_EBDataCollection.cpp:268
EBSupport m_support
Definition: AMReX_EBDataCollection.H:51
EBDataCollection & operator=(const EBDataCollection &)=delete
MultiFab * m_levelset
Definition: AMReX_EBDataCollection.H:58
MultiFab * m_volfrac
Definition: AMReX_EBDataCollection.H:61
~EBDataCollection()
Definition: AMReX_EBDataCollection.cpp:236
EBDataCollection(const EBDataCollection &)=delete
Array< MultiCutFab *, AMREX_SPACEDIM > m_areafrac
Definition: AMReX_EBDataCollection.H:68
const FabArray< EBCellFlagFab > & getMultiEBCellFlagFab() const
Definition: AMReX_EBDataCollection.cpp:254
Array< const MultiCutFab *, AMREX_SPACEDIM > getFaceCent() const
Definition: AMReX_EBDataCollection.cpp:303
const MultiCutFab & getBndryNormal() const
Definition: AMReX_EBDataCollection.cpp:317
Array< const MultiCutFab *, AMREX_SPACEDIM > getAreaFrac() const
Definition: AMReX_EBDataCollection.cpp:296
Array< const MultiCutFab *, AMREX_SPACEDIM > getEdgeCent() const
Definition: AMReX_EBDataCollection.cpp:310
MultiCutFab * m_centroid
Definition: AMReX_EBDataCollection.H:62
An Array of FortranArrayBox(FAB)-like Objects.
Definition: AMReX_FabArray.H:344
Rectangular problem domain geometry.
Definition: AMReX_Geometry.H:73
Definition: AMReX_MultiCutFab.H:81
A collection (stored as an array) of FArrayBox objects.
Definition: AMReX_MultiFab.H:38
Definition: AMReX_iMultiFab.H:32
Definition: AMReX_Amr.cpp:49
EBSupport
Definition: AMReX_EBSupport.H:7
std::array< T, N > Array
Definition: AMReX_Array.H:24