4#include <AMReX_Config.H>
31 Mask () noexcept = default;
46 explicit
Mask (std::istream& is);
56 ~Mask () noexcept override = default;
71 friend std::istream& operator>> (std::istream&,
Mask&);
83 friend std::ostream& operator<< (std::ostream&, const
Mask&);
89 void writeOn (std::ostream&) const;
93 Mask& operator&= (const
Mask& src) noexcept {
return And<run_on>(src); }
100 template <RunOn run_on AMREX_DEFAULT_RUNON>
111 template <RunOn run_on AMREX_DEFAULT_RUNON>
115 int numcomp = 1) noexcept;
130 int numcomp = 1) noexcept;
148 int numcomp = 1) noexcept;
152 Mask& operator|= (const
Mask& src) noexcept {
return Or<run_on>(src); }
159 template <RunOn run_on AMREX_DEFAULT_RUNON>
170 template <RunOn run_on AMREX_DEFAULT_RUNON>
174 int numcomp = 1) noexcept;
189 int numcomp = 1) noexcept;
207 int numcomp = 1) noexcept;
210template <
RunOn run_on>
217template <RunOn run_on>
222 int numcomp)
noexcept
224 return this->And<run_on>(src,
domain,
domain,srccomp,destcomp,numcomp);
227template <RunOn run_on>
233 int numcomp)
noexcept
235 return this->And<run_on>(src,subbox,subbox,srccomp,destcomp,numcomp);
238template <RunOn run_on>
245 int numcomp)
noexcept
247 auto const& d = this->
array();
248 auto const& s = src.const_array();
251 const Dim3 offset{slo.
x-dlo.x,slo.y-dlo.y,slo.z-dlo.z};
254 d(i,j,k,n+destcomp) = d(i,j,k,n+destcomp) ? s(i+
offset.x,j+
offset.y,k+
offset.z,n+srccomp) : 0;
259template <RunOn run_on>
266template <RunOn run_on>
271 int numcomp)
noexcept
273 return this->Or<run_on>(src,
domain,
domain,srccomp,destcomp,numcomp);
276template <RunOn run_on>
282 int numcomp)
noexcept
284 return this->Or<run_on>(src,subbox,subbox,srccomp,destcomp,numcomp);
287template <RunOn run_on>
294 int numcomp)
noexcept
296 auto const& d = this->
array();
297 auto const& s = src.const_array();
300 const Dim3 offset{slo.
x-dlo.x,slo.y-dlo.y,slo.z-dlo.z};
303 d(i,j,k,n+destcomp) = d(i,j,k,n+destcomp) ? 1: s(i+
offset.x,j+
offset.y,k+
offset.z,n+srccomp);
#define AMREX_DEFAULT_RUNON
Definition AMReX_GpuControl.H:73
#define AMREX_HOST_DEVICE_PARALLEL_FOR_4D_FLAG(where_to_run, box, nc, i, j, k, n, block)
Definition AMReX_GpuLaunch.nolint.H:73
Array4< int const > offset
Definition AMReX_HypreMLABecLap.cpp:1089
A virtual base class for objects that manage their own dynamic memory allocation.
Definition AMReX_Arena.H:105
A FortranArrayBox(FAB)-like object.
Definition AMReX_BaseFab.H:183
Array4< int const > array() const noexcept
Definition AMReX_BaseFab.H:375
Box domain
My index space.
Definition AMReX_BaseFab.H:1158
int nvar
Number components.
Definition AMReX_BaseFab.H:1159
Definition AMReX_Mask.H:28
Mask & Or(const Mask &src) noexcept
in-place Or
Definition AMReX_Mask.H:261
Mask & And(const Mask &src) noexcept
in-place And
Definition AMReX_Mask.H:212
Mask(Array4< int const > const &a, IndexType t) noexcept
Definition AMReX_Mask.H:54
~Mask() noexcept override=default
Mask(Array4< int > const &a, IndexType t) noexcept
Definition AMReX_Mask.H:50
void writeOn(std::ostream &) const
output to stream, FAB-style
Definition AMReX_Mask.cpp:78
Mask(Array4< int const > const &a) noexcept
Definition AMReX_Mask.H:52
void readFrom(std::istream &)
initialize from stream, FAB-style
Definition AMReX_Mask.cpp:88
Definition AMReX_Amr.cpp:49
MakeType
Definition AMReX_MakeType.H:7
RunOn
Definition AMReX_GpuControl.H:69
__host__ __device__ Dim3 lbound(Array4< T > const &a) noexcept
Definition AMReX_Array4.H:312
Definition AMReX_Array4.H:61
void * alloc(std::size_t sz) const noexcept
Definition AMReX_DataAllocator.H:16
Definition AMReX_Dim3.H:12
int x
Definition AMReX_Dim3.H:12