CCPP Scientific Documentation
v5.0.0
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(im), intent(in)  oro,
real(kind=kind_phys), dimension(im), intent(in)  oro_uf,
real(kind=kind_phys), dimension(im), intent(in)  hprime,
integer, intent(in)  nmtvr,
real(kind=kind_phys), dimension(im), intent(in)  oc,
real(kind=kind_phys), dimension(im), intent(in)  theta,
real(kind=kind_phys), dimension(im), intent(in)  sigma,
real(kind=kind_phys), dimension(im), intent(in)  gamma,
real(kind=kind_phys), dimension(im), intent(inout)  elvmax,
real(kind=kind_phys), dimension(im, 4), intent(in)  clx,
real(kind=kind_phys), dimension(im, 4), intent(in)  oa4,
logical, intent(in)  do_tofd,
logical, intent(in)  ldiag_ugwp,
real(kind=kind_phys), dimension(4), intent(in)  cdmbgwd,
real(kind=kind_phys), dimension(im), intent(in)  xlat,
real(kind=kind_phys), dimension(im), intent(in)  xlat_d,
real(kind=kind_phys), dimension(im), intent(in)  sinlat,
real(kind=kind_phys), dimension(im), intent(in)  coslat,
real(kind=kind_phys), dimension(im), intent(in)  area,
real(kind=kind_phys), dimension(im, levs), intent(in)  ugrs,
real(kind=kind_phys), dimension(im, levs), intent(in)  vgrs,
real(kind=kind_phys), dimension(im, levs), intent(in)  tgrs,
real(kind=kind_phys), dimension(im, levs, ntrac), intent(in)  qgrs,
real(kind=kind_phys), dimension(im, levs+1), intent(in)  prsi,
real(kind=kind_phys), dimension(im, levs), intent(in)  prsl,
real(kind=kind_phys), dimension(im, levs), intent(in)  prslk,
real(kind=kind_phys), dimension(im, levs+1), intent(in)  phii,
real(kind=kind_phys), dimension(im, levs), intent(in)  phil,
real(kind=kind_phys), dimension(im, levs), intent(in)  del,
integer, dimension(im), intent(in)  kpbl,
real(kind=kind_phys), dimension(im), intent(out)  dusfcg,
real(kind=kind_phys), dimension(im), intent(out)  dvsfcg,
real(kind=kind_phys), dimension(im, levs), intent(out)  gw_dudt,
real(kind=kind_phys), dimension(im, levs), intent(out)  gw_dvdt,
real(kind=kind_phys), dimension(im, levs), intent(out)  gw_dtdt,
real(kind=kind_phys), dimension(im, levs), intent(out)  gw_kdis,
real(kind=kind_phys), dimension(im), intent(out)  tau_tofd,
real(kind=kind_phys), dimension(im), intent(out)  tau_mtb,
real(kind=kind_phys), dimension(im), intent(out)  tau_ogw,
real(kind=kind_phys), dimension(im), intent(out)  tau_ngw,
real(kind=kind_phys), dimension(im), intent(out)  zmtb,
real(kind=kind_phys), dimension(im), intent(out)  zlwb,
real(kind=kind_phys), dimension(im), intent(out)  zogw,
real(kind=kind_phys), dimension(im, levs), intent(out)  dudt_mtb,
real(kind=kind_phys), dimension(im, levs), intent(out)  dudt_ogw,
real(kind=kind_phys), dimension(im, levs), intent(out)  dudt_tms,
real(kind=kind_phys), dimension(:,:), intent(out)  du3dt_mtb,
real(kind=kind_phys), dimension(:,:), intent(out)  du3dt_ogw,
real(kind=kind_phys), dimension(:,:), intent(out)  du3dt_tms,
real(kind=kind_phys), dimension(im, levs), intent(inout)  dudt,
real(kind=kind_phys), dimension(im, levs), intent(inout)  dvdt,
real(kind=kind_phys), dimension(im, levs), intent(inout)  dtdt,
real(kind=kind_phys), dimension(im), 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), dimension(im), 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)  ldu3dt_ogw,
real(kind=kind_phys), dimension(:,:), intent(inout)  ldv3dt_ogw,
real(kind=kind_phys), dimension(:,:), intent(inout)  ldt3dt_ogw,
real(kind=kind_phys), dimension(:,:), intent(inout)  ldu3dt_cgw,
real(kind=kind_phys), dimension(:,:), intent(inout)  ldv3dt_cgw,
real(kind=kind_phys), dimension(:,:), intent(inout)  ldt3dt_cgw,
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 
)

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) [128] and employed in the MERRRA-2 reanalysis (Gelaro et al., 2017 [64]). The Fortran subroutine slat_geos5_tamp describes the latitudinal shape of VMF-function as displayed in Figure 3 of Molod et al. (2015) [128]. 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

