25 void apply(
const int lev,
const amrex::MFIter& mfi)
const
27 const auto& geom =
m_phi.repo().mesh().Geom(lev);
28 const auto& idx = geom.InvCellSizeArray();
29 const auto& curphi =
m_curphi(lev).array(mfi);
30 const auto& phi =
m_phi(lev).const_array(mfi);
32 const auto& bx_in = mfi.tilebox();
33 const auto& bx = Stencil::box(bx_in, geom);
40 [=] AMREX_GPU_DEVICE(
int i,
int j,
int k,
int n) {
41 amrex::Real cp1, c, cm1;
42 amrex::Real sp1, s, sm1;
47 const amrex::Real phixx =
48 (sp1 * phi(i + 1, j, k, n) + s * phi(i, j, k, n) +
49 sm1 * phi(i - 1, j, k, n)) *
55 const amrex::Real phiyy =
56 (sp1 * phi(i, j + 1, k, n) + s * phi(i, j, k, n) +
57 sm1 * phi(i, j - 1, k, n)) *
63 const amrex::Real phizz =
64 (sp1 * phi(i, j, k + 1, n) + s * phi(i, j, k, n) +
65 sm1 * phi(i, j, k - 1, n)) *
71 const amrex::Real phiz =
72 (cp1 * phi(i, j, k + 1, n) + c * phi(i, j, k, n) +
73 cm1 * phi(i, j, k - 1, n)) *
75 const amrex::Real phiz_ip1 =
76 (cp1 * phi(i + 1, j, k + 1, n) + c * phi(i + 1, j, k, n) +
77 cm1 * phi(i + 1, j, k - 1, n)) *
79 const amrex::Real phiz_im1 =
80 (cp1 * phi(i - 1, j, k + 1, n) + c * phi(i - 1, j, k, n) +
81 cm1 * phi(i - 1, j, k - 1, n)) *
83 const amrex::Real phiz_jp1 =
84 (cp1 * phi(i, j + 1, k + 1, n) + c * phi(i, j + 1, k, n) +
85 cm1 * phi(i, j + 1, k - 1, n)) *
87 const amrex::Real phiz_jm1 =
88 (cp1 * phi(i, j - 1, k + 1, n) + c * phi(i, j - 1, k, n) +
89 cm1 * phi(i, j - 1, k - 1, n)) *
95 const amrex::Real phiy =
96 (cp1 * phi(i, j + 1, k, n) + c * phi(i, j, k, n) +
97 cm1 * phi(i, j - 1, k, n)) *
99 const amrex::Real phiy_ip1 =
100 (cp1 * phi(i + 1, j + 1, k, n) + c * phi(i + 1, j, k, n) +
101 cm1 * phi(i + 1, j - 1, k, n)) *
103 const amrex::Real phiy_im1 =
104 (cp1 * phi(i - 1, j + 1, k, n) + c * phi(i - 1, j, k, n) +
105 cm1 * phi(i - 1, j - 1, k, n)) *
107 const amrex::Real phiyz =
108 (cp1 * phiz_jp1 + c * phiz + cm1 * phiz_jm1) * idx[1];
113 const amrex::Real phix =
114 (cp1 * phi(i + 1, j, k, n) + c * phi(i, j, k, n) +
115 cm1 * phi(i - 1, j, k, n)) *
117 const amrex::Real phixy =
118 (cp1 * phiy_ip1 + c * phiy + cm1 * phiy_im1) * idx[0];
119 const amrex::Real phixz =
120 (cp1 * phiz_ip1 + c * phiz + cm1 * phiz_im1) * idx[0];
123 -((phix * phix * phiyy) - (2.0_rt * phix * phiy * phixy) +
124 (phiy * phiy * phixx) + (phix * phix * phizz) -
125 (2.0_rt * phix * phiz * phixz) + (phiz * phiz * phixx) +
126 (phiy * phiy * phizz) - (2.0_rt * phiy * phiz * phiyz) +
127 (phiz * phiz * phiyy)) /
129 (phix * phix) + (phiy * phiy) + (phiz * phiz), 1.5_rt);