124 const int i = team.league_rank();
126 const Real zvir = C::ZVIR;
127 const Real cpair = C::Cpair;
128 const Real ggr = C::gravit;
129 const Real inv_ggr = 1/ggr;
130 const Real mintke = SC::mintke;
132 const int nlev_packs = ekat::npack<Spack>(
nlev);
134 Kokkos::parallel_for(Kokkos::TeamVectorRange(team, nlev_packs), [&] (
const Int& k)
139 const Spack exner = PF::exner_function(
p_mid(i,k));
140 const Smask nonzero = (exner != 0);
141 EKAT_KERNEL_ASSERT((nonzero || !(ekat::range<IntSmallPack>(k*Spack::n) <
nlev)).all());
144 tke(i,k) = ekat::max(mintke,
tke(i,k));
155 qw(i,k) =
qv(i,k) +
qc(i,k);
159 const auto theta_zt = PF::calculate_theta_from_T(
T_mid(i,k),
p_mid(i,k));
160 thlm(i,k) = PF::calculate_thetal_from_theta(theta_zt,
T_mid(i,k),
qc(i,k));
161 thv(i,k) = theta_zt*(1 + zvir*
qv(i,k) -
qc(i,k));
172 const auto dz_s = ekat::subview(
dz, i);
173 const auto z_int_s = ekat::subview(
z_int, i);
174 const auto z_mid_s = ekat::subview(
z_mid, i);
175 PF::calculate_z_int(team,
nlev,dz_s,
z_surf,z_int_s);
177 PF::calculate_z_mid(team,
nlev,z_int_s,z_mid_s);
180 const int nlevi_v =
nlev/Spack::n;
181 const int nlevi_p =
nlev%Spack::n;
182 Kokkos::parallel_for(Kokkos::TeamVectorRange(team, nlev_packs), [&] (
const Int& k)
190 if (k+1 == nlev_packs)
zi_grid(i,nlevi_v)[nlevi_p] = 0;
194 const auto zt_grid_s = ekat::subview(
zt_grid, i);
195 const auto zi_grid_s = ekat::subview(
zi_grid, i);
196 const auto rrho_s = ekat::subview(
rrho, i);
197 const auto rrho_i_s = ekat::subview(
rrho_i, i);
198 SHF::linear_interp(team,zt_grid_s,zi_grid_s,rrho_s,rrho_i_s,
nlev,
nlev+1,0);
201 const auto exner_int = PF::exner_function(
p_int(i,nlevi_v)[nlevi_p]);
202 const auto inv_exner_int_surf = 1/exner_int;
int Int
Definition: ERF_ShocInterface.H:17
amrex::Real Real
Definition: ERF_ShocInterface.H:16
typename SHF::Smask Smask
Definition: ERF_ShocInterface.H:42
typename SHF::Spack Spack
Definition: ERF_ShocInterface.H:40
int nlev
Definition: ERF_ShocInterface.H:211
view_2d cldfrac_liq_prev
Definition: ERF_ShocInterface.H:248
view_2d rrho
Definition: ERF_ShocInterface.H:231
view_2d_const pseudo_density
Definition: ERF_ShocInterface.H:216
sview_2d_const surf_mom_flux
Definition: ERF_ShocInterface.H:221
view_2d_const qc
Definition: ERF_ShocInterface.H:224
view_2d thlm
Definition: ERF_ShocInterface.H:244
view_1d_const phis
Definition: ERF_ShocInterface.H:218
view_1d_const surf_evap
Definition: ERF_ShocInterface.H:220
view_2d zt_grid
Definition: ERF_ShocInterface.H:235
view_2d cldfrac_liq
Definition: ERF_ShocInterface.H:247
view_2d inv_exner
Definition: ERF_ShocInterface.H:243
view_1d_const surf_sens_flux
Definition: ERF_ShocInterface.H:219
view_2d wm_zt
Definition: ERF_ShocInterface.H:242
view_2d qc_copy
Definition: ERF_ShocInterface.H:225
view_2d z_mid
Definition: ERF_ShocInterface.H:226
view_2d rrho_i
Definition: ERF_ShocInterface.H:232
view_2d_const omega
Definition: ERF_ShocInterface.H:217
view_2d_const T_mid
Definition: ERF_ShocInterface.H:213
Real z_surf
Definition: ERF_ShocInterface.H:212
view_2d_const p_int
Definition: ERF_ShocInterface.H:215
view_2d tke
Definition: ERF_ShocInterface.H:229
view_1d wprtp_sfc
Definition: ERF_ShocInterface.H:238
view_2d qw
Definition: ERF_ShocInterface.H:245
view_1d upwp_sfc
Definition: ERF_ShocInterface.H:239
view_1d wpthlp_sfc
Definition: ERF_ShocInterface.H:237
view_2d z_int
Definition: ERF_ShocInterface.H:227
view_2d_const p_mid
Definition: ERF_ShocInterface.H:214
view_1d vpwp_sfc
Definition: ERF_ShocInterface.H:240
view_2d dz
Definition: ERF_ShocInterface.H:234
view_2d shoc_s
Definition: ERF_ShocInterface.H:228
view_2d tke_copy
Definition: ERF_ShocInterface.H:230
view_2d zi_grid
Definition: ERF_ShocInterface.H:236
view_2d qv
Definition: ERF_ShocInterface.H:223
view_2d thv
Definition: ERF_ShocInterface.H:233