31 const auto& geom =
m_phi.repo().mesh().Geom(lev);
32 const auto& idx = geom.InvCellSizeArray();
33 const auto dlo = geom.Domain().smallEnd();
34 const auto dhi = geom.Domain().bigEnd();
36 auto& out_mf =
m_vort(lev);
37 auto const& in_arrs =
m_phi(lev).const_arrays();
38 auto const& out_arrs = out_mf.arrays();
41 out_mf, amrex::IntVect(0),
42 [=] AMREX_GPU_DEVICE(
int nbx,
int i,
int j,
int k) {
43 if (!Stencil::applies_to(i, j, k, dlo, dhi)) {
46 auto const& phi = in_arrs[nbx];
47 auto const& vort = out_arrs[nbx];
48 const amrex::Real vx = ((Stencil::c00 * phi(i + 1, j, k, 1)) +
49 (Stencil::c01 * phi(i, j, k, 1)) +
50 (Stencil::c02 * phi(i - 1, j, k, 1))) *
52 const amrex::Real wx = ((Stencil::c00 * phi(i + 1, j, k, 2)) +
53 (Stencil::c01 * phi(i, j, k, 2)) +
54 (Stencil::c02 * phi(i - 1, j, k, 2))) *
56 const amrex::Real uy = ((Stencil::c10 * phi(i, j + 1, k, 0)) +
57 (Stencil::c11 * phi(i, j, k, 0)) +
58 (Stencil::c12 * phi(i, j - 1, k, 0))) *
60 const amrex::Real wy = ((Stencil::c10 * phi(i, j + 1, k, 2)) +
61 (Stencil::c11 * phi(i, j, k, 2)) +
62 (Stencil::c12 * phi(i, j - 1, k, 2))) *
64 const amrex::Real uz = ((Stencil::c20 * phi(i, j, k + 1, 0)) +
65 (Stencil::c21 * phi(i, j, k, 0)) +
66 (Stencil::c22 * phi(i, j, k - 1, 0))) *
68 const amrex::Real vz = ((Stencil::c20 * phi(i, j, k + 1, 1)) +
69 (Stencil::c21 * phi(i, j, k, 1)) +
70 (Stencil::c22 * phi(i, j, k - 1, 1))) *
72 vort(i, j, k, 0) = wy - vz;
73 vort(i, j, k, 1) = uz - wx;
74 vort(i, j, k, 2) = vx - uy;