cires_ugwp_run argument table
local_namestandard_namelong_nameunitstypedimensionskindintentoptional
do_ugwpdo_ugwpflag to activate CIRES UGWPflaglogical()inFalse
mempi_rankMPI rank of current processindexinteger()inFalse
mastermpi_rootMPI rank of master processindexinteger()inFalse
imhorizontal_loop_extenthorizontalcountinteger()inFalse
levsvertical_dimensionnumber of vertical levelscountinteger()inFalse
ntracnumber_of_tracersnumber of tracerscountinteger()inFalse
dtptime_step_for_physicsphysics timestepsreal()kind_physinFalse
kdtindex_of_time_stepcurrent forecast iterationindexinteger()inFalse
lonrnumber_of_equatorial_longitude_pointsnumber of global points in x-dir (i) along the equatorcountinteger()inFalse
oroorographyorographymreal(horizontal_dimension)kind_physinFalse
oro_uforography_unfilteredunfiltered orographymreal(horizontal_dimension)kind_physinFalse
hprimestandard_deviation_of_subgrid_orographystandard deviation of subgrid orographymreal(horizontal_dimension)kind_physinFalse
nmtvrnumber_of_statistical_measures_of_subgrid_orographynumber of topographic variables in GWDcountinteger()inFalse
occonvexity_of_subgrid_orographyconvexity of subgrid orographynonereal(horizontal_dimension)kind_physinFalse
thetaangle_from_east_of_maximum_subgrid_orographic_variationsangle with_respect to east of maximum subgrid orographic variationsdegreereal(horizontal_dimension)kind_physinFalse
sigmaslope_of_subgrid_orographyslope of subgrid orographynonereal(horizontal_dimension)kind_physinFalse
gammaanisotropy_of_subgrid_orographyanisotropy of subgrid orographynonereal(horizontal_dimension)kind_physinFalse
elvmaxmaximum_subgrid_orographymaximum of subgrid orographymreal(horizontal_dimension)kind_physinoutFalse
clxfraction_of_grid_box_with_subgrid_orography_higher_than_critical_heighthorizontal fraction of grid box covered by subgrid orography higher than critical heightfracreal(horizontal_dimension, 4)kind_physinFalse
oa4asymmetry_of_subgrid_orographyasymmetry of subgrid orographynonereal(horizontal_dimension, 4)kind_physinFalse
do_tofdturb_oro_form_drag_flagflag for turbulent orographic form dragflaglogical()inFalse
ldiag_ugwpdiag_ugwp_flagflag for CIRES UGWP Diagnosticsflaglogical()inFalse
cdmbgwdmultiplication_factors_for_mountain_blocking_and_orographic_gravity_wave_dragmultiplication factors for cdmb and gwdnonereal(4)kind_physinFalse
xlatlatitudegrid latituderadianreal(horizontal_dimension)kind_physinFalse
xlat_dlatitude_in_degreelatitude in degree northdegree_northreal(horizontal_dimension)kind_physinFalse
sinlatsine_of_latitudesine of the grid latitudenonereal(horizontal_dimension)kind_physinFalse
coslatcosine_of_latitudecosine of the grid latitudenonereal(horizontal_dimension)kind_physinFalse
areacell_areaarea of the grid cellm2real(horizontal_dimension)kind_physinFalse
ugrsx_windzonal windm s-1real(horizontal_dimension, vertical_dimension)kind_physinFalse
vgrsy_windmeridional windm s-1real(horizontal_dimension, vertical_dimension)kind_physinFalse
tgrsair_temperaturemodel layer mean temperatureKreal(horizontal_dimension, vertical_dimension)kind_physinFalse
qgrstracer_concentrationmodel layer mean tracer concentrationkg kg-1real(horizontal_dimension, vertical_dimension, number_of_tracers)kind_physinFalse
prsiair_pressure_at_interfaceair pressure at model layer interfacesPareal(horizontal_dimension, vertical_dimension_plus_one)kind_physinFalse
prslair_pressuremean layer pressurePareal(horizontal_dimension, vertical_dimension)kind_physinFalse
prslkdimensionless_exner_function_at_model_layersdimensionless Exner function at model layer centersnonereal(horizontal_dimension, vertical_dimension)kind_physinFalse
phiigeopotential_at_interfacegeopotential at model layer interfacesm2 s-2real(horizontal_dimension, vertical_dimension_plus_one)kind_physinFalse
philgeopotentialgeopotential at model layer centersm2 s-2real(horizontal_dimension, vertical_dimension)kind_physinFalse
delair_pressure_difference_between_midlayersair pressure difference between midlayersPareal(horizontal_dimension, vertical_dimension)kind_physinFalse
kpblvertical_index_at_top_of_atmosphere_boundary_layervertical index at top atmospheric boundary layerindexinteger(horizontal_dimension)inFalse
dusfcginstantaneous_x_stress_due_to_gravity_wave_dragzonal surface stress due to orographic gravity wave dragPareal(horizontal_dimension)kind_physoutFalse
dvsfcginstantaneous_y_stress_due_to_gravity_wave_dragmeridional surface stress due to orographic gravity wave dragPareal(horizontal_dimension)kind_physoutFalse
gw_dudttendency_of_x_wind_due_to_ugwpzonal wind tendency due to UGWPm s-2real(horizontal_dimension, vertical_dimension)kind_physoutFalse
gw_dvdttendency_of_y_wind_due_to_ugwpmeridional wind tendency due to UGWPm s-2real(horizontal_dimension, vertical_dimension)kind_physoutFalse
gw_dtdttendency_of_air_temperature_due_to_ugwpair temperature tendency due to UGWPK s-1real(horizontal_dimension, vertical_dimension)kind_physoutFalse
gw_kdiseddy_mixing_due_to_ugwpeddy mixing due to UGWPm2 s-1real(horizontal_dimension, vertical_dimension)kind_physoutFalse
tau_tofdinstantaneous_momentum_flux_due_to_turbulent_orographic_form_dragmomentum flux or stress due to TOFDPareal(horizontal_dimension)kind_physoutFalse
tau_mtbinstantaneous_momentum_flux_due_to_mountain_blocking_dragmomentum flux or stress due to mountain blocking dragPareal(horizontal_dimension)kind_physoutFalse
tau_ogwinstantaneous_momentum_flux_due_to_orographic_gravity_wave_dragmomentum flux or stress due to orographic gravity wave dragPareal(horizontal_dimension)kind_physoutFalse
tau_ngwinstantaneous_momentum_flux_due_to_nonstationary_gravity_wavemomentum flux or stress due to nonstationary gravity wavesPareal(horizontal_dimension)kind_physoutFalse
zmtbheight_of_mountain_blockingheight of mountain blocking dragmreal(horizontal_dimension)kind_physoutFalse
zlwbheight_of_low_level_wave_breakingheight of low level wave breakingmreal(horizontal_dimension)kind_physoutFalse
zogwheight_of_launch_level_of_orographic_gravity_waveheight of launch level of orographic gravity wavemreal(horizontal_dimension)kind_physoutFalse
dudt_mtbinstantaneous_change_in_x_wind_due_to_mountain_blocking_draginstantaneous change in x wind due to mountain blocking dragm s-2real(horizontal_dimension, vertical_dimension)kind_physoutFalse
dudt_ogwinstantaneous_change_in_x_wind_due_to_orographic_gravity_wave_draginstantaneous change in x wind due to orographic gw dragm s-2real(horizontal_dimension, vertical_dimension)kind_physoutFalse
dudt_tmsinstantaneous_change_in_x_wind_due_to_turbulent_orographic_form_draginstantaneous change in x wind due to TOFDm s-2real(horizontal_dimension, vertical_dimension)kind_physoutFalse
du3dt_mtbtime_integral_of_change_in_x_wind_due_to_mountain_blocking_dragtime integral of change in x wind due to mountain blocking dragm s-2real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
du3dt_ogwtime_integral_of_change_in_x_wind_due_to_orographic_gravity_wave_dragtime integral of change in x wind due to orographic gw dragm s-2real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
du3dt_tmstime_integral_of_change_in_x_wind_due_to_turbulent_orographic_form_dragtime integral of change in x wind due to TOFDm s-2real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
dudttendency_of_x_wind_due_to_model_physicszonal wind tendency due to model physicsm s-2real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
dvdttendency_of_y_wind_due_to_model_physicsmeridional wind tendency due to model physicsm s-2real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
dtdttendency_of_air_temperature_due_to_model_physicsair temperature tendency due to model physicsK s-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
rdxzblevel_of_dividing_streamlinelevel of the dividing streamlinenonereal(horizontal_dimension)kind_physoutFalse
con_ggravitational_accelerationgravitational accelerationm s-2real()kind_physinFalse
con_pipiratio of a circle's circumference to its diameternonereal()kind_physinFalse
con_cpspecific_heat_of_dry_air_at_constant_pressurespecific heat !of dry air at constant pressureJ kg-1 K-1real()kind_physinFalse
con_rdgas_constant_dry_airideal gas constant for dry airJ kg-1 K-1real()kind_physinFalse
con_rvgas_constant_water_vaporideal gas constant for water vaporJ kg-1 K-1real()kind_physinFalse
con_fvirtratio_of_vapor_to_dry_air_gas_constants_minus_onerv/rd - 1 (rv = ideal gas constant for water vapor)nonereal()kind_physinFalse
rainlwe_thickness_of_precipitation_amount_on_dynamics_timesteptotal rain at this time stepmreal(horizontal_dimension)kind_physinFalse
ntkeindex_for_turbulent_kinetic_energytracer index for turbulent kinetic energyindexinteger()inFalse
q_tketurbulent_kinetic_energyturbulent kinetic energyJreal(horizontal_dimension, vertical_dimension)kind_physinFalse
dqdt_tketendency_of_turbulent_kinetic_energy_due_to_model_physicsturbulent kinetic energy tendency due to model physicsJ s-1real(horizontal_dimension, vertical_dimension)kind_physinFalse
lprntflag_printcontrol flag for diagnostic print outflaglogical()inFalse
iprhorizontal_index_of_printed_columnhorizontal index of printed columnindexinteger()inFalse
ldu3dt_ogwcumulative_change_in_x_wind_due_to_orographic_gravity_wave_dragcumulative change in x wind due to orographic gravity wave dragm s-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
ldv3dt_ogwcumulative_change_in_y_wind_due_to_orographic_gravity_wave_dragcumulative change in y wind due to orographic gravity wave dragm s-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
ldt3dt_ogwcumulative_change_in_temperature_due_to_orographic_gravity_wave_dragcumulative change in temperature due to orographic gravity wave dragKreal(horizontal_dimension, vertical_dimension)kind_physinoutFalse
ldu3dt_cgwcumulative_change_in_x_wind_due_to_convective_gravity_wave_dragcumulative change in x wind due to convective gravity wave dragm s-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
ldv3dt_cgwcumulative_change_in_y_wind_due_to_convective_gravity_wave_dragcumulative change in y wind due to convective gravity wave dragm s-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
ldt3dt_cgwcumulative_change_in_temperature_due_to_convective_gravity_wave_dragcumulative change in temperature due to convective gravity wave dragKreal(horizontal_dimension, vertical_dimension)kind_physinoutFalse
ldiag3dflag_diagnostics_3Dflag for 3d diagnostic fieldsflaglogical()inFalse
lssavflag_diagnosticslogical flag for storing diagnosticsflaglogical()inFalse
flag_for_gwd_generic_tendflag_for_generic_gravity_wave_drag_tendencytrue if GFS_GWD_generic should calculate tendenciesflaglogical()inFalse
errmsgccpp_error_messageerror message for error handling in CCPPnonecharacter()len=*outFalse
errflgccpp_error_flagerror flag for error handling in CCPPflaginteger()outFalse

CIRES UGWP Scheme General Algorithm

References edmix_ugwp_v0(), fv3_ugwp_solv2_v0(), gwdps::gwdps_run(), gwdps_v0(), and slat_geos5_tamp().

Here is the call graph for this function: