CCPP SciDoc for UFS-SRW v2.2.0  SRW v2.2.0
Common Community Physics Package Developed at DTC

◆ cires_ugwp_run()

subroutine, public cires_ugwp::cires_ugwp_run ( logical, intent(in)  do_ugwp,
integer, intent(in)  me,
integer, intent(in)  master,
integer, intent(in)  im,
integer, intent(in)  levs,
integer, intent(in)  ntrac,
real(kind=kind_phys), intent(in)  dtp,
integer, intent(in)  kdt,
integer, intent(in)  lonr,
real(kind=kind_phys), dimension(:), intent(in)  oro,
real(kind=kind_phys), dimension(:), intent(in)  oro_uf,
real(kind=kind_phys), dimension(:), intent(in)  hprime,
integer, intent(in)  nmtvr,
real(kind=kind_phys), dimension(:), intent(in)  oc,
real(kind=kind_phys), dimension(:), intent(in)  theta,
real(kind=kind_phys), dimension(:), intent(in)  sigma,
real(kind=kind_phys), dimension(:), intent(in)  gamma,
real(kind=kind_phys), dimension(:), intent(inout)  elvmax,
real(kind=kind_phys), dimension(:, :), intent(in)  clx,
real(kind=kind_phys), dimension(:, :), intent(in)  oa4,
logical, intent(in)  do_tofd,
logical, intent(in)  ldiag_ugwp,
real(kind=kind_phys), dimension(:), intent(in)  cdmbgwd,
real(kind=kind_phys), dimension(:), intent(in)  xlat,
real(kind=kind_phys), dimension(:), intent(in)  xlat_d,
real(kind=kind_phys), dimension(:), intent(in)  sinlat,
real(kind=kind_phys), dimension(:), intent(in)  coslat,
real(kind=kind_phys), dimension(:), intent(in)  area,
real(kind=kind_phys), dimension(:, :), intent(in)  ugrs,
real(kind=kind_phys), dimension(:, :), intent(in)  vgrs,
real(kind=kind_phys), dimension(:, :), intent(in)  tgrs,
real(kind=kind_phys), dimension(:,:,:), intent(in)  qgrs,
real(kind=kind_phys), dimension(:, :), intent(in)  prsi,
real(kind=kind_phys), dimension(:, :), intent(in)  prsl,
real(kind=kind_phys), dimension(:, :), intent(in)  prslk,
real(kind=kind_phys), dimension(:, :), intent(in)  phii,
real(kind=kind_phys), dimension(:, :), intent(in)  phil,
real(kind=kind_phys), dimension(:, :), intent(in)  del,
integer, dimension(:), intent(in)  kpbl,
real(kind=kind_phys), dimension(:), intent(out)  dusfcg,
real(kind=kind_phys), dimension(:), intent(out)  dvsfcg,
real(kind=kind_phys), dimension(:, :), intent(out)  gw_dudt,
real(kind=kind_phys), dimension(:, :), intent(out)  gw_dvdt,
real(kind=kind_phys), dimension(:, :), intent(out)  gw_dtdt,
real(kind=kind_phys), dimension(:, :), intent(out)  gw_kdis,
real(kind=kind_phys), dimension(:), intent(out)  tau_tofd,
real(kind=kind_phys), dimension(:), intent(out)  tau_mtb,
real(kind=kind_phys), dimension(:), intent(out)  tau_ogw,
real(kind=kind_phys), dimension(:), intent(out)  tau_ngw,
real(kind=kind_phys), dimension(:), intent(out)  zmtb,
real(kind=kind_phys), dimension(:), intent(out)  zlwb,
real(kind=kind_phys), dimension(:), intent(out)  zogw,
real(kind=kind_phys), dimension(:), intent(out)  dusfc_ms,
real(kind=kind_phys), dimension(:), intent(out)  dvsfc_ms,
real(kind=kind_phys), dimension(:), intent(out)  dusfc_bl,
real(kind=kind_phys), dimension(:), intent(out)  dvsfc_bl,
real(kind=kind_phys), dimension(:, :), intent(out)  dudt_ogw,
real(kind=kind_phys), dimension(:, :), intent(out)  dtauy2d_ms,
real(kind=kind_phys), dimension(:, :), intent(out)  dtaux2d_bl,
real(kind=kind_phys), dimension(:, :), intent(out)  dtauy2d_bl,
real(kind=kind_phys), dimension(:, :), intent(out)  dudt_mtb,
real(kind=kind_phys), dimension(:, :), intent(out)  dudt_tms,
real(kind=kind_phys), dimension(:,:), intent(inout)  du3dt_mtb,
real(kind=kind_phys), dimension(:,:), intent(inout)  du3dt_ogw,
real(kind=kind_phys), dimension(:,:), intent(inout)  du3dt_tms,
real(kind=kind_phys), dimension(:, :), intent(inout)  dudt,
real(kind=kind_phys), dimension(:, :), intent(inout)  dvdt,
real(kind=kind_phys), dimension(:, :), intent(inout)  dtdt,
real(kind=kind_phys), dimension(:), intent(out)  rdxzb,
real(kind=kind_phys), intent(in)  con_g,
real(kind=kind_phys), intent(in)  con_pi,
real(kind=kind_phys), intent(in)  con_cp,
real(kind=kind_phys), intent(in)  con_rd,
real(kind=kind_phys), intent(in)  con_rv,
real(kind=kind_phys), intent(in)  con_fvirt,
real(kind=kind_phys), intent(in)  con_omega,
real(kind=kind_phys), dimension(:), intent(in)  rain,
integer, intent(in)  ntke,
real(kind=kind_phys), dimension(:,:), intent(in)  q_tke,
real(kind=kind_phys), dimension(:,:), intent(in)  dqdt_tke,
logical, intent(in)  lprnt,
integer, intent(in)  ipr,
real(kind=kind_phys), dimension(:,:,:), intent(inout), optional  dtend,
integer, dimension(:,:), intent(in)  dtidx,
integer, intent(in)  index_of_x_wind,
integer, intent(in)  index_of_y_wind,
integer, intent(in)  index_of_temperature,
integer, intent(in)  index_of_process_orographic_gwd,
integer, intent(in)  index_of_process_nonorographic_gwd,
logical, intent(in)  ldiag3d,
logical, intent(in)  lssav,
logical, intent(in)  flag_for_gwd_generic_tend,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)

