3 #ifndef ERF_DIFFUSION_H_
4 #define ERF_DIFFUSION_H_
7 #include "AMReX_MultiFab.H"
8 #include "AMReX_BCRec.H"
18 const amrex::Array4< amrex::Real>& rho_u_rhs,
19 const amrex::Array4< amrex::Real>& rho_v_rhs,
20 const amrex::Array4< amrex::Real>& rho_w_rhs,
21 const amrex::Array4<const amrex::Real>&
tau11 ,
22 const amrex::Array4<const amrex::Real>&
tau22 ,
23 const amrex::Array4<const amrex::Real>&
tau33 ,
24 const amrex::Array4<const amrex::Real>&
tau12 ,
const amrex::Array4<const amrex::Real>&
tau21,
25 const amrex::Array4<const amrex::Real>&
tau13 ,
const amrex::Array4<const amrex::Real>&
tau31,
26 const amrex::Array4<const amrex::Real>&
tau23 ,
const amrex::Array4<const amrex::Real>&
tau32,
27 const amrex::Array4<const amrex::Real>& detJ_arr ,
28 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
29 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
30 const amrex::Array4<const amrex::Real>& mf_mx ,
31 const amrex::Array4<const amrex::Real>& mf_ux ,
32 const amrex::Array4<const amrex::Real>& mf_vx ,
33 const amrex::Array4<const amrex::Real>& mf_my ,
34 const amrex::Array4<const amrex::Real>& mf_uy ,
35 const amrex::Array4<const amrex::Real>& mf_vy ,
36 const bool use_stretched_dz,
const bool use_variable_dz);
40 [[maybe_unused]]
const amrex::Box& domain,
41 const amrex::Box& bxx,
const amrex::Box& bxy,
const amrex::Box& bxz,
42 const amrex::Array4< amrex::Real>& rho_u_rhs,
43 const amrex::Array4< amrex::Real>& rho_v_rhs,
44 const amrex::Array4< amrex::Real>& rho_w_rhs,
45 const amrex::Array4<const amrex::Real>& u_arr ,
46 const amrex::Array4<const amrex::Real>& v_arr ,
47 const amrex::Array4<const amrex::Real>& w_arr ,
48 const amrex::Array4<const amrex::Real>&
tau11 ,
49 const amrex::Array4<const amrex::Real>&
tau22 ,
50 const amrex::Array4<const amrex::Real>&
tau33 ,
51 const amrex::Array4<const amrex::Real>&
tau12 ,
52 const amrex::Array4<const amrex::Real>&
tau13 ,
53 const amrex::Array4<const amrex::Real>&
tau23 ,
54 const amrex::Array4<const amrex::Real>& u_tau_eb13 ,
55 const amrex::Array4<const amrex::Real>& u_tau_eb23 ,
56 const amrex::Array4<const amrex::Real>& v_tau_eb13 ,
57 const amrex::Array4<const amrex::Real>& v_tau_eb23 ,
58 const amrex::Array4<const amrex::Real>& w_tau_eb13 ,
59 const amrex::Array4<const amrex::Real>& w_tau_eb23 ,
61 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
62 const amrex::Array4<const amrex::Real>& mf_mx ,
63 const amrex::Array4<const amrex::Real>& mf_ux ,
64 const amrex::Array4<const amrex::Real>& mf_vx ,
65 const amrex::Array4<const amrex::Real>& mf_my ,
66 const amrex::Array4<const amrex::Real>& mf_uy ,
67 const amrex::Array4<const amrex::Real>& mf_vy ,
70 [[maybe_unused]]
const amrex::BCRec* bc_ptr);
94 int start_comp,
int num_comp,
95 const amrex::Array4<const amrex::Real>& u,
96 const amrex::Array4<const amrex::Real>& v,
97 const amrex::Array4<const amrex::Real>& cell_data,
98 const amrex::Array4<const amrex::Real>& cell_prim,
99 const amrex::Array4<amrex::Real>& cell_rhs,
100 const amrex::Array4<amrex::Real>& xflux,
101 const amrex::Array4<amrex::Real>& yflux,
102 const amrex::Array4<amrex::Real>& zflux,
103 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
104 const amrex::Array4<const amrex::Real>& mf_mx,
105 const amrex::Array4<const amrex::Real>& mf_ux,
106 const amrex::Array4<const amrex::Real>& mf_vx,
107 const amrex::Array4<const amrex::Real>& mf_my,
108 const amrex::Array4<const amrex::Real>& mf_uy,
109 const amrex::Array4<const amrex::Real>& mf_vy,
110 amrex::Array4< amrex::Real>& hfx_x,
111 amrex::Array4< amrex::Real>& hfx_y,
112 amrex::Array4< amrex::Real>& hfx_z,
113 amrex::Array4< amrex::Real>& qfx1_x,
114 amrex::Array4< amrex::Real>& qfx1_y,
115 amrex::Array4< amrex::Real>& qfx1_z,
116 amrex::Array4< amrex::Real>& qfx2_z,
117 const amrex::Array4<const amrex::Real>& mu_turb,
120 const amrex::BCRec* bc_ptr,
121 const bool use_SurfLayer,
122 const amrex::Vector<std::unique_ptr<SurfaceLayer>>& SurfLayer,
125 const amrex::Array4<const amrex::Real>& wall_face33 = amrex::Array4<const amrex::Real>{},
126 const amrex::Array4<const amrex::Real>& wall_hfx = amrex::Array4<const amrex::Real>{});
130 int start_comp,
int num_comp,
131 const amrex::Array4<const amrex::Real>& cell_data,
132 const amrex::Array4<const amrex::Real>& cell_prim,
133 const amrex::Array4<amrex::Real>& cell_rhs,
134 const amrex::Array4<amrex::Real>& xflux,
135 const amrex::Array4<amrex::Real>& yflux,
136 const amrex::Array4<amrex::Real>& zflux,
137 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
138 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
139 const amrex::Array4<const amrex::Real>& mf_mx,
140 const amrex::Array4<const amrex::Real>& mf_ux,
141 const amrex::Array4<const amrex::Real>& mf_vx,
142 const amrex::Array4<const amrex::Real>& mf_my,
143 const amrex::Array4<const amrex::Real>& mf_uy,
144 const amrex::Array4<const amrex::Real>& mf_vy,
145 amrex::Array4< amrex::Real>& hfx_x,
146 amrex::Array4< amrex::Real>& hfx_y,
147 amrex::Array4< amrex::Real>& hfx_z,
148 amrex::Array4< amrex::Real>& qfx1_x,
149 amrex::Array4< amrex::Real>& qfx1_y,
150 amrex::Array4< amrex::Real>& qfx1_z,
151 amrex::Array4< amrex::Real>& qfx2_z,
152 const amrex::Array4<const amrex::Real>& mu_turb,
155 const amrex::BCRec* bc_ptr,
156 const bool use_SurfLayer,
157 const amrex::Vector<std::unique_ptr<SurfaceLayer>>& SurfLayer,
163 int start_comp,
int num_comp,
165 const amrex::Array4<const amrex::Real>& cell_data,
166 const amrex::Array4<const amrex::Real>& cell_prim,
167 const amrex::Array4<amrex::Real>& cell_rhs,
168 const amrex::Array4<amrex::Real>& xflux,
169 const amrex::Array4<amrex::Real>& yflux,
170 const amrex::Array4<amrex::Real>& zflux,
171 const amrex::Array4<const amrex::Real>& z_nd,
172 const amrex::Array4<const amrex::Real>& z_cc,
173 const amrex::Array4<const amrex::Real>& ax,
174 const amrex::Array4<const amrex::Real>& ay,
175 const amrex::Array4<const amrex::Real>& az,
176 const amrex::Array4<const amrex::Real>& detJ,
177 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
178 const amrex::Array4<const amrex::Real>& mf_mx,
179 const amrex::Array4<const amrex::Real>& mf_ux,
180 const amrex::Array4<const amrex::Real>& mf_vx,
181 const amrex::Array4<const amrex::Real>& mf_my,
182 const amrex::Array4<const amrex::Real>& mf_uy,
183 const amrex::Array4<const amrex::Real>& mf_vy,
184 amrex::Array4< amrex::Real>& hfx_x,
185 amrex::Array4< amrex::Real>& hfx_y,
186 amrex::Array4< amrex::Real>& hfx_z,
187 amrex::Array4< amrex::Real>& qfx1_x,
188 amrex::Array4< amrex::Real>& qfx1_y,
189 amrex::Array4< amrex::Real>& qfx1_z,
190 amrex::Array4< amrex::Real>& qfx2_z,
191 const amrex::Array4<const amrex::Real>& mu_turb,
194 const amrex::BCRec* bc_ptr,
195 const amrex::BCRec* bc_ptr_h,
196 const bool use_SurfLayer,
197 const amrex::Vector<std::unique_ptr<SurfaceLayer>>& SurfLayer,
203 const int level,
const int n,
const amrex::Real implicit_fac,
204 const amrex::Array4<const amrex::Real>& cell_data,
205 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
206 const amrex::Array4<const amrex::Real>& mu_turb,
208 const amrex::Array4<const amrex::Real>& mf_mx,
209 const amrex::Array4<const amrex::Real>& mf_my,
210 const bool use_mrf_countergradient,
211 const amrex::Array4< amrex::Real>& zflux);
215 const int level,
const int n,
const amrex::Real implicit_fac,
216 const amrex::Array4<const amrex::Real>& cell_data,
217 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
218 const amrex::Array4<const amrex::Real>& mu_turb,
220 const amrex::Array4<const amrex::Real>& mf_mx,
221 const amrex::Array4<const amrex::Real>& mf_my,
222 const bool use_mrf_countergradient,
223 const amrex::Array4< amrex::Real>& zflux);
227 const int level,
const int n,
const amrex::Real implicit_fac,
228 const amrex::Array4<const amrex::Real>& cell_data,
229 const amrex::Array4<const amrex::Real>& z_nd,
230 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
231 const amrex::Array4<const amrex::Real>& mu_turb,
233 const amrex::Array4<const amrex::Real>& mf_mx,
234 const amrex::Array4<const amrex::Real>& mf_my,
235 const bool implicit_metric,
236 const bool use_mrf_countergradient,
237 const amrex::Array4< amrex::Real>& zflux);
241 int start_comp,
int num_comp,
242 const amrex::Array4<const amrex::Real>& u,
243 const amrex::Array4<const amrex::Real>& v,
244 const amrex::Array4<const amrex::Real>& cell_data,
245 const amrex::Array4<const amrex::Real>& cell_prim,
246 const amrex::Array4<amrex::Real>& cell_rhs,
247 const amrex::Array4<amrex::Real>& xflux,
248 const amrex::Array4<amrex::Real>& yflux,
249 const amrex::Array4<amrex::Real>& zflux,
250 const amrex::Array4<const amrex::EBCellFlag>& cfg_arr,
251 const amrex::Array4<const amrex::Real>& ax_arr,
252 const amrex::Array4<const amrex::Real>& ay_arr,
253 const amrex::Array4<const amrex::Real>& az_arr,
254 const amrex::Array4<const amrex::Real>& detJ,
255 const amrex::Array4<const amrex::Real>& barea_arr,
256 const amrex::Array4<const amrex::Real>& bcent_arr,
258 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
259 amrex::Array4< amrex::Real>& hfx_z,
260 amrex::Array4< amrex::Real>& qfx1_z,
261 amrex::Array4< amrex::Real>& qfx2_z,
262 amrex::Array4< amrex::Real>& hfx_EB,
263 const amrex::Array4<const amrex::Real>& mu_turb,
266 const amrex::BCRec* bc_ptr,
267 const bool use_SurfLayer,
268 const amrex::Vector<std::unique_ptr<SurfaceLayer>>& SurfLayer);
276 const amrex::Array4<const amrex::Real>& cell_data,
277 amrex::Array4<amrex::Real>&
tau11,
278 amrex::Array4<amrex::Real>&
tau22,
279 amrex::Array4<amrex::Real>&
tau33,
280 amrex::Array4<amrex::Real>&
tau12,
281 amrex::Array4<amrex::Real>&
tau13,
282 amrex::Array4<amrex::Real>&
tau23,
283 const amrex::Array4<const amrex::Real>& er_arr,
284 amrex::Array4<const amrex::Real>& vfrac,
285 amrex::Array4<amrex::Real>& tau13i,
286 amrex::Array4<amrex::Real>& tau23i);
294 const amrex::Array4<const amrex::Real>& cell_data,
295 amrex::Array4<amrex::Real>&
tau11,
296 amrex::Array4<amrex::Real>&
tau22,
297 amrex::Array4<amrex::Real>&
tau33,
298 amrex::Array4<amrex::Real>&
tau12,
299 amrex::Array4<amrex::Real>&
tau13,
300 amrex::Array4<amrex::Real>&
tau23,
301 const amrex::Array4<const amrex::Real>& er_arr,
302 amrex::Array4<amrex::Real>& tau13i,
303 amrex::Array4<amrex::Real>& tau23i);
311 const amrex::Array4<const amrex::Real>& cell_data,
312 amrex::Array4<amrex::Real>&
tau11,
313 amrex::Array4<amrex::Real>&
tau22,
314 amrex::Array4<amrex::Real>&
tau33,
315 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
316 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
317 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
318 const amrex::Array4<const amrex::Real>& er_arr,
319 const amrex::Array4<const amrex::Real>& mf_mx,
320 const amrex::Array4<const amrex::Real>& mf_ux,
321 const amrex::Array4<const amrex::Real>& mf_vx,
322 const amrex::Array4<const amrex::Real>& mf_my,
323 const amrex::Array4<const amrex::Real>& mf_uy,
324 const amrex::Array4<const amrex::Real>& mf_vy,
325 amrex::Array4<amrex::Real>& tau13i,
326 amrex::Array4<amrex::Real>& tau23i);
334 const amrex::Array4<const amrex::Real>& cell_data,
335 amrex::Array4<amrex::Real>&
tau11,
336 amrex::Array4<amrex::Real>&
tau22,
337 amrex::Array4<amrex::Real>&
tau33,
338 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
339 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
340 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
341 const amrex::Array4<const amrex::Real>& er_arr,
342 const amrex::Array4<const amrex::Real>& z_nd,
343 const amrex::Array4<const amrex::Real>& detJ,
344 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
345 const amrex::Array4<const amrex::Real>& mf_mx,
346 const amrex::Array4<const amrex::Real>& mf_ux,
347 const amrex::Array4<const amrex::Real>& mf_vx,
348 const amrex::Array4<const amrex::Real>& mf_my,
349 const amrex::Array4<const amrex::Real>& mf_uy,
350 const amrex::Array4<const amrex::Real>& mf_vy,
351 amrex::Array4<amrex::Real>& tau13i,
352 amrex::Array4<amrex::Real>& tau23i,
353 const bool implicit_metric);
361 const amrex::Array4<const amrex::Real>& mu_turb,
362 const amrex::Array4<const amrex::Real>& cell_data,
363 amrex::Array4<amrex::Real>&
tau11,
364 amrex::Array4<amrex::Real>&
tau22,
365 amrex::Array4<amrex::Real>&
tau33,
366 amrex::Array4<amrex::Real>&
tau12,
367 amrex::Array4<amrex::Real>&
tau13,
368 amrex::Array4<amrex::Real>&
tau23,
369 const amrex::Array4<const amrex::Real>& er_arr,
370 amrex::Array4<const amrex::Real>& vfrac,
371 amrex::Array4<amrex::Real>& tau13i,
372 amrex::Array4<amrex::Real>& tau23i);
380 const amrex::Array4<const amrex::Real>& mu_turb,
381 const amrex::Array4<const amrex::Real>& cell_data,
382 amrex::Array4<amrex::Real>&
tau11,
383 amrex::Array4<amrex::Real>&
tau22,
384 amrex::Array4<amrex::Real>&
tau33,
385 amrex::Array4<amrex::Real>&
tau12,
386 amrex::Array4<amrex::Real>&
tau13,
387 amrex::Array4<amrex::Real>&
tau23,
388 const amrex::Array4<const amrex::Real>& er_arr,
389 amrex::Array4<amrex::Real>& tau13i,
390 amrex::Array4<amrex::Real>& tau23i);
398 const amrex::Array4<const amrex::Real>& mu_turb,
399 const amrex::Array4<const amrex::Real>& cell_data,
400 amrex::Array4<amrex::Real>&
tau11,
401 amrex::Array4<amrex::Real>&
tau22,
402 amrex::Array4<amrex::Real>&
tau33,
403 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
404 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
405 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
406 const amrex::Array4<const amrex::Real>& er_arr,
407 const amrex::Array4<const amrex::Real>& mf_mx,
408 const amrex::Array4<const amrex::Real>& mf_ux,
409 const amrex::Array4<const amrex::Real>& mf_vx,
410 const amrex::Array4<const amrex::Real>& mf_my,
411 const amrex::Array4<const amrex::Real>& mf_uy,
412 const amrex::Array4<const amrex::Real>& mf_vy,
413 amrex::Array4<amrex::Real>& tau13i,
414 amrex::Array4<amrex::Real>& tau23i);
422 const amrex::Array4<const amrex::Real>& mu_turb,
423 const amrex::Array4<const amrex::Real>& cell_data,
424 amrex::Array4<amrex::Real>&
tau11,
425 amrex::Array4<amrex::Real>&
tau22,
426 amrex::Array4<amrex::Real>&
tau33,
427 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
428 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
429 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
430 const amrex::Array4<const amrex::Real>& er_arr,
431 const amrex::Array4<const amrex::Real>& z_nd,
432 const amrex::Array4<const amrex::Real>& detJ,
433 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
434 const amrex::Array4<const amrex::Real>& mf_mx,
435 const amrex::Array4<const amrex::Real>& mf_ux,
436 const amrex::Array4<const amrex::Real>& mf_vx,
437 const amrex::Array4<const amrex::Real>& mf_my,
438 const amrex::Array4<const amrex::Real>& mf_uy,
439 const amrex::Array4<const amrex::Real>& mf_vy,
440 amrex::Array4<amrex::Real>& tau13i,
441 amrex::Array4<amrex::Real>& tau23i,
442 const bool implicit_metric);
446 amrex::Box bxcc, amrex::Box tbxxy,
447 amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain,
448 const amrex::Array4<const amrex::Real>& u,
449 const amrex::Array4<const amrex::Real>& v,
450 const amrex::Array4<const amrex::Real>&
w,
451 amrex::Array4<amrex::Real>&
tau11,
452 amrex::Array4<amrex::Real>&
tau22,
453 amrex::Array4<amrex::Real>&
tau33,
454 amrex::Array4<amrex::Real>&
tau12,
455 amrex::Array4<amrex::Real>&
tau13,
456 amrex::Array4<amrex::Real>&
tau23,
457 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
458 const amrex::BCRec* bc_ptr,
460 amrex::Array4<amrex::Real>& tau13i,
461 amrex::Array4<amrex::Real>& tau23i);
465 amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain,
466 const amrex::Array4<const amrex::Real>& u,
467 const amrex::Array4<const amrex::Real>& v,
468 const amrex::Array4<const amrex::Real>&
w,
469 amrex::Array4<amrex::Real>&
tau11,
470 amrex::Array4<amrex::Real>&
tau22,
471 amrex::Array4<amrex::Real>&
tau33,
472 amrex::Array4<amrex::Real>&
tau12,
473 amrex::Array4<amrex::Real>&
tau13,
474 amrex::Array4<amrex::Real>&
tau23,
475 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
476 const amrex::Array4<const amrex::Real>& mf_mx,
477 const amrex::Array4<const amrex::Real>& mf_ux,
478 const amrex::Array4<const amrex::Real>& mf_vx,
479 const amrex::Array4<const amrex::Real>& mf_my,
480 const amrex::Array4<const amrex::Real>& mf_uy,
481 const amrex::Array4<const amrex::Real>& mf_vy,
482 const amrex::BCRec* bc_ptr,
483 amrex::Array4<amrex::Real>& tau13i,
484 amrex::Array4<amrex::Real>& tau23i);
488 amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain,
489 const amrex::Array4<const amrex::Real>& u,
490 const amrex::Array4<const amrex::Real>& v,
491 const amrex::Array4<const amrex::Real>&
w,
492 amrex::Array4<amrex::Real>&
tau11,
493 amrex::Array4<amrex::Real>&
tau22,
494 amrex::Array4<amrex::Real>&
tau33,
495 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
496 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
497 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
498 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
499 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
500 const amrex::Array4<const amrex::Real>& mf_mx,
501 const amrex::Array4<const amrex::Real>& mf_ux,
502 const amrex::Array4<const amrex::Real>& mf_vx,
503 const amrex::Array4<const amrex::Real>& mf_my,
504 const amrex::Array4<const amrex::Real>& mf_uy,
505 const amrex::Array4<const amrex::Real>& mf_vy,
506 const amrex::BCRec* bc_ptr,
507 amrex::Array4<amrex::Real>& tau13i,
508 amrex::Array4<amrex::Real>& tau23i);
512 amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain,
513 const amrex::Array4<const amrex::Real>& u,
514 const amrex::Array4<const amrex::Real>& v,
515 const amrex::Array4<const amrex::Real>&
w,
516 amrex::Array4<amrex::Real>&
tau11,
517 amrex::Array4<amrex::Real>&
tau22,
518 amrex::Array4<amrex::Real>&
tau33,
519 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
520 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
521 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
522 const amrex::Array4<const amrex::Real>& z_nd,
523 const amrex::Array4<const amrex::Real>& detJ,
524 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
525 const amrex::Array4<const amrex::Real>& mf_mx,
526 const amrex::Array4<const amrex::Real>& mf_ux,
527 const amrex::Array4<const amrex::Real>& mf_vx,
528 const amrex::Array4<const amrex::Real>& mf_my,
529 const amrex::Array4<const amrex::Real>& mf_uy,
530 const amrex::Array4<const amrex::Real>& mf_vy,
531 const amrex::BCRec* bc_ptr,
532 amrex::Array4<amrex::Real>& tau13i,
533 amrex::Array4<amrex::Real>& tau23i);
537 const amrex::Box& domain,
541 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM*2>& bc_neumann_vals,
542 const amrex::Array4< amrex::Real>& cell_data,
543 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
544 const amrex::Array4<const amrex::Real>& hfx_z,
545 const amrex::Array4<const amrex::Real>& mu_turb,
547 const amrex::BCRec* bc_ptr,
548 const bool use_SurfLayer,
550 const bool use_mrf_countergradient =
false,
551 const amrex::Array4<const amrex::Real>& wall_face = amrex::Array4<const amrex::Real>{},
552 const amrex::Array4<const amrex::Real>& wall_pin = amrex::Array4<const amrex::Real>{});
556 const amrex::Box& domain,
560 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM*2>& bc_neumann_vals,
561 const amrex::Array4< amrex::Real>& cell_data,
562 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
563 const amrex::Array4<const amrex::Real>& hfx_z,
564 const amrex::Array4<const amrex::Real>& mu_turb,
566 const amrex::BCRec* bc_ptr,
567 const bool use_SurfLayer,
569 const bool use_mrf_countergradient =
false);
573 const amrex::Box& domain,
577 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM*2>& bc_neumann_vals,
578 const amrex::Array4< amrex::Real>& cell_data,
579 const amrex::Array4<const amrex::Real>& z_nd,
580 const amrex::Array4<const amrex::Real>& detJ,
581 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
582 const amrex::Array4<const amrex::Real>& hfx_z,
583 const amrex::Array4<const amrex::Real>& mu_turb,
585 const amrex::BCRec* bc_ptr,
586 const bool use_SurfLayer,
588 const bool use_mrf_countergradient =
false,
589 const amrex::Array4<const amrex::Real>& mf_mx = {},
590 const amrex::Array4<const amrex::Real>& mf_my = {},
591 const bool implicit_metric =
false);
600 template <
int stagdir>
602 const amrex::Box& domain,
605 const amrex::Array4<const int >& col_kext,
606 const amrex::Array4<const amrex::Real>& cell_data,
607 const amrex::Array4< amrex::Real>& face_data,
608 const amrex::Array4<const amrex::Real>& tau,
609 const amrex::Array4<const amrex::Real>& tau_corr,
610 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
611 const amrex::Array4<const amrex::Real>& mu_turb,
613 const amrex::BCRec* bc_ptr,
614 const bool use_SurfLayer,
616 const bool use_ysu_mom_countergradient,
617 const amrex::Array4<const amrex::Real>& wall_face = amrex::Array4<const amrex::Real>{});
620 template <
int stagdir>
622 const amrex::Box& domain,
625 const amrex::Array4<const int >& col_kext,
626 const amrex::Array4<const amrex::Real>& cell_data,
627 const amrex::Array4< amrex::Real>& face_data,
628 const amrex::Array4<const amrex::Real>& tau,
629 const amrex::Array4<const amrex::Real>& tau_corr,
630 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
631 const amrex::Array4<const amrex::Real>& mu_turb,
633 const amrex::BCRec* bc_ptr,
634 const bool use_SurfLayer,
636 const bool use_ysu_mom_countergradient);
639 template <
int stagdir>
641 const amrex::Box& domain,
644 const amrex::Array4<const int >& col_kext,
645 const amrex::Array4<const amrex::Real>& cell_data,
646 const amrex::Array4< amrex::Real>& face_data,
647 const amrex::Array4<const amrex::Real>& tau,
648 const amrex::Array4<const amrex::Real>& tau_corr,
649 const amrex::Array4<const amrex::Real>& z_nd,
650 const amrex::Array4<const amrex::Real>& detJ,
651 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
652 const amrex::Array4<const amrex::Real>& mu_turb,
654 const amrex::BCRec* bc_ptr,
655 const bool use_SurfLayer,
657 const bool use_ysu_mom_countergradient,
658 const amrex::Array4<const amrex::Real>& mf_x,
659 const amrex::Array4<const amrex::Real>& mf_y,
660 const bool implicit_metric);
@ tau12
Definition: ERF_DataStruct.H:49
@ tau23
Definition: ERF_DataStruct.H:49
@ tau33
Definition: ERF_DataStruct.H:49
@ tau22
Definition: ERF_DataStruct.H:49
@ tau11
Definition: ERF_DataStruct.H:49
@ tau32
Definition: ERF_DataStruct.H:49
@ tau31
Definition: ERF_DataStruct.H:49
@ tau21
Definition: ERF_DataStruct.H:49
@ tau13
Definition: ERF_DataStruct.H:49
void ImplicitDiffForMomLU_N(const amrex::Box &bx, const amrex::Box &domain, const int level, const double dt, const amrex::Array4< const int > &col_kext, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< amrex::Real > &face_data, const amrex::Array4< const amrex::Real > &tau, const amrex::Array4< const amrex::Real > &tau_corr, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Real implicit_fac, const bool use_ysu_mom_countergradient, const amrex::Array4< const amrex::Real > &wall_face=amrex::Array4< const amrex::Real >{})
Apply implicit vertical momentum diffusion on a uniform grid without terrain.
void ComputeStressVarVisc_S(amrex::Box bxcc, amrex::Box tbxxy, amrex::Box tbxxz, amrex::Box tbxyz, amrex::Real mu_eff, const amrex::Array4< const amrex::Real > &mu_turb, const amrex::Array4< const amrex::Real > &cell_data, amrex::Array4< amrex::Real > &tau11, amrex::Array4< amrex::Real > &tau22, amrex::Array4< amrex::Real > &tau33, amrex::Array4< amrex::Real > &tau12, amrex::Array4< amrex::Real > &tau21, amrex::Array4< amrex::Real > &tau13, amrex::Array4< amrex::Real > &tau31, amrex::Array4< amrex::Real > &tau23, amrex::Array4< amrex::Real > &tau32, const amrex::Array4< const amrex::Real > &er_arr, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, amrex::Array4< amrex::Real > &tau13i, amrex::Array4< amrex::Real > &tau23i)
Compute stress components for variable viscosity on a vertically stretched grid.
void ImplicitVerticalFluxForReflux_T(const amrex::Box &bx, const amrex::Box &domain, const int level, const int n, const amrex::Real implicit_fac, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_my, const bool implicit_metric, const bool use_mrf_countergradient, const amrex::Array4< amrex::Real > &zflux)
As ImplicitVerticalFluxForReflux_N, on a terrain-following mesh.
void DiffusionSrcForMom(const amrex::Box &bxx, const amrex::Box &bxy, const amrex::Box &bxz, const amrex::Array4< amrex::Real > &rho_u_rhs, const amrex::Array4< amrex::Real > &rho_v_rhs, const amrex::Array4< amrex::Real > &rho_w_rhs, const amrex::Array4< const amrex::Real > &tau11, const amrex::Array4< const amrex::Real > &tau22, const amrex::Array4< const amrex::Real > &tau33, const amrex::Array4< const amrex::Real > &tau12, const amrex::Array4< const amrex::Real > &tau21, const amrex::Array4< const amrex::Real > &tau13, const amrex::Array4< const amrex::Real > &tau31, const amrex::Array4< const amrex::Real > &tau23, const amrex::Array4< const amrex::Real > &tau32, const amrex::Array4< const amrex::Real > &detJ_arr, const amrex::Gpu::DeviceVector< amrex::Real > &stretched_dz_d, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, const bool use_stretched_dz, const bool use_variable_dz)
Add stress-divergence diffusion source terms to the momentum RHS.
void DiffusionSrcForState_S(const amrex::Box &bx, const amrex::Box &domain, int start_comp, int num_comp, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &cell_prim, const amrex::Array4< amrex::Real > &cell_rhs, const amrex::Array4< amrex::Real > &xflux, const amrex::Array4< amrex::Real > &yflux, const amrex::Array4< amrex::Real > &zflux, const amrex::Gpu::DeviceVector< amrex::Real > &stretched_dz_d, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, amrex::Array4< amrex::Real > &hfx_x, amrex::Array4< amrex::Real > &hfx_y, amrex::Array4< amrex::Real > &hfx_z, amrex::Array4< amrex::Real > &qfx1_x, amrex::Array4< amrex::Real > &qfx1_y, amrex::Array4< amrex::Real > &qfx1_z, amrex::Array4< amrex::Real > &qfx2_z, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const int level, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Vector< std::unique_ptr< SurfaceLayer >> &SurfLayer, const amrex::Real implicit_fac, const ScalarDiffusionRefluxViews *reflux_flx=nullptr)
Native adapter for regular scalar diffusion on a vertically stretched grid.
void ImplicitVerticalFluxForReflux_N(const amrex::Box &bx, const amrex::Box &domain, const int level, const int n, const amrex::Real implicit_fac, const amrex::Array4< const amrex::Real > &cell_data, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_my, const bool use_mrf_countergradient, const amrex::Array4< amrex::Real > &zflux)
The implicit part of the vertical diffusive flux of one component, for refluxing (flat mesh).
void ImplicitDiffForStateLU_N(const amrex::Box &bx, const amrex::Box &domain, const int level, const int n, const double dt, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM *2 > &bc_neumann_vals, const amrex::Array4< amrex::Real > &cell_data, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &hfx_z, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Real implicit_fac, const bool use_mrf_countergradient=false, const amrex::Array4< const amrex::Real > &wall_face=amrex::Array4< const amrex::Real >{}, const amrex::Array4< const amrex::Real > &wall_pin=amrex::Array4< const amrex::Real >{})
Apply implicit vertical state diffusion on a uniform grid without terrain.
void DiffusionSrcForState_EB(const amrex::Box &bx, const amrex::Box &domain, int start_comp, int num_comp, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &cell_prim, const amrex::Array4< amrex::Real > &cell_rhs, const amrex::Array4< amrex::Real > &xflux, const amrex::Array4< amrex::Real > &yflux, const amrex::Array4< amrex::Real > &zflux, const amrex::Array4< const amrex::EBCellFlag > &cfg_arr, const amrex::Array4< const amrex::Real > &ax_arr, const amrex::Array4< const amrex::Real > &ay_arr, const amrex::Array4< const amrex::Real > &az_arr, const amrex::Array4< const amrex::Real > &detJ, const amrex::Array4< const amrex::Real > &barea_arr, const amrex::Array4< const amrex::Real > &bcent_arr, const amrex::Real *dx_arr, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, amrex::Array4< amrex::Real > &hfx_z, amrex::Array4< amrex::Real > &qfx1_z, amrex::Array4< amrex::Real > &qfx2_z, amrex::Array4< amrex::Real > &hfx_EB, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const int level, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Vector< std::unique_ptr< SurfaceLayer >> &SurfLayer)
Add state diffusion source terms for embedded-boundary cells.
void ComputeStressConsVisc_N(amrex::Box bxcc, amrex::Box tbxxy, amrex::Box tbxxz, amrex::Box tbxyz, amrex::Real mu_eff, const amrex::Array4< const amrex::Real > &cell_data, amrex::Array4< amrex::Real > &tau11, amrex::Array4< amrex::Real > &tau22, amrex::Array4< amrex::Real > &tau33, amrex::Array4< amrex::Real > &tau12, amrex::Array4< amrex::Real > &tau13, amrex::Array4< amrex::Real > &tau23, const amrex::Array4< const amrex::Real > &er_arr, amrex::Array4< amrex::Real > &tau13i, amrex::Array4< amrex::Real > &tau23i)
Compute stress components for constant viscosity on a uniform grid without terrain.
void ComputeStrain_EB(const amrex::MFIter &mfi, amrex::Box bxcc, amrex::Box tbxxy, amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, amrex::Array4< amrex::Real > &tau11, amrex::Array4< amrex::Real > &tau22, amrex::Array4< amrex::Real > &tau33, amrex::Array4< amrex::Real > &tau12, amrex::Array4< amrex::Real > &tau13, amrex::Array4< amrex::Real > &tau23, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::BCRec *bc_ptr, const eb_ &ebfact, amrex::Array4< amrex::Real > &tau13i, amrex::Array4< amrex::Real > &tau23i)
Compute embedded-boundary strain-rate components.
void ComputeStrain_T(amrex::Box bxcc, amrex::Box tbxxy, amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, amrex::Array4< amrex::Real > &tau11, amrex::Array4< amrex::Real > &tau22, amrex::Array4< amrex::Real > &tau33, amrex::Array4< amrex::Real > &tau12, amrex::Array4< amrex::Real > &tau21, amrex::Array4< amrex::Real > &tau13, amrex::Array4< amrex::Real > &tau31, amrex::Array4< amrex::Real > &tau23, amrex::Array4< amrex::Real > &tau32, const amrex::Array4< const amrex::Real > &z_nd, const amrex::Array4< const amrex::Real > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, const amrex::BCRec *bc_ptr, amrex::Array4< amrex::Real > &tau13i, amrex::Array4< amrex::Real > &tau23i)
Compute strain-rate components on terrain-following coordinates.
void ComputeStressConsVisc_EB(amrex::Box bxcc, amrex::Box tbxxy, amrex::Box tbxxz, amrex::Box tbxyz, amrex::Real mu_eff, const amrex::Array4< const amrex::Real > &cell_data, amrex::Array4< amrex::Real > &tau11, amrex::Array4< amrex::Real > &tau22, amrex::Array4< amrex::Real > &tau33, amrex::Array4< amrex::Real > &tau12, amrex::Array4< amrex::Real > &tau13, amrex::Array4< amrex::Real > &tau23, const amrex::Array4< const amrex::Real > &er_arr, amrex::Array4< const amrex::Real > &vfrac, amrex::Array4< amrex::Real > &tau13i, amrex::Array4< amrex::Real > &tau23i)
Compute embedded-boundary stress components for constant viscosity.
void ComputeStressVarVisc_EB(amrex::Box bxcc, amrex::Box tbxxy, amrex::Box tbxxz, amrex::Box tbxyz, amrex::Real mu_eff, const amrex::Array4< const amrex::Real > &mu_turb, const amrex::Array4< const amrex::Real > &cell_data, amrex::Array4< amrex::Real > &tau11, amrex::Array4< amrex::Real > &tau22, amrex::Array4< amrex::Real > &tau33, amrex::Array4< amrex::Real > &tau12, amrex::Array4< amrex::Real > &tau13, amrex::Array4< amrex::Real > &tau23, const amrex::Array4< const amrex::Real > &er_arr, amrex::Array4< const amrex::Real > &vfrac, amrex::Array4< amrex::Real > &tau13i, amrex::Array4< amrex::Real > &tau23i)
Compute embedded-boundary stress components for variable viscosity.
void ComputeStressVarVisc_T(amrex::Box bxcc, amrex::Box tbxxy, amrex::Box tbxxz, amrex::Box tbxyz, amrex::Real mu_eff, const amrex::Array4< const amrex::Real > &mu_turb, const amrex::Array4< const amrex::Real > &cell_data, amrex::Array4< amrex::Real > &tau11, amrex::Array4< amrex::Real > &tau22, amrex::Array4< amrex::Real > &tau33, amrex::Array4< amrex::Real > &tau12, amrex::Array4< amrex::Real > &tau21, amrex::Array4< amrex::Real > &tau13, amrex::Array4< amrex::Real > &tau31, amrex::Array4< amrex::Real > &tau23, amrex::Array4< amrex::Real > &tau32, const amrex::Array4< const amrex::Real > &er_arr, const amrex::Array4< const amrex::Real > &z_nd, const amrex::Array4< const amrex::Real > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, amrex::Array4< amrex::Real > &tau13i, amrex::Array4< amrex::Real > &tau23i, const bool implicit_metric)
Compute stress components for variable viscosity on terrain-following coordinates.
void ImplicitDiffForMomLU_S(const amrex::Box &bx, const amrex::Box &domain, const int level, const double dt, const amrex::Array4< const int > &col_kext, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< amrex::Real > &face_data, const amrex::Array4< const amrex::Real > &tau, const amrex::Array4< const amrex::Real > &tau_corr, const amrex::Gpu::DeviceVector< amrex::Real > &stretched_dz_d, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Real implicit_fac, const bool use_ysu_mom_countergradient)
Apply implicit vertical momentum diffusion on a vertically stretched grid.
void ComputeStrain_N(amrex::Box bxcc, amrex::Box tbxxy, amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, amrex::Array4< amrex::Real > &tau11, amrex::Array4< amrex::Real > &tau22, amrex::Array4< amrex::Real > &tau33, amrex::Array4< amrex::Real > &tau12, amrex::Array4< amrex::Real > &tau13, amrex::Array4< amrex::Real > &tau23, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, const amrex::BCRec *bc_ptr, amrex::Array4< amrex::Real > &tau13i, amrex::Array4< amrex::Real > &tau23i)
Compute strain-rate components on a uniform grid without terrain.
void ComputeStressConsVisc_T(amrex::Box bxcc, amrex::Box tbxxy, amrex::Box tbxxz, amrex::Box tbxyz, amrex::Real mu_eff, const amrex::Array4< const amrex::Real > &cell_data, amrex::Array4< amrex::Real > &tau11, amrex::Array4< amrex::Real > &tau22, amrex::Array4< amrex::Real > &tau33, amrex::Array4< amrex::Real > &tau12, amrex::Array4< amrex::Real > &tau21, amrex::Array4< amrex::Real > &tau13, amrex::Array4< amrex::Real > &tau31, amrex::Array4< amrex::Real > &tau23, amrex::Array4< amrex::Real > &tau32, const amrex::Array4< const amrex::Real > &er_arr, const amrex::Array4< const amrex::Real > &z_nd, const amrex::Array4< const amrex::Real > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, amrex::Array4< amrex::Real > &tau13i, amrex::Array4< amrex::Real > &tau23i, const bool implicit_metric)
Compute stress components for constant viscosity on terrain-following coordinates.
void DiffusionSrcForState_N(const amrex::Box &bx, const amrex::Box &domain, int start_comp, int num_comp, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &cell_prim, const amrex::Array4< amrex::Real > &cell_rhs, const amrex::Array4< amrex::Real > &xflux, const amrex::Array4< amrex::Real > &yflux, const amrex::Array4< amrex::Real > &zflux, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, amrex::Array4< amrex::Real > &hfx_x, amrex::Array4< amrex::Real > &hfx_y, amrex::Array4< amrex::Real > &hfx_z, amrex::Array4< amrex::Real > &qfx1_x, amrex::Array4< amrex::Real > &qfx1_y, amrex::Array4< amrex::Real > &qfx1_z, amrex::Array4< amrex::Real > &qfx2_z, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const int level, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Vector< std::unique_ptr< SurfaceLayer >> &SurfLayer, const amrex::Real implicit_fac, const ScalarDiffusionRefluxViews *reflux_flx=nullptr, const amrex::Array4< const amrex::Real > &wall_face33=amrex::Array4< const amrex::Real >{}, const amrex::Array4< const amrex::Real > &wall_hfx=amrex::Array4< const amrex::Real >{})
Add regular-grid state diffusion on a uniform grid without terrain.
void ImplicitDiffForStateLU_T(const amrex::Box &bx, const amrex::Box &domain, const int level, const int n, const double dt, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM *2 > &bc_neumann_vals, const amrex::Array4< amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &z_nd, const amrex::Array4< const amrex::Real > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &hfx_z, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Real implicit_fac, const bool use_mrf_countergradient=false, const amrex::Array4< const amrex::Real > &mf_mx={}, const amrex::Array4< const amrex::Real > &mf_my={}, const bool implicit_metric=false)
Apply implicit vertical state diffusion on terrain-following coordinates.
void ImplicitDiffForMomLU_T(const amrex::Box &bx, const amrex::Box &domain, const int level, const double dt, const amrex::Array4< const int > &col_kext, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< amrex::Real > &face_data, const amrex::Array4< const amrex::Real > &tau, const amrex::Array4< const amrex::Real > &tau_corr, const amrex::Array4< const amrex::Real > &z_nd, const amrex::Array4< const amrex::Real > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Real implicit_fac, const bool use_ysu_mom_countergradient, const amrex::Array4< const amrex::Real > &mf_x, const amrex::Array4< const amrex::Real > &mf_y, const bool implicit_metric)
Apply implicit vertical momentum diffusion on terrain-following coordinates.
void ImplicitVerticalFluxForReflux_S(const amrex::Box &bx, const amrex::Box &domain, const int level, const int n, const amrex::Real implicit_fac, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Gpu::DeviceVector< amrex::Real > &stretched_dz_d, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_my, const bool use_mrf_countergradient, const amrex::Array4< amrex::Real > &zflux)
As ImplicitVerticalFluxForReflux_N, on a vertically stretched mesh.
void DiffusionSrcForState_T(const amrex::Box &bx, const amrex::Box &domain, int start_comp, int num_comp, const bool &rotate, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &cell_prim, const amrex::Array4< amrex::Real > &cell_rhs, const amrex::Array4< amrex::Real > &xflux, const amrex::Array4< amrex::Real > &yflux, const amrex::Array4< amrex::Real > &zflux, const amrex::Array4< const amrex::Real > &z_nd, const amrex::Array4< const amrex::Real > &z_cc, const amrex::Array4< const amrex::Real > &ax, const amrex::Array4< const amrex::Real > &ay, const amrex::Array4< const amrex::Real > &az, const amrex::Array4< const amrex::Real > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, amrex::Array4< amrex::Real > &hfx_x, amrex::Array4< amrex::Real > &hfx_y, amrex::Array4< amrex::Real > &hfx_z, amrex::Array4< amrex::Real > &qfx1_x, amrex::Array4< amrex::Real > &qfx1_y, amrex::Array4< amrex::Real > &qfx1_z, amrex::Array4< amrex::Real > &qfx2_z, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const int level, const amrex::BCRec *bc_ptr, const amrex::BCRec *bc_ptr_h, const bool use_SurfLayer, const amrex::Vector< std::unique_ptr< SurfaceLayer >> &SurfLayer, const amrex::Real implicit_fac, const ScalarDiffusionRefluxViews *reflux_flx=nullptr)
Native adapter for regular scalar diffusion on terrain-following coordinates.
void DiffusionSrcForMom_EB(const amrex::MFIter &mfi, [[maybe_unused]] const amrex::Box &domain, const amrex::Box &bxx, const amrex::Box &bxy, const amrex::Box &bxz, const amrex::Array4< amrex::Real > &rho_u_rhs, const amrex::Array4< amrex::Real > &rho_v_rhs, const amrex::Array4< amrex::Real > &rho_w_rhs, const amrex::Array4< const amrex::Real > &u_arr, const amrex::Array4< const amrex::Real > &v_arr, const amrex::Array4< const amrex::Real > &w_arr, const amrex::Array4< const amrex::Real > &tau11, const amrex::Array4< const amrex::Real > &tau22, const amrex::Array4< const amrex::Real > &tau33, const amrex::Array4< const amrex::Real > &tau12, const amrex::Array4< const amrex::Real > &tau13, const amrex::Array4< const amrex::Real > &tau23, const amrex::Array4< const amrex::Real > &u_tau_eb13, const amrex::Array4< const amrex::Real > &u_tau_eb23, const amrex::Array4< const amrex::Real > &v_tau_eb13, const amrex::Array4< const amrex::Real > &v_tau_eb23, const amrex::Array4< const amrex::Real > &w_tau_eb13, const amrex::Array4< const amrex::Real > &w_tau_eb23, const amrex::Real *dx_arr, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, const SolverChoice &solverChoice, const eb_ &ebfact, [[maybe_unused]] const amrex::BCRec *bc_ptr)
Add embedded-boundary stress-divergence diffusion source terms to the momentum RHS.
void ComputeStressConsVisc_S(amrex::Box bxcc, amrex::Box tbxxy, amrex::Box tbxxz, amrex::Box tbxyz, amrex::Real mu_eff, const amrex::Array4< const amrex::Real > &cell_data, amrex::Array4< amrex::Real > &tau11, amrex::Array4< amrex::Real > &tau22, amrex::Array4< amrex::Real > &tau33, amrex::Array4< amrex::Real > &tau12, amrex::Array4< amrex::Real > &tau21, amrex::Array4< amrex::Real > &tau13, amrex::Array4< amrex::Real > &tau31, amrex::Array4< amrex::Real > &tau23, amrex::Array4< amrex::Real > &tau32, const amrex::Array4< const amrex::Real > &er_arr, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, amrex::Array4< amrex::Real > &tau13i, amrex::Array4< amrex::Real > &tau23i)
Compute stress components for constant viscosity on a vertically stretched grid.
void ComputeStressVarVisc_N(amrex::Box bxcc, amrex::Box tbxxy, amrex::Box tbxxz, amrex::Box tbxyz, amrex::Real mu_eff, const amrex::Array4< const amrex::Real > &mu_turb, const amrex::Array4< const amrex::Real > &cell_data, amrex::Array4< amrex::Real > &tau11, amrex::Array4< amrex::Real > &tau22, amrex::Array4< amrex::Real > &tau33, amrex::Array4< amrex::Real > &tau12, amrex::Array4< amrex::Real > &tau13, amrex::Array4< amrex::Real > &tau23, const amrex::Array4< const amrex::Real > &er_arr, amrex::Array4< amrex::Real > &tau13i, amrex::Array4< amrex::Real > &tau23i)
Compute stress components for variable viscosity on a uniform grid without terrain.
void ImplicitDiffForStateLU_S(const amrex::Box &bx, const amrex::Box &domain, const int level, const int n, const double dt, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM *2 > &bc_neumann_vals, const amrex::Array4< amrex::Real > &cell_data, const amrex::Gpu::DeviceVector< amrex::Real > &stretched_dz_d, const amrex::Array4< const amrex::Real > &hfx_z, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Real implicit_fac, const bool use_mrf_countergradient=false)
Apply implicit vertical state diffusion on a vertically stretched grid.
void ComputeStrain_S(amrex::Box bxcc, amrex::Box tbxxy, amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, amrex::Array4< amrex::Real > &tau11, amrex::Array4< amrex::Real > &tau22, amrex::Array4< amrex::Real > &tau33, amrex::Array4< amrex::Real > &tau12, amrex::Array4< amrex::Real > &tau21, amrex::Array4< amrex::Real > &tau13, amrex::Array4< amrex::Real > &tau31, amrex::Array4< amrex::Real > &tau23, amrex::Array4< amrex::Real > &tau32, const amrex::Gpu::DeviceVector< amrex::Real > &stretched_dz_d, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, const amrex::BCRec *bc_ptr, amrex::Array4< amrex::Real > &tau13i, amrex::Array4< amrex::Real > &tau23i)
Compute strain-rate components on a vertically stretched grid.
Declares the embedded-boundary factory manager used by ERF levels.
amrex::GpuArray< Real, AMREX_SPACEDIM > dxInv
Definition: ERF_InitCustomPertVels_ParticleTests.H:17
Real w
Definition: ERF_Plotfile2DInterpolator.cpp:23
amrex::GpuArray< const amrex::Array4< amrex::Real >, AMREX_SPACEDIM > ScalarDiffusionRefluxViews
Definition: ERF_ScalarDiffusion.H:1581
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Owns and exposes cell-centered and face-centered EB factories.
Definition: ERF_EB.H:26
Definition: ERF_DataStruct.H:715