7 template<
typename InterpType_H,
typename InterpType_V>
10 const int& cons_index,
11 const amrex::GpuArray<
const amrex::Array4<amrex::Real>, AMREX_SPACEDIM> flx_arr,
12 const amrex::Array4<const amrex::Real>& cell_prim,
13 const amrex::Array4<const amrex::Real>& avg_xmom,
14 const amrex::Array4<const amrex::Real>& avg_ymom,
15 const amrex::Array4<const amrex::Real>& avg_zmom,
20 InterpType_H interp_prim_h(cell_prim, horiz_upw_frac);
21 InterpType_V interp_prim_v(cell_prim, vert_upw_frac);
23 const amrex::Box
xbx = amrex::surroundingNodes(bx,0);
24 const amrex::Box
ybx = amrex::surroundingNodes(bx,1);
25 const amrex::Box
zbx = amrex::surroundingNodes(bx,2);
29 const int prim_index = cons_index - 1;
31 interp_prim_h.InterpolateInX(i,j,k,prim_index,interpx,avg_xmom(i ,j ,k ));
32 (flx_arr[0])(i,j,k) = avg_xmom(i,j,k) * interpx;
36 const int prim_index = cons_index - 1;
38 interp_prim_h.InterpolateInY(i,j,k,prim_index,interpy,avg_ymom(i ,j ,k ));
39 (flx_arr[1])(i,j,k) = avg_ymom(i,j,k) * interpy;
43 const int prim_index = cons_index - 1;
45 interp_prim_v.InterpolateInZ(i,j,k,prim_index,interpz,avg_zmom(i ,j ,k ));
46 (flx_arr[2])(i,j,k) = avg_zmom(i,j,k) * interpz;
53 template<
typename InterpType_H>
56 const int& cons_index,
57 const amrex::GpuArray<
const amrex::Array4<amrex::Real>, AMREX_SPACEDIM> flx_arr,
58 const amrex::Array4<const amrex::Real>& cell_prim,
59 const amrex::Array4<const amrex::Real>& avg_xmom,
60 const amrex::Array4<const amrex::Real>& avg_ymom,
61 const amrex::Array4<const amrex::Real>& avg_zmom,
66 switch(vert_adv_type) {
68 AdvectionSrcForScalarsWrapper<InterpType_H,CENTERED2>(bx, cons_index,
70 avg_xmom, avg_ymom, avg_zmom,
71 horiz_upw_frac, vert_upw_frac);
74 AdvectionSrcForScalarsWrapper<InterpType_H,UPWIND3>(bx, cons_index,
76 avg_xmom, avg_ymom, avg_zmom,
77 horiz_upw_frac, vert_upw_frac);
80 AdvectionSrcForScalarsWrapper<InterpType_H,UPWIND3SL>(bx, cons_index,
82 avg_xmom, avg_ymom, avg_zmom,
83 horiz_upw_frac, vert_upw_frac);
86 AdvectionSrcForScalarsWrapper<InterpType_H,CENTERED4>(bx, cons_index,
88 avg_xmom, avg_ymom, avg_zmom,
89 horiz_upw_frac, vert_upw_frac);
92 AdvectionSrcForScalarsWrapper<InterpType_H,UPWIND5>(bx, cons_index,
94 avg_xmom, avg_ymom, avg_zmom,
95 horiz_upw_frac, vert_upw_frac);
98 AdvectionSrcForScalarsWrapper<InterpType_H,CENTERED6>(bx, cons_index,
100 avg_xmom, avg_ymom, avg_zmom,
101 horiz_upw_frac, vert_upw_frac);
void AdvectionSrcForScalarsWrapper(const amrex::Box &bx, const int &cons_index, const amrex::GpuArray< const amrex::Array4< amrex::Real >, AMREX_SPACEDIM > flx_arr, 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::Real horiz_upw_frac, const amrex::Real vert_upw_frac)
Definition: ERF_AdvectionSrcForScalars.H:9
void AdvectionSrcForScalarsVert(const amrex::Box &bx, const int &cons_index, const amrex::GpuArray< const amrex::Array4< amrex::Real >, AMREX_SPACEDIM > flx_arr, 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::Real horiz_upw_frac, const amrex::Real vert_upw_frac, const AdvType vert_adv_type)
Definition: ERF_AdvectionSrcForScalars.H:55
constexpr amrex::Real zero
Definition: ERF_Constants.H:6
AdvType
Definition: ERF_IndexDefines.H:239
ParallelFor(bx, [=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept { const Real *dx=geomdata.CellSize();const Real x=(i+0.5) *dx[0];const Real y=(j+0.5) *dx[1];const Real Omg=erf_vortex_Gaussian(x, y, xc, yc, R, beta, sigma);const Real deltaT=-(gamma - 1.0)/(2.0 *sigma *sigma) *Omg *Omg;const Real rho_norm=std::pow(1.0+deltaT, inv_gm1);const Real T=(1.0+deltaT) *T_inf;const Real p=std::pow(rho_norm, Gamma)/Gamma *rho_0 *a_inf *a_inf;const Real rho_theta=rho_0 *rho_norm *(T *std::pow(p_0/p, rdOcp));state_pert(i, j, k, RhoTheta_comp)=rho_theta - getRhoThetagivenP(p_hse(i, j, k));const Real r2d_xy=std::sqrt((x-xc) *(x-xc)+(y-yc) *(y-yc));state_pert(i, j, k, RhoScalar_comp)=0.25 *(1.0+std::cos(PI *std::min(r2d_xy, R)/R));})
const Box zbx
Definition: ERF_SetupDiff.H:9
const Box xbx
Definition: ERF_SetupDiff.H:7
const Box ybx
Definition: ERF_SetupDiff.H:8
amrex::Real Real
Definition: ERF_ShocInterface.H:19
AMREX_ASSERT_WITH_MESSAGE(wbar_cutoff_min > wbar_cutoff_max, "ERROR: wbar_cutoff_min < wbar_cutoff_max")