153 const int i = team.league_rank();
155 const Real zvir = C::ZVIR;
157 const Real ggr = C::gravit;
158 const Real inv_ggr = 1/ggr;
159 const Real mintke = SC::mintke;
161 const int nlev_packs = ekat::npack<Spack>(
nlev);
163 Kokkos::parallel_for(Kokkos::TeamVectorRange(team, nlev_packs), [&] (
const Int& k)
168 const Spack exner = PF::exner_function(
p_mid(i,k));
169 const Smask nonzero = (exner != 0);
170 EKAT_KERNEL_ASSERT((nonzero || !(ekat::range<IntSmallPack>(k*Spack::n) <
nlev)).all());
173 tke(i,k) = ekat::max(mintke,
tke(i,k));
184 qw(i,k) =
qv(i,k) +
qc(i,k);
188 const auto theta_zt = PF::calculate_theta_from_T(
T_mid(i,k),
p_mid(i,k));
189 thlm(i,k) = PF::calculate_thetal_from_theta(theta_zt,
T_mid(i,k),
qc(i,k));
190 thv(i,k) = theta_zt*(1 + zvir*
qv(i,k) -
qc(i,k));
202 const auto dz_s = ekat::subview(
dz, i);
203 const auto z_int_s = ekat::subview(
z_int, i);
204 const auto z_mid_s = ekat::subview(
z_mid, i);
205 PF::calculate_z_int(team,
nlev,dz_s,
z_surf,z_int_s);
207 PF::calculate_z_mid(team,
nlev,z_int_s,z_mid_s);
210 const int nlevi_v =
nlev/Spack::n;
211 const int nlevi_p =
nlev%Spack::n;
212 Kokkos::parallel_for(Kokkos::TeamVectorRange(team, nlev_packs), [&] (
const Int& k)
220 if (k+1 == nlev_packs)
zi_grid(i,nlevi_v)[nlevi_p] = 0;
224 const auto zt_grid_s = ekat::subview(
zt_grid, i);
225 const auto zi_grid_s = ekat::subview(
zi_grid, i);
226 const auto rrho_s = ekat::subview(
rrho, i);
227 const auto rrho_i_s = ekat::subview(
rrho_i, i);
228 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:45
typename SHF::Spack Spack
Definition: ERF_ShocInterface.H:43
int nlev
Definition: ERF_ShocInterface.H:241
view_2d cldfrac_liq_prev
Definition: ERF_ShocInterface.H:278
view_2d rrho
Definition: ERF_ShocInterface.H:261
view_2d_const pseudo_density
Definition: ERF_ShocInterface.H:246
sview_2d_const surf_mom_flux
Definition: ERF_ShocInterface.H:251
view_2d_const qc
Definition: ERF_ShocInterface.H:254
view_2d thlm
Definition: ERF_ShocInterface.H:274
view_1d_const phis
Definition: ERF_ShocInterface.H:248
view_1d_const surf_evap
Definition: ERF_ShocInterface.H:250
view_2d zt_grid
Definition: ERF_ShocInterface.H:265
view_2d cldfrac_liq
Definition: ERF_ShocInterface.H:277
view_2d inv_exner
Definition: ERF_ShocInterface.H:273
view_1d_const surf_sens_flux
Definition: ERF_ShocInterface.H:249
view_2d wm_zt
Definition: ERF_ShocInterface.H:272
view_2d qc_copy
Definition: ERF_ShocInterface.H:255
view_2d z_mid
Definition: ERF_ShocInterface.H:256
view_2d rrho_i
Definition: ERF_ShocInterface.H:262
view_2d_const omega
Definition: ERF_ShocInterface.H:247
view_2d_const T_mid
Definition: ERF_ShocInterface.H:243
Real z_surf
Definition: ERF_ShocInterface.H:242
view_2d tke
Definition: ERF_ShocInterface.H:259
view_1d wprtp_sfc
Definition: ERF_ShocInterface.H:268
view_2d qw
Definition: ERF_ShocInterface.H:275
view_1d upwp_sfc
Definition: ERF_ShocInterface.H:269
view_1d wpthlp_sfc
Definition: ERF_ShocInterface.H:267
view_2d z_int
Definition: ERF_ShocInterface.H:257
view_2d_const p_mid
Definition: ERF_ShocInterface.H:244
view_1d vpwp_sfc
Definition: ERF_ShocInterface.H:270
view_2d dz
Definition: ERF_ShocInterface.H:264
view_2d shoc_s
Definition: ERF_ShocInterface.H:258
view_2d tke_copy
Definition: ERF_ShocInterface.H:260
view_2d zi_grid
Definition: ERF_ShocInterface.H:266
view_2d qv
Definition: ERF_ShocInterface.H:253
view_2d thv
Definition: ERF_ShocInterface.H:263