12 #ifdef AMREX_USE_FLOAT
20 int k_dom_lo = geom.Domain().smallEnd(2);
21 int k_dom_hi = geom.Domain().bigEnd(2);
23 for ( MFIter mfi(
rho,
TileNoZ()); mfi.isValid(); ++mfi ) {
24 Box bx = mfi.tilebox();
25 int klo = bx.smallEnd(2);
26 int khi = bx.bigEnd(2);
31 const Array4<const Real>& th_arr =
theta.const_array(mfi);
32 const Array4<const Real>&
qv_arr =
qv.const_array(mfi);
33 const Array4<const Real>& qt_arr =
qt.const_array(mfi);
35 const Array4<const Real>& z_arr = z_phys->const_array(mfi);
37 ParallelFor(bx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int ) noexcept
42 Real rho_tot_hi, rho_tot_lo;
51 if (!use_existing_sfc_density)
55 z_hi =
Real(0.125) * (z_arr(i,j,klo ) + z_arr(i+1,j,klo ) + z_arr(i,j+1,klo ) + z_arr(i+1,j+1,klo )
56 +z_arr(i,j,klo+1) + z_arr(i+1,j,klo+1) + z_arr(i,j+1,klo+1) + z_arr(i+1,j+1,klo+1));
60 qt_lo = qt_arr(i,j,klo);
62 Th_lo = th_arr(i,j,klo);
65 rho_tot_lo = R_lo * (
one + qt_lo);
66 C = -P_lo +
myhalf*rho_tot_lo*grav*
dz;
69 qt_hi = qt_arr(i,j,klo);
71 Th_hi = th_arr(i,j,klo);
74 rho_tot_hi = R_hi * (
one + qt_hi);
75 F = P_hi +
myhalf*rho_tot_hi*grav*
dz + C;
90 z_lo =
Real(0.125) * (z_arr(i,j,klo ) + z_arr(i+1,j,klo ) + z_arr(i,j+1,klo ) + z_arr(i+1,j+1,klo )
91 +z_arr(i,j,klo+1) + z_arr(i+1,j,klo+1) + z_arr(i,j+1,klo+1) + z_arr(i+1,j+1,klo+1));
96 for (
int k(klo+1); k<=
khi; ++k)
98 z_hi =
Real(0.125) * (z_arr(i,j,k ) + z_arr(i+1,j,k ) + z_arr(i,j+1,k ) + z_arr(i+1,j+1,k )
99 +z_arr(i,j,k+1) + z_arr(i+1,j,k+1) + z_arr(i,j+1,k+1) + z_arr(i+1,j+1,k+1));
103 qt_lo = qt_arr(i,j,k-1);
105 Th_lo = th_arr(i,j,k-1);
107 rho_tot_lo = R_lo * (
one + qt_lo);
108 C = -P_lo +
myhalf*rho_tot_lo*grav*
dz;
111 qt_hi = qt_arr(i,j,k);
113 Th_hi = th_arr(i,j,k);
115 rho_tot_hi = R_hi * (
one + qt_hi);
116 F = P_hi +
myhalf*rho_tot_hi*grav*
dz + C;
constexpr amrex::Real Cp_d
Definition: ERF_Constants.H:44
constexpr amrex::Real one
Definition: ERF_Constants.H:9
constexpr amrex::Real zero
Definition: ERF_Constants.H:8
constexpr amrex::Real myhalf
Definition: ERF_Constants.H:13
constexpr amrex::Real p_0
Definition: ERF_Constants.H:50
constexpr amrex::Real CONST_GRAV
Definition: ERF_Constants.H:53
constexpr amrex::Real R_d
Definition: ERF_Constants.H:42
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getRhogivenThetaPress(const amrex::Real th, const amrex::Real p, const amrex::Real rdOcp, const amrex::Real qv=amrex::Real(0))
Definition: ERF_EOS.H:96
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getPgivenRTh(const amrex::Real rhotheta, const amrex::Real qv=amrex::Real(0))
Definition: ERF_EOS.H:81
const int khi
Definition: ERF_InitCustomPert_Bubble.H:21
AMREX_ALWAYS_ASSERT(bx.length()[2]==khi+1)
rho
Definition: ERF_InitCustomPert_Bubble.H:106
auto qv_arr
Definition: ERF_InitCustomPert_MultiSpeciesBubble.H:210
ParallelFor(grown_box, [=] AMREX_GPU_DEVICE(int i, int j, int k) { qrcuten_arr(i, j, k)=Real(0);qscuten_arr(i, j, k)=Real(0);qicuten_arr(i, j, k)=Real(0);})
amrex::Real Real
Definition: ERF_ShocInterface.H:19
AMREX_FORCE_INLINE amrex::IntVect TileNoZ()
Definition: ERF_TileNoZ.H:11
auto rho_arr
Definition: ERF_UpdateWSubsidence_SineMassFlux.H:3
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void Newton_Raphson_hse(const Real &m_tol, const Real &RdOCp, const Real &dz, const Real &g, const Real &C, const Real &Th, const Real &qt, const Real &qv, Real &P, Real &rd, Real &F)
Definition: ERF_HSEUtils.H:43
@ theta
Definition: ERF_MM5.H:20
@ qt
Definition: ERF_Kessler.H:28
@ qv
Definition: ERF_Kessler.H:29
@ dz
Definition: ERF_AdvanceWSM6.cpp:104