42class Field :
public amrex::Vector<std::unique_ptr<amrex::FabArray<amrex::BaseFab<T>>>>
68 void Copy(
int , amrex::MultiFab &,
int ,
int )
const {}
69 void CopyFrom(
int , amrex::MultiFab &,
int ,
int )
const {}
70 void Add(
int , amrex::MultiFab &,
int ,
int )
const {}
71 void AddFrom(
int , amrex::MultiFab &,
int ,
int )
const {}
78 if (this->
size())
return (*(*
this)[
lev]).array(
mfi);
88using Patch = amrex::Array4<T>
const&;
95 for (amrex::MFIter
mfi(
a_dst, amrex::TilingIfNotGPU());
mfi.isValid(); ++
mfi)
97 const amrex::Box&
bx =
mfi.growntilebox(amrex::IntVect(
a_nghost));
100 amrex::Array4<const Set::Vector>
const &
src = ((*this)[
a_lev])->
array(
mfi);
101 amrex::Array4<Set::Scalar>
const &
dst =
a_dst.array(
mfi);
115 for (amrex::MFIter
mfi(
a_src, amrex::TilingIfNotGPU());
mfi.isValid(); ++
mfi)
117 const amrex::Box&
bx =
mfi.growntilebox(amrex::IntVect(
a_nghost));
121 amrex::Array4<const Set::Scalar>
const &
src =
a_src.array(
mfi);
135 for (amrex::MFIter
mfi(
a_dst, amrex::TilingIfNotGPU());
mfi.isValid(); ++
mfi)
137 const amrex::Box&
bx =
mfi.growntilebox(amrex::IntVect(
a_nghost));
140 amrex::Array4<const Set::Vector>
const &
src = ((*this)[
a_lev])->
array(
mfi);
141 amrex::Array4<Set::Scalar>
const &
dst =
a_dst.array(
mfi);
155 for (amrex::MFIter
mfi(
a_src, amrex::TilingIfNotGPU());
mfi.isValid(); ++
mfi)
157 const amrex::Box&
bx =
mfi.growntilebox(amrex::IntVect(
a_nghost));
161 amrex::Array4<const Set::Scalar>
const &
src =
a_src.array(
mfi);
176 if (
i==0)
return name +
"_x";
179 else if (
i==1)
return name +
"_y";
182 else if (
i==2)
return name +
"_z";
192 for (amrex::MFIter
mfi(
a_dst, amrex::TilingIfNotGPU());
mfi.isValid(); ++
mfi)
194 const amrex::Box&
bx =
mfi.growntilebox(amrex::IntVect(
a_nghost));
197 amrex::Array4<const Set::Matrix>
const &
src = ((*this)[
a_lev])->
array(
mfi);
198 amrex::Array4<Set::Scalar>
const &
dst =
a_dst.array(
mfi);
212 #if AMREX_SPACEDIM==1
213 if (
i==0)
return name +
"_xx";
214 #elif AMREX_SPACEDIM==2
215 if (
i==0)
return name +
"_xx";
216 else if (
i==1)
return name +
"_xy";
217 else if (
i==2)
return name +
"_yx";
218 else if (
i==3)
return name +
"_yy";
219 #elif AMREX_SPACEDIM==3
220 if (
i==0)
return name +
"_xx";
221 else if (
i==1)
return name +
"_xy";
222 else if (
i==2)
return name +
"_xz";
223 else if (
i==3)
return name +
"_yx";
224 else if (
i==4)
return name +
"_yy";
225 else if (
i==5)
return name +
"_yz";
226 else if (
i==6)
return name +
"_zx";
227 else if (
i==7)
return name +
"_zy";
228 else if (
i==8)
return name +
"_zz";
258 void Copy(
int , amrex::MultiFab &,
int ,
int )
const
263 amrex::Array4<Set::Scalar>
Patch (
int lev, amrex::MFIter &
mfi)
const &
265 if (this->
size())
return (*(*
this)[
lev]).array(
mfi);
293#include "Set/Matrix4.H"
#define ALAMO_SINGLE_DEFINITION
amrex::Array4< Set::Scalar > empty
void Define(int a_lev, const amrex::BoxArray &a_grid, const amrex::DistributionMapping &a_dmap, int a_ncomp, int a_nghost)
void Copy(int, amrex::MultiFab &, int, int) const
amrex::Array4< Set::Scalar > Patch(int lev, amrex::MFIter &mfi) const &
void Define(int a_levs, const amrex::Vector< amrex::BoxArray > &a_grids, const amrex::Vector< amrex::DistributionMapping > &a_dmap, int a_ncomp, int a_nghost)
void Add(int, amrex::MultiFab &, int, int) const
std::string Name(int) const
void Copy(int, amrex::MultiFab &, int, int) const
amrex::Array4< T > Patch(int lev, amrex::MFIter &mfi) const &
void AddFrom(int, amrex::MultiFab &, int, int) const
void Define(int a_levs, const amrex::Vector< amrex::BoxArray > &a_grids, const amrex::Vector< amrex::DistributionMapping > &a_dmap, int a_ncomp, int a_nghost)
Field(int a_levs, const amrex::Vector< amrex::BoxArray > &a_grids, const amrex::Vector< amrex::DistributionMapping > &a_dmap, int a_ncomp, int a_nghost)
void Define(int a_lev, const amrex::BoxArray &a_grid, const amrex::DistributionMapping &a_dmap, int a_ncomp, int a_nghost)
void CopyFrom(int, amrex::MultiFab &, int, int) const
static const Set::Scalar Rg
static const Set::Scalar Pi
A collection of data types and symmetry-reduced data structures.
amrex::Array4< T > const & Patch
Eigen::Matrix< amrex::Real, AMREX_SPACEDIM, 1 > Vector
A collection of utility routines.
void Abort(const char *msg)
AMREX_FORCE_INLINE void Assert(std::string file, std::string func, int line, std::string smt, bool pass, Args const &... args)
Set::Scalar Gaussian(amrex::Real mean, amrex::Real std_deviation)