Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
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
10namespace amrex {
11
12class EBFArrayBoxFactory;
13template <class T> class FabArray;
14class MultiFab;
15class iMultiFab;
16class MultiCutFab;
17namespace EB2 { class Level; }
18
20{
21public:
22
23 friend class EBFArrayBoxFactory;
24
25 EBDataCollection (const EB2::Level& a_level, const Geometry& a_geom,
26 const BoxArray& a_ba, const DistributionMapping& a_dm,
27 Vector<int> a_ngrow, EBSupport a_support);
28
30
35
36 [[nodiscard]] const FabArray<EBCellFlagFab>& getMultiEBCellFlagFab () const;
37 [[nodiscard]] const MultiFab& getLevelSet () const;
38 [[nodiscard]] const MultiFab& getVolFrac () const;
39 [[nodiscard]] const MultiCutFab& getCentroid () const;
40 [[nodiscard]] const MultiCutFab& getBndryCent () const;
41 [[nodiscard]] const MultiCutFab& getBndryArea () const;
42 [[nodiscard]] const MultiCutFab& getBndryNormal () const;
46 [[nodiscard]] const iMultiFab* getCutCellMask () const;
47
48 // public for cuda
49 void extendDataOutsideDomain (IntVect const& level_ng);
50
51private:
52
53 Vector<int> m_ngrow;
54 EBSupport m_support;
55 Geometry m_geom;
56
57 // have to use pointer to break include loop
58
59 // EBSupport::basic
60 FabArray<EBCellFlagFab>* m_cellflags = nullptr;
61 MultiFab* m_levelset = nullptr;
62
63 // EBSupport::volume
64 MultiFab* m_volfrac = nullptr;
65 MultiCutFab* m_centroid = nullptr;
66
67 // EBSupport::full
68 MultiCutFab* m_bndrycent = nullptr;
69 MultiCutFab* m_bndryarea = nullptr;
70 MultiCutFab* m_bndrynorm = nullptr;
71 Array<MultiCutFab*,AMREX_SPACEDIM> m_areafrac {{AMREX_D_DECL(nullptr, nullptr, nullptr)}};
72 Array<MultiCutFab*,AMREX_SPACEDIM> m_facecent {{AMREX_D_DECL(nullptr, nullptr, nullptr)}};
73 Array<MultiCutFab*,AMREX_SPACEDIM> m_edgecent {{AMREX_D_DECL(nullptr, nullptr, nullptr)}};
74
75 // for levels created by addRegularCoarseLevels only
76 iMultiFab* m_cutcellmask = nullptr;
77};
78
79}
80
81#endif
#define AMREX_D_DECL(a, b, c)
Definition AMReX_SPACE.H:171
A collection of Boxes stored in an Array.
Definition AMReX_BoxArray.H:567
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:43
Definition AMReX_EB2_Level.H:40
Definition AMReX_EBDataCollection.H:20
const MultiCutFab & getCentroid() const
Definition AMReX_EBDataCollection.cpp:276
Array< const MultiCutFab *, 3 > getEdgeCent() const
Definition AMReX_EBDataCollection.cpp:311
EBDataCollection(EBDataCollection &&)=delete
void extendDataOutsideDomain(IntVect const &level_ng)
Definition AMReX_EBDataCollection.cpp:87
EBDataCollection & operator=(const EBDataCollection &)=delete
Array< const MultiCutFab *, 3 > getFaceCent() const
Definition AMReX_EBDataCollection.cpp:304
const MultiFab & getLevelSet() const
Definition AMReX_EBDataCollection.cpp:262
const MultiCutFab & getBndryCent() const
Definition AMReX_EBDataCollection.cpp:283
Array< const MultiCutFab *, 3 > getAreaFrac() const
Definition AMReX_EBDataCollection.cpp:297
const MultiCutFab & getBndryArea() const
Definition AMReX_EBDataCollection.cpp:290
const iMultiFab * getCutCellMask() const
Definition AMReX_EBDataCollection.cpp:325
const MultiFab & getVolFrac() const
Definition AMReX_EBDataCollection.cpp:269
~EBDataCollection()
Definition AMReX_EBDataCollection.cpp:237
EBDataCollection(const EBDataCollection &)=delete
const FabArray< EBCellFlagFab > & getMultiEBCellFlagFab() const
Definition AMReX_EBDataCollection.cpp:255
const MultiCutFab & getBndryNormal() const
Definition AMReX_EBDataCollection.cpp:318
Definition AMReX_EBFabFactory.H:25
An Array of FortranArrayBox(FAB)-like Objects.
Definition AMReX_FabArray.H:347
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:74
Definition AMReX_MultiCutFab.H:81
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
std::array< T, N > Array
Definition AMReX_Array.H:26
Definition AMReX_Amr.cpp:49
EBSupport
Definition AMReX_EBSupport.H:7