13 #include "AMReX_Vector.H"
24 Trig (amrex::Vector<amrex::Geometry> &_geom,
27 std::complex<int> _n2 = 0,
28 std::complex<int> _n3 = 0),
29 int _dim = AMREX_SPACEDIM) :
40 std::complex<int> _n2 = 0,
41 std::complex<int> _n3 = 0),
42 int _dim = AMREX_SPACEDIM)
45 AMREX_D_TERM(n1 = _n1;, n2 = _n2;, n3 = _n3;);
48 phi2 = std::atan2(n2.imag(),n2.real()),
49 phi3 = std::atan2(n3.imag(),n3.real()));
55 bool cellcentered = (a_field[0]->boxArray().ixType() == amrex::IndexType(amrex::IntVect::TheCellVector()));
58 L2 =
geom[lev].ProbHi()[1] -
geom[lev].ProbLo()[1],
59 L3 =
geom[lev].ProbHi()[2] -
geom[lev].ProbLo()[2]);
62 for (amrex::MFIter mfi(*a_field[lev], amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi)
65 if (cellcentered) bx = mfi.growntilebox();
66 else bx = mfi.grownnodaltilebox();
68 amrex::Array4<Set::Scalar>
const &field = a_field[lev]->array(mfi);
69 amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k)
74 AMREX_D_TERM(x1 =
geom[lev].ProbLo()[0] + ((amrex::Real)(i) + 0.5) *
geom[lev].CellSize()[0];,
75 x2 =
geom[lev].ProbLo()[1] + ((amrex::Real)(j) + 0.5) *
geom[lev].CellSize()[1];,
76 x3 =
geom[lev].ProbLo()[2] + ((amrex::Real)(k) + 0.5) *
geom[lev].CellSize()[2];);
80 AMREX_D_TERM(x1 =
geom[lev].ProbLo()[0] + (amrex::Real)(i) *
geom[lev].CellSize()[0];,
81 x2 =
geom[lev].ProbLo()[1] + (amrex::Real)(j) *
geom[lev].CellSize()[1];,
82 x3 =
geom[lev].ProbLo()[2] + (amrex::Real)(k) *
geom[lev].CellSize()[2];);
86 #if AMREX_SPACEDIM > 0
91 #if AMREX_SPACEDIM > 1
96 #if AMREX_SPACEDIM > 2
109 bool cellcentered = (a_field[0]->boxArray().ixType() == amrex::IndexType(amrex::IntVect::TheCellVector()));
112 L2 =
geom[lev].ProbHi()[1] -
geom[lev].ProbLo()[1],
113 L3 =
geom[lev].ProbHi()[2] -
geom[lev].ProbLo()[2]);
116 for (amrex::MFIter mfi(*a_field[lev], amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi)
119 if (cellcentered) bx = mfi.growntilebox();
120 else bx = mfi.grownnodaltilebox();
122 amrex::Array4<Set::Vector>
const &field = a_field[lev]->array(mfi);
123 amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k)
128 AMREX_D_TERM(x1 =
geom[lev].ProbLo()[0] + ((amrex::Real)(i) + 0.5) *
geom[lev].CellSize()[0];,
129 x2 =
geom[lev].ProbLo()[1] + ((amrex::Real)(j) + 0.5) *
geom[lev].CellSize()[1];,
130 x3 =
geom[lev].ProbLo()[2] + ((amrex::Real)(k) + 0.5) *
geom[lev].CellSize()[2];);
134 AMREX_D_TERM(x1 =
geom[lev].ProbLo()[0] + (amrex::Real)(i) *
geom[lev].CellSize()[0];,
135 x2 =
geom[lev].ProbLo()[1] + (amrex::Real)(j) *
geom[lev].CellSize()[1];,
136 x3 =
geom[lev].ProbLo()[2] + (amrex::Real)(k) *
geom[lev].CellSize()[2];);
140 #if AMREX_SPACEDIM > 0
145 #if AMREX_SPACEDIM > 1
150 #if AMREX_SPACEDIM > 2
166 std::vector<int> n_real(AMREX_SPACEDIM,0.0);
168 std::vector<int> n_imag(AMREX_SPACEDIM,0.0);
172 value.n1 = std::complex<int>(n_real[0],n_imag[0]);,
173 value.n2 = std::complex<int>(n_real[1],n_imag[1]);,
174 value.n3 = std::complex<int>(n_real[2],n_imag[2]););
177 value.phi1 = std::atan2(value.n1.imag(),value.n1.real()),
178 value.phi2 = std::atan2(value.n2.imag(),value.n2.real()),
179 value.phi3 = std::atan2(value.n3.imag(),value.n3.real()));