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

◆ unified_ugwp_run()

subroutine, public unified_ugwp::unified_ugwp_run ( integer, intent(in)  me,
integer, intent(in)  master,
integer, intent(in)  im,
integer, intent(in)  levs,
real(kind=kind_phys), dimension(:), intent(in)  ak,
real(kind=kind_phys), dimension(:), intent(in)  bk,
integer, intent(in)  ntrac,
real(kind=kind_phys), intent(in)  dtp,
real(kind=kind_phys), intent(in)  fhzero,
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,
real(kind=kind_phys), dimension(:), intent(in)  varss,
real(kind=kind_phys), dimension(:), intent(in)  oc1ss,
real(kind=kind_phys), dimension(:,:), intent(in)  oa4ss,
real(kind=kind_phys), dimension(:,:), intent(in)  ol4ss,
real(kind=kind_phys), dimension(:), intent(in)  dx,
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)  dusfc_ss,
real(kind=kind_phys), dimension(:), intent(out)  dvsfc_ss,
real(kind=kind_phys), dimension(:), intent(out)  dusfc_fd,
real(kind=kind_phys), dimension(:), intent(out)  dvsfc_fd,
real(kind=kind_phys), dimension(:,:), intent(out)  dtaux2d_ms,
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)  dtaux2d_ss,
real(kind=kind_phys), dimension(:,:), intent(out)  dtauy2d_ss,
real(kind=kind_phys), dimension(:,:), intent(out)  dtaux2d_fd,
real(kind=kind_phys), dimension(:,:), intent(out)  dtauy2d_fd,
real(kind=kind_phys), dimension(:,:), intent(out)  dudt_ngw,
real(kind=kind_phys), dimension(:,:), intent(out)  dvdt_ngw,
real(kind=kind_phys), dimension(:,:), intent(out)  dtdt_ngw,
real(kind=kind_phys), dimension(:), intent(in)  br1,
real(kind=kind_phys), dimension(:), intent(in)  hpbl,
real(kind=kind_phys), dimension(:), intent(in)  slmsk,
logical, intent(in)  do_tofd,
logical, intent(in)  ldiag_ugwp,
logical, intent(in)  ugwp_seq_update,
real(kind=kind_phys), dimension(:), intent(in)  cdmbgwd,
integer, dimension(:), intent(in)  jdat,
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)  q1,
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)  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_omega,
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_rerth,
real(kind=kind_phys), intent(in)  con_fvirt,
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,
logical, intent(in)  ldiag3d,
real(kind=kind_phys), dimension(:,:,:), intent(inout)  dtend,
integer, dimension(:,:), intent(in)  dtidx,
integer, intent(in)  index_of_temperature,
integer, intent(in)  index_of_x_wind,
integer, intent(in)  index_of_y_wind,
integer, intent(in)  index_of_process_orographic_gwd,
integer, intent(in)  index_of_process_nonorographic_gwd,
logical, intent(in)  lssav,
logical, intent(in)  flag_for_gwd_generic_tend,
logical, intent(in)  do_ugwp_v0,
logical, intent(in)  do_ugwp_v0_orog_only,
logical, intent(in)  do_ugwp_v0_nst_only,
logical, intent(in)  do_gsl_drag_ls_bl,
logical, intent(in)  do_gsl_drag_ss,
logical, intent(in)  do_gsl_drag_tofd,
integer, intent(in)  gwd_opt,
real(kind=kind_phys), dimension(:,:), intent(in)  spp_wts_gwd,
integer, intent(in)  spp_gwd,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)

GFS Unified GWP Scheme General Algorithm

The physics of NGWs in the UGWP framework (Yudin et al. 2018 [200]) is represented by four GW-solvers, which is introduced in Lindzen (1981) [123], Hines (1997) [91], Alexander and Dunkerton (1999) [1], and Scinocca (2003) [176]. The major modification of these GW solvers is represented by 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, the modification of Scinocca (2003) [176] scheme for NGWs with non-hydrostatic and rotational effects for GW propagations and backgroufnd dissipation is represented by the subroutine fv3_ugwp_solv2_v0. In the next release of UGWP, additional GW-solvers will 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 drag_suite::drag_suite_run(), ugwp_driver_v0::fv3_ugwp_solv2_v0(), and gwdps::gwdps_run().

Here is the call graph for this function: