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,
127 int start_comp,
int num_comp,
128 const amrex::Array4<const amrex::Real>& cell_data,
129 const amrex::Array4<const amrex::Real>& cell_prim,
130 const amrex::Array4<amrex::Real>& cell_rhs,
131 const amrex::Array4<amrex::Real>& xflux,
132 const amrex::Array4<amrex::Real>& yflux,
133 const amrex::Array4<amrex::Real>& zflux,
134 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
135 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
136 const amrex::Array4<const amrex::Real>& mf_mx,
137 const amrex::Array4<const amrex::Real>& mf_ux,
138 const amrex::Array4<const amrex::Real>& mf_vx,
139 const amrex::Array4<const amrex::Real>& mf_my,
140 const amrex::Array4<const amrex::Real>& mf_uy,
141 const amrex::Array4<const amrex::Real>& mf_vy,
142 amrex::Array4< amrex::Real>& hfx_x,
143 amrex::Array4< amrex::Real>& hfx_y,
144 amrex::Array4< amrex::Real>& hfx_z,
145 amrex::Array4< amrex::Real>& qfx1_x,
146 amrex::Array4< amrex::Real>& qfx1_y,
147 amrex::Array4< amrex::Real>& qfx1_z,
148 amrex::Array4< amrex::Real>& qfx2_z,
149 const amrex::Array4<const amrex::Real>& mu_turb,
152 const amrex::BCRec* bc_ptr,
153 const bool use_SurfLayer,
154 const amrex::Vector<std::unique_ptr<SurfaceLayer>>& SurfLayer,
159 int start_comp,
int num_comp,
161 const amrex::Array4<const amrex::Real>& cell_data,
162 const amrex::Array4<const amrex::Real>& cell_prim,
163 const amrex::Array4<amrex::Real>& cell_rhs,
164 const amrex::Array4<amrex::Real>& xflux,
165 const amrex::Array4<amrex::Real>& yflux,
166 const amrex::Array4<amrex::Real>& zflux,
167 const amrex::Array4<const amrex::Real>& z_nd,
168 const amrex::Array4<const amrex::Real>& z_cc,
169 const amrex::Array4<const amrex::Real>& ax,
170 const amrex::Array4<const amrex::Real>& ay,
171 const amrex::Array4<const amrex::Real>& az,
172 const amrex::Array4<const amrex::Real>& detJ,
173 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
174 const amrex::Array4<const amrex::Real>& mf_mx,
175 const amrex::Array4<const amrex::Real>& mf_ux,
176 const amrex::Array4<const amrex::Real>& mf_vx,
177 const amrex::Array4<const amrex::Real>& mf_my,
178 const amrex::Array4<const amrex::Real>& mf_uy,
179 const amrex::Array4<const amrex::Real>& mf_vy,
180 amrex::Array4< amrex::Real>& hfx_x,
181 amrex::Array4< amrex::Real>& hfx_y,
182 amrex::Array4< amrex::Real>& hfx_z,
183 amrex::Array4< amrex::Real>& qfx1_x,
184 amrex::Array4< amrex::Real>& qfx1_y,
185 amrex::Array4< amrex::Real>& qfx1_z,
186 amrex::Array4< amrex::Real>& qfx2_z,
187 const amrex::Array4<const amrex::Real>& mu_turb,
190 const amrex::BCRec* bc_ptr,
191 const bool use_SurfLayer,
192 const amrex::Vector<std::unique_ptr<SurfaceLayer>>& SurfLayer,
197 int start_comp,
int num_comp,
198 const amrex::Array4<const amrex::Real>& u,
199 const amrex::Array4<const amrex::Real>& v,
200 const amrex::Array4<const amrex::Real>& cell_data,
201 const amrex::Array4<const amrex::Real>& cell_prim,
202 const amrex::Array4<amrex::Real>& cell_rhs,
203 const amrex::Array4<amrex::Real>& xflux,
204 const amrex::Array4<amrex::Real>& yflux,
205 const amrex::Array4<amrex::Real>& zflux,
206 const amrex::Array4<const amrex::EBCellFlag>& cfg_arr,
207 const amrex::Array4<const amrex::Real>& ax_arr,
208 const amrex::Array4<const amrex::Real>& ay_arr,
209 const amrex::Array4<const amrex::Real>& az_arr,
210 const amrex::Array4<const amrex::Real>& detJ,
211 const amrex::Array4<const amrex::Real>& barea_arr,
212 const amrex::Array4<const amrex::Real>& bcent_arr,
214 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
215 amrex::Array4< amrex::Real>& hfx_z,
216 amrex::Array4< amrex::Real>& qfx1_z,
217 amrex::Array4< amrex::Real>& qfx2_z,
218 amrex::Array4< amrex::Real>& hfx_EB,
219 const amrex::Array4<const amrex::Real>& mu_turb,
222 const amrex::BCRec* bc_ptr,
223 const bool use_SurfLayer,
224 const amrex::Vector<std::unique_ptr<SurfaceLayer>>& SurfLayer);
232 const amrex::Array4<const amrex::Real>& cell_data,
233 amrex::Array4<amrex::Real>&
tau11,
234 amrex::Array4<amrex::Real>&
tau22,
235 amrex::Array4<amrex::Real>&
tau33,
236 amrex::Array4<amrex::Real>&
tau12,
237 amrex::Array4<amrex::Real>&
tau13,
238 amrex::Array4<amrex::Real>&
tau23,
239 const amrex::Array4<const amrex::Real>& er_arr,
240 amrex::Array4<const amrex::Real>& vfrac,
241 amrex::Array4<amrex::Real>& tau13i,
242 amrex::Array4<amrex::Real>& tau23i,
243 amrex::Array4<amrex::Real>& tau33i);
251 const amrex::Array4<const amrex::Real>& cell_data,
252 amrex::Array4<amrex::Real>&
tau11,
253 amrex::Array4<amrex::Real>&
tau22,
254 amrex::Array4<amrex::Real>&
tau33,
255 amrex::Array4<amrex::Real>&
tau12,
256 amrex::Array4<amrex::Real>&
tau13,
257 amrex::Array4<amrex::Real>&
tau23,
258 const amrex::Array4<const amrex::Real>& er_arr,
259 amrex::Array4<amrex::Real>& tau13i,
260 amrex::Array4<amrex::Real>& tau23i,
261 amrex::Array4<amrex::Real>& tau33i);
269 const amrex::Array4<const amrex::Real>& cell_data,
270 amrex::Array4<amrex::Real>&
tau11,
271 amrex::Array4<amrex::Real>&
tau22,
272 amrex::Array4<amrex::Real>&
tau33,
273 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
274 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
275 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
276 const amrex::Array4<const amrex::Real>& er_arr,
277 const amrex::Array4<const amrex::Real>& mf_mx,
278 const amrex::Array4<const amrex::Real>& mf_ux,
279 const amrex::Array4<const amrex::Real>& mf_vx,
280 const amrex::Array4<const amrex::Real>& mf_my,
281 const amrex::Array4<const amrex::Real>& mf_uy,
282 const amrex::Array4<const amrex::Real>& mf_vy,
283 amrex::Array4<amrex::Real>& tau13i,
284 amrex::Array4<amrex::Real>& tau23i,
285 amrex::Array4<amrex::Real>& tau33i);
293 const amrex::Array4<const amrex::Real>& cell_data,
294 amrex::Array4<amrex::Real>&
tau11,
295 amrex::Array4<amrex::Real>&
tau22,
296 amrex::Array4<amrex::Real>&
tau33,
297 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
298 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
299 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
300 const amrex::Array4<const amrex::Real>& er_arr,
301 const amrex::Array4<const amrex::Real>& z_nd,
302 const amrex::Array4<const amrex::Real>& detJ,
303 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
304 const amrex::Array4<const amrex::Real>& mf_mx,
305 const amrex::Array4<const amrex::Real>& mf_ux,
306 const amrex::Array4<const amrex::Real>& mf_vx,
307 const amrex::Array4<const amrex::Real>& mf_my,
308 const amrex::Array4<const amrex::Real>& mf_uy,
309 const amrex::Array4<const amrex::Real>& mf_vy,
310 amrex::Array4<amrex::Real>& tau13i,
311 amrex::Array4<amrex::Real>& tau23i,
312 amrex::Array4<amrex::Real>& tau33i,
313 const bool implicit_metric);
321 const amrex::Array4<const amrex::Real>& mu_turb,
322 const amrex::Array4<const amrex::Real>& cell_data,
323 amrex::Array4<amrex::Real>&
tau11,
324 amrex::Array4<amrex::Real>&
tau22,
325 amrex::Array4<amrex::Real>&
tau33,
326 amrex::Array4<amrex::Real>&
tau12,
327 amrex::Array4<amrex::Real>&
tau13,
328 amrex::Array4<amrex::Real>&
tau23,
329 const amrex::Array4<const amrex::Real>& er_arr,
330 amrex::Array4<const amrex::Real>& vfrac,
331 amrex::Array4<amrex::Real>& tau13i,
332 amrex::Array4<amrex::Real>& tau23i,
333 amrex::Array4<amrex::Real>& tau33i);
341 const amrex::Array4<const amrex::Real>& mu_turb,
342 const amrex::Array4<const amrex::Real>& cell_data,
343 amrex::Array4<amrex::Real>&
tau11,
344 amrex::Array4<amrex::Real>&
tau22,
345 amrex::Array4<amrex::Real>&
tau33,
346 amrex::Array4<amrex::Real>&
tau12,
347 amrex::Array4<amrex::Real>&
tau13,
348 amrex::Array4<amrex::Real>&
tau23,
349 const amrex::Array4<const amrex::Real>& er_arr,
350 amrex::Array4<amrex::Real>& tau13i,
351 amrex::Array4<amrex::Real>& tau23i,
352 amrex::Array4<amrex::Real>& tau33i);
360 const amrex::Array4<const amrex::Real>& mu_turb,
361 const amrex::Array4<const amrex::Real>& cell_data,
362 amrex::Array4<amrex::Real>&
tau11,
363 amrex::Array4<amrex::Real>&
tau22,
364 amrex::Array4<amrex::Real>&
tau33,
365 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
366 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
367 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
368 const amrex::Array4<const amrex::Real>& er_arr,
369 const amrex::Array4<const amrex::Real>& mf_mx,
370 const amrex::Array4<const amrex::Real>& mf_ux,
371 const amrex::Array4<const amrex::Real>& mf_vx,
372 const amrex::Array4<const amrex::Real>& mf_my,
373 const amrex::Array4<const amrex::Real>& mf_uy,
374 const amrex::Array4<const amrex::Real>& mf_vy,
375 amrex::Array4<amrex::Real>& tau13i,
376 amrex::Array4<amrex::Real>& tau23i,
377 amrex::Array4<amrex::Real>& tau33i);
385 const amrex::Array4<const amrex::Real>& mu_turb,
386 const amrex::Array4<const amrex::Real>& cell_data,
387 amrex::Array4<amrex::Real>&
tau11,
388 amrex::Array4<amrex::Real>&
tau22,
389 amrex::Array4<amrex::Real>&
tau33,
390 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
391 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
392 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
393 const amrex::Array4<const amrex::Real>& er_arr,
394 const amrex::Array4<const amrex::Real>& z_nd,
395 const amrex::Array4<const amrex::Real>& detJ,
396 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
397 const amrex::Array4<const amrex::Real>& mf_mx,
398 const amrex::Array4<const amrex::Real>& mf_ux,
399 const amrex::Array4<const amrex::Real>& mf_vx,
400 const amrex::Array4<const amrex::Real>& mf_my,
401 const amrex::Array4<const amrex::Real>& mf_uy,
402 const amrex::Array4<const amrex::Real>& mf_vy,
403 amrex::Array4<amrex::Real>& tau13i,
404 amrex::Array4<amrex::Real>& tau23i,
405 amrex::Array4<amrex::Real>& tau33i,
406 const bool implicit_metric);
410 amrex::Box bxcc, amrex::Box tbxxy,
411 amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain,
412 const amrex::Array4<const amrex::Real>& u,
413 const amrex::Array4<const amrex::Real>& v,
414 const amrex::Array4<const amrex::Real>&
w,
415 amrex::Array4<amrex::Real>&
tau11,
416 amrex::Array4<amrex::Real>&
tau22,
417 amrex::Array4<amrex::Real>&
tau33,
418 amrex::Array4<amrex::Real>&
tau12,
419 amrex::Array4<amrex::Real>&
tau13,
420 amrex::Array4<amrex::Real>&
tau23,
421 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
422 const amrex::BCRec* bc_ptr,
424 amrex::Array4<amrex::Real>& tau13i,
425 amrex::Array4<amrex::Real>& tau23i);
429 amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain,
430 const amrex::Array4<const amrex::Real>& u,
431 const amrex::Array4<const amrex::Real>& v,
432 const amrex::Array4<const amrex::Real>&
w,
433 amrex::Array4<amrex::Real>&
tau11,
434 amrex::Array4<amrex::Real>&
tau22,
435 amrex::Array4<amrex::Real>&
tau33,
436 amrex::Array4<amrex::Real>&
tau12,
437 amrex::Array4<amrex::Real>&
tau13,
438 amrex::Array4<amrex::Real>&
tau23,
439 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
440 const amrex::Array4<const amrex::Real>& mf_mx,
441 const amrex::Array4<const amrex::Real>& mf_ux,
442 const amrex::Array4<const amrex::Real>& mf_vx,
443 const amrex::Array4<const amrex::Real>& mf_my,
444 const amrex::Array4<const amrex::Real>& mf_uy,
445 const amrex::Array4<const amrex::Real>& mf_vy,
446 const amrex::BCRec* bc_ptr,
447 amrex::Array4<amrex::Real>& tau13i,
448 amrex::Array4<amrex::Real>& tau23i);
452 amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain,
453 const amrex::Array4<const amrex::Real>& u,
454 const amrex::Array4<const amrex::Real>& v,
455 const amrex::Array4<const amrex::Real>&
w,
456 amrex::Array4<amrex::Real>&
tau11,
457 amrex::Array4<amrex::Real>&
tau22,
458 amrex::Array4<amrex::Real>&
tau33,
459 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
460 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
461 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
462 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
463 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
464 const amrex::Array4<const amrex::Real>& mf_mx,
465 const amrex::Array4<const amrex::Real>& mf_ux,
466 const amrex::Array4<const amrex::Real>& mf_vx,
467 const amrex::Array4<const amrex::Real>& mf_my,
468 const amrex::Array4<const amrex::Real>& mf_uy,
469 const amrex::Array4<const amrex::Real>& mf_vy,
470 const amrex::BCRec* bc_ptr,
471 amrex::Array4<amrex::Real>& tau13i,
472 amrex::Array4<amrex::Real>& tau23i);
476 amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain,
477 const amrex::Array4<const amrex::Real>& u,
478 const amrex::Array4<const amrex::Real>& v,
479 const amrex::Array4<const amrex::Real>&
w,
480 amrex::Array4<amrex::Real>&
tau11,
481 amrex::Array4<amrex::Real>&
tau22,
482 amrex::Array4<amrex::Real>&
tau33,
483 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
484 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
485 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
486 const amrex::Array4<const amrex::Real>& z_nd,
487 const amrex::Array4<const amrex::Real>& detJ,
488 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
489 const amrex::Array4<const amrex::Real>& mf_mx,
490 const amrex::Array4<const amrex::Real>& mf_ux,
491 const amrex::Array4<const amrex::Real>& mf_vx,
492 const amrex::Array4<const amrex::Real>& mf_my,
493 const amrex::Array4<const amrex::Real>& mf_uy,
494 const amrex::Array4<const amrex::Real>& mf_vy,
495 const amrex::BCRec* bc_ptr,
496 amrex::Array4<amrex::Real>& tau13i,
497 amrex::Array4<amrex::Real>& tau23i);
501 const amrex::Box& domain,
505 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM*2>& bc_neumann_vals,
506 const amrex::Array4< amrex::Real>& cell_data,
507 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
508 const amrex::Array4<const amrex::Real>& hfx_z,
509 const amrex::Array4<const amrex::Real>& mu_turb,
511 const amrex::BCRec* bc_ptr,
512 const bool use_SurfLayer,
514 const bool use_mrf_countergradient =
false);
518 const amrex::Box& domain,
522 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM*2>& bc_neumann_vals,
523 const amrex::Array4< amrex::Real>& cell_data,
524 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
525 const amrex::Array4<const amrex::Real>& hfx_z,
526 const amrex::Array4<const amrex::Real>& mu_turb,
528 const amrex::BCRec* bc_ptr,
529 const bool use_SurfLayer,
531 const bool use_mrf_countergradient =
false);
535 const amrex::Box& domain,
539 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM*2>& bc_neumann_vals,
540 const amrex::Array4< amrex::Real>& cell_data,
541 const amrex::Array4<const amrex::Real>& z_nd,
542 const amrex::Array4<const amrex::Real>& detJ,
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>& mf_mx = {},
552 const amrex::Array4<const amrex::Real>& mf_my = {},
553 const bool implicit_metric =
false);
562 template <
int stagdir>
564 const amrex::Box& domain,
567 const amrex::Array4<const int >& col_kext,
568 const amrex::Array4<const amrex::Real>& cell_data,
569 const amrex::Array4< amrex::Real>& face_data,
570 const amrex::Array4<const amrex::Real>& tau,
571 const amrex::Array4<const amrex::Real>& tau_corr,
572 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
573 const amrex::Array4<const amrex::Real>& mu_turb,
575 const amrex::BCRec* bc_ptr,
576 const bool use_SurfLayer,
578 const bool use_ysu_mom_countergradient);
581 template <
int stagdir>
583 const amrex::Box& domain,
586 const amrex::Array4<const int >& col_kext,
587 const amrex::Array4<const amrex::Real>& cell_data,
588 const amrex::Array4< amrex::Real>& face_data,
589 const amrex::Array4<const amrex::Real>& tau,
590 const amrex::Array4<const amrex::Real>& tau_corr,
591 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
592 const amrex::Array4<const amrex::Real>& mu_turb,
594 const amrex::BCRec* bc_ptr,
595 const bool use_SurfLayer,
597 const bool use_ysu_mom_countergradient);
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::Array4<const amrex::Real>& z_nd,
611 const amrex::Array4<const amrex::Real>& detJ,
612 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
613 const amrex::Array4<const amrex::Real>& mu_turb,
615 const amrex::BCRec* bc_ptr,
616 const bool use_SurfLayer,
618 const bool use_ysu_mom_countergradient,
619 const amrex::Array4<const amrex::Real>& mf_x,
620 const amrex::Array4<const amrex::Real>& mf_y,
621 const bool implicit_metric);
@ tau12
Definition: ERF_DataStruct.H:48
@ tau23
Definition: ERF_DataStruct.H:48
@ tau33
Definition: ERF_DataStruct.H:48
@ tau22
Definition: ERF_DataStruct.H:48
@ tau11
Definition: ERF_DataStruct.H:48
@ tau32
Definition: ERF_DataStruct.H:48
@ tau31
Definition: ERF_DataStruct.H:48
@ tau21
Definition: ERF_DataStruct.H:48
@ tau13
Definition: ERF_DataStruct.H:48
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)
Native adapter for regular scalar diffusion on a vertically stretched grid.
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, amrex::Array4< amrex::Real > &tau33i, const bool implicit_metric)
Compute stress components for constant viscosity on terrain-following coordinates.
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 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, amrex::Array4< amrex::Real > &tau33i)
Compute stress components for constant viscosity on a uniform grid without terrain.
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)
Add regular-grid state diffusion on a uniform grid without terrain.
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)
Apply implicit vertical momentum 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 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, amrex::Array4< amrex::Real > &tau33i)
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, amrex::Array4< amrex::Real > &tau33i)
Compute embedded-boundary stress components for variable viscosity.
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)
Apply implicit vertical state diffusion on a uniform grid without terrain.
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 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, amrex::Array4< amrex::Real > &tau33i)
Compute stress components for constant viscosity 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 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 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, amrex::Array4< amrex::Real > &tau33i, const bool implicit_metric)
Compute stress components for variable viscosity on terrain-following coordinates.
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, amrex::Array4< amrex::Real > &tau33i)
Compute stress components for variable viscosity on a vertically stretched grid.
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 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 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 bool use_SurfLayer, const amrex::Vector< std::unique_ptr< SurfaceLayer >> &SurfLayer, const amrex::Real implicit_fac)
Native adapter for regular scalar diffusion on terrain-following coordinates.
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, amrex::Array4< amrex::Real > &tau33i)
Compute stress components for variable viscosity on a uniform grid without terrain.
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:22
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Owns and exposes cell-centered and face-centered EB factories.
Definition: ERF_EB.H:24
Definition: ERF_DataStruct.H:685