6 #include "AMReX_Vector.H"
17 Trig2 (amrex::Vector<amrex::Geometry> &_geom,
25 int _dim = AMREX_SPACEDIM) :
42 int _dim = AMREX_SPACEDIM)
45 AMREX_D_TERM(theta1 = _theta1;, theta2 = _theta2;, theta3 = _theta3;);
46 AMREX_D_TERM(n1 = _n1;, n2 = _n2;, n3 = _n3;);
53 bool cellcentered = (field[0]->boxArray().ixType() == amrex::IndexType(amrex::IntVect::TheCellVector()));
55 const std::complex<Set::Scalar> I(0.0,1.0);
58 L2 =
geom[lev].ProbHi()[1] -
geom[lev].ProbLo()[1],
59 L3 =
geom[lev].ProbHi()[2] -
geom[lev].ProbLo()[2]);
60 for (amrex::MFIter mfi(*field[lev],
true); mfi.isValid(); ++mfi)
62 const amrex::Box& box = mfi.validbox();
63 amrex::BaseFab<amrex::Real> &field_box = (*field[lev])[mfi];
65 AMREX_D_TERM(
for (
int i = box.loVect()[0] - field[lev]->nGrow(); i<=box.hiVect()[0] + field[lev]->nGrow(); i++),
66 for (
int j = box.loVect()[1] - field[lev]->nGrow(); j<=box.hiVect()[1] + field[lev]->nGrow(); j++),
67 for (
int k = box.loVect()[2] - field[lev]->nGrow(); k<=box.hiVect()[2] + field[lev]->nGrow(); k++))
73 AMREX_D_TERM(x1 =
geom[lev].ProbLo()[0] + ((amrex::Real)(i) + 0.5) *
geom[lev].CellSize()[0];,
74 x2 =
geom[lev].ProbLo()[1] + ((amrex::Real)(j) + 0.5) *
geom[lev].CellSize()[1];,
75 x3 =
geom[lev].ProbLo()[2] + ((amrex::Real)(k) + 0.5) *
geom[lev].CellSize()[2];);
79 AMREX_D_TERM(x1 =
geom[lev].ProbLo()[0] + ((amrex::Real)(i)) *
geom[lev].CellSize()[0];,
80 x2 =
geom[lev].ProbLo()[1] + ((amrex::Real)(j)) *
geom[lev].CellSize()[1];,
81 x3 =
geom[lev].ProbLo()[2] + ((amrex::Real)(k)) *
geom[lev].CellSize()[2];);
86 #if AMREX_SPACEDIM > 0
87 if (
dim > 0) trigfn *= std::exp(I*(theta1 + ((amrex::Real)n1)*x1*
Set::Constant::Pi / L1)).real();
90 #if AMREX_SPACEDIM > 1
91 if (
dim > 1) trigfn *= std::exp(I*(theta2 + ((amrex::Real)n2)*x2*
Set::Constant::Pi / L2)).real();
93 #if AMREX_SPACEDIM > 2
94 if (
dim > 2) trigfn *= std::exp(I*(theta3 + ((amrex::Real)n3)*x3*
Set::Constant::Pi / L3)).real();