← Back to Documentation Home
CCPP SciDoc v8.0.0  v8.0.0
Common Community Physics Package Developed at DTC
 
Loading...
Searching...
No Matches
cires_ugwp Module Reference

This module contains the UGWP v0 scheme by Valery Yudin (University of Colorado, CIRES) More...

Functions/Subroutines

subroutine, public cires_ugwp_init (me, master, nlunit, input_nml_file, logunit, fn_nml2, lonr, levs, ak, bk, dtp, cdmbgwd, cgwf, pa_rf_in, tau_rf_in, con_p0, gwd_opt, do_ugwp, errmsg, errflg)
 The subroutine initializes the CIRES UGWP V0.
 
subroutine, public cires_ugwp_final (errmsg, errflg)
 The subroutine finalizes the CIRES UGWP.
 
subroutine, public cires_ugwp_run (do_ugwp, me, master, im, levs, ntrac, dtp, kdt, lonr, oro, oro_uf, hprime, nmtvr, oc, theta, sigma, gamma, elvmax, clx, oa4, do_tofd, ldiag_ugwp, cdmbgwd, xlat, xlat_d, sinlat, coslat, area, ugrs, vgrs, tgrs, qgrs, prsi, prsl, prslk, phii, phil, del, kpbl, dusfcg, dvsfcg, gw_dudt, gw_dvdt, gw_dtdt, gw_kdis, tau_tofd, tau_mtb, tau_ogw, tau_ngw, zmtb, zlwb, zogw, dusfc_ms, dvsfc_ms, dusfc_bl, dvsfc_bl, dudt_ogw, dtauy2d_ms, dtaux2d_bl, dtauy2d_bl, dudt_mtb, dudt_tms, du3dt_mtb, du3dt_ogw, du3dt_tms, rdxzb, con_g, con_pi, con_cp, con_rd, con_rv, con_fvirt, con_omega, rain, ntke, q_tke, dqdt_tke, lprnt, ipr, dtend, dtidx, index_of_x_wind, index_of_y_wind, index_of_temperature, index_of_process_orographic_gwd, index_of_process_nonorographic_gwd, ldiag3d, lssav, flag_for_gwd_generic_tend, ten_q, errmsg, errflg)
 These subroutines and modules execute the CIRES UGWP Version 0.
 

Detailed Description

This module contains the UGWP v0 scheme by Valery Yudin (University of Colorado, CIRES)

See Valery Yudin's presentation at 2017 NGGPS PI meeting: Gravity waves (GWs): Mesoscale GWs transport momentum, energy (heat) , and create eddy mixing in the whole atmosphere domain; Breaking and dissipating GWs deposit: (a) momentum; (b) heat (energy); and create (c) turbulent mixing of momentum, heat, and tracers To properly incorporate GW effects (a-c) unresolved by DYCOREs we need GW physics "Unified": a) all GW effects due to both dissipation/breaking; b) identical GW solvers for all GW sources; c) ability to replace solvers. Unified Formalism:

  • GW Sources: Stochastic and physics based mechanisms for GW-excitations in the lower atmosphere, calibrated by the high-res analyses/forecasts, and observations (3 types of GW sources: orography, convection, fronts/jets).
  • GW Propagation: Unified solver for "propagation, dissipation and breaking" excited from all type of GW sources.
  • GW Effects: Unified representation of GW impacts on the "resolved" flow for all sources (energy-balanced schemes for momentum, heat and mixing). https://www.weather.gov/media/sti/nggps/Presentations%202017/02%20NGGPS_VYUDIN_2017_.pdf

Function/Subroutine Documentation

◆ cires_ugwp_final()

subroutine, public cires_ugwp::cires_ugwp_final ( character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)

The subroutine finalizes the CIRES UGWP.

Argument Table

Definition at line 115 of file cires_ugwp.F90.

◆ cires_ugwp_init()

subroutine, public cires_ugwp::cires_ugwp_init ( integer, intent(in)  me,
integer, intent(in)  master,
integer, intent(in)  nlunit,
character(len=*), dimension(:), intent(in)  input_nml_file,
integer, intent(in)  logunit,
character(len=*), intent(in)  fn_nml2,
integer, intent(in)  lonr,
integer, intent(in)  levs,
real(kind=kind_phys), dimension(:), intent(in)  ak,
real(kind=kind_phys), dimension(:), intent(in)  bk,
real(kind=kind_phys), intent(in)  dtp,
real(kind=kind_phys), dimension(:), intent(in)  cdmbgwd,
real(kind=kind_phys), dimension(:), intent(in)  cgwf,
real(kind=kind_phys), intent(in)  pa_rf_in,
real(kind=kind_phys), intent(in)  tau_rf_in,
real(kind=kind_phys), intent(in)  con_p0,
integer, intent(in)  gwd_opt,
logical, intent(in)  do_ugwp,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)

The subroutine initializes the CIRES UGWP V0.

Argument Table

Definition at line 41 of file cires_ugwp.F90.

◆ 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), optional  dusfc_ms,
real(kind=kind_phys), dimension(:), intent(out), optional  dvsfc_ms,
real(kind=kind_phys), dimension(:), intent(out), optional  dusfc_bl,
real(kind=kind_phys), dimension(:), intent(out), optional  dvsfc_bl,
real(kind=kind_phys), dimension(:, :), intent(out), optional  dudt_ogw,
real(kind=kind_phys), dimension(:, :), intent(out), optional  dtauy2d_ms,
real(kind=kind_phys), dimension(:, :), intent(out), optional  dtaux2d_bl,
real(kind=kind_phys), dimension(:, :), intent(out), optional  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), optional  du3dt_mtb,
real(kind=kind_phys), dimension(:,:), intent(inout), optional  du3dt_ogw,
real(kind=kind_phys), dimension(:,:), intent(inout), optional  du3dt_tms,
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), optional  q_tke,
real(kind=kind_phys), dimension(:,:), intent(in), optional  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,
real(kind=kind_phys), dimension(:,:,:), intent(out)  ten_q,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)

These subroutines and modules execute the CIRES UGWP Version 0.

CIRES UGWP V0 Scheme General Algorithm

The physics of Non-Orographic Gravity Waves (NGWs) in the UGWP framework (Yudin et al. 2018 [206]) is represented by four GW-solvers, introduced in Lindzen (1981) [123], Hines (1997) [91], Alexander and Dunkerton (1999) [1], and Scinocca (2003) [177]. 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) [178]). In the UGWP-v0 scheme, a modification of the Scinocca (2003) [177] 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) [144] and employed in the MERRRA-2 reanalysis (Gelaro et al., 2017 [70]). The Fortran subroutine slat_geos5_tamp_v0() describes the latitudinal shape of VMF-function as displayed in Figure 3 of Molod et al. (2015) [144]. 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

Definition at line 189 of file cires_ugwp.F90.

References gwdps::gwdps_run().

Here is the call graph for this function: