17 for ( MFIter mfi(*
tabs,TilingIfNotGPU()); mfi.isValid(); ++mfi) {
19 const auto& tbx = mfi.tilebox();
27 ParallelFor(tbx, [=] AMREX_GPU_DEVICE(
int i,
int j,
int k) noexcept
33 erf_qsatw(tabs_array(i,j,k), pres_array(i,j,k), qsat);
36 if ((qv_array(i,j,k)+qc_array(i,j,k)) > qsat) {
37 Real qvprev = qv_array(i,j,k);
38 Real qcprev = qc_array(i,j,k);
41 if (qc_array(i,j,k) < 0) {
42 qv_array(i,j,k) += qc_array(i,j,k);
43 qc_array(i,j,k) = 0.0;
48 d_fac_cond, tabs_array, pres_array,
49 qv_array , qc_array );
52 erf_qsatw(tabs_array(i,j,k), pres_array(i,j,k), qsatnew);
54 AMREX_ASSERT(std::abs(qv_array(i,j,k)-qsatnew) < 1e-12);
56 amrex::ignore_unused(qvprev);
57 amrex::ignore_unused(qcprev);
58 AMREX_ASSERT(std::abs(qv_array(i,j,k)+qc_array(i,j,k)-qvprev-qcprev) < 1e-14);
61 theta_array(i,j,k) =
getThgivenTandP(tabs_array(i,j,k), 100.0*pres_array(i,j,k), rdOcp);
72 Real delta_qc = qc_array(i,j,k);
75 qv_array(i,j,k) += qc_array(i,j,k);
76 qc_array(i,j,k) = 0.0;
79 tabs_array(i,j,k) -= d_fac_cond * delta_qc;
82 theta_array(i,j,k) =
getThgivenTandP(tabs_array(i,j,k), 100.0*pres_array(i,j,k), rdOcp);
85 erf_qsatw(tabs_array(i,j,k), pres_array(i,j,k), qsat);
86 if (qv_array(i,j,k) > qsat) {
87 Real qvprev = qv_array(i,j,k);
88 Real qcprev = qc_array(i,j,k);
89 Real Tprev = tabs_array(i,j,k);
93 d_fac_cond , tabs_array, pres_array,
94 qv_array , qc_array );
97 erf_qsatw(tabs_array(i,j,k), pres_array(i,j,k), qsatnew);
98 amrex::ignore_unused(qvprev);
99 amrex::ignore_unused(qcprev);
100 amrex::ignore_unused(Tprev);
101 AMREX_ASSERT(qv_array(i,j,k) < qvprev);
102 AMREX_ASSERT(qc_array(i,j,k) > qcprev);
103 AMREX_ASSERT(tabs_array(i,j,k) > Tprev);
104 AMREX_ASSERT(std::abs(qv_array(i,j,k)-qsatnew) < 1e-14);
105 AMREX_ASSERT(std::abs(qv_array(i,j,k)+qc_array(i,j,k)-qvprev-qcprev) < 1e-14);
108 theta_array(i,j,k) =
getThgivenTandP(tabs_array(i,j,k), 100.0*pres_array(i,j,k), rdOcp);
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getThgivenTandP(const amrex::Real T, const amrex::Real P, const amrex::Real rdOcp)
Definition: ERF_EOS.H:18
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void erf_qsatw(amrex::Real t, amrex::Real p, amrex::Real &qsatw)
Definition: ERF_MicrophysicsUtils.H:163
amrex::Real Real
Definition: ERF_ShocInterface.H:16
amrex::Real m_fac_cond
Definition: ERF_SatAdj.H:205
amrex::Array< FabPtr, MicVar_SatAdj::NumVars > mic_fab_vars
Definition: ERF_SatAdj.H:209
amrex::Real m_rdOcp
Definition: ERF_SatAdj.H:206
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real NewtonIterSat(int &i, int &j, int &k, const amrex::Real &fac_cond, const amrex::Array4< amrex::Real > &tabs_array, const amrex::Array4< amrex::Real > &pres_array, const amrex::Array4< amrex::Real > &qv_array, const amrex::Array4< amrex::Real > &qc_array)
Definition: ERF_SatAdj.H:129
@ tabs
Definition: ERF_Kessler.H:24
@ theta
Definition: ERF_SatAdj.H:31
@ pres
Definition: ERF_SatAdj.H:33
@ qv
Definition: ERF_SatAdj.H:35
@ tabs
Definition: ERF_SatAdj.H:32
@ qc
Definition: ERF_SatAdj.H:36