3 #ifndef ERF_DIFFUSION_H_
4 #define ERF_DIFFUSION_H_
7 #include "AMReX_MultiFab.H"
8 #include "AMReX_BCRec.H"
17 const amrex::Array4< amrex::Real>& rho_u_rhs,
18 const amrex::Array4< amrex::Real>& rho_v_rhs,
19 const amrex::Array4< amrex::Real>& rho_w_rhs,
20 const amrex::Array4<const amrex::Real>&
tau11 ,
21 const amrex::Array4<const amrex::Real>&
tau22 ,
22 const amrex::Array4<const amrex::Real>&
tau33 ,
23 const amrex::Array4<const amrex::Real>&
tau12 ,
const amrex::Array4<const amrex::Real>&
tau21,
24 const amrex::Array4<const amrex::Real>&
tau13 ,
const amrex::Array4<const amrex::Real>&
tau31,
25 const amrex::Array4<const amrex::Real>&
tau23 ,
const amrex::Array4<const amrex::Real>&
tau32,
26 const amrex::Array4<const amrex::Real>& detJ_arr ,
27 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
28 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
29 const amrex::Array4<const amrex::Real>& mf_mx ,
30 const amrex::Array4<const amrex::Real>& mf_ux ,
31 const amrex::Array4<const amrex::Real>& mf_vx ,
32 const amrex::Array4<const amrex::Real>& mf_my ,
33 const amrex::Array4<const amrex::Real>& mf_uy ,
34 const amrex::Array4<const amrex::Real>& mf_vy ,
35 const bool use_stretched_dz,
const bool use_variable_dz);
39 [[maybe_unused]]
const amrex::Box& domain,
40 const amrex::Box& bxx,
const amrex::Box& bxy,
const amrex::Box& bxz,
41 const amrex::Array4< amrex::Real>& rho_u_rhs,
42 const amrex::Array4< amrex::Real>& rho_v_rhs,
43 const amrex::Array4< amrex::Real>& rho_w_rhs,
44 const amrex::Array4<const amrex::Real>& u_arr ,
45 const amrex::Array4<const amrex::Real>& v_arr ,
46 const amrex::Array4<const amrex::Real>& w_arr ,
47 const amrex::Array4<const amrex::Real>&
tau11 ,
48 const amrex::Array4<const amrex::Real>&
tau22 ,
49 const amrex::Array4<const amrex::Real>&
tau33 ,
50 const amrex::Array4<const amrex::Real>&
tau12 ,
51 const amrex::Array4<const amrex::Real>&
tau13 ,
52 const amrex::Array4<const amrex::Real>&
tau23 ,
53 const amrex::Array4<const amrex::Real>& u_tau_eb13 ,
54 const amrex::Array4<const amrex::Real>& u_tau_eb23 ,
55 const amrex::Array4<const amrex::Real>& v_tau_eb13 ,
56 const amrex::Array4<const amrex::Real>& v_tau_eb23 ,
57 const amrex::Array4<const amrex::Real>& w_tau_eb13 ,
58 const amrex::Array4<const amrex::Real>& w_tau_eb23 ,
60 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
61 const amrex::Array4<const amrex::Real>& mf_mx ,
62 const amrex::Array4<const amrex::Real>& mf_ux ,
63 const amrex::Array4<const amrex::Real>& mf_vx ,
64 const amrex::Array4<const amrex::Real>& mf_my ,
65 const amrex::Array4<const amrex::Real>& mf_uy ,
66 const amrex::Array4<const amrex::Real>& mf_vy ,
69 [[maybe_unused]]
const amrex::BCRec* bc_ptr);
73 int start_comp,
int num_comp,
74 const amrex::Array4<const amrex::Real>& u,
75 const amrex::Array4<const amrex::Real>& v,
76 const amrex::Array4<const amrex::Real>& cell_data,
77 const amrex::Array4<const amrex::Real>& cell_prim,
78 const amrex::Array4<amrex::Real>& cell_rhs,
79 const amrex::Array4<amrex::Real>& xflux,
80 const amrex::Array4<amrex::Real>& yflux,
81 const amrex::Array4<amrex::Real>& zflux,
82 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
83 const amrex::Array4<const amrex::Real>& SmnSmn_a,
84 const amrex::Array4<const amrex::Real>& mf_mx,
85 const amrex::Array4<const amrex::Real>& mf_ux,
86 const amrex::Array4<const amrex::Real>& mf_vx,
87 const amrex::Array4<const amrex::Real>& mf_my,
88 const amrex::Array4<const amrex::Real>& mf_uy,
89 const amrex::Array4<const amrex::Real>& mf_vy,
90 amrex::Array4< amrex::Real>& hfx_x,
91 amrex::Array4< amrex::Real>& hfx_y,
92 amrex::Array4< amrex::Real>& hfx_z,
93 amrex::Array4< amrex::Real>& qfx1_x,
94 amrex::Array4< amrex::Real>& qfx1_y,
95 amrex::Array4< amrex::Real>& qfx1_z,
96 amrex::Array4< amrex::Real>& qfx2_z,
97 amrex::Array4< amrex::Real>& diss,
98 const amrex::Array4<const amrex::Real>& mu_turb,
101 const amrex::Array4<const amrex::Real>& tm_arr,
102 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> grav_gpu,
103 const amrex::BCRec* bc_ptr,
104 const bool use_SurfLayer,
105 const amrex::Vector<std::unique_ptr<SurfaceLayer>>& SurfLayer,
110 int start_comp,
int num_comp,
111 const amrex::Array4<const amrex::Real>& u,
112 const amrex::Array4<const amrex::Real>& v,
113 const amrex::Array4<const amrex::Real>& cell_data,
114 const amrex::Array4<const amrex::Real>& cell_prim,
115 const amrex::Array4<amrex::Real>& cell_rhs,
116 const amrex::Array4<amrex::Real>& xflux,
117 const amrex::Array4<amrex::Real>& yflux,
118 const amrex::Array4<amrex::Real>& zflux,
119 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
120 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
121 const amrex::Array4<const amrex::Real>& SmnSmn_a,
122 const amrex::Array4<const amrex::Real>& mf_mx,
123 const amrex::Array4<const amrex::Real>& mf_ux,
124 const amrex::Array4<const amrex::Real>& mf_vx,
125 const amrex::Array4<const amrex::Real>& mf_my,
126 const amrex::Array4<const amrex::Real>& mf_uy,
127 const amrex::Array4<const amrex::Real>& mf_vy,
128 amrex::Array4< amrex::Real>& hfx_x,
129 amrex::Array4< amrex::Real>& hfx_y,
130 amrex::Array4< amrex::Real>& hfx_z,
131 amrex::Array4< amrex::Real>& qfx1_x,
132 amrex::Array4< amrex::Real>& qfx1_y,
133 amrex::Array4< amrex::Real>& qfx1_z,
134 amrex::Array4< amrex::Real>& qfx2_z,
135 amrex::Array4< amrex::Real>& diss,
136 const amrex::Array4<const amrex::Real>& mu_turb,
139 const amrex::Array4<const amrex::Real>& tm_arr,
140 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> grav_gpu,
141 const amrex::BCRec* bc_ptr,
142 const bool use_SurfLayer,
143 const amrex::Vector<std::unique_ptr<SurfaceLayer>>& SurfLayer,
148 int start_comp,
int num_comp,
150 const amrex::Array4<const amrex::Real>& u,
151 const amrex::Array4<const amrex::Real>& v,
152 const amrex::Array4<const amrex::Real>& cell_data,
153 const amrex::Array4<const amrex::Real>& cell_prim,
154 const amrex::Array4<amrex::Real>& cell_rhs,
155 const amrex::Array4<amrex::Real>& xflux,
156 const amrex::Array4<amrex::Real>& yflux,
157 const amrex::Array4<amrex::Real>& zflux,
158 const amrex::Array4<const amrex::Real>& z_nd,
159 const amrex::Array4<const amrex::Real>& z_cc,
160 const amrex::Array4<const amrex::Real>& ax,
161 const amrex::Array4<const amrex::Real>& ay,
162 const amrex::Array4<const amrex::Real>& az,
163 const amrex::Array4<const amrex::Real>& detJ,
164 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
165 const amrex::Array4<const amrex::Real>& SmnSmn_a,
166 const amrex::Array4<const amrex::Real>& mf_mx,
167 const amrex::Array4<const amrex::Real>& mf_ux,
168 const amrex::Array4<const amrex::Real>& mf_vx,
169 const amrex::Array4<const amrex::Real>& mf_my,
170 const amrex::Array4<const amrex::Real>& mf_uy,
171 const amrex::Array4<const amrex::Real>& mf_vy,
172 amrex::Array4< amrex::Real>& hfx_x,
173 amrex::Array4< amrex::Real>& hfx_y,
174 amrex::Array4< amrex::Real>& hfx_z,
175 amrex::Array4< amrex::Real>& qfx1_x,
176 amrex::Array4< amrex::Real>& qfx1_y,
177 amrex::Array4< amrex::Real>& qfx1_z,
178 amrex::Array4< amrex::Real>& qfx2_z,
179 amrex::Array4< amrex::Real>& diss,
180 const amrex::Array4<const amrex::Real>& mu_turb,
183 const amrex::Array4<const amrex::Real>& tm_arr,
184 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> grav_gpu,
185 const amrex::BCRec* bc_ptr,
186 const bool use_SurfLayer,
187 const amrex::Vector<std::unique_ptr<SurfaceLayer>>& SurfLayer,
192 int start_comp,
int num_comp,
193 const amrex::Array4<const amrex::Real>& u,
194 const amrex::Array4<const amrex::Real>& v,
195 const amrex::Array4<const amrex::Real>& cell_data,
196 const amrex::Array4<const amrex::Real>& cell_prim,
197 const amrex::Array4<amrex::Real>& cell_rhs,
198 const amrex::Array4<amrex::Real>& xflux,
199 const amrex::Array4<amrex::Real>& yflux,
200 const amrex::Array4<amrex::Real>& zflux,
201 const amrex::Array4<const amrex::EBCellFlag>& cfg_arr,
202 const amrex::Array4<const amrex::Real>& ax_arr,
203 const amrex::Array4<const amrex::Real>& ay_arr,
204 const amrex::Array4<const amrex::Real>& az_arr,
205 const amrex::Array4<const amrex::Real>& detJ,
206 const amrex::Array4<const amrex::Real>& barea_arr,
207 const amrex::Array4<const amrex::Real>& bcent_arr,
209 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
210 amrex::Array4< amrex::Real>& hfx_z,
211 amrex::Array4< amrex::Real>& qfx1_z,
212 amrex::Array4< amrex::Real>& qfx2_z,
213 amrex::Array4< amrex::Real>& hfx_EB,
214 const amrex::Array4<const amrex::Real>& mu_turb,
217 const amrex::BCRec* bc_ptr,
218 const bool use_SurfLayer,
219 const amrex::Vector<std::unique_ptr<SurfaceLayer>>& SurfLayer);
227 const amrex::Array4<const amrex::Real>& cell_data,
228 amrex::Array4<amrex::Real>&
tau11,
229 amrex::Array4<amrex::Real>&
tau22,
230 amrex::Array4<amrex::Real>&
tau33,
231 amrex::Array4<amrex::Real>&
tau12,
232 amrex::Array4<amrex::Real>&
tau13,
233 amrex::Array4<amrex::Real>&
tau23,
234 const amrex::Array4<const amrex::Real>& er_arr,
235 amrex::Array4<const amrex::Real>& vfrac,
236 amrex::Array4<amrex::Real>& tau13i,
237 amrex::Array4<amrex::Real>& tau23i,
238 amrex::Array4<amrex::Real>& tau33i);
246 const amrex::Array4<const amrex::Real>& cell_data,
247 amrex::Array4<amrex::Real>&
tau11,
248 amrex::Array4<amrex::Real>&
tau22,
249 amrex::Array4<amrex::Real>&
tau33,
250 amrex::Array4<amrex::Real>&
tau12,
251 amrex::Array4<amrex::Real>&
tau13,
252 amrex::Array4<amrex::Real>&
tau23,
253 const amrex::Array4<const amrex::Real>& er_arr,
254 amrex::Array4<amrex::Real>& tau13i,
255 amrex::Array4<amrex::Real>& tau23i,
256 amrex::Array4<amrex::Real>& tau33i);
264 const amrex::Array4<const amrex::Real>& cell_data,
265 amrex::Array4<amrex::Real>&
tau11,
266 amrex::Array4<amrex::Real>&
tau22,
267 amrex::Array4<amrex::Real>&
tau33,
268 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
269 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
270 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
271 const amrex::Array4<const amrex::Real>& er_arr,
272 const amrex::Array4<const amrex::Real>& mf_mx,
273 const amrex::Array4<const amrex::Real>& mf_ux,
274 const amrex::Array4<const amrex::Real>& mf_vx,
275 const amrex::Array4<const amrex::Real>& mf_my,
276 const amrex::Array4<const amrex::Real>& mf_uy,
277 const amrex::Array4<const amrex::Real>& mf_vy,
278 amrex::Array4<amrex::Real>& tau13i,
279 amrex::Array4<amrex::Real>& tau23i,
280 amrex::Array4<amrex::Real>& tau33i);
288 const amrex::Array4<const amrex::Real>& cell_data,
289 amrex::Array4<amrex::Real>&
tau11,
290 amrex::Array4<amrex::Real>&
tau22,
291 amrex::Array4<amrex::Real>&
tau33,
292 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
293 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
294 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
295 const amrex::Array4<const amrex::Real>& er_arr,
296 const amrex::Array4<const amrex::Real>& z_nd,
297 const amrex::Array4<const amrex::Real>& detJ,
298 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
299 const amrex::Array4<const amrex::Real>& mf_mx,
300 const amrex::Array4<const amrex::Real>& mf_ux,
301 const amrex::Array4<const amrex::Real>& mf_vx,
302 const amrex::Array4<const amrex::Real>& mf_my,
303 const amrex::Array4<const amrex::Real>& mf_uy,
304 const amrex::Array4<const amrex::Real>& mf_vy,
305 amrex::Array4<amrex::Real>& tau13i,
306 amrex::Array4<amrex::Real>& tau23i,
307 amrex::Array4<amrex::Real>& tau33i);
315 const amrex::Array4<const amrex::Real>& mu_turb,
316 const amrex::Array4<const amrex::Real>& cell_data,
317 amrex::Array4<amrex::Real>&
tau11,
318 amrex::Array4<amrex::Real>&
tau22,
319 amrex::Array4<amrex::Real>&
tau33,
320 amrex::Array4<amrex::Real>&
tau12,
321 amrex::Array4<amrex::Real>&
tau13,
322 amrex::Array4<amrex::Real>&
tau23,
323 const amrex::Array4<const amrex::Real>& er_arr,
324 amrex::Array4<const amrex::Real>& vfrac,
325 amrex::Array4<amrex::Real>& tau13i,
326 amrex::Array4<amrex::Real>& tau23i,
327 amrex::Array4<amrex::Real>& tau33i);
335 const amrex::Array4<const amrex::Real>& mu_turb,
336 const amrex::Array4<const amrex::Real>& cell_data,
337 amrex::Array4<amrex::Real>&
tau11,
338 amrex::Array4<amrex::Real>&
tau22,
339 amrex::Array4<amrex::Real>&
tau33,
340 amrex::Array4<amrex::Real>&
tau12,
341 amrex::Array4<amrex::Real>&
tau13,
342 amrex::Array4<amrex::Real>&
tau23,
343 const amrex::Array4<const amrex::Real>& er_arr,
344 amrex::Array4<amrex::Real>& tau13i,
345 amrex::Array4<amrex::Real>& tau23i,
346 amrex::Array4<amrex::Real>& tau33i);
354 const amrex::Array4<const amrex::Real>& mu_turb,
355 const amrex::Array4<const amrex::Real>& cell_data,
356 amrex::Array4<amrex::Real>&
tau11,
357 amrex::Array4<amrex::Real>&
tau22,
358 amrex::Array4<amrex::Real>&
tau33,
359 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
360 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
361 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
362 const amrex::Array4<const amrex::Real>& er_arr,
363 const amrex::Array4<const amrex::Real>& mf_mx,
364 const amrex::Array4<const amrex::Real>& mf_ux,
365 const amrex::Array4<const amrex::Real>& mf_vx,
366 const amrex::Array4<const amrex::Real>& mf_my,
367 const amrex::Array4<const amrex::Real>& mf_uy,
368 const amrex::Array4<const amrex::Real>& mf_vy,
369 amrex::Array4<amrex::Real>& tau13i,
370 amrex::Array4<amrex::Real>& tau23i,
371 amrex::Array4<amrex::Real>& tau33i);
379 const amrex::Array4<const amrex::Real>& mu_turb,
380 const amrex::Array4<const amrex::Real>& cell_data,
381 amrex::Array4<amrex::Real>&
tau11,
382 amrex::Array4<amrex::Real>&
tau22,
383 amrex::Array4<amrex::Real>&
tau33,
384 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
385 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
386 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
387 const amrex::Array4<const amrex::Real>& er_arr,
388 const amrex::Array4<const amrex::Real>& z_nd,
389 const amrex::Array4<const amrex::Real>& detJ,
390 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
391 const amrex::Array4<const amrex::Real>& mf_mx,
392 const amrex::Array4<const amrex::Real>& mf_ux,
393 const amrex::Array4<const amrex::Real>& mf_vx,
394 const amrex::Array4<const amrex::Real>& mf_my,
395 const amrex::Array4<const amrex::Real>& mf_uy,
396 const amrex::Array4<const amrex::Real>& mf_vy,
397 amrex::Array4<amrex::Real>& tau13i,
398 amrex::Array4<amrex::Real>& tau23i,
399 amrex::Array4<amrex::Real>& tau33i);
403 amrex::Box bxcc, amrex::Box tbxxy,
404 amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain,
405 const amrex::Array4<const amrex::Real>& u,
406 const amrex::Array4<const amrex::Real>& v,
407 const amrex::Array4<const amrex::Real>&
w,
408 amrex::Array4<amrex::Real>&
tau11,
409 amrex::Array4<amrex::Real>&
tau22,
410 amrex::Array4<amrex::Real>&
tau33,
411 amrex::Array4<amrex::Real>&
tau12,
412 amrex::Array4<amrex::Real>&
tau13,
413 amrex::Array4<amrex::Real>&
tau23,
414 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
415 const amrex::BCRec* bc_ptr,
417 amrex::Array4<amrex::Real>& tau13i,
418 amrex::Array4<amrex::Real>& tau23i);
422 amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain,
423 const amrex::Array4<const amrex::Real>& u,
424 const amrex::Array4<const amrex::Real>& v,
425 const amrex::Array4<const amrex::Real>&
w,
426 amrex::Array4<amrex::Real>&
tau11,
427 amrex::Array4<amrex::Real>&
tau22,
428 amrex::Array4<amrex::Real>&
tau33,
429 amrex::Array4<amrex::Real>&
tau12,
430 amrex::Array4<amrex::Real>&
tau13,
431 amrex::Array4<amrex::Real>&
tau23,
432 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
433 const amrex::Array4<const amrex::Real>& mf_mx,
434 const amrex::Array4<const amrex::Real>& mf_ux,
435 const amrex::Array4<const amrex::Real>& mf_vx,
436 const amrex::Array4<const amrex::Real>& mf_my,
437 const amrex::Array4<const amrex::Real>& mf_uy,
438 const amrex::Array4<const amrex::Real>& mf_vy,
439 const amrex::BCRec* bc_ptr,
440 amrex::Array4<amrex::Real>& tau13i,
441 amrex::Array4<amrex::Real>& tau23i);
445 amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain,
446 const amrex::Array4<const amrex::Real>& u,
447 const amrex::Array4<const amrex::Real>& v,
448 const amrex::Array4<const amrex::Real>&
w,
449 amrex::Array4<amrex::Real>&
tau11,
450 amrex::Array4<amrex::Real>&
tau22,
451 amrex::Array4<amrex::Real>&
tau33,
452 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
453 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
454 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
455 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
456 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
457 const amrex::Array4<const amrex::Real>& mf_mx,
458 const amrex::Array4<const amrex::Real>& mf_ux,
459 const amrex::Array4<const amrex::Real>& mf_vx,
460 const amrex::Array4<const amrex::Real>& mf_my,
461 const amrex::Array4<const amrex::Real>& mf_uy,
462 const amrex::Array4<const amrex::Real>& mf_vy,
463 const amrex::BCRec* bc_ptr,
464 amrex::Array4<amrex::Real>& tau13i,
465 amrex::Array4<amrex::Real>& tau23i);
469 amrex::Box tbxxz, amrex::Box tbxyz, amrex::Box domain,
470 const amrex::Array4<const amrex::Real>& u,
471 const amrex::Array4<const amrex::Real>& v,
472 const amrex::Array4<const amrex::Real>&
w,
473 amrex::Array4<amrex::Real>&
tau11,
474 amrex::Array4<amrex::Real>&
tau22,
475 amrex::Array4<amrex::Real>&
tau33,
476 amrex::Array4<amrex::Real>&
tau12, amrex::Array4<amrex::Real>&
tau21,
477 amrex::Array4<amrex::Real>&
tau13, amrex::Array4<amrex::Real>&
tau31,
478 amrex::Array4<amrex::Real>&
tau23, amrex::Array4<amrex::Real>&
tau32,
479 const amrex::Array4<const amrex::Real>& z_nd,
480 const amrex::Array4<const amrex::Real>& detJ,
481 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
482 const amrex::Array4<const amrex::Real>& mf_mx,
483 const amrex::Array4<const amrex::Real>& mf_ux,
484 const amrex::Array4<const amrex::Real>& mf_vx,
485 const amrex::Array4<const amrex::Real>& mf_my,
486 const amrex::Array4<const amrex::Real>& mf_uy,
487 const amrex::Array4<const amrex::Real>& mf_vy,
488 const amrex::BCRec* bc_ptr,
489 amrex::Array4<amrex::Real>& tau13i,
490 amrex::Array4<amrex::Real>& tau23i);
494 const amrex::Box& domain,
498 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM*2>& bc_neumann_vals,
499 const amrex::Array4< amrex::Real>& cell_data,
500 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
501 const amrex::Array4<const amrex::Real>& hfx_z,
502 const amrex::Array4<const amrex::Real>& mu_turb,
504 const amrex::BCRec* bc_ptr,
505 const bool use_SurfLayer,
507 const bool use_mrf_countergradient =
false);
511 const amrex::Box& domain,
515 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM*2>& bc_neumann_vals,
516 const amrex::Array4< amrex::Real>& cell_data,
517 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
518 const amrex::Array4<const amrex::Real>& hfx_z,
519 const amrex::Array4<const amrex::Real>& mu_turb,
521 const amrex::BCRec* bc_ptr,
522 const bool use_SurfLayer,
524 const bool use_mrf_countergradient =
false);
528 const amrex::Box& domain,
532 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM*2>& bc_neumann_vals,
533 const amrex::Array4< amrex::Real>& cell_data,
534 const amrex::Array4<const amrex::Real>& z_nd,
535 const amrex::Array4<const amrex::Real>& detJ,
536 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
537 const amrex::Array4<const amrex::Real>& hfx_z,
538 const amrex::Array4<const amrex::Real>& mu_turb,
540 const amrex::BCRec* bc_ptr,
541 const bool use_SurfLayer,
543 const bool use_mrf_countergradient =
false);
552 template <
int stagdir>
554 const amrex::Box& domain,
557 const amrex::Array4<const int >& col_kext,
558 const amrex::Array4<const amrex::Real>& cell_data,
559 const amrex::Array4< amrex::Real>& face_data,
560 const amrex::Array4<const amrex::Real>& tau,
561 const amrex::Array4<const amrex::Real>& tau_corr,
562 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
563 const amrex::Array4<const amrex::Real>& mu_turb,
565 const amrex::BCRec* bc_ptr,
566 const bool use_SurfLayer,
568 const bool use_ysu_mom_countergradient);
571 template <
int stagdir>
573 const amrex::Box& domain,
576 const amrex::Array4<const int >& col_kext,
577 const amrex::Array4<const amrex::Real>& cell_data,
578 const amrex::Array4< amrex::Real>& face_data,
579 const amrex::Array4<const amrex::Real>& tau,
580 const amrex::Array4<const amrex::Real>& tau_corr,
581 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
582 const amrex::Array4<const amrex::Real>& mu_turb,
584 const amrex::BCRec* bc_ptr,
585 const bool use_SurfLayer,
587 const bool use_ysu_mom_countergradient);
590 template <
int stagdir>
592 const amrex::Box& domain,
595 const amrex::Array4<const int >& col_kext,
596 const amrex::Array4<const amrex::Real>& cell_data,
597 const amrex::Array4< amrex::Real>& face_data,
598 const amrex::Array4<const amrex::Real>& tau,
599 const amrex::Array4<const amrex::Real>& tau_corr,
600 const amrex::Array4<const amrex::Real>& z_nd,
601 const amrex::Array4<const amrex::Real>& detJ,
602 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
603 const amrex::Array4<const amrex::Real>& mu_turb,
605 const amrex::BCRec* bc_ptr,
606 const bool use_SurfLayer,
608 const bool use_ysu_mom_countergradient);
@ tau12
Definition: ERF_DataStruct.H:40
@ tau23
Definition: ERF_DataStruct.H:40
@ tau33
Definition: ERF_DataStruct.H:40
@ tau22
Definition: ERF_DataStruct.H:40
@ tau11
Definition: ERF_DataStruct.H:40
@ tau32
Definition: ERF_DataStruct.H:40
@ tau31
Definition: ERF_DataStruct.H:40
@ tau21
Definition: ERF_DataStruct.H:40
@ tau13
Definition: ERF_DataStruct.H:40
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)
Compute stress components for variable 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 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_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)
Compute stress components for constant viscosity 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 DiffusionSrcForState_S(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::Gpu::DeviceVector< amrex::Real > &stretched_dz_d, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::Array4< const amrex::Real > &SmnSmn_a, 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, amrex::Array4< amrex::Real > &diss, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const int level, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > grav_gpu, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Vector< std::unique_ptr< SurfaceLayer >> &SurfLayer, const amrex::Real implicit_fac)
Add state diffusion source terms on a vertically stretched grid.
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 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 > &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::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 > &SmnSmn_a, 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, amrex::Array4< amrex::Real > &diss, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const int level, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > grav_gpu, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Vector< std::unique_ptr< SurfaceLayer >> &SurfLayer, const amrex::Real implicit_fac)
Add state diffusion source terms 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 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 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 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 > &SmnSmn_a, 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, amrex::Array4< amrex::Real > &diss, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const int level, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > grav_gpu, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Vector< std::unique_ptr< SurfaceLayer >> &SurfLayer, const amrex::Real implicit_fac)
Add state diffusion source terms 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)
Apply implicit vertical state diffusion on terrain-following coordinates.
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 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)
Apply implicit vertical momentum 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:662