1 #ifndef ERF_ADVECTION_H_
2 #define ERF_ADVECTION_H_
5 #include "AMReX_MultiFab.H"
6 #include "AMReX_iMultiFab.H"
7 #include "AMReX_BCRec.H"
8 #include "AMReX_YAFluxRegister.H"
17 const amrex::Array4<amrex::Real>& src,
18 const amrex::Array4<const amrex::Real>& rho_u,
19 const amrex::Array4<const amrex::Real>& rho_v,
20 const amrex::Array4<const amrex::Real>&
omega,
21 const amrex::Array4< amrex::Real>& avg_xmom,
22 const amrex::Array4< amrex::Real>& avg_ymom,
23 const amrex::Array4< amrex::Real>& avg_zmom,
24 const amrex::Array4<const amrex::Real>& ax_arr,
25 const amrex::Array4<const amrex::Real>& ay_arr,
26 const amrex::Array4<const amrex::Real>& az_arr,
27 const amrex::Array4<const amrex::Real>& detJ,
28 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
29 const amrex::Array4<const amrex::Real>& mf_mx,
30 const amrex::Array4<const amrex::Real>& mf_my,
31 const amrex::Array4<const amrex::Real>& mf_uy,
32 const amrex::Array4<const amrex::Real>& mf_vx,
33 const amrex::GpuArray<
const amrex::Array4<amrex::Real>, AMREX_SPACEDIM>& flx_arr,
34 const bool fixed_rho);
38 const int icomp,
const int ncomp,
39 const amrex::Array4<const amrex::Real>& avg_xmom,
40 const amrex::Array4<const amrex::Real>& avg_ymom,
41 const amrex::Array4<const amrex::Real>& avg_zmom,
42 const amrex::Array4<const amrex::Real>& cell_prim,
43 const amrex::Array4<amrex::Real>& src,
44 const amrex::Array4<const amrex::Real>& vf_arr,
45 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
46 const amrex::Array4<const amrex::Real>& mf_mx,
47 const amrex::Array4<const amrex::Real>& mf_my,
50 const amrex::GpuArray<
const amrex::Array4<amrex::Real>, AMREX_SPACEDIM>& flx_arr,
51 const amrex::Box& domain,
52 const amrex::BCRec* bc_ptr_h);
56 const amrex::Box& bxx,
const amrex::Box& bxy,
const amrex::Box& bxz,
57 const amrex::Vector<amrex::Box>& bxx_grown,
58 const amrex::Vector<amrex::Box>& bxy_grown,
59 const amrex::Vector<amrex::Box>& bxz_grown,
60 const amrex::Array4< amrex::Real>& rho_u_rhs,
const amrex::Array4< amrex::Real>& rho_v_rhs,
61 const amrex::Array4< amrex::Real>& rho_w_rhs,
62 const amrex::Array4<const amrex::Real>&
rho,
63 const amrex::Array4<const amrex::Real>& u ,
const amrex::Array4<const amrex::Real>& v,
64 const amrex::Array4<const amrex::Real>&
w ,
65 const amrex::Array4<const amrex::Real>& rho_u ,
const amrex::Array4<const amrex::Real>& rho_v,
66 const amrex::Array4<const amrex::Real>& Omega ,
67 const amrex::Array4<const amrex::Real>& z_nd,
68 const amrex::Array4<const amrex::Real>& ax,
69 const amrex::Array4<const amrex::Real>& ay,
70 const amrex::Array4<const amrex::Real>& az,
71 const amrex::Array4<const amrex::Real>& detJ,
72 amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
73 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
74 const amrex::Array4<const amrex::Real>& mf_mx,
75 const amrex::Array4<const amrex::Real>& mf_ux,
76 const amrex::Array4<const amrex::Real>& mf_vx,
77 const amrex::Array4<const amrex::Real>& mf_my,
78 const amrex::Array4<const amrex::Real>& mf_uy,
79 const amrex::Array4<const amrex::Real>& mf_vy,
82 MeshType& mesh_type, TerrainType& terrain_type,
84 amrex::GpuArray<amrex::Array4<amrex::Real>, AMREX_SPACEDIM>& flx_u_arr,
85 amrex::GpuArray<amrex::Array4<amrex::Real>, AMREX_SPACEDIM>& flx_v_arr,
86 amrex::GpuArray<amrex::Array4<amrex::Real>, AMREX_SPACEDIM>& flx_w_arr,
87 const amrex::Vector<amrex::iMultiFab>& physbnd_mask,
88 const bool already_on_centroids,
89 const int lo_z_face,
const int hi_z_face,
90 const amrex::Box& domain,
91 const amrex::BCRec* bc_ptr_h);
95 const amrex::Box& bxx,
const amrex::Box& bxy,
const amrex::Box& bxz,
96 const amrex::Array4< amrex::Real>& rho_u_rhs,
const amrex::Array4< amrex::Real>& rho_v_rhs,
97 const amrex::Array4< amrex::Real>& rho_w_rhs,
98 const amrex::Array4<const amrex::Real>& u ,
const amrex::Array4<const amrex::Real>& v,
99 const amrex::Array4<const amrex::Real>&
w ,
100 const amrex::Array4<const amrex::Real>& rho_u ,
const amrex::Array4<const amrex::Real>& rho_v,
101 const amrex::Array4<const amrex::Real>& Omega ,
102 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
103 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
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,
112 TerrainType& terrain_type,
113 const int lo_z_face,
const int hi_z_face);
117 const amrex::Box& bxx,
const amrex::Box& bxy,
const amrex::Box& bxz,
118 const amrex::Array4< amrex::Real>& rho_u_rhs,
const amrex::Array4< amrex::Real>& rho_v_rhs,
119 const amrex::Array4< amrex::Real>& rho_w_rhs,
120 const amrex::Array4<const amrex::Real>& u ,
const amrex::Array4<const amrex::Real>& v,
121 const amrex::Array4<const amrex::Real>&
w ,
122 const amrex::Array4<const amrex::Real>& rho_u ,
const amrex::Array4<const amrex::Real>& rho_v,
123 const amrex::Array4<const amrex::Real>& Omega ,
124 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
125 const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
126 const amrex::Array4<const amrex::Real>& mf_mx,
127 const amrex::Array4<const amrex::Real>& mf_ux,
128 const amrex::Array4<const amrex::Real>& mf_vx,
129 const amrex::Array4<const amrex::Real>& mf_my,
130 const amrex::Array4<const amrex::Real>& mf_uy,
131 const amrex::Array4<const amrex::Real>& mf_vy,
134 const int lo_z_face,
const int hi_z_face);
138 const amrex::Box& bxx,
const amrex::Box& bxy,
const amrex::Box& bxz,
139 const amrex::Array4< amrex::Real>& rho_u_rhs,
const amrex::Array4< amrex::Real>& rho_v_rhs,
140 const amrex::Array4< amrex::Real>& rho_w_rhs,
141 const amrex::Array4<const amrex::Real>& u ,
const amrex::Array4<const amrex::Real>& v,
142 const amrex::Array4<const amrex::Real>&
w ,
143 const amrex::Array4<const amrex::Real>& rho_u ,
const amrex::Array4<const amrex::Real>& rho_v,
144 const amrex::Array4<const amrex::Real>& Omega ,
145 const amrex::Array4<const amrex::Real>& z_nd,
146 const amrex::Array4<const amrex::Real>& ax,
147 const amrex::Array4<const amrex::Real>& ay,
148 const amrex::Array4<const amrex::Real>& az,
149 const amrex::Array4<const amrex::Real>& detJ,
150 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
151 const amrex::Array4<const amrex::Real>& mf_mx,
152 const amrex::Array4<const amrex::Real>& mf_ux,
153 const amrex::Array4<const amrex::Real>& mf_vx,
154 const amrex::Array4<const amrex::Real>& mf_my,
155 const amrex::Array4<const amrex::Real>& mf_uy,
156 const amrex::Array4<const amrex::Real>& mf_vy,
159 const int lo_z_face,
const int hi_z_face);
163 const amrex::Box& bxx,
const amrex::Box& bxy,
const amrex::Box& bxz,
164 const amrex::Vector<amrex::Box>& bxx_grown,
165 const amrex::Vector<amrex::Box>& bxy_grown,
166 const amrex::Vector<amrex::Box>& bxz_grown,
167 const amrex::Array4< amrex::Real>& rho_u_rhs,
const amrex::Array4< amrex::Real>& rho_v_rhs,
168 const amrex::Array4< amrex::Real>& rho_w_rhs,
169 const amrex::Array4<const amrex::Real>& u ,
const amrex::Array4<const amrex::Real>& v,
170 const amrex::Array4<const amrex::Real>&
w ,
171 const amrex::Array4<const amrex::Real>& rho_u ,
const amrex::Array4<const amrex::Real>& rho_v,
172 const amrex::Array4<const amrex::Real>& Omega ,
173 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
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,
183 amrex::GpuArray<amrex::Array4<amrex::Real>, AMREX_SPACEDIM>& flx_u_arr,
184 amrex::GpuArray<amrex::Array4<amrex::Real>, AMREX_SPACEDIM>& flx_v_arr,
185 amrex::GpuArray<amrex::Array4<amrex::Real>, AMREX_SPACEDIM>& flx_w_arr,
186 const amrex::Vector<amrex::iMultiFab>& physbnd_mask,
187 const bool already_on_centroids,
188 const int lo_z_face,
const int hi_z_face,
189 const amrex::Box& domain);
205 if (b.smallEnd(2) == domain.smallEnd(2)) { b.growLo(2,-1); }
206 if (b.bigEnd(2) == domain.bigEnd(2) + 1) { b.growHi(2,-1); }
239 const amrex::Box& domain,
243 if (!b.ok()) {
return b; }
245 const int dom_lo = domain.smallEnd(dim);
246 const int dom_hi = domain.bigEnd(dim) + (b.ixType().nodeCentered(dim) ? 1 : 0);
248 if (lo_open && b.smallEnd(dim) == dom_lo) { b.growLo(dim,-1); }
249 if (hi_open && b.bigEnd(dim) == dom_hi) { b.growHi(dim,-1); }
260 const amrex::Box& domain,
266 if (!b.ok()) {
return amrex::Box(); }
268 const OpenSide side[2] = {x_side, y_side};
269 for (
int dim(0); dim < 2; ++dim) {
271 domain.smallEnd(dim) :
272 domain.bigEnd(dim) + (b.ixType().nodeCentered(dim) ? 1 : 0);
273 if (
idx < b.smallEnd(dim) ||
idx > b.bigEnd(dim)) {
return amrex::Box(); }
274 b = amrex::makeSlab(b, dim,
idx);
290 inline amrex::Vector<OpenBCPatch>
292 const amrex::Box& domain,
298 amrex::Vector<OpenBCPatch> patches;
299 if (!b.ok()) {
return patches; }
302 const int dom_xhi = domain.bigEnd(0) + (b.ixType().nodeCentered(0) ? 1 : 0);
303 const int dom_yhi = domain.bigEnd(1) + (b.ixType().nodeCentered(1) ? 1 : 0);
307 if (xlo_open && b.smallEnd(0) == domain.smallEnd(0)) {
308 amrex::Box e =
TrimOpenBCCorner(amrex::makeSlab(b,0,domain.smallEnd(0)), 1, domain, ylo_open, yhi_open);
311 if (xhi_open && b.bigEnd(0) == dom_xhi) {
312 amrex::Box e =
TrimOpenBCCorner(amrex::makeSlab(b,0,dom_xhi), 1, domain, ylo_open, yhi_open);
315 if (ylo_open && b.smallEnd(1) == domain.smallEnd(1)) {
316 amrex::Box e =
TrimOpenBCCorner(amrex::makeSlab(b,1,domain.smallEnd(1)), 0, domain, xlo_open, xhi_open);
319 if (yhi_open && b.bigEnd(1) == dom_yhi) {
320 amrex::Box e =
TrimOpenBCCorner(amrex::makeSlab(b,1,dom_yhi), 0, domain, xlo_open, xhi_open);
326 if (!((x_side ==
OpenSide::lo) ? xlo_open : xhi_open)) {
continue; }
328 if (!((y_side ==
OpenSide::lo) ? ylo_open : yhi_open)) {
continue; }
330 if (c.ok()) { patches.push_back({c, x_side, y_side}); }
341 const amrex::Array4< amrex::Real>& rhs_arr,
342 const amrex::Array4<const amrex::Real>& vel_norm_arr,
343 const amrex::Array4<const amrex::Real>& cell_data_arr,
344 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
345 const bool do_lo=
false);
351 const amrex::Array4< amrex::Real>& rho_u_rhs,
352 const amrex::Array4<const amrex::Real>& u,
353 const amrex::Array4<const amrex::Real>& rho_u,
354 const amrex::Array4<const amrex::Real>& rho_v,
355 const amrex::Array4<const amrex::Real>& Omega,
356 const amrex::Array4<const amrex::Real>& ax,
357 const amrex::Array4<const amrex::Real>& az,
358 const amrex::Array4<const amrex::Real>& detJ,
359 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
360 const bool do_lo=
false);
366 const amrex::Array4< amrex::Real>& rho_v_rhs,
367 const amrex::Array4<const amrex::Real>& v,
368 const amrex::Array4<const amrex::Real>& rho_u,
369 const amrex::Array4<const amrex::Real>& rho_v,
370 const amrex::Array4<const amrex::Real>& Omega,
371 const amrex::Array4<const amrex::Real>& ay,
372 const amrex::Array4<const amrex::Real>& az,
373 const amrex::Array4<const amrex::Real>& detJ,
374 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
375 const bool do_lo=
false);
384 const amrex::Array4< amrex::Real>& rho_w_rhs,
385 const amrex::Array4<const amrex::Real>&
w,
386 const amrex::Array4<const amrex::Real>& rho_u,
387 const amrex::Array4<const amrex::Real>& rho_v,
388 const amrex::Array4<const amrex::Real>& Omega,
389 const amrex::Array4<const amrex::Real>& ax,
390 const amrex::Array4<const amrex::Real>& ay,
391 const amrex::Array4<const amrex::Real>& az,
392 const amrex::Array4<const amrex::Real>& detJ,
393 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
419 const int scalar_icomp,
422 const amrex::Array4< amrex::Real>& rhs,
423 const amrex::Array4<const amrex::Real>& scalar,
424 const amrex::Array4<const amrex::Real>& avg_xmom,
425 const amrex::Array4<const amrex::Real>& avg_ymom,
426 const amrex::Array4<const amrex::Real>& avg_zmom,
427 const amrex::Array4<const amrex::Real>& detJ,
428 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv);
441 const amrex::Array4< amrex::Real>& cell_rhs,
442 const amrex::Array4<const amrex::Real>& cell_prim,
443 const amrex::Array4<const amrex::Real>& avg_xmom,
444 const amrex::Array4<const amrex::Real>& avg_ymom,
445 const amrex::Array4<const amrex::Real>& avg_zmom,
446 const amrex::Array4<const amrex::Real>& detJ,
447 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv);
450 AMREX_GPU_HOST_DEVICE
458 const amrex::Array4<const amrex::Real>& prim_tang_arr,
459 const amrex::Array4<const amrex::Real>& mom_norm_arr,
461 const bool do_lo=
false);
464 AMREX_GPU_HOST_DEVICE
475 }
else if (nrk == 1) {
499 eff_adv_type = adv_type;
502 return(eff_adv_type);
void AdvectionSrcForMom(const amrex::MFIter &mfi, const amrex::Box &bxx, const amrex::Box &bxy, const amrex::Box &bxz, const amrex::Vector< amrex::Box > &bxx_grown, const amrex::Vector< amrex::Box > &bxy_grown, const amrex::Vector< amrex::Box > &bxz_grown, 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 > &rho, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, const amrex::Array4< const amrex::Real > &z_nd, 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, amrex::Gpu::DeviceVector< amrex::Real > &stretched_dz_d, 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, const AdvType horiz_adv_type, const AdvType vert_adv_type, const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac, MeshType &mesh_type, TerrainType &terrain_type, const eb_ &ebfact, amrex::GpuArray< amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_u_arr, amrex::GpuArray< amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_v_arr, amrex::GpuArray< amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_w_arr, const amrex::Vector< amrex::iMultiFab > &physbnd_mask, const bool already_on_centroids, const int lo_z_face, const int hi_z_face, const amrex::Box &domain, const amrex::BCRec *bc_ptr_h)
void AdvectionSrcForRho(const amrex::Box &bx, const amrex::Array4< amrex::Real > &src, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &omega, const amrex::Array4< amrex::Real > &avg_xmom, const amrex::Array4< amrex::Real > &avg_ymom, const amrex::Array4< amrex::Real > &avg_zmom, 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::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::GpuArray< const amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_arr, const bool fixed_rho)
amrex::Box TrimOpenBCCorner(amrex::Box b, const int dim, const amrex::Box &domain, const bool lo_open, const bool hi_open)
Definition: ERF_Advection.H:237
amrex::Vector< OpenBCPatch > OpenBCTangentPatches(const amrex::Box &b, const amrex::Box &domain, const bool xlo_open, const bool xhi_open, const bool ylo_open, const bool yhi_open)
Definition: ERF_Advection.H:291
OpenSide
Definition: ERF_Advection.H:214
void AdvectionSrcForMom_EB(const amrex::MFIter &mfi, const amrex::Box &bxx, const amrex::Box &bxy, const amrex::Box &bxz, const amrex::Vector< amrex::Box > &bxx_grown, const amrex::Vector< amrex::Box > &bxy_grown, const amrex::Vector< amrex::Box > &bxz_grown, 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, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, 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, const AdvType horiz_adv_type, const AdvType vert_adv_type, const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac, const eb_ &ebfact, amrex::GpuArray< amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_u_arr, amrex::GpuArray< amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_v_arr, amrex::GpuArray< amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_w_arr, const amrex::Vector< amrex::iMultiFab > &physbnd_mask, const bool already_on_centroids, const int lo_z_face, const int hi_z_face, const amrex::Box &domain)
void AdvectionSrcForMom_StretchedDz(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, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Gpu::DeviceVector< amrex::Real > &stretched_dz_d, 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 AdvType horiz_adv_type, const AdvType vert_adv_type, const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac, const int lo_z_face, const int hi_z_face)
void AdvectionSrcForOpenBC_Tangent_Ymom(const amrex::Box &bxy, const int &dir, const amrex::Array4< amrex::Real > &rho_v_rhs, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, 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 > &cellSizeInv, const bool do_lo=false)
void AdvectionSrcForScalars(const amrex::Box &bx, const int icomp, const int ncomp, const amrex::Array4< const amrex::Real > &avg_xmom, const amrex::Array4< const amrex::Real > &avg_ymom, const amrex::Array4< const amrex::Real > &avg_zmom, const amrex::Array4< const amrex::Real > &cell_prim, const amrex::Array4< amrex::Real > &src, const amrex::Array4< const amrex::Real > &vf_arr, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_my, const AdvType horiz_adv_type, const AdvType vert_adv_type, const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac, const amrex::GpuArray< const amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_arr, const amrex::Box &domain, const amrex::BCRec *bc_ptr_h)
void AdvectionSrcForOpenBC_Tangent_Xmom(const amrex::Box &bxx, const int &dir, const amrex::Array4< amrex::Real > &rho_u_rhs, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, const amrex::Array4< const amrex::Real > &ax, const amrex::Array4< const amrex::Real > &az, const amrex::Array4< const amrex::Real > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const bool do_lo=false)
void AdvectionSrcForMom_TF(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, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, const amrex::Array4< const amrex::Real > &z_nd, 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 > &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, const AdvType horiz_adv_type, const AdvType vert_adv_type, const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac, const int lo_z_face, const int hi_z_face)
void AdvectionSrcForOpenBC_Tangent_Cons(const amrex::Box &bx, const OpenSide x_side, const OpenSide y_side, const int &icomp, const int &ncomp, const amrex::Array4< amrex::Real > &cell_rhs, const amrex::Array4< const amrex::Real > &cell_prim, const amrex::Array4< const amrex::Real > &avg_xmom, const amrex::Array4< const amrex::Real > &avg_ymom, const amrex::Array4< const amrex::Real > &avg_zmom, const amrex::Array4< const amrex::Real > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv)
void AdvectionSrcForOpenBC_Normal(const amrex::Box &bx, const int &dir, const amrex::Array4< amrex::Real > &rhs_arr, const amrex::Array4< const amrex::Real > &vel_norm_arr, const amrex::Array4< const amrex::Real > &cell_data_arr, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const bool do_lo=false)
void AdvectionSrcForOpenBC_Tangent_Scalars(const amrex::Box &bx, const OpenSide x_side, const OpenSide y_side, const int scalar_icomp, const int rhs_icomp, const int ncomp, const amrex::Array4< amrex::Real > &rhs, const amrex::Array4< const amrex::Real > &scalar, const amrex::Array4< const amrex::Real > &avg_xmom, const amrex::Array4< const amrex::Real > &avg_ymom, const amrex::Array4< const amrex::Real > &avg_zmom, const amrex::Array4< const amrex::Real > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv)
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real AdvectionSrcForOpenBC_Tangent(const int &i, const int &j, const int &k, const int &nprim, const int &dir, const amrex::Array4< const amrex::Real > &prim_tang_arr, const amrex::Array4< const amrex::Real > &mom_norm_arr, const amrex::Real &dxInv, const bool do_lo=false)
void AdvectionSrcForMom_ConstantDz(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, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Gpu::DeviceVector< amrex::Real > &stretched_dz_d, 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 AdvType horiz_adv_type, const AdvType vert_adv_type, const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac, TerrainType &terrain_type, const int lo_z_face, const int hi_z_face)
amrex::Box OpenBCCornerBox(amrex::Box b, const amrex::Box &domain, const OpenSide x_side, const OpenSide y_side)
Definition: ERF_Advection.H:259
void AdvectionSrcForOpenBC_Tangent_Zmom(const amrex::Box &bxz, const OpenSide x_side, const OpenSide y_side, const amrex::Array4< amrex::Real > &rho_w_rhs, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, 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 > &cellSizeInv, const int domhi_z)
amrex::Box ShrinkZmomBoxAtDomainEnds(amrex::Box b, const amrex::Box &domain)
Definition: ERF_Advection.H:203
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE AdvType EfficientAdvType(int nrk, AdvType adv_type)
Definition: ERF_Advection.H:467
Declares the embedded-boundary factory manager used by ERF levels.
AdvType
Definition: ERF_IndexDefines.H:309
amrex::GpuArray< Real, AMREX_SPACEDIM > dxInv
Definition: ERF_InitCustomPertVels_ParticleTests.H:17
AMREX_ALWAYS_ASSERT(bx.length()[2]==khi+1)
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE int idx(int i, int j, int k, int nx, int ny)
Definition: ERF_InitForEnsemble.cpp:396
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
@ rho
Definition: ERF_Kessler.H:25
@ omega
Definition: ERF_Morrison.H:55
Definition: ERF_Advection.H:217
amrex::Box box
Definition: ERF_Advection.H:218
OpenSide y_side
Definition: ERF_Advection.H:220
OpenSide x_side
Definition: ERF_Advection.H:219