135 const int i = team.league_rank();
137 const Real zvir = C::ZVIR;
138 const Real cpair = C::Cpair;
139 const Real ggr = C::gravit;
140 const Real inv_ggr = 1/ggr;
141 const Real mintke = SC::mintke;
143 const int nlev_packs = ekat::npack<Spack>(
nlev);
145 Kokkos::parallel_for(Kokkos::TeamVectorRange(team, nlev_packs), [&] (
const Int& k)
150 const Spack exner = PF::exner_function(
p_mid(i,k));
151 const Smask nonzero = (exner != 0);
152 EKAT_KERNEL_ASSERT((nonzero || !(ekat::range<IntSmallPack>(k*Spack::n) <
nlev)).all());
155 tke(i,k) = ekat::max(mintke,
tke(i,k));
166 qw(i,k) =
qv(i,k) +
qc(i,k);
170 const auto theta_zt = PF::calculate_theta_from_T(
T_mid(i,k),
p_mid(i,k));
171 thlm(i,k) = PF::calculate_thetal_from_theta(theta_zt,
T_mid(i,k),
qc(i,k));
172 thv(i,k) = theta_zt*(1 + zvir*
qv(i,k) -
qc(i,k));
184 const auto dz_s = ekat::subview(
dz, i);
185 const auto z_int_s = ekat::subview(
z_int, i);
186 const auto z_mid_s = ekat::subview(
z_mid, i);
187 PF::calculate_z_int(team,
nlev,dz_s,
z_surf,z_int_s);
189 PF::calculate_z_mid(team,
nlev,z_int_s,z_mid_s);
192 const int nlevi_v =
nlev/Spack::n;
193 const int nlevi_p =
nlev%Spack::n;
194 Kokkos::parallel_for(Kokkos::TeamVectorRange(team, nlev_packs), [&] (
const Int& k)
202 if (k+1 == nlev_packs)
zi_grid(i,nlevi_v)[nlevi_p] = 0;
206 const auto zt_grid_s = ekat::subview(
zt_grid, i);
207 const auto zi_grid_s = ekat::subview(
zi_grid, i);
208 const auto rrho_s = ekat::subview(
rrho, i);
209 const auto rrho_i_s = ekat::subview(
rrho_i, i);
210 SHF::linear_interp(team,zt_grid_s,zi_grid_s,rrho_s,rrho_i_s,
nlev,
nlev+1,0);
213 const auto exner_int = PF::exner_function(
p_int(i,nlevi_v)[nlevi_p]);
214 const auto inv_exner_int_surf = 1/exner_int;
int Int
Definition: ERF_ShocInterface.H:20
amrex::Real Real
Definition: ERF_ShocInterface.H:19
typename SHF::Smask Smask
Definition: ERF_ShocInterface.H:45
typename SHF::Spack Spack
Definition: ERF_ShocInterface.H:43
int nlev
Definition: ERF_ShocInterface.H:223
view_2d cldfrac_liq_prev
Definition: ERF_ShocInterface.H:260
view_2d rrho
Definition: ERF_ShocInterface.H:243
view_2d_const pseudo_density
Definition: ERF_ShocInterface.H:228
sview_2d_const surf_mom_flux
Definition: ERF_ShocInterface.H:233
view_2d_const qc
Definition: ERF_ShocInterface.H:236
view_2d thlm
Definition: ERF_ShocInterface.H:256
view_1d_const phis
Definition: ERF_ShocInterface.H:230
view_1d_const surf_evap
Definition: ERF_ShocInterface.H:232
view_2d zt_grid
Definition: ERF_ShocInterface.H:247
view_2d cldfrac_liq
Definition: ERF_ShocInterface.H:259
view_2d inv_exner
Definition: ERF_ShocInterface.H:255
view_1d_const surf_sens_flux
Definition: ERF_ShocInterface.H:231
view_2d wm_zt
Definition: ERF_ShocInterface.H:254
view_2d qc_copy
Definition: ERF_ShocInterface.H:237
view_2d z_mid
Definition: ERF_ShocInterface.H:238
view_2d rrho_i
Definition: ERF_ShocInterface.H:244
view_2d_const omega
Definition: ERF_ShocInterface.H:229
view_2d_const T_mid
Definition: ERF_ShocInterface.H:225
Real z_surf
Definition: ERF_ShocInterface.H:224
view_2d_const p_int
Definition: ERF_ShocInterface.H:227
view_2d tke
Definition: ERF_ShocInterface.H:241
view_1d wprtp_sfc
Definition: ERF_ShocInterface.H:250
view_2d qw
Definition: ERF_ShocInterface.H:257
view_1d upwp_sfc
Definition: ERF_ShocInterface.H:251
view_1d wpthlp_sfc
Definition: ERF_ShocInterface.H:249
view_2d z_int
Definition: ERF_ShocInterface.H:239
view_2d_const p_mid
Definition: ERF_ShocInterface.H:226
view_1d vpwp_sfc
Definition: ERF_ShocInterface.H:252
view_2d dz
Definition: ERF_ShocInterface.H:246
view_2d shoc_s
Definition: ERF_ShocInterface.H:240
view_2d tke_copy
Definition: ERF_ShocInterface.H:242
view_2d zi_grid
Definition: ERF_ShocInterface.H:248
view_2d qv
Definition: ERF_ShocInterface.H:235
view_2d thv
Definition: ERF_ShocInterface.H:245