CIRES UGWP V0 Scheme General Algorithm

The physics of Non-Orographic Gravity Waves (NGWs) in the UGWP framework (Yudin et al. 2018 [200]) is represented by four GW-solvers, introduced in Lindzen (1981) [123], Hines (1997) [91], Alexander and Dunkerton (1999) [1], and Scinocca (2003) [176]. A major modification of these GW solvers was introduced with the addition of the background dissipation of temperature and winds to the saturation criteria for wave breaking. This feature is important in the mesosphere and thermosphere for WAM applications and it considers appropriate scale-dependent dissipation of waves near the model top lid providing the momentum and energy conservation in the vertical column physics (Shaw and Shepherd (2009) [177]). In the UGWP-v0 scheme, a modification of the Scinocca (2003) [176] algorithm for NGWs with non-hydrostatic and rotational effects for GW propagations and background dissipation is contained in the subroutine fv3_ugwp_solv2_v0. Future development plans for the UGWP scheme include additional GW-solvers to be implemented along with physics-based triggering of waves and stochastic approaches for selection of GW modes characterized by horizontal phase velocities, azimuthal directions and magnitude of the vertical momentum flux (VMF).

In UGWP-v0, the specification for the VMF function is adopted from the GEOS-5 global atmosphere model of GMAO NASA/GSFC, as described in Molod et al. (2015) [142] and employed in the MERRRA-2 reanalysis (Gelaro et al., 2017 [73]). The Fortran subroutine slat_geos5_tamp_v0() describes the latitudinal shape of VMF-function as displayed in Figure 3 of Molod et al. (2015) [142]. It shows that the enhanced values of VMF in the equatorial region gives opportunity to simulate the QBO-like oscillations in the equatorial zonal winds and lead to more realistic simulations of the equatorial dynamics in GEOS-5 operational and MERRA-2 reanalysis products. For the first vertically extended version of FV3GFS in the stratosphere and mesosphere, this simplified function of VMF allows us to tune the model climate and to evaluate multi-year simulations of FV3GFS with the MERRA-2 and ERA-5 reanalysis products, along with temperature, ozone, and water vapor observations of current satellite missions. After delivery of the UGWP-code, the EMC group developed and tested approach to modulate the zonal mean NGW forcing by 3D-distributions of the total precipitation as a proxy for the excitation of NGWs by convection and the vertically-integrated
(surface - tropopause) Turbulent Kinetic Energy (TKE). The verification scores with updated NGW forcing, as reported elsewhere by EMC researchers, display noticeable improvements in the forecast scores produced by FV3GFS configuration extended into the mesosphere.

Argument Table

References ugwp_driver_v0::fv3_ugwp_solv2_v0(), and gwdps::gwdps_run().

Here is the call graph for this function: