167 const int i = team.league_rank();
169 const Real zvir = C::ZVIR;
171 const Real ggr = C::gravit;
172 const Real inv_ggr = 1/ggr;
173 const Real mintke = SC::mintke;
175 const int nlev_packs = ekat::npack<Spack>(
nlev);
177 Kokkos::parallel_for(Kokkos::TeamVectorRange(team, nlev_packs), [&] (
const Int& k)
182 const Spack exner = PF::exner_function(
p_mid(i,k));
183 const Smask nonzero = (exner != 0);
184 EKAT_KERNEL_ASSERT((nonzero || !(ekat::range<IntSmallPack>(k*Spack::n) <
nlev)).all());
187 tke(i,k) = ekat::max(mintke,
tke(i,k));
198 qw(i,k) =
qv(i,k) +
qc(i,k);
202 const auto theta_zt = PF::calculate_theta_from_T(
T_mid(i,k),
p_mid(i,k));
203 thlm(i,k) = PF::calculate_thetal_from_theta(theta_zt,
T_mid(i,k),
qc(i,k));
204 thv(i,k) = theta_zt*(1 + zvir*
qv(i,k) -
qc(i,k));
216 const auto dz_s = ekat::subview(
dz, i);
217 const auto z_int_s = ekat::subview(
z_int, i);
218 const auto z_mid_s = ekat::subview(
z_mid, i);
219 PF::calculate_z_int(team,
nlev,dz_s,
z_surf,z_int_s);
221 PF::calculate_z_mid(team,
nlev,z_int_s,z_mid_s);
224 const int nlevi_v =
nlev/Spack::n;
225 const int nlevi_p =
nlev%Spack::n;
226 Kokkos::parallel_for(Kokkos::TeamVectorRange(team, nlev_packs), [&] (
const Int& k)
234 if (k+1 == nlev_packs)
zi_grid(i,nlevi_v)[nlevi_p] = 0;
238 const auto zt_grid_s = ekat::subview(
zt_grid, i);
239 const auto zi_grid_s = ekat::subview(
zi_grid, i);
240 const auto rrho_s = ekat::subview(
rrho, i);
241 const auto rrho_i_s = ekat::subview(
rrho_i, i);
242 SHF::linear_interp(team,zt_grid_s,zi_grid_s,rrho_s,rrho_i_s,
nlev,
nlev+1,0);
int Int
Definition: ERF_ShocInterface.H:20
amrex::Real Real
Definition: ERF_ShocInterface.H:19
typename SHF::Smask Smask
Definition: ERF_ShocInterface.H:59
typename SHF::Spack Spack
Definition: ERF_ShocInterface.H:57
int nlev
Definition: ERF_ShocInterface.H:255
view_2d cldfrac_liq_prev
Definition: ERF_ShocInterface.H:292
view_2d rrho
Definition: ERF_ShocInterface.H:275
view_2d_const pseudo_density
Definition: ERF_ShocInterface.H:260
sview_2d_const surf_mom_flux
Definition: ERF_ShocInterface.H:265
view_2d_const qc
Definition: ERF_ShocInterface.H:268
view_2d thlm
Definition: ERF_ShocInterface.H:288
view_1d_const phis
Definition: ERF_ShocInterface.H:262
view_1d_const surf_evap
Definition: ERF_ShocInterface.H:264
view_2d zt_grid
Definition: ERF_ShocInterface.H:279
view_2d cldfrac_liq
Definition: ERF_ShocInterface.H:291
view_2d inv_exner
Definition: ERF_ShocInterface.H:287
view_1d_const surf_sens_flux
Definition: ERF_ShocInterface.H:263
view_2d wm_zt
Definition: ERF_ShocInterface.H:286
view_2d qc_copy
Definition: ERF_ShocInterface.H:269
view_2d z_mid
Definition: ERF_ShocInterface.H:270
view_2d rrho_i
Definition: ERF_ShocInterface.H:276
view_2d_const omega
Definition: ERF_ShocInterface.H:261
view_2d_const T_mid
Definition: ERF_ShocInterface.H:257
Real z_surf
Definition: ERF_ShocInterface.H:256
view_2d tke
Definition: ERF_ShocInterface.H:273
view_1d wprtp_sfc
Definition: ERF_ShocInterface.H:282
view_2d qw
Definition: ERF_ShocInterface.H:289
view_1d upwp_sfc
Definition: ERF_ShocInterface.H:283
view_1d wpthlp_sfc
Definition: ERF_ShocInterface.H:281
view_2d z_int
Definition: ERF_ShocInterface.H:271
view_2d_const p_mid
Definition: ERF_ShocInterface.H:258
view_1d vpwp_sfc
Definition: ERF_ShocInterface.H:284
view_2d dz
Definition: ERF_ShocInterface.H:278
view_2d shoc_s
Definition: ERF_ShocInterface.H:272
view_2d tke_copy
Definition: ERF_ShocInterface.H:274
view_2d zi_grid
Definition: ERF_ShocInterface.H:280
view_2d qv
Definition: ERF_ShocInterface.H:267
view_2d thv
Definition: ERF_ShocInterface.H:277