20amrex::Real AMREX_GPU_DEVICE AMREX_FORCE_INLINE
alpha_flux(
25 const amrex::Real margin,
26 amrex::Array4<amrex::Real const>
const& vof,
27 amrex::Array4<amrex::Real const>
const& tg_vof,
28 amrex::Array4<amrex::Real const>
const& normal)
31 const amrex::IntVect iv{i, j, k};
32 const amrex::IntVect dv{(int)(dir == 0), (int)(dir == 1), (int)(dir == 2)};
33 const amrex::IntVect ivm = iv - dv;
36 const amrex::Real gphi = (vof(iv) - vof(ivm));
38 const amrex::Real norm_ = std::abs(normal(iv, dir));
39 const amrex::Real norm_nb = std::abs(normal(ivm, dir));
43 const amrex::Real dphi_ = (vof(iv) - tg_vof(iv)) * norm_;
44 const amrex::Real dphi_nb = (tg_vof(ivm) - vof(ivm)) * norm_nb;
46 amrex::Real dphi_eval = 0.5_rt * (dphi_ + dphi_nb);
50 if ((std::abs(vof(iv) - 0.5_rt) > margin ||
51 std::abs(vof(ivm) - 0.5_rt) > margin)) {
53 dphi_eval = (vof(ivm) < 0.5_rt && vof(iv) <= 0.5_rt + margin)
56 dphi_eval = (vof(ivm) >= 0.5_rt - margin && vof(iv) > 0.5_rt)
61 dphi_eval = (vof(iv) < 0.5_rt && vof(ivm) <= 0.5_rt + margin)
64 dphi_eval = (vof(iv) >= 0.5_rt - margin && vof(ivm) > 0.5_rt)
77 amrex::Array4<amrex::Real const>
const& vof,
78 amrex::Array4<amrex::Real const>
const& velocity,
84 const amrex::IntVect iv{i, j, k};
85 const amrex::IntVect dv{(int)(dir == 0), (int)(dir == 1), (int)(dir == 2)};
86 const amrex::IntVect ivm = iv - dv;
89 const amrex::Real gphi = (vof(iv) - vof(ivm));
92 const amrex::Real u_ = velocity(iv, 0);
93 const amrex::Real v_ = velocity(iv, 1);
94 const amrex::Real w_ = velocity(iv, 2);
95 const amrex::Real u_nb = velocity(ivm, 0);
96 const amrex::Real v_nb = velocity(ivm, 1);
97 const amrex::Real w_nb = velocity(ivm, 2);
99 uface = 0.5_rt * (u_ + u_nb);
100 vface = 0.5_rt * (v_ + v_nb);
101 wface = 0.5_rt * (w_ + w_nb);
120 amrex::Array4<amrex::Real const>
const& vof,
121 amrex::Array4<amrex::Real const>
const& gp,
122 amrex::Array4<amrex::Real const>
const& rho,
128 const amrex::IntVect iv{i, j, k};
129 const amrex::IntVect dv{(int)(dir == 0), (int)(dir == 1), (int)(dir == 2)};
130 const amrex::IntVect ivm = iv - dv;
133 const amrex::Real gphi = (vof(iv) - vof(ivm));
136 const amrex::Real u_ = gp(iv, 0) / rho(iv);
137 const amrex::Real v_ = gp(iv, 1) / rho(iv);
138 const amrex::Real w_ = gp(iv, 2) / rho(iv);
139 const amrex::Real u_nb = gp(ivm, 0) / rho(ivm);
140 const amrex::Real v_nb = gp(ivm, 1) / rho(ivm);
141 const amrex::Real w_nb = gp(ivm, 2) / rho(ivm);
143 uface = 0.5_rt * (u_ + u_nb);
144 vface = 0.5_rt * (v_ + v_nb);
145 wface = 0.5_rt * (w_ + w_nb);
163 amrex::Array4<amrex::Real const>
const& fx,
164 amrex::Array4<amrex::Real const>
const& fy,
165 amrex::Array4<amrex::Real const>
const& fz,
166 const amrex::Real tiny)
169 const amrex::Real avg_fx = fx(i, j, k, 8) + fx(i, j, k - 1, 8) +
170 fx(i, j - 1, k, 8) + fx(i, j - 1, k - 1, 8) +
172 const amrex::Real avg_fy = fy(i, j, k, 8) + fy(i - 1, j, k, 8) +
173 fy(i, j, k - 1, 8) + fy(i - 1, j, k - 1, 8) +
175 const amrex::Real avg_fz = fz(i, j, k, 8) + fz(i - 1, j, k, 8) +
176 fz(i, j - 1, k, 8) + fz(i - 1, j - 1, k, 8) +
181 f_otimes_gradp.xx() = (fx(i, j, k, 5) + fx(i, j, k - 1, 5) +
182 fx(i, j - 1, k, 5) + fx(i, j - 1, k - 1, 5)) /
184 f_otimes_gradp.xy() = (fx(i, j, k, 6) + fx(i, j, k - 1, 6) +
185 fx(i, j - 1, k, 6) + fx(i, j - 1, k - 1, 6)) /
187 f_otimes_gradp.xz() = (fx(i, j, k, 7) + fx(i, j, k - 1, 7) +
188 fx(i, j - 1, k, 7) + fx(i, j - 1, k - 1, 7)) /
190 f_otimes_gradp.yx() = (fy(i, j, k, 5) + fy(i - 1, j, k, 5) +
191 fy(i, j, k - 1, 5) + fy(i - 1, j, k - 1, 5)) /
193 f_otimes_gradp.yy() = (fy(i, j, k, 6) + fy(i - 1, j, k, 6) +
194 fy(i, j, k - 1, 6) + fy(i - 1, j, k - 1, 6)) /
196 f_otimes_gradp.yz() = (fy(i, j, k, 7) + fy(i - 1, j, k, 7) +
197 fy(i, j, k - 1, 7) + fy(i - 1, j, k - 1, 7)) /
199 f_otimes_gradp.zx() = (fz(i, j, k, 5) + fz(i - 1, j, k, 5) +
200 fz(i, j - 1, k, 5) + fz(i - 1, j - 1, k, 5)) /
202 f_otimes_gradp.zy() = (fz(i, j, k, 6) + fz(i - 1, j, k, 6) +
203 fz(i, j - 1, k, 6) + fz(i - 1, j - 1, k, 6)) /
205 f_otimes_gradp.zz() = (fz(i, j, k, 7) + fz(i - 1, j, k, 7) +
206 fz(i, j - 1, k, 7) + fz(i - 1, j - 1, k, 7)) /
209 return f_otimes_gradp;
216 amrex::Array4<amrex::Real const>
const& fx,
217 amrex::Array4<amrex::Real const>
const& fy,
218 amrex::Array4<amrex::Real const>
const& fz,
219 amrex::Array4<amrex::Real const>
const& vof,
220 const amrex::Real tiny)
223 const amrex::Real avg_fx = fx(i, j, k, 8) + fx(i, j, k - 1, 8) +
224 fx(i, j - 1, k, 8) + fx(i, j - 1, k - 1, 8) +
226 const amrex::Real avg_fy = fy(i, j, k, 8) + fy(i - 1, j, k, 8) +
227 fy(i, j, k - 1, 8) + fy(i - 1, j, k - 1, 8) +
229 const amrex::Real avg_fz = fz(i, j, k, 8) + fz(i - 1, j, k, 8) +
230 fz(i, j - 1, k, 8) + fz(i - 1, j - 1, k, 8) +
236 ((vof(i, j, k) - vof(i - 1, j, k)) * fx(i, j, k, 8) +
237 (vof(i, j - 1, k) - vof(i - 1, j - 1, k)) * fx(i, j - 1, k, 8) +
238 (vof(i, j, k - 1) - vof(i - 1, j, k - 1)) * fx(i, j, k - 1, 8) +
239 (vof(i, j - 1, k - 1) - vof(i - 1, j - 1, k - 1)) *
240 fx(i, j - 1, k - 1, 8)) /
243 ((vof(i, j, k) - vof(i, j - 1, k)) * fy(i, j, k, 8) +
244 (vof(i - 1, j, k) - vof(i - 1, j - 1, k)) * fy(i - 1, j, k, 8) +
245 (vof(i, j, k - 1) - vof(i, j - 1, k - 1)) * fy(i, j, k - 1, 8) +
246 (vof(i - 1, j, k - 1) - vof(i - 1, j - 1, k - 1)) *
247 fy(i - 1, j, k - 1, 8)) /
250 ((vof(i, j, k) - vof(i, j, k - 1)) * fz(i, j, k, 8) +
251 (vof(i - 1, j, k) - vof(i - 1, j, k - 1)) * fz(i - 1, j, k, 8) +
252 (vof(i, j - 1, k) - vof(i, j - 1, k - 1)) * fz(i, j - 1, k, 8) +
253 (vof(i - 1, j - 1, k) - vof(i - 1, j - 1, k - 1)) *
254 fz(i - 1, j - 1, k, 8)) /
262 n_tensor.rows(n_zeta, n_zeta, n_zeta);
263 n_tensor_T.cols(n_zeta, n_zeta, n_zeta);
267 n_tensor.x() * n_tensor_T.x(), n_tensor.y() * n_tensor_T.y(),
268 n_tensor.z() * n_tensor_T.z());