32 void apply(
const int lev,
const amrex::MFIter& mfi)
const
34 const int ncomp =
m_phi.num_comp();
35 const auto& geom =
m_phi.repo().mesh().Geom(lev);
36 const auto& filterphi_arr =
m_filterphi(lev).array(mfi);
37 const auto& phi_arr =
m_phi(lev).const_array(mfi);
39 const auto& bx_in = mfi.tilebox();
40 const auto& bx = Stencil::box(bx_in, geom);
46 bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k)
noexcept {
47 for (
int icomp = 0; icomp < ncomp; icomp++) {
48 amrex::Real fp1 = Stencil::f00;
49 amrex::Real f = Stencil::f01;
50 amrex::Real fm1 = Stencil::f02;
51 const amrex::Real filx =
52 (fp1 * phi_arr(i + 1, j, k, icomp) +
53 f * phi_arr(i, j, k, icomp) +
54 fm1 * phi_arr(i - 1, j, k, icomp));
59 const amrex::Real fily =
60 (fp1 * phi_arr(i, j + 1, k, icomp) +
61 f * phi_arr(i, j, k, icomp) +
62 fm1 * phi_arr(i, j - 1, k, icomp));
67 const amrex::Real filz =
68 (fp1 * phi_arr(i, j, k + 1, icomp) +
69 f * phi_arr(i, j, k, icomp) +
70 fm1 * phi_arr(i, j, k - 1, icomp));
71 filterphi_arr(i, j, k, icomp) =
72 1.0_rt / 3.0_rt * (filx + fily + filz);