24 const auto& geom =
m_phi.repo().mesh().Geom(lev);
25 const auto& idx = geom.InvCellSizeArray();
26 const auto dlo = geom.Domain().smallEnd();
27 const auto dhi = geom.Domain().bigEnd();
29 auto& out_mf =
m_vort(lev);
30 auto const& in_arrs =
m_phi(lev).const_arrays();
31 auto const& out_arrs = out_mf.arrays();
34 out_mf, amrex::IntVect(0),
35 [=] AMREX_GPU_DEVICE(
int nbx,
int i,
int j,
int k) {
36 if (!Stencil::applies_to(i, j, k, dlo, dhi)) {
39 auto const& phi = in_arrs[nbx];
40 auto const& vort = out_arrs[nbx];
41 const amrex::Real vx = (Stencil::c00 * phi(i + 1, j, k, 1) +
42 Stencil::c01 * phi(i, j, k, 1) +
43 Stencil::c02 * phi(i - 1, j, k, 1)) *
45 const amrex::Real wx = (Stencil::c00 * phi(i + 1, j, k, 2) +
46 Stencil::c01 * phi(i, j, k, 2) +
47 Stencil::c02 * phi(i - 1, j, k, 2)) *
49 const amrex::Real uy = (Stencil::c10 * phi(i, j + 1, k, 0) +
50 Stencil::c11 * phi(i, j, k, 0) +
51 Stencil::c12 * phi(i, j - 1, k, 0)) *
53 const amrex::Real wy = (Stencil::c10 * phi(i, j + 1, k, 2) +
54 Stencil::c11 * phi(i, j, k, 2) +
55 Stencil::c12 * phi(i, j - 1, k, 2)) *
57 const amrex::Real uz = (Stencil::c20 * phi(i, j, k + 1, 0) +
58 Stencil::c21 * phi(i, j, k, 0) +
59 Stencil::c22 * phi(i, j, k - 1, 0)) *
61 const amrex::Real vz = (Stencil::c20 * phi(i, j, k + 1, 1) +
62 Stencil::c21 * phi(i, j, k, 1) +
63 Stencil::c22 * phi(i, j, k - 1, 1)) *
65 vort(i, j, k, 0) = wy - vz;
66 vort(i, j, k, 1) = uz - wx;
67 vort(i, j, k, 2) = vx - uy;