25 const auto& geom =
m_phi.repo().mesh().Geom(lev);
26 const auto& idx = geom.InvCellSizeArray();
27 const auto dlo = geom.Domain().smallEnd();
28 const auto dhi = geom.Domain().bigEnd();
31 auto const& in_arrs =
m_phi(lev).const_arrays();
32 auto const& out_arrs = out_mf.arrays();
35 out_mf, amrex::IntVect(0),
36 [=] AMREX_GPU_DEVICE(
int nbx,
int i,
int j,
int k) {
37 if (!Stencil::applies_to(i, j, k, dlo, dhi)) {
40 auto const& phi = in_arrs[nbx];
41 auto const& strphi = out_arrs[nbx];
42 const amrex::Real ux = (Stencil::c00 * phi(i + 1, j, k, 0) +
43 Stencil::c01 * phi(i, j, k, 0) +
44 Stencil::c02 * phi(i - 1, j, k, 0)) *
46 const amrex::Real vx = (Stencil::c00 * phi(i + 1, j, k, 1) +
47 Stencil::c01 * phi(i, j, k, 1) +
48 Stencil::c02 * phi(i - 1, j, k, 1)) *
50 const amrex::Real wx = (Stencil::c00 * phi(i + 1, j, k, 2) +
51 Stencil::c01 * phi(i, j, k, 2) +
52 Stencil::c02 * phi(i - 1, j, k, 2)) *
54 const amrex::Real uy = (Stencil::c10 * phi(i, j + 1, k, 0) +
55 Stencil::c11 * phi(i, j, k, 0) +
56 Stencil::c12 * phi(i, j - 1, k, 0)) *
58 const amrex::Real vy = (Stencil::c10 * phi(i, j + 1, k, 1) +
59 Stencil::c11 * phi(i, j, k, 1) +
60 Stencil::c12 * phi(i, j - 1, k, 1)) *
62 const amrex::Real wy = (Stencil::c10 * phi(i, j + 1, k, 2) +
63 Stencil::c11 * phi(i, j, k, 2) +
64 Stencil::c12 * phi(i, j - 1, k, 2)) *
66 const amrex::Real uz = (Stencil::c20 * phi(i, j, k + 1, 0) +
67 Stencil::c21 * phi(i, j, k, 0) +
68 Stencil::c22 * phi(i, j, k - 1, 0)) *
70 const amrex::Real vz = (Stencil::c20 * phi(i, j, k + 1, 1) +
71 Stencil::c21 * phi(i, j, k, 1) +
72 Stencil::c22 * phi(i, j, k - 1, 1)) *
74 const amrex::Real wz = (Stencil::c20 * phi(i, j, k + 1, 2) +
75 Stencil::c21 * phi(i, j, k, 2) +
76 Stencil::c22 * phi(i, j, k - 1, 2)) *
79 strphi(i, j, k, 0) = (ux * ux + uy * vx + uz * wx) -
80 (ux * ux + uy * uy + uz * uz) +
81 (3 * (ux * ux + vx * vx + wx * wx)) +
82 (ux * ux + vx * uy + wx * uz);
84 strphi(i, j, k, 1) = (ux * uy + uy * vy + uz * wy) -
85 (ux * vx + uy * vy + uz * vz) +
86 (3 * (ux * uy + vx * vy + wx * wy)) +
87 (ux * vx + vx * vy + wx * vz);
89 strphi(i, j, k, 2) = (ux * uz + uy * vz + uz * wz) -
90 (ux * wx + uy * wy + uz * wz) +
91 (3 * (ux * uz + vx * vz + wx * wz)) +
92 (ux * wx + vx * wy + wx * wz);
94 strphi(i, j, k, 3) = (vx * ux + vy * vx + vz * wx) -
95 (vx * ux + vy * uy + vz * uz) +
96 (3 * (uy * ux + vy * vx + wy * wx)) +
97 (uy * ux + vy * uy + wy * uz);
99 strphi(i, j, k, 4) = (vx * uy + vy * vy + vz * wy) -
100 (vx * vx + vy * vy + vz * vz) +
101 (3 * (uy * vx + vy * vy + wy * wy)) +
102 (uy * vx + vy * vy + wy * vz);
104 strphi(i, j, k, 5) = (vx * uz + vy * vz + vz * wz) -
105 (vx * wx + vy * wy + vz * wz) +
106 (3 * (uy * wx + vy * vz + wy * wz)) +
107 (uy * wx + vy * wy + wy * wz);
109 strphi(i, j, k, 6) = (wx * ux + wy * vx + wz * wx) -
110 (wx * ux + wy * uy + wz * uz) +
111 (3 * (uz * ux + vz * vx + wz * wx)) +
112 (uz * ux + vz * uy + wz * uz);
114 strphi(i, j, k, 7) = (wx * uy + wy * vy + wz * wy) -
115 (wx * vx + wy * vy + wz * vz) +
116 (3 * (uz * uy + vz * vy + wz * wy)) +
117 (uz * vx + vz * vy + wz * vz);
119 strphi(i, j, k, 8) = (wx * uz + wy * vz + wz * wz) -
120 (wx * wx + wy * wy + wz * wz) +
121 (3 * (uz * uz + vz * vz + wz * wz)) +
122 (uz * wx + vz * wy + wz * wz);