27 const auto& geom =
m_phi.repo().mesh().Geom(lev);
28 const auto& idx = geom.InvCellSizeArray();
29 const auto dlo = geom.Domain().smallEnd();
30 const auto dhi = geom.Domain().bigEnd();
31 const int ncomp =
m_phi.num_comp();
34 auto const& in_arrs =
m_phi(lev).const_arrays();
35 auto const& out_arrs = out_mf.arrays();
38 out_mf, amrex::IntVect(0),
39 [=] AMREX_GPU_DEVICE(
int nbx,
int i,
int j,
int k) {
40 if (!Stencil::applies_to(i, j, k, dlo, dhi)) {
43 auto const& phi = in_arrs[nbx];
44 auto const& curphi = out_arrs[nbx];
45 for (
int n = 0; n < ncomp; ++n) {
46 const amrex::Real phixx =
47 (Stencil::s00 * phi(i + 1, j, k, n) +
48 Stencil::s01 * phi(i, j, k, n) +
49 Stencil::s02 * phi(i - 1, j, k, n)) *
51 const amrex::Real phiyy =
52 (Stencil::s10 * phi(i, j + 1, k, n) +
53 Stencil::s11 * phi(i, j, k, n) +
54 Stencil::s12 * phi(i, j - 1, k, n)) *
56 const amrex::Real phizz =
57 (Stencil::s20 * phi(i, j, k + 1, n) +
58 Stencil::s21 * phi(i, j, k, n) +
59 Stencil::s22 * phi(i, j, k - 1, n)) *
61 const amrex::Real phiz =
62 (Stencil::c20 * phi(i, j, k + 1, n) +
63 Stencil::c21 * phi(i, j, k, n) +
64 Stencil::c22 * phi(i, j, k - 1, n)) *
66 const amrex::Real phiz_ip1 =
67 (Stencil::c20 * phi(i + 1, j, k + 1, n) +
68 Stencil::c21 * phi(i + 1, j, k, n) +
69 Stencil::c22 * phi(i + 1, j, k - 1, n)) *
71 const amrex::Real phiz_im1 =
72 (Stencil::c20 * phi(i - 1, j, k + 1, n) +
73 Stencil::c21 * phi(i - 1, j, k, n) +
74 Stencil::c22 * phi(i - 1, j, k - 1, n)) *
76 const amrex::Real phiz_jp1 =
77 (Stencil::c20 * phi(i, j + 1, k + 1, n) +
78 Stencil::c21 * phi(i, j + 1, k, n) +
79 Stencil::c22 * phi(i, j + 1, k - 1, n)) *
81 const amrex::Real phiz_jm1 =
82 (Stencil::c20 * phi(i, j - 1, k + 1, n) +
83 Stencil::c21 * phi(i, j - 1, k, n) +
84 Stencil::c22 * phi(i, j - 1, k - 1, n)) *
86 const amrex::Real phiy =
87 (Stencil::c10 * phi(i, j + 1, k, n) +
88 Stencil::c11 * phi(i, j, k, n) +
89 Stencil::c12 * phi(i, j - 1, k, n)) *
91 const amrex::Real phiy_ip1 =
92 (Stencil::c10 * phi(i + 1, j + 1, k, n) +
93 Stencil::c11 * phi(i + 1, j, k, n) +
94 Stencil::c12 * phi(i + 1, j - 1, k, n)) *
96 const amrex::Real phiy_im1 =
97 (Stencil::c10 * phi(i - 1, j + 1, k, n) +
98 Stencil::c11 * phi(i - 1, j, k, n) +
99 Stencil::c12 * phi(i - 1, j - 1, k, n)) *
101 const amrex::Real phiyz =
102 (Stencil::c10 * phiz_jp1 + Stencil::c11 * phiz +
103 Stencil::c12 * phiz_jm1) *
105 const amrex::Real phix =
106 (Stencil::c00 * phi(i + 1, j, k, n) +
107 Stencil::c01 * phi(i, j, k, n) +
108 Stencil::c02 * phi(i - 1, j, k, n)) *
110 const amrex::Real phixy =
111 (Stencil::c00 * phiy_ip1 + Stencil::c01 * phiy +
112 Stencil::c02 * phiy_im1) *
114 const amrex::Real phixz =
115 (Stencil::c00 * phiz_ip1 + Stencil::c01 * phiz +
116 Stencil::c02 * phiz_im1) *
119 -((phix * phix * phiyy) -
120 (2.0_rt * phix * phiy * phixy) +
121 (phiy * phiy * phixx) + (phix * phix * phizz) -
122 (2.0_rt * phix * phiz * phixz) +
123 (phiz * phiz * phixx) + (phiy * phiy * phizz) -
124 (2.0_rt * phiy * phiz * phiyz) +
125 (phiz * phiz * phiyy)) /
127 (phix * phix) + (phiy * phiy) + (phiz * phiz),