34 const auto& geom =
m_phi.repo().mesh().Geom(lev);
35 const auto& idx = geom.InvCellSizeArray();
36 const auto dlo = geom.Domain().smallEnd();
37 const auto dhi = geom.Domain().bigEnd();
40 auto const& in_arrs =
m_phi(lev).const_arrays();
41 auto const& out_arrs = out_mf.arrays();
44 out_mf, amrex::IntVect(0),
45 [=] AMREX_GPU_DEVICE(
int nbx,
int i,
int j,
int k) {
46 if (!Stencil::applies_to(i, j, k, dlo, dhi)) {
49 auto const& phi = in_arrs[nbx];
50 auto const& strphi = out_arrs[nbx];
51 const amrex::Real ux = ((Stencil::c00 * phi(i + 1, j, k, 0)) +
52 (Stencil::c01 * phi(i, j, k, 0)) +
53 (Stencil::c02 * phi(i - 1, j, k, 0))) *
55 const amrex::Real vx = ((Stencil::c00 * phi(i + 1, j, k, 1)) +
56 (Stencil::c01 * phi(i, j, k, 1)) +
57 (Stencil::c02 * phi(i - 1, j, k, 1))) *
59 const amrex::Real wx = ((Stencil::c00 * phi(i + 1, j, k, 2)) +
60 (Stencil::c01 * phi(i, j, k, 2)) +
61 (Stencil::c02 * phi(i - 1, j, k, 2))) *
63 const amrex::Real uy = ((Stencil::c10 * phi(i, j + 1, k, 0)) +
64 (Stencil::c11 * phi(i, j, k, 0)) +
65 (Stencil::c12 * phi(i, j - 1, k, 0))) *
67 const amrex::Real vy = ((Stencil::c10 * phi(i, j + 1, k, 1)) +
68 (Stencil::c11 * phi(i, j, k, 1)) +
69 (Stencil::c12 * phi(i, j - 1, k, 1))) *
71 const amrex::Real wy = ((Stencil::c10 * phi(i, j + 1, k, 2)) +
72 (Stencil::c11 * phi(i, j, k, 2)) +
73 (Stencil::c12 * phi(i, j - 1, k, 2))) *
75 const amrex::Real uz = ((Stencil::c20 * phi(i, j, k + 1, 0)) +
76 (Stencil::c21 * phi(i, j, k, 0)) +
77 (Stencil::c22 * phi(i, j, k - 1, 0))) *
79 const amrex::Real vz = ((Stencil::c20 * phi(i, j, k + 1, 1)) +
80 (Stencil::c21 * phi(i, j, k, 1)) +
81 (Stencil::c22 * phi(i, j, k - 1, 1))) *
83 const amrex::Real wz = ((Stencil::c20 * phi(i, j, k + 1, 2)) +
84 (Stencil::c21 * phi(i, j, k, 2)) +
85 (Stencil::c22 * phi(i, j, k - 1, 2))) *
87 strphi(i, j, k) = std::sqrt(