Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
AMReX_MultiMask.H
Go to the documentation of this file.
1#ifndef AMREX_MULTIMASK_H_
2#define AMREX_MULTIMASK_H_
3#include <AMReX_Config.H>
4
5#include <AMReX_Mask.H>
6#include <AMReX_FabArray.H>
7#include <AMReX_Geometry.H>
8
14#ifdef AMREX_USE_OMP
15#include <omp.h>
16#endif
17
18namespace amrex {
19
20class MultiMaskIter;
21
23{
24public:
26 MultiMask () { ; }
27
29 MultiMask (const BoxArray& ba, const DistributionMapping& dm, int ncomp);
30
44 MultiMask (const BoxArray& regba, const DistributionMapping& dm, const Geometry& geom,
45 Orientation face, int in_rad, int out_rad, int extent_rad, int ncomp, bool initval);
46
47 ~MultiMask () = default;
48
49 MultiMask (MultiMask&& rhs) noexcept = default;
50
51 MultiMask (const MultiMask& rhs) = delete;
52 MultiMask& operator= (const MultiMask& rhs) = delete;
53 MultiMask& operator= (MultiMask&& rhs) = delete;
54
56 void define (const BoxArray& ba, const DistributionMapping& dm, int ncomp);
57
59 void define (const BoxArray& regba, const DistributionMapping& dm, const Geometry& geom,
60 Orientation face, int in_rad, int out_rad, int extent_rad, int ncomp, bool initval);
61
63 Mask& operator[] (const MFIter& mfi) noexcept { return m_fa[mfi]; }
64
66 const Mask& operator[] (const MFIter& mfi) const noexcept { return m_fa[mfi]; }
67
69 Array4<int const> array (const MFIter& mfi) const noexcept { return m_fa.array(mfi); }
70
72 Array4<int > array (const MFIter& mfi) noexcept { return m_fa.array(mfi); }
73
75 Array4<int const> const_array (const MFIter& mfi) const noexcept {
76 return m_fa.const_array(mfi);
77 }
78
80 MultiArray4<int const> arrays () const noexcept { return m_fa.const_arrays(); }
81
83 MultiArray4<int > arrays () noexcept { return m_fa.arrays(); }
84
86 MultiArray4<int const> const_arrays () const noexcept { return m_fa.const_arrays(); }
87
89 int nComp () const noexcept { return m_fa.nComp(); }
90
92 const BoxArray& boxArray () const noexcept { return m_fa.boxArray(); }
93
95 const DistributionMapping& DistributionMap () const noexcept { return m_fa.DistributionMap(); }
96
103 static void Copy (MultiMask& dst, const MultiMask& src);
104
105 friend class MultiMaskIter;
106
107private:
108
109 FabArray<Mask> m_fa;
110};
111
114 : public MFIter
115{
116public:
117 explicit MultiMaskIter (const MultiMask& mm)
118 : MFIter(mm.m_fa) { }
119};
120
121}
122
123#endif
Logical mask type used to classify regions of FABs.
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
An Array of FortranArrayBox(FAB)-like Objects.
Definition AMReX_FabArray.H:349
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
std::unique_ptr< FabArrayBase > m_fa
This must be the first member!
Definition AMReX_MFIter.H:204
Definition AMReX_Mask.H:33
Iterator adapter exposing MFIter semantics for MultiMask traversal.
Definition AMReX_MultiMask.H:115
MultiMaskIter(const MultiMask &mm)
Definition AMReX_MultiMask.H:117
Definition AMReX_MultiMask.H:23
MultiMask(const MultiMask &rhs)=delete
MultiMask()
Construct an empty MultiMask; call define() before use.
Definition AMReX_MultiMask.H:26
Array4< int const > const_array(const MFIter &mfi) const noexcept
Return a const Array4 view for iterator mfi.
Definition AMReX_MultiMask.H:75
Array4< int > array(const MFIter &mfi) noexcept
Return an Array4 view (mutable) for iterator mfi.
Definition AMReX_MultiMask.H:72
int nComp() const noexcept
Number of components stored in each mask.
Definition AMReX_MultiMask.H:89
MultiArray4< int const > const_arrays() const noexcept
Return const multi-array views (alias of arrays()).
Definition AMReX_MultiMask.H:86
~MultiMask()=default
MultiArray4< int > arrays() noexcept
Return mutable multi-array views of every mask.
Definition AMReX_MultiMask.H:83
const DistributionMapping & DistributionMap() const noexcept
DistributionMapping describing mask ownership.
Definition AMReX_MultiMask.H:95
Array4< int const > array(const MFIter &mfi) const noexcept
Return an Array4 view (const) for iterator mfi.
Definition AMReX_MultiMask.H:69
static void Copy(MultiMask &dst, const MultiMask &src)
Copy multi-mask data from src into dst.
Definition AMReX_MultiMask.cpp:74
MultiMask & operator=(const MultiMask &rhs)=delete
MultiMask(MultiMask &&rhs) noexcept=default
Mask & operator[](const MFIter &mfi) noexcept
Mutable access to the mask referenced by iterator mfi.
Definition AMReX_MultiMask.H:63
MultiArray4< int const > arrays() const noexcept
Return const multi-array views of every mask.
Definition AMReX_MultiMask.H:80
const BoxArray & boxArray() const noexcept
BoxArray used to build this MultiMask.
Definition AMReX_MultiMask.H:92
void define(const BoxArray &ba, const DistributionMapping &dm, int ncomp)
Define masks over ba with mapping dm and ncomp components.
Definition AMReX_MultiMask.cpp:18
Encapsulation of the Orientation of the Faces of a Box.
Definition AMReX_Orientation.H:29
Definition AMReX_Amr.cpp:49
A multidimensional array accessor.
Definition AMReX_Array4.H:283
Definition AMReX_FabArray.H:153