Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
AMReX_AuxBoundaryData.H
Go to the documentation of this file.
1
2#ifndef AMREX_AuxBoundaryData_H_
3#define AMREX_AuxBoundaryData_H_
4#include <AMReX_Config.H>
5
6#include <AMReX_Geometry.H>
7#include <AMReX_MultiFab.H>
8
14namespace amrex {
16{
17public:
18
22 AuxBoundaryData () noexcept = default;
23
32 AuxBoundaryData (const BoxArray& ba,
33 int n_grow,
34 int n_comp,
35 const Geometry& geom);
36
38 ~AuxBoundaryData () = default;
39
43 AuxBoundaryData& operator= (AuxBoundaryData&& rhs) = default;
44
52 AuxBoundaryData& operator= (const AuxBoundaryData& rhs) = delete;
53
62 void copyTo (MultiFab& destmf,
63 int src_comp,
64 int dst_comp,
65 int num_comp) const;
66
76 void copyFrom (const MultiFab& srcmf,
77 int src_comp,
78 int dst_comp,
79 int num_comp,
80 int src_ng = 0);
81
83 size_t size () const noexcept
84 {
85 BL_ASSERT(!m_empty); BL_ASSERT(m_initialized); return m_fabs.size();
86 }
87
96 void copy (const AuxBoundaryData& src,
97 int src_comp,
98 int dst_comp,
99 int num_comp);
100
109 void initialize (const BoxArray& ba,
110 int n_grow,
111 int n_comp,
112 const Geometry& geom);
113
115 const BoxArray& equivBoxArray () const noexcept
116 {
117 BL_ASSERT(!m_empty); BL_ASSERT(m_initialized); return m_fabs.boxArray();
118 }
119
121 void setVal (Real r) { BL_ASSERT(m_initialized); if (!m_empty) { m_fabs.setVal(r); } }
122
124 const DistributionMapping& DistributionMap () const noexcept
125 {
126 BL_ASSERT(!m_empty); BL_ASSERT(m_initialized); return m_fabs.DistributionMap();
127 }
128
130 FArrayBox& operator[] (const MFIter& mfi) noexcept
131 {
132 BL_ASSERT(!m_empty); BL_ASSERT(m_initialized); return m_fabs[mfi];
133 }
135 const FArrayBox& operator[] (const MFIter& mfi) const noexcept
136 {
137 BL_ASSERT(!m_empty); BL_ASSERT(m_initialized); return m_fabs[mfi];
138 }
139
141 int nGrow () const noexcept { BL_ASSERT(m_initialized); return m_ngrow; }
142
144 int nComp () const noexcept
145 {
146 BL_ASSERT(!m_empty); BL_ASSERT(m_initialized); return m_fabs.nComp();
147 }
148
150 bool isEmpty () const noexcept { return m_empty; }
151
152private:
153
154 MultiFab m_fabs;
155 int m_ngrow{0};
156 bool m_empty{false};
157 bool m_initialized{false};
158};
159
160}
161
162#endif
#define BL_ASSERT(EX)
Definition AMReX_BLassert.H:39
Definition AMReX_AuxBoundaryData.H:16
int nComp() const noexcept
Number of components stored per entry.
Definition AMReX_AuxBoundaryData.H:144
const BoxArray & equivBoxArray() const noexcept
Definition AMReX_AuxBoundaryData.H:115
bool isEmpty() const noexcept
True if the container manages no data (either default constructed or after reset()).
Definition AMReX_AuxBoundaryData.H:150
size_t size() const noexcept
Number of FArrayBoxes currently cached (0 if empty/uninitialized).
Definition AMReX_AuxBoundaryData.H:83
const DistributionMapping & DistributionMap() const noexcept
Distribution mapping associated with the cached grids.
Definition AMReX_AuxBoundaryData.H:124
AuxBoundaryData() noexcept=default
Construct an empty container; call initialize() before use.
int nGrow() const noexcept
Number of ghost cells captured when the container was initialized.
Definition AMReX_AuxBoundaryData.H:141
void copyFrom(const MultiFab &srcmf, int src_comp, int dst_comp, int num_comp, int src_ng=0)
Populate the auxiliary storage from srcmf.
Definition AMReX_AuxBoundaryData.cpp:132
FArrayBox & operator[](const MFIter &mfi) noexcept
Mutable access to the boundary data at given mfi.
Definition AMReX_AuxBoundaryData.H:130
void copyTo(MultiFab &destmf, int src_comp, int dst_comp, int num_comp) const
Copy data from the auxiliary storage into destmf.
Definition AMReX_AuxBoundaryData.cpp:118
void initialize(const BoxArray &ba, int n_grow, int n_comp, const Geometry &geom)
Allocate and configure storage.
Definition AMReX_AuxBoundaryData.cpp:47
void setVal(Real r)
Fill all stored data with scalar value r (if initialized).
Definition AMReX_AuxBoundaryData.H:121
void copy(const AuxBoundaryData &src, int src_comp, int dst_comp, int num_comp)
Copy data from another AuxBoundaryData src (component-wise).
Definition AMReX_AuxBoundaryData.cpp:22
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
A Fortran Array of REALs.
Definition AMReX_FArrayBox.H:231
int size() const noexcept
Return the number of FABs in the FabArray.
Definition AMReX_FabArrayBase.H:110
const DistributionMapping & DistributionMap() const noexcept
Return constant reference to associated DistributionMapping.
Definition AMReX_FabArrayBase.H:131
int nComp() const noexcept
Return number of variables (aka components) associated with each point.
Definition AMReX_FabArrayBase.H:83
const BoxArray & boxArray() const noexcept
Return a constant reference to the BoxArray that defines the valid region associated with this FabArr...
Definition AMReX_FabArrayBase.H:95
void setVal(value_type val)
Set all components in the entire region of each FAB to val.
Definition AMReX_FabArray.H:2656
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:85
A collection (stored as an array) of FArrayBox objects.
Definition AMReX_MultiFab.H:40
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:79
Definition AMReX_Amr.cpp:49