From bc3f3de87e17fedc81874bf4f222484ef014d253 Mon Sep 17 00:00:00 2001 From: "Man.Zhang" Date: Tue, 17 Dec 2019 16:33:35 -0700 Subject: [PATCH 01/11] doc for ufs_public_release --- physics/docs/pdftxt/CPT_adv_suite.txt | 2 +- physics/docs/pdftxt/GSD_adv_suite.txt | 4 +- physics/docs/pdftxt/UGWPv0.txt | 2 +- physics/docs/pdftxt/all_shemes_list.txt | 34 +- physics/docs/pdftxt/mainpage.txt | 10 +- physics/docs/pdftxt/suite_input.nml.txt | 94 ++++- physics/docs/ufs_doxyfile | 461 ++++++++++++++++++++++++ 7 files changed, 577 insertions(+), 30 deletions(-) create mode 100644 physics/docs/ufs_doxyfile diff --git a/physics/docs/pdftxt/CPT_adv_suite.txt b/physics/docs/pdftxt/CPT_adv_suite.txt index 132d8bd11..814e4bcef 100644 --- a/physics/docs/pdftxt/CPT_adv_suite.txt +++ b/physics/docs/pdftxt/CPT_adv_suite.txt @@ -1,5 +1,5 @@ /** -\page csawmg_page csawmg Suite +\page csawmg_page SCM csawmg Suite \section csawmg_suite_overview Overview diff --git a/physics/docs/pdftxt/GSD_adv_suite.txt b/physics/docs/pdftxt/GSD_adv_suite.txt index fb662bc22..c3180f739 100644 --- a/physics/docs/pdftxt/GSD_adv_suite.txt +++ b/physics/docs/pdftxt/GSD_adv_suite.txt @@ -1,5 +1,5 @@ /** -\page GSD_v0_page GSD_v0 Suite +\page GSD_v0_page SCM GSD_v1 Suite \section gsd_suite_overview Overview @@ -8,7 +8,7 @@ numerical forecast guidance for weather-sensitive users, including those in the The RUC started to run every hour starting in 1998. Significant weather forecasting problems that occur in the 0- to 12-hr range include severe weather in all seasons (for example, tornadoes, severe thunderstorms, crippling snow, and ice storms) and hazards to aviation (for example, clear air turbulence, icing, and downbursts). The RUC soon became a -key model for short-range convectiion forecasts and for the pre-convective environments. +key model for short-range convection forecasts and for the pre-convective environments. The RAP, which replaced the RUC in 2012, runs hourly at the National Centers for Environmental Prediction (NCEP), providing high frequency updates of current conditions and short-range forecasts over North America at 13km resolution. A CONUS-nested diff --git a/physics/docs/pdftxt/UGWPv0.txt b/physics/docs/pdftxt/UGWPv0.txt index da7009b79..627e850f8 100644 --- a/physics/docs/pdftxt/UGWPv0.txt +++ b/physics/docs/pdftxt/UGWPv0.txt @@ -1,5 +1,5 @@ /** -\page UGWPv0 Unified Gravity Wave Physics Version 0 +\page UGWPv0 CIRES Unified Gravity Wave Physics Version 0 \section des_UGWP Description Gravity waves (GWs) are generated by a variety of sources in the atmosphere including orographic GWs (OGWs; quasi-stationary waves) and non-orographic GWs (NGWs; non-stationary oscillations). The subgrid scale parameterization scheme for OGWs can be found in Section \ref GFS_GWDPS. This scheme represents the operational version of the subgrid scale orography effects in Version 15 of Global Forecast System (GFS). diff --git a/physics/docs/pdftxt/all_shemes_list.txt b/physics/docs/pdftxt/all_shemes_list.txt index 3f2290d7b..61714fd93 100644 --- a/physics/docs/pdftxt/all_shemes_list.txt +++ b/physics/docs/pdftxt/all_shemes_list.txt @@ -3,7 +3,7 @@ \section allscheme_overview Physics Parameterizations -In the CCPP-Physics v3.0 release, each parameterization is in its own modern Fortran module, +In the NOAA's Unified Forecast System (UFS) public release, each parameterization is in its own modern Fortran module, which facilitates model development and code maintenance. While some individual parameterization can be invoked for the GMTB SCM, most users will assemble the parameterizations in suites. @@ -13,7 +13,7 @@ parameterizations in suites. - \b PBL \b and \b Turbulence - \subpage GFS_HEDMF - - \subpage GFS_SATMEDMF + - \subpage GFS_SATMEDMFQ - \subpage GSD_MYNNEDMF - \b Land \b Surface \b Model @@ -43,9 +43,7 @@ parameterizations in suites. - \subpage GFS_H2OPHYS - \b Gravity \b Wave \b Drag - - \subpage GFS_GWDPS - - \subpage GFS_GWDC - - \subpage UGWPv0 + - \subpage GFS_UGWPv0 - \b Surface \b Layer \b and \b Simplified \b Ocean \b and \b Sea \b Ice \b Representation - \subpage GFS_SFCLYR @@ -81,25 +79,27 @@ to the parameterization. \section allsuite_overview Physics Suites -The CCPP v3 includes the suite used in the GFS v15 implemented operationally in June 2019 (suite GFS_v15). Additionally, it includes three -developmental suites which are undergoing testing for possible future implementation in the UFS. Suite GFS_v15plus is identical to suite -GFS_v15 except for a replacement in the PBL parameterization (Han et al. 2019 \cite Han_2019 ). Suite csawmg differs from GFS_v15 as it +The CCPP includes the suite used in the GFS v15.2 implemented operationally in Nov 2019 (suite GFS_v15.2) and a proposed version 16beta to be implemented operationally in 2021. + Additionally, it includes two +developmental suites which are undergoing testing for possible future implementation in the UFS. Suite GFS_v16beta is identical to suite +GFS_v15.2 except for an update in the PBL parameterization (Han et al. 2019 \cite Han_2019 ) and \ref GFS_UGWPv0. Suite csawmg differs from GFS_v15 as it contains different convection and microphysics schemes made available through a NOAA Climate Process Team (CPT) with components developed -at multiple research centers and universities, including Colorado State, Utah, NASA, NCAR, and EMC. Suite GSD_v0 differs from GFS_v15 as it +at multiple research centers and universities, including Colorado State, Utah, NASA, NCAR, and EMC. Suite GSD_v0 differs from GFS_v15.2 as it uses the convection, microphysics, and boundary layer schemes employed in the Rapid Refresh (RAP) and High-Resolution Rapid Refresh (HRRR \cite Benjamin_2016 ) operational models and was assembled by NOAA/GSD. An assessment of an earlier version of these suites can be found in the UFS portal -and in the GMTB website . +and in the GMTB website . Table 1. Physics suite options included in this documentation. \tableofcontents -| Phys suites | GFS_v15 | GFS_v15plus | csawmg | GSD_v0 | -|------------------|----------------------|----------------------|---------------------|----------------------| -| Deep Cu | \ref GFS_SAMFdeep | \ref GFS_SAMFdeep | \ref CSAW_scheme | \ref GSD_CU_GF | -| Shallow Cu | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref GSD_MYNNEDMF and \ref cu_gf_sh_group | -| Microphysics | \ref GFDL_cloud | \ref GFDL_cloud | \ref CPT_MG3 | \ref GSD_THOMPSON | -| PBL/TURB | \ref GFS_HEDMF | \ref GFS_SATMEDMF | \ref GFS_HEDMF | \ref GSD_MYNNEDMF | -| Land | \ref GFS_NOAH | \ref GFS_NOAH | \ref GFS_NOAH | \ref GSD_RUCLSM | +| Phys suites | GFS_v15p2 | GFS_v16beta | csawmg | GSD_v1 | +|------------------|-----------------------------------|----------------------|---------------------|----------------------| +| Deep Cu | \ref GFS_SAMFdeep | \ref GFS_SAMFdeep | \ref CSAW_scheme | \ref GSD_CU_GF | +| Shallow Cu | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref GSD_MYNNEDMF and \ref cu_gf_sh_group | +| Microphysics | \ref GFDL_cloud | \ref GFDL_cloud | \ref CPT_MG3 | \ref GSD_THOMPSON | +| PBL/TURB | \ref GFS_HEDMF | \ref GFS_SATMEDMFQ | \ref GFS_HEDMF | \ref GSD_MYNNEDMF | +| Land | \ref GFS_NOAH | \ref GFS_NOAH | \ref GFS_NOAH | \ref GSD_RUCLSM | +| Gravity Wave Drag| \ref GFS_UGWPv0 | \ref GFS_UGWPv0 | \ref GFS_UGWPv0 | \ref GFS_UGWPv0 | \tableofcontents diff --git a/physics/docs/pdftxt/mainpage.txt b/physics/docs/pdftxt/mainpage.txt index 2ac121f3c..3cb508003 100644 --- a/physics/docs/pdftxt/mainpage.txt +++ b/physics/docs/pdftxt/mainpage.txt @@ -2,7 +2,13 @@ \mainpage Introduction Welcome to the scientific documentation for the parameterizations available in the Common -Community Physics Package (CCPP) v3.0 public release. +Community Physics Package (CCPP) for the Unified Forecast System (UFS) public release. + +The Unified Foreacst System (UFS) is a community-based, coupled comprehensive Earth system modeling system. +The UFS numerical applications span local to global domains and predictive time scales from sub-hourly analyses +to seasonal predictions. It is designed to support the Weather Enterprise and to be the source system for +NOAA's operational numerical weather prediction applications.For more details and current UFS events, please +go to the UFS Community Web Portal at https://ufscommunity.org/ The CCPP-Physics is envisioned to contain parameterizations used by NOAA operational models for weather through seasonal prediction timescales, as well as developmental schemes under consideration for upcoming @@ -15,7 +21,7 @@ Finite-Volume Cubed-Sphere (FV3) dynamic core. In this website you will find documentation on various aspects of each parameterization, including a high-level overview of its function, the input/output argument list, and a description of the algorithm. -The latest CCPP public release is Version 3.0 (June 2019), and more details on it may be found on the +The latest CCPP public release is Version 3.X (Jan 2019), and more details on it may be found on the CCPP website hosted by the Global Model Test Bed (GMTB) of the Developmental Testbed Center (DTC). diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index fcb55d84f..0fdce4d31 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -15,6 +15,8 @@ parameterizations. Its variables are defined in file GFS_typedefs.F90 in the hos - Namelist \b &stochy_nam specifies options for the use of SPPT, SKEB and SHUM, while namelist \b &nam_sfcperts specifies whether and how stochastic perturbations are used in the Noah Land Surface Model. +- Namelist \b &cires_ugwp_nml specifies options for the use of CIRES Unified Gravity Wave Physics Version 0. +
NML Description
option DDT in Host Model Description Default Value @@ -117,13 +119,19 @@ and how stochastic perturbations are used in the Noah Land Surface Model.
  • =2 future development (not yet)
  • 0 -
    iaer gfs_control_type aerosol flag "abc" (volcanic, LW, SW): \n +
    iaer gfs_control_type 4-digit aerosol flag (dabc for aermdl, volcanic, LW, SW): \n
      -
    • a: stratospheric volcanic aerosols -
    • b: tropospheric aerosols for LW -
    • c: tropospheric aerosols for SW \n - 0: aerosol effect is not included; \n - 1: aerosol effect is included +
    • d:tropospheric aerosol model scheme flag \n + =0 or none, opac-climatology aerosol scheme \n + =1 use gocart climatology aerosol scheme \n + =2 use gocart prognostic aerosol scheme \n + =5 opac-clim new spectral mapping +
    • a:=0 use background stratospheric aerosol \n + =1 include stratospheric volcanic aerosol +
    • b:=0 no tropospheric aerosol in LW radiation \n + =1 include tropospheric aerosol in LW +
    • c:=0 no tropospheric aerosol in SW radiation \n + =1 include tropospheric aerosol in SW
    1
    ico2 gfs_control_type \f$CO_2\f$ data source control flag:\n @@ -168,6 +176,12 @@ and how stochastic perturbations are used in the Noah Land Surface Model.
    dspheat gfs_control_type logical flag for using TKE dissipative heating to temperature tendency in hybrid EDMF and TKE-EDMF schemes .false.
    hybedmf gfs_control_type logical flag for calling hybrid EDMF PBL scheme .false.
    satmedmf gfs_control_type logical flag for calling TKE EDMF PBL scheme .false. +
    isatmedmf gfs_control_type flag for scale-aware TKE-based moist EDMF scheme \n +
      +
    • 0: initial version of satmedmf (Nov.2018) +
    • 1: updated version of satmedmf (as of May 2019) +
    +
    0
    do_mynnedmf gfs_control_type flag to activate MYNN-EDMF scheme .false.
    random_clds gfs_control_type logical flag for whether clouds are random .false.
    trans_trac gfs_control_type logical flag for convective transport of tracers .false. @@ -194,7 +208,14 @@ and how stochastic perturbations are used in the Noah Land Surface Model. 1
    lgfdlmprad gfs_control_type flag for GFDL mp scheme and radiation consistency .false. -
    cdmbgwd(2) gfs_control_type multiplication factors for mountain blocking and orographic gravity wave drag 2.0,0.25 +
    cdmbgwd(4) gfs_control_type multiplication factors for mountain blocking(1), orographic gravity wave drag(2) +
      +
    • [1]: GWDPS mountain blocking +
    • [2]: GWDPS orographic gravity wave drag +
    • [3]: the modulation total momentum flux of NGWs by intensities of the total precipitation +
    • [4]: TKE for future tests and applications +
    +
    2.0,0.25,1.0,1.0
    prslrd0 gfs_control_type pressure level above which to apply Rayleigh damping 0.0d0
    lsm gfs_control_type flag for land surface model to use \n
      @@ -434,5 +455,64 @@ and how stochastic perturbations are used in the Noah Land Surface Model.
    fix_negative gfdl_cloud_microphys_mod \e true to fix negative water species using nearby points .false.
    icloud_f gfdl_cloud_microphys_mod flag (0,1,or 2) for cloud fraction diagnostic scheme 0
    mp_time gfdl_cloud_microphys_mod time step of GFDL cloud microphysics 150. +
    \b &cires_ugwp_nml +
    knob_ugwp_version cires_ugwp_module parameter selects a version of the UGWP-implementation in FV3GFS-127L \n +
      +
    • 0: default version delivered to EMC in Jan 2019 for implementation +
    • 1: version of UGWP under development that plans to consider the physics-based sources of NGWs (\b knob_ugwp_wvspec [2:4]), options for stochastic and deterministic excitation of waves (\b knob_ugwp_stoch), and switches between different UGWP schemes (\b knob_ugwp_solver) +
    +
    0 +
    knob_ugwp_doaxyz cires_ugwp_module parameter controls application of the momentum deposition for NGW-schemes \n +
      +
    • 0: the momentum tendencies due to NGWs are calculated, but tendencies do not change the horizontal winds +
    • 1: default value; it changes the horizontal momentum tendencies and horizontal winds +
    +
    1 +
    knob_ugwp_doheat cires_ugwp_module parameter controls application of the heat deposition for NGW-schemes \n +
      +
    • 0: the temperature tendencies due to NGWs are calculated but tendencies do not change the temperature state +
    • 1: default value; it changes the temperature tendencies and kinetic temperature +
    +
    1 +
    knob_ugwp_dokdis cires_ugwp_module parameter controls application of the eddy diffusion due to instability of NGWs \n +
      +
    • 0: the eddy diffusion tendencies due to NGWs are calculated but tendencies do not change the model state vector +
    • 1: it computes eddy diffusion coefficient due to instability of NGWs; in UGWP-v0, eddy viscosity, heat conductivity and tracer diffusion are not activated +
    +
    0 +
    knob_ugwp_solver cires_ugwp_module parameter controls the selection of UGWP-solvers(wave propagation, dissipation and wave breaking) for NGWs \n +
      +
    • 1: represents the discrete multi-wave solver with background dissipation and linear wave saturation +
    • 2: represents the spectral deterministic solver with background dissipation and spectral saturation +
    • 3: represents the discrete multi-wave solver with the background dissipation, extension of Alexander sand Dunkerton (1999) +
    • 4: represents the spectral solver with background dissipation, extension of Doppler Spread Theory of Hines (1997) +
    +
    1 +
    knob_ugwp_ndx4lh cires_ugwp_module parameter controls the selection of the horizontal wavenumber(wavelength) for NGW schemes \n +
      +
    • 1: selects the \f$4xdx\f$ sub-grid wavelength, where dx is the horizontal resolution of the model configuration (C96-400km; C768-52km) +
    +
    2 +
    knob_ugwp_wvspec cires_ugwp_module four-dimensional array defines number of waves in each arimuthal propagation (as defined by knob_ugwp_azdir) for GWs excited due to the following four sources: \n + (1) sub-grid orography (\b knob_ugwp_wvspec[1]=1), \n + (2) convective (\b knob_ugwp_wvspec[2]=25), \n + (3) frontal (\b knob_ugwp_wvspec[3]=25) activity, \n + (4) \b knob_ugwp_wvspec[4] represents number of wave excited by dynamical imbalances that may mimic both convective and front-jet mechanisms of GW triggering. \n + In UGWP-v0, first two elements of the array, \b knob_ugwp_wvspec(1:2), control number of waves for stationary (OGW) and nonstationary waves (NGWs). + 1,32,32,32 +
    knob_ugwp_azdir cires_ugwp_module four-dimensional array that defines number of azimuths for propagation of GWs triggered by four types of physics-based sources (orography, convection, front-jets, and dynamical imbalance). In UGWP-v0, first two elements of the array, \b knob_ugwp_azdir(1:2), control number of azimuths for OGW and NGWs respectively. + 2,4,4,4 +
    knob_ugwp_stoch cires_ugwp_module four-dimensional array that control stochastic selection of GWs triggered by four types of physics-based sources. \n + Default values:0,0,0,0 - reflect determinstic selection of GW parameters without stochastic selection + 0,0,0,0 +
    knob_ugwp_effac cires_ugwp_module four-dimensional array that control efficiency of GWs triggerd by four types of physics-based sources. \n + Default values: 1.,1.,1.,1. - reflect that calculated GW-tendencies will be applied for the model state. + 1.,1.,1.,1. +
    launch_level cires_ugwp_module parameter has been introduced by EMC during implementation. It defines the interface model level from the surface at which NGWs are launched. \n + Default value for FV3GFS-64L, launch_level=25 and for FV3GFS-128L, launch_level=52. + 55 +
    ldiag_ugwp GFS_control_type flag for CIRES UGWP diagnostics .false. +
    do_ugwp GFS_control_type flag for CIRES Unified Gravity Wave Drag Parameterization .false. +
    do_tofd GFS_control_type flag for turbulent orographic form drag .false.
    */ diff --git a/physics/docs/ufs_doxyfile b/physics/docs/ufs_doxyfile new file mode 100644 index 000000000..ad89fdea8 --- /dev/null +++ b/physics/docs/ufs_doxyfile @@ -0,0 +1,461 @@ +# Doxyfile 1.8.11 +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = "Common Community Physics Package (CCPP) Scientific Documentation" +PROJECT_NUMBER = "" +PROJECT_BRIEF = "v4.0" +PROJECT_LOGO = img/dtc_logo.png +OUTPUT_DIRECTORY = doc +CREATE_SUBDIRS = NO +ALLOW_UNICODE_NAMES = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = NO +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = YES +TAB_SIZE = 4 +ALIASES = +TCL_SUBST = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = YES +OPTIMIZE_OUTPUT_VHDL = NO +EXTENSION_MAPPING = .f=FortranFree \ + .F=FortranFree \ + .F90=FortranFree \ + .f90=FortranFree +MARKDOWN_SUPPORT = YES +AUTOLINK_SUPPORT = YES +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = YES +GROUP_NESTED_COMPOUNDS = NO +SUBGROUPING = YES +INLINE_GROUPED_CLASSES = NO +INLINE_SIMPLE_STRUCTS = NO +TYPEDEF_HIDES_STRUCT = YES +LOOKUP_CACHE_SIZE = 0 +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_PACKAGE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = YES +EXTRACT_ANON_NSPACES = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = YES + +CASE_SENSE_NAMES = NO + +HIDE_SCOPE_NAMES = NO + +HIDE_COMPOUND_REFERENCE= NO + +SHOW_INCLUDE_FILES = NO + +SHOW_GROUPED_MEMB_INC = NO + +FORCE_LOCAL_INCLUDES = NO + +INLINE_INFO = YES + +SORT_MEMBER_DOCS = NO + +SORT_BRIEF_DOCS = NO +SORT_MEMBERS_CTORS_1ST = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +STRICT_PROTO_MATCHING = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = YES +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +LAYOUT_FILE = ccpp_dox_layout.xml +CITE_BIB_FILES = library.bib +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = NO +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_AS_ERROR = NO +WARN_FORMAT = +WARN_LOGFILE = +INPUT = pdftxt/mainpage.txt \ + pdftxt/all_shemes_list.txt \ + pdftxt/GFSv15p2_suite.txt \ + pdftxt/GFSv16beta_suite.txt \ + pdftxt/GSD_adv_suite.txt \ + pdftxt/CPT_adv_suite.txt \ + pdftxt/GFS_RRTMG.txt \ + pdftxt/GFS_SFCLYR.txt \ + pdftxt/GFS_NSST.txt \ + pdftxt/GFS_NOAH.txt \ + pdftxt/GFS_SFCSICE.txt \ + pdftxt/GFS_HEDMF.txt \ + pdftxt/GFS_SATMEDMFQ.txt \ +## pdftxt/GFS_NoahMP.txt \ + pdftxt/GFS_UGWPv0.txt \ +## pdftxt/GFS_GWDPS.txt \ + pdftxt/GFS_OZPHYS.txt \ + pdftxt/GFS_H2OPHYS.txt \ + pdftxt/GFS_RAYLEIGH.txt \ + pdftxt/GFS_SAMF.txt \ + pdftxt/GFS_SAMFdeep.txt \ +### pdftxt/GFS_GWDC.txt \ + pdftxt/GFS_SAMFshal.txt \ + pdftxt/GFDL_cloud.txt \ + pdftxt/GFS_CALPRECIPTYPE.txt \ +### pdftxt/rad_cld.txt \ + pdftxt/CPT_CSAW.txt \ + pdftxt/CPT_MG3.txt \ + pdftxt/GSD_MYNN_EDMF.txt \ + pdftxt/GSD_CU_GF_deep.txt \ + pdftxt/GSD_RUCLSM.txt \ + pdftxt/GSD_THOMPSON.txt \ +### pdftxt/GFSphys_namelist.txt \ +### pdftxt/GFS_STOCHY_PHYS.txt \ + pdftxt/suite_input.nml.txt \ +### in-core MP + ../gfdl_fv_sat_adj.F90 \ +### time_vary + ../GFS_time_vary_pre.fv3.F90 \ + ../GFS_rrtmg_setup.F90 \ + ../GFS_rad_time_vary.fv3.F90 \ + ../GFS_phys_time_vary.fv3.F90 \ + ../ozne_def.f \ + ../ozinterp.f90 \ + ../h2o_def.f \ + ../h2ointerp.f90 \ + ../aerclm_def.F \ + ../aerinterp.F90 \ + ../iccn_def.F \ + ../iccninterp.F90 \ + ../sfcsub.F \ + ../gcycle.F90 \ +### Radiation +### ../GFS_rrtmg_pre.F90 \ +### ../rrtmg_sw_pre.F90 \ + ../radsw_main.f \ +### ../rrtmg_sw_post.F90 \ +### ../rrtmg_lw_pre.F90 \ + ../radlw_main.f \ +### ../rrtmg_lw_post.F90 \ + ../radiation_aerosols.f \ + ../radiation_astronomy.f \ + ../radiation_clouds.f \ + ../radiation_gases.f \ + ../radiation_surface.f \ + ../radlw_param.f \ + ../radlw_datatb.f \ + ../radsw_param.f \ + ../radsw_datatb.f \ + ../dcyc2.f \ +### Land Surface + ../sfc_diff.f \ + ../sfc_nst.f \ + ../module_nst_model.f90 \ + ../module_nst_parameters.f90 \ + ../module_nst_water_prop.f90 \ + ../sfc_drv.f \ + ../sflx.f \ + ../namelist_soilveg.f \ + ../set_soilveg.f \ +### Sea Ice Surface + ../sfc_sice.f \ +### PBL + ../moninedmf.f \ + ../mfpbl.f \ + ../tridi.f \ +### satmedmf +## ../satmedmfvdif.F \ + ../satmedmfvdifq.F \ + ../mfpbltq.f \ + ../mfscuq.f \ + ../tridi.f \ +### Orographic Gravity Wave + ../GFS_GWD_generic.F90 \ + ../cires_ugwp.F90 \ + ../gwdps.f \ + ../ugwp_driver_v0.F \ + ../cires_ugwp_triggers.F90 \ + ../cires_ugwp_module.F90 \ + ../cires_ugwp_utils.F90 \ + ../cires_ugwp_solvers.F90 \ +### ../cires_ugwp_post.F90 \ +### ../cires_ugwp_initialize.F90 \ + ../cires_vert_wmsdis.F90 \ + ../cires_vert_orodis.F90 \ + ../cires_vert_lsatdis.F90 \ +### Rayleigh Dampling + ../rayleigh_damp.f \ +### Prognostic Ozone + ../ozphys_2015.f \ +### ../ozphys.f \ +### stratospheric h2o + ../h2ophys.f \ +### Deep Convection + ../samfdeepcnv.f \ +### Convective Gravity Wave +### ../gwdc.f \ +### Shallow Convection + ../samfshalcnv.f \ + ../cnvc90.f \ +### Microphysics +### ../gscond.f \ +### ../precpd.f \ + ../module_bfmicrophysics.f \ +### GFDL cloud MP + ../gfdl_cloud_microphys.F90 \ + ../module_gfdl_cloud_microphys.F90 \ +### + ../GFS_MP_generic.F90 \ + ../calpreciptype.f90 \ +### stochy + ../GFS_stochastics.F90 \ +### ../surface_perturbation.F90 \ +### ../../stochastic_physics/stochastic_physics.F90 \ +### CPT + ../m_micro.F90 \ +### ../micro_mg2_0.F90 \ + ../micro_mg3_0.F90 \ + ../micro_mg_utils.F90 \ + ../cldmacro.F \ + ../aer_cloud.F \ + ../cldwat2m_micro.F \ + ../wv_saturation.F \ + ../cs_conv_aw_adj.F90 \ + ../cs_conv.F90 \ +### GSD + ../cu_gf_driver.F90 \ + ../cu_gf_deep.F90 \ + ../cu_gf_sh.F90 \ + ../module_MYNNrad_pre.F90 \ + ../module_MYNNrad_post.F90 \ + ../module_MYNNPBL_wrapper.F90 \ + ../module_bl_mynn.F90 \ +### ../module_MYNNSFC_wrapper.F90 \ +### ../module_sf_mynn.F90 \ + ../sfc_drv_ruc.F90 \ + ../module_sf_ruclsm.F90 \ + ../namelist_soilveg_ruc.F90 \ + ../set_soilveg_ruc.F90 \ + ../module_soil_pre.F90 \ + ../mp_thompson_pre.F90 \ + ../module_mp_thompson_make_number_concentrations.F90 \ + ../mp_thompson.F90 \ + ../module_mp_thompson.F90 \ + ../module_mp_radar.F90 \ + ../mp_thompson_post.F90 \ +### utils + ../funcphys.f90 \ + ../physparam.f \ + ../physcons.F90 \ + ../radcons.f90 \ + ../mersenne_twister.f +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.f \ + *.F \ + *.F90 \ + *.f90 \ + *.nml \ + *.txt +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = ./ +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = img +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +FILTER_SOURCE_PATTERNS = +USE_MDFILE_AS_MAINPAGE = +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +SOURCE_TOOLTIPS = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#CLANG_ASSISTED_PARSING = NO +#CLANG_OPTIONS = +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_EXTRA_STYLESHEET = ccpp_dox_extra_style.css +HTML_EXTRA_FILES = +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 +HTML_TIMESTAMP = NO +HTML_DYNAMIC_SECTIONS = NO +HTML_INDEX_NUM_ENTRIES = 100 +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_PUBLISHER_ID = org.doxygen.Publisher +DOCSET_PUBLISHER_NAME = Publisher +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +GENERATE_QHP = NO +QCH_FILE = +QHP_NAMESPACE = org.doxygen.Project +QHP_VIRTUAL_FOLDER = doc +QHP_CUST_FILTER_NAME = +QHP_CUST_FILTER_ATTRS = +QHP_SECT_FILTER_ATTRS = +QHG_LOCATION = +GENERATE_ECLIPSEHELP = NO +ECLIPSE_DOC_ID = org.doxygen.Project +DISABLE_INDEX = YES +GENERATE_TREEVIEW = YES +ENUM_VALUES_PER_LINE = 4 +TREEVIEW_WIDTH = 250 +EXT_LINKS_IN_WINDOW = NO +FORMULA_FONTSIZE = 10 +FORMULA_TRANSPARENT = YES +USE_MATHJAX = YES +MATHJAX_FORMAT = HTML-CSS +MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2 +MATHJAX_EXTENSIONS = +MATHJAX_CODEFILE = +SEARCHENGINE = YES +SERVER_BASED_SEARCH = NO +EXTERNAL_SEARCH = NO +SEARCHENGINE_URL = +SEARCHDATA_FILE = searchdata.xml +EXTERNAL_SEARCH_ID = +EXTRA_SEARCH_MAPPINGS = +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = YES +PAPER_TYPE = a4 +EXTRA_PACKAGES = amsmath +LATEX_HEADER = +LATEX_FOOTER = +LATEX_EXTRA_STYLESHEET = +LATEX_EXTRA_FILES = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = YES +LATEX_SOURCE_CODE = NO + +LATEX_BIB_STYLE = plainnat + +LATEX_TIMESTAMP = NO + +GENERATE_RTF = NO + +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +RTF_SOURCE_CODE = NO +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_SUBDIR = +MAN_LINKS = NO +GENERATE_XML = NO +XML_OUTPUT = xml +XML_PROGRAMLISTING = YES +GENERATE_DOCBOOK = NO +DOCBOOK_OUTPUT = docbook +DOCBOOK_PROGRAMLISTING = NO +GENERATE_AUTOGEN_DEF = NO +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +ENABLE_PREPROCESSING = NO +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = CCPP \ + MULTI_GASES \ + 0 +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +EXTERNAL_PAGES = YES +PERL_PATH = /usr/bin/perl +CLASS_DIAGRAMS = YES +MSCGEN_PATH = +DIA_PATH = +HIDE_UNDOC_RELATIONS = NO +HAVE_DOT = YES +DOT_NUM_THREADS = 0 +DOT_FONTNAME = Helvetica +DOT_FONTSIZE = 10 +DOT_FONTPATH = +CLASS_GRAPH = NO +COLLABORATION_GRAPH = NO +GROUP_GRAPHS = YES +UML_LOOK = YES +UML_LIMIT_NUM_FIELDS = 10 +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = NO +CALL_GRAPH = YES +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = svg +INTERACTIVE_SVG = NO +DOT_PATH = +DOTFILE_DIRS = +MSCFILE_DIRS = +DIAFILE_DIRS = +PLANTUML_JAR_PATH = +PLANTUML_INCLUDE_PATH = +DOT_GRAPH_MAX_NODES = 200 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = YES +GENERATE_LEGEND = YES +DOT_CLEANUP = YES From e22ebf53b11ac30a10f4903dc6c2e46ceb10db91 Mon Sep 17 00:00:00 2001 From: "Man.Zhang" Date: Tue, 17 Dec 2019 21:11:13 -0700 Subject: [PATCH 02/11] integrate Grant documentation --- physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt | 35 +++ physics/docs/pdftxt/all_shemes_list.txt | 2 +- physics/docs/ufs_doxyfile | 2 +- physics/mfpbltq.f | 2 +- physics/satmedmfvdifq.F | 290 ++++++++++++++-------- physics/tridi.f | 3 + 6 files changed, 233 insertions(+), 101 deletions(-) create mode 100644 physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt diff --git a/physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt b/physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt new file mode 100644 index 000000000..de543fe6c --- /dev/null +++ b/physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt @@ -0,0 +1,35 @@ +/** +\page GFS_SATMEDMFVDIFQ GFS Scale-aware TKE-based Moist Eddy-Diffusion Mass-Flux (EDMF) PBL and Free Atmospheric Turbulence Scheme +\section des_satmedmfvdifq Description + +The current operational \ref GFS_HEDMF uses a hybrid EDMF parameterization for the convective PBL (Han et al. 2016 \cite Han_2016; +Han et al. 2017 \cite han_et_al_2017), where the EDMF scheme is applied only for the strongly unstable PBL, while the eddy-diffusivity +counter-gradient(EDCG) scheme is used for the weakly unstable PBL. The new TKE-EDMF is an extended version of \ref GFS_HEDMF with below enhancement: + +-# Eddy diffusivity (K) is now a function of TKE which is prognostically predicted + +-# EDMF approach is applied for all the unstable PBL + +-# EDMF approach is also applied to the stratocumulus-top-driven turbulence mixing + +-# It includes a moist-adiabatic process when updraft thermal becomes saturated + +-# Scale-aware capability + +-# It includes interaction between TKE and cumulus convection + +The CCPP-compliant subroutine satmedmfvdifq_run() computes subgrid vertical turbulence mixing using scale-aware +TKE-based moist eddy-diffusion mass-flux paramterization (Han et al. 2019 \cite Han_2019) +- For the convective boundary layer, the scheme adopts EDMF parameterization (Siebesma et al. (2007)\cite Siebesma_2007) +to take into account nonlocal transport by large eddies(mfpbltq.f) +- A new mass-flux paramterization for stratocumulus-top-induced turbulence mixing has been introduced (mfscuq.f; previously, +it was an eddy diffusion form) +- For local turbulence mixing, a TKE closure model is used. + +\section intra_satmedmfvdifq Intraphysics Communication +\ref arg_table_satmedmfvdifq_run + +\section gen_pbl_satmedmfvdifq General Algorithm +\ref gen_satmedmfvdifq + +*/ diff --git a/physics/docs/pdftxt/all_shemes_list.txt b/physics/docs/pdftxt/all_shemes_list.txt index 61714fd93..a729ac419 100644 --- a/physics/docs/pdftxt/all_shemes_list.txt +++ b/physics/docs/pdftxt/all_shemes_list.txt @@ -13,7 +13,7 @@ parameterizations in suites. - \b PBL \b and \b Turbulence - \subpage GFS_HEDMF - - \subpage GFS_SATMEDMFQ + - \subpage GFS_SATMEDMEFVDIFQ - \subpage GSD_MYNNEDMF - \b Land \b Surface \b Model diff --git a/physics/docs/ufs_doxyfile b/physics/docs/ufs_doxyfile index ad89fdea8..bb9c54aaf 100644 --- a/physics/docs/ufs_doxyfile +++ b/physics/docs/ufs_doxyfile @@ -112,7 +112,7 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/GFS_NOAH.txt \ pdftxt/GFS_SFCSICE.txt \ pdftxt/GFS_HEDMF.txt \ - pdftxt/GFS_SATMEDMFQ.txt \ + pdftxt/GFS_SATMEDMFVDIFQ.txt \ ## pdftxt/GFS_NoahMP.txt \ pdftxt/GFS_UGWPv0.txt \ ## pdftxt/GFS_GWDPS.txt \ diff --git a/physics/mfpbltq.f b/physics/mfpbltq.f index 0f4004444..a6fc22cef 100644 --- a/physics/mfpbltq.f +++ b/physics/mfpbltq.f @@ -3,7 +3,7 @@ !! updraft parcel properties for thermals driven by surface heating !! for use in the TKE-EDMF PBL scheme (updated version). -!>\ingroup satmedmfq +!>\ingroup satmedmfvdifq !! This subroutine computes mass flux and updraft parcel properties for !! thermals driven by surface heating. !!\section mfpbltq_gen GFS mfpblt General Algorithm diff --git a/physics/satmedmfvdifq.F b/physics/satmedmfvdifq.F index c3d061a9c..8a93cc5fa 100644 --- a/physics/satmedmfvdifq.F +++ b/physics/satmedmfvdifq.F @@ -7,6 +7,15 @@ module satmedmfvdifq contains +!> \defgroup satmedmfvdifq GFS Scale-aware TKE-based Moist Eddy-Diffusivity Mass-flux (TKE-EDMF, updated version) Scheme Module +!! @{ +!! \brief This subroutine contains all of the logic for the +!! scale-aware TKE-based moist eddy-diffusion mass-flux (TKE-EDMF, updated version) scheme. +!! For local turbulence mixing, a TKE closure model is used. +!! Updated version of satmedmfvdif.f (May 2019) to have better low level +!! inversion, to reduce the cold bias in lower troposphere, +!! and to reduce the negative wind speed bias in upper troposphere + !> \section arg_table_satmedmfvdifq_init Argument Table !! \htmlinclude satmedmfvdifq_init.html !! @@ -33,30 +42,21 @@ end subroutine satmedmfvdifq_init subroutine satmedmfvdifq_finalize () end subroutine satmedmfvdifq_finalize -!> \defgroup satmedmfq GFS Scale-aware TKE-based Moist Eddy-Diffusivity Mass-flux (TKE-EDMF, updated version) Scheme Module -!! @{ -!! \brief This subroutine contains all of the logic for the -!! scale-aware TKE-based moist eddy-diffusion mass-flux (TKE-EDMF, updated version) scheme. -!! !> \section arg_table_satmedmfvdifq_run Argument Table !! \htmlinclude satmedmfvdifq_run.html !! -!!\section gen_satmedmfvdif GFS satmedmfvdif General Algorithm -!! satmedmfvdif_run() computes subgrid vertical turbulence mixing +!!\section gen_satmedmfvdifq GFS satmedmfvdifq General Algorithm +!! satmedmfvdifq_run() computes subgrid vertical turbulence mixing !! using the scale-aware TKE-based moist eddy-diffusion mass-flux (EDMF) parameterization of !! Han and Bretherton (2019) \cite Han_2019 . !! -# The local turbulent mixing is represented by an eddy-diffusivity scheme which !! is a function of a prognostic TKE. !! -# For the convective boundary layer, nonlocal transport by large eddies -!! (mfpblt.f), is represented using a mass flux approach (Siebesma et al.(2007) \cite Siebesma_2007 ). +!! (mfpbltq.f), is represented using a mass flux approach (Siebesma et al.(2007) \cite Siebesma_2007 ). !! -# A mass-flux approach is also used to represent the stratocumulus-top-induced turbulence -!! (mfscu.f). -!! For local turbulence mixing, a TKE closure model is used. -!! Updated version of satmedmfvdif.f (May 2019) to have better low level -!! inversion, to reduce the cold bias in lower troposphere, -!! and to reduce the negative wind speed bias in upper troposphere +!! (mfscuq.f). !! \section detail_satmedmfvidfq GFS satmedmfvdifq Detailed Algorithm -!> @{ +!! @{ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & & grav,rd,cp,rv,hvap,hfus,fv,eps,epsm1, & & dv,du,tdt,rtg,u1,v1,t1,q1,swh,hlw,xmu,garea, & @@ -196,7 +196,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & & rlmn, rlmn1, rlmx, elmx, & ttend, utend, vtend, qtend, & zfac, zfmin, vk, spdk2, - & tkmin, xkzinv, xkgdx, + & tkmin, tkminx, xkzinv, xkgdx, & zlup, zldn, bsum, & tem, tem1, tem2, & ptem, ptem0, ptem1, ptem2 @@ -215,11 +215,11 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & parameter(prmin=0.25,prmax=4.0) parameter(pr0=1.0,prtke=1.0,prscu=0.67) parameter(f0=1.e-4,crbmin=0.15,crbmax=0.35) - parameter(tkmin=1.e-9,dspmax=10.0) + parameter(tkmin=1.e-9,tkminx=0.2,dspmax=10.0) parameter(qmin=1.e-8,qlmin=1.e-12,zfmin=1.e-8) parameter(aphi5=5.,aphi16=16.) parameter(elmfac=1.0,elefac=1.0,cql=100.) - parameter(dw2min=1.e-4,dkmax=1000.,xkgdx=25000.) + parameter(dw2min=1.e-4,dkmax=1000.,xkgdx=5000.) parameter(qlcr=3.5e-5,zstblmax=2500.,xkzinv=0.1) parameter(h1=0.33333333) parameter(ck0=0.4,ck1=0.15,ch0=0.4,ch1=0.15) @@ -241,6 +241,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & errmsg = '' errflg = 0 +!> ## Compute preliminary variables from input arguments dt2 = delt rdt = 1. / dt2 ! @@ -251,7 +252,8 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & km1 = km - 1 kmpbl = km / 2 kmscu = km / 2 -! +!> - Compute physical height of the layer centers and interfaces from +!! the geopotential height (\p zi and \p zl) do k=1,km do i=1,im zi(i,k) = phii(i,k) * gravi @@ -276,11 +278,12 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & zm(i,k) = zi(i,k+1) enddo enddo -! horizontal grid size +!> - Compute horizontal grid size (\p gdx) do i=1,im gdx(i) = sqrt(garea(i)) enddo -! +!> - Initialize tke value at vertical layer centers and interfaces +!! from tracer (\p tke and \p tkeh) do k=1,km do i=1,im tke(i,k) = max(q1(i,k,ntke), tkmin) @@ -291,7 +294,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & tkeh(i,k) = 0.5 * (tke(i,k) + tke(i,k+1)) enddo enddo -! +!> - Compute reciprocal of \f$ \Delta z \f$ (rdzt) do k = 1,km1 do i=1,im rdzt(i,k) = 1.0 / (zl(i,k+1) - zl(i,k)) @@ -299,12 +302,18 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo enddo ! -! set background diffusivities as a function of -! horizontal grid size with xkzm_h & xkzm_m for gdx >= 25km -! and 0.01 for gdx=5m, i.e., -! xkzm_hx = 0.01 + (xkzm_h - 0.01)/(xkgdx-5.) * (gdx-5.) -! xkzm_mx = 0.01 + (xkzm_h - 0.01)/(xkgdx-5.) * (gdx-5.) -! +!> - Compute reciprocal of pressure (tx1, tx2) + +!> - Compute minimum turbulent mixing length (rlmnz) + +!> - Compute background vertical diffusivities for scalars and momentum (xkzo and xkzmo) + +!> - set background diffusivities as a function of +!! horizontal grid size with xkzm_h & xkzm_m for gdx >= 25km +!! and 0.01 for gdx=5m, i.e., +!! \n xkzm_hx = 0.01 + (xkzm_h - 0.01)/(xkgdx-5.) * (gdx-5.) +!! \n xkzm_mx = 0.01 + (xkzm_h - 0.01)/(xkgdx-5.) * (gdx-5.) + do i=1,im kx1(i) = 1 tx1(i) = 1.0 / prsi(i,1) @@ -326,20 +335,20 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & xkzo(i,k) = 0.0 xkzmo(i,k) = 0.0 if (k < kinver(i)) then -! vertical background diffusivity - ptem = prsi(i,k+1) * tx1(i) - tem1 = 1.0 - ptem - tem2 = tem1 * tem1 * 10.0 - tem2 = min(1.0, exp(-tem2)) - xkzo(i,k) = xkzm_hx(i) * tem2 -! +! minimum turbulent mixing length ptem = prsl(i,k) * tx1(i) tem1 = 1.0 - ptem tem2 = tem1 * tem1 * 2.5 tem2 = min(1.0, exp(-tem2)) rlmnz(i,k)= rlmn * tem2 rlmnz(i,k)= max(rlmnz(i,k), rlmn1) -! vertical background diffusivity for momentum +! vertical background diffusivity + ptem = prsi(i,k+1) * tx1(i) + tem1 = 1.0 - ptem + tem2 = tem1 * tem1 * 10.0 + tem2 = min(1.0, exp(-tem2)) + xkzo(i,k) = xkzm_hx(i) * tem2 +! vertical background diffusivity for momentum if (ptem >= xkzm_s) then xkzmo(i,k) = xkzm_mx(i) kx1(i) = k + 1 @@ -352,7 +361,8 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & endif enddo enddo -! + +!> - Some output variables and logical flags are initialized do i = 1,im z0(i) = 0.01 * zorl(i) dusfc(i) = 0. @@ -376,7 +386,9 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & kcld(i) = km1 endif enddo -! + +!> - Compute \f$\theta\f$(theta), and \f$q_l\f$(qlx), \f$\theta_e\f$(thetae), +!! \f$\theta_v\f$(thvx),\f$\theta_{l,v}\f$ (thlvx) including ice water do k=1,km do i=1,im pix(i,k) = psk(i) / prslk(i,k) @@ -403,10 +415,9 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & gotvx(i,k) = g / tvx(i,k) enddo enddo -! -! compute an empirical cloud fraction based on -! Xu & Randall's (1996,JAS) study -! + +!> - Compute an empirical cloud fraction based on +!! Xu and Randall (1996) \cite xu_and_randall_1996 do k = 1, km do i = 1, im plyr(i,k) = 0.01 * prsl(i,k) ! pa to mb (hpa) @@ -433,7 +444,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo enddo ! -! compute buoyancy modified by clouds +!> - Compute buoyancy modified by clouds ! do k = 1, km1 do i = 1, im @@ -456,6 +467,8 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! +!> - Initialize diffusion coefficients to 0 and calculate the total +!! radiative heating rate (dku, dkt, radx) do k=1,km1 do i=1,im dku(i,k) = 0. @@ -467,14 +480,31 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & radx(i,k) = tem*(swh(i,k)*xmu(i)+hlw(i,k)) enddo enddo -! +!> - Compute stable/unstable PBL flag (pblflg) based on the total +!! surface energy flux (\e false if the total surface energy flux +!! is into the surface) do i = 1,im sflux(i) = heat(i) + evap(i)*fv*theta(i,1) if(.not.sfcflg(i) .or. sflux(i) <= 0.) pblflg(i)=.false. enddo ! -! compute critical bulk richardson number -! +!> ## Calculate the PBL height +!! The calculation of the boundary layer height follows Troen and Mahrt (1986) \cite troen_and_mahrt_1986 section 3. The approach is to find the level in the column where a modified bulk Richardson number exceeds a critical value. +!! - Compute critical bulk Richardson number (\f$Rb_{cr}\f$) (crb) +!! - For the unstable PBL, crb is a constant (0.25) +!! - For the stable boundary layer (SBL), \f$Rb_{cr}\f$ varies +!! with the surface Rossby number, \f$R_{0}\f$, as given by +!! Vickers and Mahrt (2004) \cite Vickers_2004 +!! \f[ +!! Rb_{cr}=0.16(10^{-7}R_{0})^{-0.18} +!! \f] +!! \f[ +!! R_{0}=\frac{U_{10}}{f_{0}z_{0}} +!! \f] +!! where \f$U_{10}\f$ is the wind speed at 10m above the ground surface, +!! \f$f_0\f$ the Coriolis parameter, and \f$z_{0}\f$ the surface roughness +!! length. To avoid too much variation, we restrict \f$Rb_{cr}\f$ to vary +!! within the range of 0.15~0.35 do i = 1,im if(pblflg(i)) then ! thermal(i) = thvx(i,1) @@ -490,7 +520,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & crb(i) = max(min(crb(i), crbmax), crbmin) endif enddo -! +!> - Compute \f$\frac{\Delta t}{\Delta z}\f$ , \f$u_*\f$ do i=1,im dtdz1(i) = dt2 / (zi(i,2)-zi(i,1)) enddo @@ -499,7 +529,8 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & ustar(i) = sqrt(stress(i)) enddo ! -! compute buoyancy (bf) and winshear square +!> - Compute buoyancy \f$\frac{\partial \theta_v}{\partial z}\f$ (bf) +!! and the wind shear squared (shr2) ! do k = 1, km1 do i = 1, im @@ -511,14 +542,18 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo enddo ! -! find pbl height based on bulk richardson number (mrf pbl scheme) +! Find pbl height based on bulk richardson number (mrf pbl scheme) ! and also for diagnostic purpose ! do i=1,im flg(i) = .false. rbup(i) = rbsoil(i) enddo -! +!> - Given the thermal's properties and the critical Richardson number, +!! a loop is executed to find the first level above the surface (kpblx) where +!! the modified Richardson number is greater than the critical Richardson +!! number, using equation 10a from Troen and Mahrt (1996) \cite troen_and_mahrt_1986 +!! (also equation 8 from Hong and Pan (1996) \cite hong_and_pan_1996): do k = 1, kmpbl do i = 1, im if(.not.flg(i)) then @@ -533,6 +568,9 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & endif enddo enddo +!> - Once the level is found, some linear interpolation is performed to find +!! the exact height of the boundary layer top (where \f$R_{i} > Rb_{cr}\f$) +!! and the PBL height (hpbl and kpbl) and the PBL top index are saved. do i = 1,im if(kpblx(i) > 1) then k = kpblx(i) @@ -554,8 +592,15 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & if(kpbl(i) <= 1) pblflg(i)=.false. enddo ! -! compute similarity parameters -! +!> ## Compute Monin-Obukhov similarity parameters +!! - Calculate the Monin-Obukhov nondimensional stability paramter, commonly +!! referred to as \f$\zeta\f$ using the following equation from Businger et al.(1971) \cite businger_et_al_1971 +!! (eqn 28): +!! \f[ +!! \zeta = Ri_{sfc}\frac{F_m^2}{F_h} = \frac{z}{L} +!! \f] +!! where \f$F_m\f$ and \f$F_h\f$ are surface Monin-Obukhov stability functions calculated in sfc_diff.f and +!! \f$L\f$ is the Obukhov length. do i=1,im zol(i) = max(rbsoil(i)*fm(i)*fm(i)/fh(i),rimin) if(sfcflg(i)) then @@ -563,7 +608,17 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & else zol(i) = max(zol(i),zfmin) endif -! +!> - Calculate the nondimensional gradients of momentum and temperature (\f$\phi_m\f$ (phim) and \f$\phi_h\f$(phih)) are calculated using +!! eqns 5 and 6 from Hong and Pan (1996) \cite hong_and_pan_1996 depending on the surface layer stability: +!! - For the unstable and neutral conditions: +!! \f[ +!! \phi_m=(1-16\frac{0.1h}{L})^{-1/4} +!! \phi_h=(1-16\frac{0.1h}{L})^{-1/2} +!! \f] +!! - For the stable regime +!! \f[ +!! \phi_m=\phi_t=(1+5\frac{0.1h}{L}) +!! \f] zol1 = zol(i)*sfcfrac*hpbl(i)/zl(i,1) if(sfcflg(i)) then tem = 1.0 / (1. - aphi16*zol1) @@ -575,6 +630,21 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & endif enddo ! +!> - The \f$z/L\f$ (zol) is used as the stability criterion for the PBL.Currently, +!! strong unstable (convective) PBL for \f$z/L < -0.02\f$ and weakly and moderately +!! unstable PBL for \f$0>z/L>-0.02\f$ +!> - Compute the velocity scale \f$w_s\f$ (wscale) (eqn 22 of Han et al. 2019). It +!! is represented by the value scaled at the top of the surface layer: +!! \f[ +!! w_s=(u_*^3+7\alpha\kappa w_*^3)^{1/3} +!! \f] +!! where \f$u_*\f$ (ustar) is the surface friction velocity,\f$\alpha\f$ is the ratio +!! of the surface layer height to the PBL height (specified as sfcfrac =0.1), +!! \f$\kappa =0.4\f$ is the von Karman constant, and \f$w_*\f$ is the convective velocity +!! scale defined as eqn23 of Han et al.(2019): +!! \f[ +!! w_{*}=[(g/T)\overline{(w'\theta_v^{'})}_0h]^{1/3} +!! \f] do i=1,im if(pblflg(i)) then if(zol(i) < zolcru) then @@ -589,7 +659,8 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & endif enddo ! -! compute a thermal excess +!> ## The counter-gradient terms for temperature and humidity are calculated. +!! - Equation 4 of Hong and Pan (1996) \cite hong_and_pan_1996 and are used to calculate the "scaled virtual temperature excess near the surface" (equation 9 in Hong and Pan (1996) \cite hong_and_pan_1996) for use in the mass-flux algorithm. ! do i = 1,im if(pcnvflg(i)) then @@ -603,7 +674,10 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! look for stratocumulus -! +!> ## Determine whether stratocumulus layers exist and compute quantities +!! - Starting at the PBL top and going downward, if the level is less than 2.5 km +!! and \f$q_l\geq q_{lcr}\f$ then set kcld = k (find the cloud top index in the PBL. +!! If no cloud water above the threshold is hound, \e scuflg is set to F. do i=1,im flg(i) = scuflg(i) enddo @@ -631,7 +705,11 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & do i = 1, im if(scuflg(i) .and. kcld(i)==km1) scuflg(i)=.false. enddo -! +!> - Starting at the PBL top and going downward, if the level is less +!! than the cloud top, find the level of the minimum radiative heating +!! rate wihin the cloud. If the level of the minimum is the lowest model +!! level or the minimum radiative heating rate is positive, then set +!! scuflg to F. do i = 1, im flg(i)=scuflg(i) enddo @@ -655,9 +733,10 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! compute components for mass flux mixing by large thermals +!> ## Compute components for mass flux mixing by large thermals !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! +!> - If the PBL is convective, the updraft properties are initialized +!! to be the same as the state variables. do k = 1, km do i = 1, im if(pcnvflg(i)) then @@ -684,12 +763,14 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo enddo enddo -! +!> - Call mfpbltq(), which is an EDMF parameterization (Siebesma et al.(2007) \cite Siebesma_2007) +!! to take into account nonlocal transport by large eddies. For details of the mfpbltq subroutine, step into its documentation ::mfpbltq call mfpbltq(im,ix,km,kmpbl,ntcw,ntrac1,dt2, & pcnvflg,zl,zm,q1,t1,u1,v1,plyr,pix,thlx,thvx, & gdx,hpbl,kpbl,vpert,buou,xmf, & tcko,qcko,ucko,vcko,xlamue,bl_upfr) -! +!> - Call mfscuq(), which is a new mass-flux parameterization for +!! stratocumulus-top-induced turbulence mixing. For details of the mfscuq subroutine, step into its documentation ::mfscuq call mfscuq(im,ix,km,kmscu,ntcw,ntrac1,dt2, & scuflg,zl,zm,q1,t1,u1,v1,plyr,pix, & thlx,thvx,thlvx,gdx,thetae, @@ -697,8 +778,8 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & & tcdo,qcdo,ucdo,vcdo,xlamde,bl_dnfr) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! compute prandtl number and exchange coefficient varying with height -! + +!> ## Compute Prandtl number \f$P_r\f$ (prn) and exchange coefficient varying with height do k = 1, kmpbl do i = 1, im if(k < kpbl(i)) then @@ -727,23 +808,23 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & ! ! background diffusivity decreasing with increasing surface layer stability ! - do i = 1, im - if(.not.sfcflg(i)) then - tem = (1. + 5. * rbsoil(i))**2. -! tem = (1. + 5. * zol(i))**2. - frik(i) = 0.1 + 0.9 / tem - endif - enddo +! do i = 1, im +! if(.not.sfcflg(i)) then +! tem = (1. + 5. * rbsoil(i))**2. +!! tem = (1. + 5. * zol(i))**2. +! frik(i) = 0.1 + 0.9 / tem +! endif +! enddo ! - do k = 1,km1 - do i=1,im - xkzo(i,k) = frik(i) * xkzo(i,k) - xkzmo(i,k)= frik(i) * xkzmo(i,k) - enddo - enddo +! do k = 1,km1 +! do i=1,im +! xkzo(i,k) = frik(i) * xkzo(i,k) +! xkzmo(i,k)= frik(i) * xkzmo(i,k) +! enddo +! enddo ! -! The background vertical diffusivities in the inversion layers are limited -! to be less than or equal to xkzminv +!> ## The background vertical diffusivities in the inversion layers are limited +!! to be less than or equal to xkzinv ! do k = 1,km1 do i=1,im @@ -758,7 +839,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! compute an asymtotic mixing length +!> ## Compute an asymtotic mixing length ! do k = 1, km1 do i = 1, im @@ -818,7 +899,18 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & ! tem = 0.5 * (zi(i,k+1)-zi(i,k)) tem1 = min(tem, rlmnz(i,k)) -! +!> - Following Bougeault and Lacarrere(1989), the characteristic length +!! scale (\f$l_2\f$) (eqn 10 in Han et al.(2019) \cite Han_2019) is given by: +!!\f[ +!! l_2=min(l_{up},l_{down}) +!!\f] +!! and dissipation length scale \f$l_d\f$ is given by: +!!\f[ +!! l_d=(l_{up}l_{down})^{1/2} +!!\f] +!! where \f$l_{up}\f$ and \f$l_{down}\f$ are the distances that a parcel +!! having an initial TKE can travel upward and downward before being stopped +!! by buoyancy effects. ptem2 = min(zlup,zldn) rlam(i,k) = elmfac * ptem2 rlam(i,k) = max(rlam(i,k), tem1) @@ -831,7 +923,8 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & ! enddo enddo -! +!> - Compute the surface layer length scale (\f$l_1\f$) following +!! Nakanishi (2001) \cite Nakanish_2001 (eqn 9 of Han et al.(2019) \cite Han_2019) do k = 1, km1 do i = 1, im tem = vk * zl(i,k) @@ -860,7 +953,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! compute eddy diffusivities +!> ## Compute eddy diffusivities !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! do k = 1, km1 @@ -913,26 +1006,27 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & ! enddo enddo -! -! compute a minimum TKE deduced from background diffusivity for momentum. +!> ## Compute TKE. +!! - Compute a minimum TKE deduced from background diffusivity for momentum. ! do k = 1, km1 do i = 1, im if(k == 1) then tem = ckz(i,1) - tem1 = xkzmo(i,1) + tem1 = 0.5 * xkzmo(i,1) else tem = 0.5 * (ckz(i,k-1) + ckz(i,k)) tem1 = 0.5 * (xkzmo(i,k-1) + xkzmo(i,k)) endif ptem = tem1 / (tem * elm(i,k)) tkmnz(i,k) = ptem * ptem + tkmnz(i,k) = min(tkmnz(i,k), tkminx) tkmnz(i,k) = max(tkmnz(i,k), tkmin) enddo enddo ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! compute buoyancy and shear productions of tke +!> - Compute buoyancy and shear productions of TKE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! do k = 1, km1 @@ -1056,7 +1150,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo ! !---------------------------------------------------------------------- -! first predict tke due to tke production & dissipation(diss) +!> - First predict tke due to tke production & dissipation(diss) ! dtn = dt2 / float(ndt) do n = 1, ndt @@ -1074,7 +1168,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo enddo ! -! compute updraft & downdraft properties for tke +!> - Compute updraft & downdraft properties for TKE ! do k = 1, km do i = 1, im @@ -1112,7 +1206,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo ! !---------------------------------------------------------------------- -! compute tridiagonal matrix elements for turbulent kinetic energy +!> - Compute tridiagonal matrix elements for turbulent kinetic energy ! do i=1,im ad(i,1) = 1.0 @@ -1160,11 +1254,11 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo enddo c -c solve tridiagonal problem for tke +!> - Call tridit() to solve tridiagonal problem for TKE c call tridit(im,km,1,al,ad,au,f1,au,f1) c -c recover tendency of tke +!> - Recover the tendency of tke c do k = 1,km do i = 1,im @@ -1174,7 +1268,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo enddo c -c compute tridiagonal matrix elements for heat and moisture +!> ## Compute tridiagonal matrix elements for heat and moisture c do i=1,im ad(i,1) = 1. @@ -1283,11 +1377,11 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo endif c -c solve tridiagonal problem for heat and moisture +!> - Call tridin() to solve tridiagonal problem for heat and moisture c call tridin(im,km,ntrac1,al,ad,au,f1,f2,au,f1,f2) c -c recover tendencies of heat and moisture +!> - Recover the tendencies of heat and moisture c do k = 1,km do i = 1,im @@ -1312,7 +1406,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo endif ! -! add tke dissipative heating to temperature tendency +!> ## Add TKE dissipative heating to temperature tendency ! if(dspheat) then do k = 1,km1 @@ -1325,7 +1419,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo endif c -c compute tridiagonal matrix elements for momentum +!> ## Compute tridiagonal matrix elements for momentum c do i=1,im ad(i,1) = 1.0 + dtdz1(i) * stress(i) / spd1(i) @@ -1383,11 +1477,11 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo enddo c -c solve tridiagonal problem for momentum +!> - Call tridi2() to solve tridiagonal problem for momentum c call tridi2(im,km,al,ad,au,f1,f2,au,f1,f2) c -c recover tendencies of momentum +!> - Recover the tendencies of momentum c do k = 1,km do i = 1,im @@ -1401,7 +1495,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! pbl height for diagnostic purpose +!> ## Save PBL height for diagnostic purpose ! do i = 1, im hpbl(i) = hpblx(i) @@ -1412,5 +1506,5 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & return end subroutine satmedmfvdifq_run !> @} - +!! @} end module satmedmfvdifq diff --git a/physics/tridi.f b/physics/tridi.f index 22a35ea9c..b2e667547 100644 --- a/physics/tridi.f +++ b/physics/tridi.f @@ -42,6 +42,7 @@ end subroutine tridi1 c----------------------------------------------------------------------- !>\ingroup satmedmf +!>\ingroup satmedmfvidfq !> This subroutine .. subroutine tridi2(l,n,cl,cm,cu,r1,r2,au,a1,a2) cc @@ -84,6 +85,7 @@ end subroutine tridi2 c----------------------------------------------------------------------- !>\ingroup satmedmf +!>\ingroup satmedmfvdifq !> Routine to solve the tridiagonal system to calculate u- and !! v-momentum at \f$ t + \Delta t \f$; part of two-part process to !! calculate time tendencies due to vertical diffusion. @@ -154,6 +156,7 @@ end subroutine tridin c----------------------------------------------------------------------- !>\ingroup satmedmf +!>\ingroup satmedmfvdifq !! This subroutine solves tridiagonal problem for TKE. subroutine tridit(l,n,nt,cl,cm,cu,rt,au,at) !----------------------------------------------------------------------- From 2a89352ded837b0fa12b7f93d27324c16ce28068 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Thu, 26 Dec 2019 13:17:55 -0700 Subject: [PATCH 03/11] doc updates --- physics/docs/ccpp_dox_layout.xml | 10 - physics/docs/pdftxt/CPT_adv_suite.txt | 57 +++-- physics/docs/pdftxt/GFS_UGWPv0.txt | 21 ++ physics/docs/pdftxt/GFSv15p2_suite.txt | 235 +++++++++++++++++++ physics/docs/pdftxt/GFSv16beta_suite.txt | 277 +++++++++++++++++++++++ physics/docs/pdftxt/GSD_adv_suite.txt | 206 +++++++++++------ physics/docs/pdftxt/all_shemes_list.txt | 10 +- physics/docs/pdftxt/mainpage.txt | 2 +- 8 files changed, 723 insertions(+), 95 deletions(-) create mode 100644 physics/docs/pdftxt/GFS_UGWPv0.txt create mode 100644 physics/docs/pdftxt/GFSv15p2_suite.txt create mode 100644 physics/docs/pdftxt/GFSv16beta_suite.txt diff --git a/physics/docs/ccpp_dox_layout.xml b/physics/docs/ccpp_dox_layout.xml index 527034db2..a618eeacb 100644 --- a/physics/docs/ccpp_dox_layout.xml +++ b/physics/docs/ccpp_dox_layout.xml @@ -5,16 +5,6 @@ - - - - - - - - - - diff --git a/physics/docs/pdftxt/CPT_adv_suite.txt b/physics/docs/pdftxt/CPT_adv_suite.txt index 814e4bcef..7ced98f3b 100644 --- a/physics/docs/pdftxt/CPT_adv_suite.txt +++ b/physics/docs/pdftxt/CPT_adv_suite.txt @@ -56,9 +56,10 @@ The advanced csawmg physics suite uses the parameterizations in the following or GFS_suite_stateout_reset get_prs_fv3 GFS_suite_interstitial_1 - dcyc2t3 GFS_surface_generic_pre GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter GFS_suite_interstitial_2 @@ -83,8 +84,9 @@ The advanced csawmg physics suite uses the parameterizations in the following or hedmf GFS_PBL_generic_post GFS_GWD_generic_pre - gwdps - gwdps_post + cires_ugwp + cires_ugwp_post + GFS_GWD_generic_post rayleigh_damp GFS_suite_stateout_update ozphys_2015 @@ -96,12 +98,8 @@ The advanced csawmg physics suite uses the parameterizations in the following or cs_conv cs_conv_post GFS_DCNV_generic_post - gwdc_pre - gwdc - gwdc_post GFS_SCNV_generic_pre samfshalcnv - samfshalcnv_post GFS_SCNV_generic_post GFS_suite_interstitial_4 cnvc90 @@ -111,13 +109,11 @@ The advanced csawmg physics suite uses the parameterizations in the following or m_micro_post cs_conv_aw_adj GFS_MP_generic_post - sfc_sice_post maximum_hourly_diagnostics - \endcode \section cpt_nml_option Namelist Option @@ -126,6 +122,7 @@ The advanced csawmg physics suite uses the parameterizations in the following or fhzero = 6. ldiag3d = .true. fhcyc = 24. + nst_anl = .true. use_ufo = .true. pre_rad = .false. crtrh = 0.93,0.90,0.95 @@ -147,25 +144,40 @@ The advanced csawmg physics suite uses the parameterizations in the following or shal_cnv = .true. cal_pre = .false. redrag = .true. - dspheat = .true. + dspheat = .false. hybedmf = .true. satmedmf = .false. - lheatstrg = .true. + lheatstrg = .false. random_clds = .true. trans_trac = .true. - cnvcld = .true. + cnvcld = .false. imfshalcnv = 2 imfdeepcnv = -1 cdmbgwd = 3.5,0.25 prslrd0 = 0. ivegsrc = 1 isot = 1 + lsm = 1 + iopt_dveg = 2 + iopt_crs = 1 + iopt_btr = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 1 + iopt_alb = 2 + iopt_snf = 4 + iopt_tbot = 2 + iopt_stc = 1 oz_phys = .false. oz_phys_2015 = .true. debug = .false. + ras = .false. cscnv = .true. do_shoc = .false. + shoc_parm = 7000.0,1.0,2.0,0.7,-999.0 do_aw = .true. shoc_cld = .false. h2o_phys = .true. @@ -173,8 +185,6 @@ The advanced csawmg physics suite uses the parameterizations in the following or xkzm_h = 0.5 xkzm_m = 0.5 xkzm_s = 1.0 - nstf_name = 2,1,1,0,5 - nst_anl = .true. ccwf = 1.0,1.0 dlqf = 0.25,0.05 mg_dcs = 200.0 @@ -190,12 +200,13 @@ The advanced csawmg physics suite uses the parameterizations in the following or mg_do_ice_gmao = .false. mg_do_liq_liu = .true. cs_parm = 8.0,4.0,1.0e3,3.5e3,20.0,1.0,0.0,1.0,0.6,0.0 - shoc_parm = 7000.0,1.0,2.0,0.7,-999.0 ctei_rm = 0.60,0.23 max_lon = 8000 max_lat = 4000 rhcmax = 0.9999999 effr_in = .true. + + nstf_name = 2,1,1,0,5 ltaerosol = .false. lradar = .false. cplflx = .false. @@ -203,6 +214,22 @@ The advanced csawmg physics suite uses the parameterizations in the following or iaufhrs = 30 iau_inc_files = "''" / + +&cires_ugwp_nml + knob_ugwp_solver = 2 + knob_ugwp_source = 1,1,0,0 + knob_ugwp_wvspec = 1,25,25,25 + knob_ugwp_azdir = 2,4,4,4 + knob_ugwp_stoch = 0,0,0,0 + knob_ugwp_effac = 1,1,1,1 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_version = 0 + launch_level = 25 +/ +/ \endcode diff --git a/physics/docs/pdftxt/GFS_UGWPv0.txt b/physics/docs/pdftxt/GFS_UGWPv0.txt new file mode 100644 index 000000000..f64472f21 --- /dev/null +++ b/physics/docs/pdftxt/GFS_UGWPv0.txt @@ -0,0 +1,21 @@ +/** +\page GFS_UGWPv0 GFS Unified Gravity Wave Physics Version 0 +\section des_UGWP Description + +Gravity waves (GWs) are generated by a variety of sources in the atmosphere including orographic GWs (OGWs; quasi-stationary waves) and non-orographic GWs (NGWs; non-stationary oscillations). The subgrid scale parameterization scheme for OGWs can be found in Section \ref GFS_GWDPS. This scheme represents the operational version of the subgrid scale orography effects in Version 15 of Global Forecast System (GFS). + +The NGW physics scheme parameterizes the effects of non-stationary subgrid-scale waves in the global atmosphere models extended into the stratosphere, mesosphere, and thermosphere. These non-stationary oscillations with periods bounded by Coriolis and Brunt-Väisälä frequencies and typical horizontal scales from tens to several hundreds of kilometers are forced by the imbalance of convective and frontal/jet dynamics in the troposphere and lower stratosphere (Fritts 1984 \cite fritts_1984; Alexander et al. 2010 \cite alexander_et_al_2010; Plougonven and Zhang 2014 \cite plougonven_and_zhang_2014). The NGWs propagate upwards and the amplitudes exponentially grow with altitude until instability and breaking of waves occur. Convective and dynamical instability induced by GWs with large amplitudes can trigger production of small-scale turbulence and self-destruction of waves. The latter process in the theory of atmospheric GWs is frequently referred as the wave saturation (Lindzen 1981 \cite lindzen_1981; Weinstock 1984 \cite weinstock_1984; Fritts 1984 \cite fritts_1984). Herein, “saturation” or "breaking" refers to any processes that act to reduce wave amplitudes due to instabilities and/or interactions arising from large-amplitude perturbations limiting the exponential growth of GWs with height. Background dissipation processes such as molecular diffusion and radiative cooling, in contrast, act independently of GW amplitudes. In the middle atmosphere, impacts of NGW saturation (or breaking) and dissipation on the large-scale circulation, mixing, and transport have been acknowledged in the physics of global weather and climate models after pioneering studies by Lindzen 1981 \cite lindzen_1981 and Holton 1983 \cite holton_1983. Comprehensive reviews on the physics of NGWs and OGWs in the climate research and weather forecasting highlighted the variety of parameterization schemes for NGWs (Alexander et al. 2010 \cite alexander_et_al_2010; Geller et al. 2013 \cite geller_et_al_2013; Garcia et al. 2017 \cite garcia_et_al_2017). They are formulated using different aspects of the nonlinear and linear propagation, instability, breaking and dissipation of waves along with different specifications of GW sources (Garcia et al. 2007 \cite garcia_et_al_2007; Richter et al 2010 \cite richter_et_al_2010; Eckermann et al. 2009 \cite eckermann_et_al_2009; Eckermann 2011 \cite eckermann_2011; Lott et al. 2012 \cite lott_et_al_2012). + +The current operational GFS physics parameterizes effects of stationary OGWs and convective GWs, neglecting the impacts of non-stationary subgrid scale GW physics. This leads to well-known shortcomings in the global model predictions in the stratosphere and upper atmosphere (Alexander et al. 2010 \cite alexander_et_al_2010; Geller et al. 2013). In order to describe the effects of unresolved GWs by dynamical cores in global forecast models, subgrid scales physics of stationary and non-stationary GWs needs to be implemented in the self-consistent manner under the Unified Gravity Wave Physics (UGWP) framework. + +The concept of UGWP and the related programming architecture implemented in FV3GFS was first proposed by CU-CIRES, NOAA Space Weather Prediction Center (SWPC) and Environmental Modeling Center (EMC) for the Unified Forecast System (UFS) with variable positions of the model top lids (Alpert et al. 2019 \cite alpert_et_al_2019; Yudin et al. 2016 \cite yudin_et_al_2016; Yudin et al. 2018 \cite yudin_et_al_2018). As above, the UGWP considers identical GW propagation solvers for OGWs and NGWs with different approaches for specification of subgrid wave sources. The current set of the input and control parameters for UGWP version 0 (UGWP-v0) can select different options for GW effects including momentum deposition (also called GW drag), heat deposition, and mixing by eddy viscosity, conductivity and diffusion. The input GW parameters can control the number of directional azimuths in which waves can propagate, number of waves in single direction, and the interface model layer from the surface at which NGWs can be launched. Among the input parameters, the GW efficiency factors reflect intermittency of wave excitation. They can vary with horizontal resolutions, reflecting capability of the FV3 dynamical core to resolve mesoscale wave activity with the enhancement of model resolution. The prescribed distributions for vertical momentum flux (VMF) of NGWs have been employed in the global forecast models of NWP centers and reanalysis projects to ease tuning of GW schemes to the climatology of the middle atmosphere dynamics in the absence of the global wind data above about 35 km (Eckermann et al. 2009 \cite eckermann_et_al_2009; Molod et al. 2015 \cite molod_et_al_2015). These distributions of VMF qualitatively describe the general features of the latitudinal and seasonal variations of the global GW activity in the lower stratosphere, observed from the ground and space (Ern et al. 2018 \cite ern_et_al_2018). For the long-term climate projections, global models seek to establish communication between model physics and dynamics. This provides variable in time and space excitation of subgrid GWs under year-to-year variations of solar input and anthropogenic emissions (Richter et al 2010 \cite richter_et_al_2010; 2014 \cite richter_et_al_2014). + +Note that in the first release of UGWP (UGWP-v0), the momentum and heat deposition due to GW breaking and dissipation have been tested in the multi-year simulations and medium-range forecasts using FV3GFS-L127 configuration with top lid at about 80 km. In addition, the eddy mixing effects induced by instability of GWs are not activated in this version. Along with the GW heat and momentum depositions, GW eddy mixing is an important element of the Whole Atmosphere Model (WAM) physics, as shown in WAM simulations with the spectral dynamics (Yudin et al. 2018 \cite yudin_et_al_2018). The additional impact of eddy mixing effects in the middle and upper atmosphere need to be further tested, evaluated, and orchestrated with the subgrid turbulent diffusion of the GFS physics (work in progress). In UFS, the WAM with FV3 dynamics (FV3-WAM) will represent the global atmosphere model configuration extended into the thermosphere (top lid at ~600 km). In the mesosphere and thermosphere, the background attenuation of subgrid waves due to molecular and turbulent diffusion, radiative damping and ion drag will be the additional mechanism of NGW and OGW dissipation along with convective and dynamical instability of waves described by the linear (Lindzen 1981 \cite lindzen_1981) and nonlinear (Weinstock 1984 \cite weinstock_1984; Hines 1997 \cite hines_1997) saturation theories. + +\section intra_UGWPv0 Intraphysics Communication +\ref arg_table_cires_ugwp_run + +\section gen_al_ugwpv0 General Algorithm +\ref cires_ugwp_run + +*/ diff --git a/physics/docs/pdftxt/GFSv15p2_suite.txt b/physics/docs/pdftxt/GFSv15p2_suite.txt new file mode 100644 index 000000000..251322aec --- /dev/null +++ b/physics/docs/pdftxt/GFSv15p2_suite.txt @@ -0,0 +1,235 @@ +/** +\page GFS_v15p2_page GFS_v15p2 Suite + +\section gfs1_suite_overview Overview + +Version 15.2.0 of the Global Forecast System (GFS) was implemented operationally by the NOAA +National Centers for Environmental Prediction (NCEP) on November 7, 2019, begining with the 1200 +Coordinated Universal Time (UTC) run. + +GFS version 15.1.0 was implemented into operations at the 12Z cycle on June 12, 2019. It was the +first GFS implementation with the finite-volume cubed-sphere (FV3) dynamical core as the the NWS's +Next Generation Global Prediction System (NGGPS) + +The GFS v15.2.0 physics suite uses the parameterizations in the following order: + - \ref GFS_RRTMG + - \ref GFS_SFCLYR + - \ref GFS_NSST + - \ref GFS_NOAH + - \ref GFS_SFCSICE + - \ref GFS_HEDMF + - \ref GFS_GWDPS + - \ref GFS_RAYLEIGH + - \ref GFS_OZPHYS + - \ref GFS_H2OPHYS + - \ref GFS_SAMFdeep + - \ref GFS_GWDC + - \ref GFS_SAMFshal + - \ref GFDL_cloud + - \ref GFS_CALPRECIPTYPE + +\section sdf_gfsv15p2 Suite Definition File + +The GFS v15.2.0 suite uses the parameterizations in the following order, as defined in \c FV3_GFS_v15: +\code + + + + + + + fv_sat_adj + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + rrtmg_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw_pre + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + sfc_diff + GFS_surface_loop_control_part1 + sfc_nst_pre + sfc_nst + sfc_nst_post + lsm_noah + sfc_sice + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + dcyc2t3_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + GFS_PBL_generic_pre + hedmf + GFS_PBL_generic_post + GFS_GWD_generic_pre + cires_ugwp + cires_ugwp_post + GFS_GWD_generic_post + rayleigh_damp + GFS_suite_stateout_update + ozphys_2015 + h2ophys + GFS_DCNV_generic_pre + get_phi_fv3 + GFS_suite_interstitial_3 + samfdeepcnv + GFS_DCNV_generic_post + GFS_SCNV_generic_pre + samfshalcnv + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + gfdl_cloud_microphys + GFS_MP_generic_post + maximum_hourly_diagnostics + + + + + GFS_stochastics + + + + +\endcode + +\section gfs15p2_nml_opt_des Namelist Option +\code +&gfs_physics_nml + fhzero = 6 + h2o_phys = .true. + ldiag3d = .false. + fhcyc = 24 + use_ufo = .true. + pre_rad = .false. + ncld = 5 + imp_physics = 11 + pdfcld = .false. + fhswr = 3600. + fhlwr = 3600. + ialb = 1 + iems = 1 + iaer = 111 + ico2 = 2 + isubc_sw = 2 + isubc_lw = 2 + isol = 2 + lwhtr = .true. + swhtr = .true. + cnvgwd = .true. + shal_cnv = .true. + cal_pre = .false. + redrag = .true. + dspheat = .true. + hybedmf = .true. + random_clds = .false. + trans_trac = .true. + cnvcld = .true. + imfshalcnv = 2 + imfdeepcnv = 2 + cdmbgwd = 3.5,0.25 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + debug = .false. + oz_phys = .F. + oz_phys_2015 = .T. + nstf_name = 2,1,0,0,0 + nst_anl = .true. + psautco = 0.0008,0.0005 + prautco = 0.00015,0.00015 + lgfdlmprad = .true. + effr_in = .true. + do_sppt = .T. + do_shum = .T. + do_skeb = .T. + do_sfcperts = .F. +/ + + +&gfdl_cloud_microphysics_nml + sedi_transport = .true. + do_sedi_heat = .false. + rad_snow = .true. + rad_graupel = .true. + rad_rain = .true. + const_vi = .F. + const_vs = .F. + const_vg = .F. + const_vr = .F. + vi_max = 1. + vs_max = 2. + vg_max = 12. + vr_max = 12. + qi_lim = 1. + prog_ccn = .false. + do_qa = .true. + fast_sat_adj = .true. + tau_l2v = 225. + tau_v2l = 150. + tau_g2v = 900. + rthresh = 10.e-6 + dw_land = 0.16 + dw_ocean = 0.10 + ql_gen = 1.0e-3 + ql_mlt = 1.0e-3 + qi0_crt = 8.0E-5 + qs0_crt = 1.0e-3 + tau_i2s = 1000. + c_psaci = 0.05 + c_pgacs = 0.01 + rh_inc = 0.30 + rh_inr = 0.30 + rh_ins = 0.30 + ccn_l = 300. + ccn_o = 100. + c_paut = 0.5 + c_cracw = 0.8 + use_ppm = .false. + use_ccn = .true. + mono_prof = .true. + z_slope_liq = .true. + z_slope_ice = .true. + de_ice = .false. + fix_negative = .true. + icloud_f = 1 + mp_time = 150. +/ +\endcode + +*/ diff --git a/physics/docs/pdftxt/GFSv16beta_suite.txt b/physics/docs/pdftxt/GFSv16beta_suite.txt new file mode 100644 index 000000000..285457b40 --- /dev/null +++ b/physics/docs/pdftxt/GFSv16beta_suite.txt @@ -0,0 +1,277 @@ +/** +\page GFS_v16beta_page GFS_v16beta Suite + +\section gfsv16beta_suite_overview Overview + +Version 16 of the Global Forecast System (GFS) will be implemented operationally by the NOAA +National Centers for Environmental Prediction (NCEP) in 2021. GFSv16beta is a prototype of GFSv16 suite, which +will increase vertical resolution from 64 to 127 vertical levels and raise model top from 54 km to 80 km; increase +horizontal resolution from 13 km to 10 km and include advanced physics chosen from physics test plan: +- PBL/turbulence: \ref GFS_HEDMF -> \ref GFS_SATMEDMFVDIFQ +- Gravity Wave Drag: \ref GFS_UGWPv0 +- Radiation: updates to cloud-overlap assumptions +- Microphysics: improvements to \ref GFDL_cloud + + +The GFS v16beta physics suite uses the parameterizations in the following order: + - \ref GFS_RRTMG + - \ref GFS_SFCLYR + - \ref GFS_NSST + - \ref GFS_NOAH + - \ref GFS_SFCSICE + - \ref GFS_GFS_SATMEDMFVDIFQ + - \ref GFS_UGWPv0 + - \ref GFS_RAYLEIGH + - \ref GFS_OZPHYS + - \ref GFS_H2OPHYS + - \ref GFS_SAMFdeep + - \ref GFS_SAMFshal + - \ref GFDL_cloud + - \ref GFS_CALPRECIPTYPE + +\section sdf_gfsv15 Suite Definition File + +The GFS v15 suite uses the parameterizations in the following order, as defined in \c SCM_GFS_v15: +\code + + + + + + + fv_sat_adj + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + rrtmg_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw_pre + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + sfc_diff + GFS_surface_loop_control_part1 + sfc_nst_pre + sfc_nst + sfc_nst_post + lsm_noah + sfc_sice + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + dcyc2t3_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + GFS_PBL_generic_pre + satmedmfvdifq + GFS_PBL_generic_post + GFS_GWD_generic_pre + cires_ugwp + cires_ugwp_post + GFS_GWD_generic_post + rayleigh_damp + GFS_suite_stateout_update + ozphys_2015 + h2ophys + GFS_DCNV_generic_pre + get_phi_fv3 + GFS_suite_interstitial_3 + samfdeepcnv + GFS_DCNV_generic_post + GFS_SCNV_generic_pre + samfshalcnv + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + gfdl_cloud_microphys + GFS_MP_generic_post + maximum_hourly_diagnostics + + + + + GFS_stochastics + + + + + +\endcode + +\section gfs15_nml_opt_des Namelist Option +\code +&gfs_physics_nml + fhzero = 6 + h2o_phys = .true. + ldiag3d = .false. + fhcyc = 24 + use_ufo = .true. + pre_rad = .false. + ncld = 5 + imp_physics = 11 + pdfcld = .false. + fhswr = 3600. + fhlwr = 3600. + ialb = 1 + iems = 1 + iaer = 5111 + icliq_sw = 2 + iovr_lw = 3 + iovr_sw = 3 + ico2 = 2 + isubc_sw = 2 + isubc_lw = 2 + isol = 2 + lwhtr = .true. + swhtr = .true. + cnvgwd = .true. + shal_cnv = .true. + cal_pre = .false. + redrag = .true. + dspheat = .true. + hybedmf = .false. + satmedmf = .true. + isatmedmf = 1 + lheatstrg = .true. + random_clds = .false. + trans_trac = .true. + cnvcld = .true. + imfshalcnv = 2 + imfdeepcnv = 2 + cdmbgwd = 4.0,0.15,1.0,1.0 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + lsoil = 4 + lsm = 1 + iopt_dveg = 1 + iopt_crs = 1 + iopt_btr = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 1 + iopt_alb = 2 + iopt_snf = 4 + iopt_tbot = 2 + iopt_stc = 1 + debug = .false. + oz_phys = .F. + oz_phys_2015 = .T. + nstf_name = 2,1,1,0,5 + nst_anl = .true. + psautco = 0.0008,0.0005 + prautco = 0.00015,0.00015 + lgfdlmprad = .true. + effr_in = .true. + ldiag_ugwp = .false. + do_ugwp = .false. + do_tofd = .true. + do_sppt = .true. + do_shum = .true. + do_skeb = .true. + do_sfcperts = .false. +/ + +&gfdl_cloud_microphysics_nml + sedi_transport = .true. + do_sedi_heat = .false. + rad_snow = .true. + rad_graupel = .true. + rad_rain = .true. + const_vi = .F. + const_vs = .F. + const_vg = .F. + const_vr = .F. + vi_max = 1. + vs_max = 2. + vg_max = 12. + vr_max = 12. + qi_lim = 1. + prog_ccn = .false. + do_qa = .true. + fast_sat_adj = .true. + tau_l2v = 225. + tau_v2l = 150. + tau_g2v = 900. + rthresh = 10.e-6 + dw_land = 0.16 + dw_ocean = 0.10 + ql_gen = 1.0e-3 + ql_mlt = 1.0e-3 + qi0_crt = 8.0E-5 + qs0_crt = 1.0e-3 + tau_i2s = 1000. + c_psaci = 0.05 + c_pgacs = 0.01 + rh_inc = 0.30 + rh_inr = 0.30 + rh_ins = 0.30 + ccn_l = 300. + ccn_o = 100. + c_paut = 0.5 + c_cracw = 0.8 + use_ppm = .false. + use_ccn = .true. + mono_prof = .true. + z_slope_liq = .true. + z_slope_ice = .true. + de_ice = .false. + fix_negative = .true. + icloud_f = 1 + mp_time = 150. + reiflag = 2 +/ + +&cires_ugwp_nml + knob_ugwp_solver = 2 + knob_ugwp_source = 1,1,0,0 + knob_ugwp_wvspec = 1,25,25,25 + knob_ugwp_azdir = 2,4,4,4 + knob_ugwp_stoch = 0,0,0,0 + knob_ugwp_effac = 1,1,1,1 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_version = 0 + launch_level = 27 +/ + +/ +\endcode + +*/ diff --git a/physics/docs/pdftxt/GSD_adv_suite.txt b/physics/docs/pdftxt/GSD_adv_suite.txt index c3180f739..08c6b19df 100644 --- a/physics/docs/pdftxt/GSD_adv_suite.txt +++ b/physics/docs/pdftxt/GSD_adv_suite.txt @@ -72,9 +72,10 @@ The GSD RAP/HRRR physics suite uses the parameterizations in the following order GFS_suite_stateout_reset get_prs_fv3 GFS_suite_interstitial_1 - dcyc2t3 GFS_surface_generic_pre GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter GFS_suite_interstitial_2 @@ -85,6 +86,9 @@ The GSD RAP/HRRR physics suite uses the parameterizations in the following order sfc_nst sfc_nst_post lsm_ruc + lsm_ruc_sfc_sice_pre + sfc_sice + lsm_ruc_sfc_sice_post GFS_surface_loop_control_part2 @@ -96,8 +100,9 @@ The GSD RAP/HRRR physics suite uses the parameterizations in the following order GFS_surface_generic_post mynnedmf_wrapper GFS_GWD_generic_pre - gwdps - gwdps_post + cires_ugwp + cires_ugwp_post + GFS_GWD_generic_post rayleigh_damp GFS_suite_stateout_update ozphys_2015 @@ -108,9 +113,6 @@ The GSD RAP/HRRR physics suite uses the parameterizations in the following order cu_gf_driver_pre cu_gf_driver GFS_DCNV_generic_post - gwdc_pre - gwdc - gwdc_post GFS_SCNV_generic_pre GFS_SCNV_generic_post GFS_suite_interstitial_4 @@ -126,73 +128,149 @@ The GSD RAP/HRRR physics suite uses the parameterizations in the following order - \endcode \section gsd_nml_option Namelist Option \code &gfs_physics_nml - fhzero = 6. - h2o_phys = .true. - ldiag3d = .true. - fhcyc = 0. - nst_anl = .true. - use_ufo = .true. - pre_rad = .false. - ncld = 5 - imp_physics = 8 - ltaerosol = .true. - lradar = .true. - ttendlim = -999. - pdfcld = .false. - fhswr = 3600. - fhlwr = 3600. - ialb = 1 - iems = 1 - iaer = 111 - ico2 = 2 - isubc_sw = 2 - isubc_lw = 2 - isol = 2 - lwhtr = .true. - swhtr = .true. - cnvgwd = .true. - shal_cnv = .true. - cal_pre = .false. - redrag = .true. - dspheat = .true. - hybedmf = .false. - satmedmf = .false. - lheatstrg = .false. - do_mynnedmf = .true. - do_mynnsfclay = .false. - random_clds = .false. - trans_trac = .true. - cnvcld = .true. - imfshalcnv = 3 - imfdeepcnv = 3 - cdmbgwd = 3.5,0.25 - prslrd0 = 0. - ivegsrc = 1 - isot = 1 - debug = .false. - oz_phys = .false. - oz_phys_2015 = .true. - nstf_name = 2,1,1,0,5 - cplflx = .false. - iau_delthrs = 6 - iaufhrs = 30 - iau_inc_files = "''" - do_sppt = .false. - do_shum = .false. - do_skeb = .false. - do_sfcperts = .false. - lsm = 2 - lsoil_lsm = 9 + fhzero = 6. + h2o_phys = .true. + ldiag3d = .true. + fhcyc = 0. + nst_anl = .true. + use_ufo = .true. + pre_rad = .false. + ncld = 5 + imp_physics = 8 + ltaerosol = .true. + lradar = .true. + ttendlim = 0.004 + pdfcld = .false. + fhswr = 3600. + fhlwr = 3600. + ialb = 1 + iems = 1 + iaer = 111 + ico2 = 2 + isubc_sw = 2 + isubc_lw = 2 + isol = 2 + lwhtr = .true. + swhtr = .true. + cnvgwd = .true. + shal_cnv = .true. + cal_pre = .false. + redrag = .true. + dspheat = .true. + hybedmf = .false. + satmedmf = .false. + lheatstrg = .false. + do_mynnedmf = .true. + do_mynnsfclay = .false. + random_clds = .false. + trans_trac = .true. + cnvcld = .true. + imfshalcnv = 3 + imfdeepcnv = 3 + cdmbgwd = 3.5,0.25 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + debug = .false. + oz_phys = .false. + oz_phys_2015 = .true. + nstf_name = 2,1,1,0,5 + cplflx = .false. + iau_delthrs = 6 + iaufhrs = 30 + iau_inc_files = "''" + do_sppt = .false. + do_shum = .false. + do_skeb = .false. + do_sfcperts = .false. + lsm = 3 + lsoil_lsm = 9 + iopt_dveg = 2 + iopt_crs = 1 + iopt_btr = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 1 + iopt_alb = 2 + iopt_snf = 4 + iopt_tbot = 2 + iopt_stc = 1 icloud_bl = 1 bl_mynn_tkeadvect = .true. bl_mynn_edmf = 1 bl_mynn_edmf_mom = 1 + gwd_opt = 1 +/ + +&gfdl_cloud_microphysics_nml + sedi_transport = .true. + do_sedi_heat = .false. + rad_snow = .true. + rad_graupel = .true. + rad_rain = .true. + const_vi = .F. + const_vs = .F. + const_vg = .F. + const_vr = .F. + vi_max = 1. + vs_max = 2. + vg_max = 12. + vr_max = 12. + qi_lim = 1. + prog_ccn = .false. + do_qa = .false. + fast_sat_adj = .false. + tau_l2v = 225. + tau_v2l = 150. + tau_g2v = 900. + rthresh = 10.e-6 + dw_land = 0.16 + dw_ocean = 0.10 + ql_gen = 1.0e-3 + ql_mlt = 1.0e-3 + qi0_crt = 8.0E-5 + qs0_crt = 1.0e-3 + tau_i2s = 1000. + c_psaci = 0.05 + c_pgacs = 0.01 + rh_inc = 0.30 + rh_inr = 0.30 + rh_ins = 0.30 + ccn_l = 300. + ccn_o = 100. + c_paut = 0.5 + c_cracw = 0.8 + use_ppm = .false. + use_ccn = .true. + mono_prof = .true. + z_slope_liq = .true. + z_slope_ice = .true. + de_ice = .false. + fix_negative = .true. + icloud_f = 1 + mp_time = 150. +/ + +&cires_ugwp_nml + knob_ugwp_solver = 2 + knob_ugwp_source = 1,1,0,0 + knob_ugwp_wvspec = 1,25,25,25 + knob_ugwp_azdir = 2,4,4,4 + knob_ugwp_stoch = 0,0,0,0 + knob_ugwp_effac = 1,1,1,1 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_version = 0 + launch_level = 25 / \endcode diff --git a/physics/docs/pdftxt/all_shemes_list.txt b/physics/docs/pdftxt/all_shemes_list.txt index a729ac419..04cd0279d 100644 --- a/physics/docs/pdftxt/all_shemes_list.txt +++ b/physics/docs/pdftxt/all_shemes_list.txt @@ -13,7 +13,7 @@ parameterizations in suites. - \b PBL \b and \b Turbulence - \subpage GFS_HEDMF - - \subpage GFS_SATMEDMEFVDIFQ + - \subpage GFS_SATMEDMFVDIFQ - \subpage GSD_MYNNEDMF - \b Land \b Surface \b Model @@ -79,12 +79,12 @@ to the parameterization. \section allsuite_overview Physics Suites -The CCPP includes the suite used in the GFS v15.2 implemented operationally in Nov 2019 (suite GFS_v15.2) and a proposed version 16beta to be implemented operationally in 2021. +The CCPP includes the suite used in the GFS v15p2 implemented operationally in Nov 2019 (suite GFS_v15p2) and a proposed version 16beta to be implemented operationally in 2021. Additionally, it includes two developmental suites which are undergoing testing for possible future implementation in the UFS. Suite GFS_v16beta is identical to suite -GFS_v15.2 except for an update in the PBL parameterization (Han et al. 2019 \cite Han_2019 ) and \ref GFS_UGWPv0. Suite csawmg differs from GFS_v15 as it +GFS_v15p2 except for an update in the PBL parameterization (Han et al. 2019 \cite Han_2019 ) and \ref GFS_UGWPv0. Suite csawmg differs from GFS_v15p2 as it contains different convection and microphysics schemes made available through a NOAA Climate Process Team (CPT) with components developed -at multiple research centers and universities, including Colorado State, Utah, NASA, NCAR, and EMC. Suite GSD_v0 differs from GFS_v15.2 as it +at multiple research centers and universities, including Colorado State, Utah, NASA, NCAR, and EMC. Suite GSD_v0 differs from GFS_v15p2 as it uses the convection, microphysics, and boundary layer schemes employed in the Rapid Refresh (RAP) and High-Resolution Rapid Refresh (HRRR \cite Benjamin_2016 ) operational models and was assembled by NOAA/GSD. An assessment of an earlier version of these suites can be found in the UFS portal @@ -97,7 +97,7 @@ Table 1. Physics suite options included in this documentation. | Deep Cu | \ref GFS_SAMFdeep | \ref GFS_SAMFdeep | \ref CSAW_scheme | \ref GSD_CU_GF | | Shallow Cu | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref GSD_MYNNEDMF and \ref cu_gf_sh_group | | Microphysics | \ref GFDL_cloud | \ref GFDL_cloud | \ref CPT_MG3 | \ref GSD_THOMPSON | -| PBL/TURB | \ref GFS_HEDMF | \ref GFS_SATMEDMFQ | \ref GFS_HEDMF | \ref GSD_MYNNEDMF | +| PBL/TURB | \ref GFS_HEDMF | \ref GFS_SATMEDMFVDIFQ | \ref GFS_HEDMF | \ref GSD_MYNNEDMF | | Land | \ref GFS_NOAH | \ref GFS_NOAH | \ref GFS_NOAH | \ref GSD_RUCLSM | | Gravity Wave Drag| \ref GFS_UGWPv0 | \ref GFS_UGWPv0 | \ref GFS_UGWPv0 | \ref GFS_UGWPv0 | \tableofcontents diff --git a/physics/docs/pdftxt/mainpage.txt b/physics/docs/pdftxt/mainpage.txt index 3cb508003..ea2e78582 100644 --- a/physics/docs/pdftxt/mainpage.txt +++ b/physics/docs/pdftxt/mainpage.txt @@ -21,7 +21,7 @@ Finite-Volume Cubed-Sphere (FV3) dynamic core. In this website you will find documentation on various aspects of each parameterization, including a high-level overview of its function, the input/output argument list, and a description of the algorithm. -The latest CCPP public release is Version 3.X (Jan 2019), and more details on it may be found on the +The latest CCPP public release is Version 4.0 (Jan 2019), and more details on it may be found on the CCPP website hosted by the Global Model Test Bed (GMTB) of the Developmental Testbed Center (DTC). From 2308ad896d079422c12c50c9af3f1bf7939765a1 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Thu, 26 Dec 2019 15:31:54 -0700 Subject: [PATCH 04/11] Update version number to 4.0.0 and update list of authors --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b8d3c3e18..97879d98d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,11 +12,11 @@ set(CMAKE_MACOSX_RPATH 1) if(POLICY CMP0048) cmake_policy(SET CMP0048 NEW) - project(ccppphys VERSION 3.0.0) + project(ccppphys VERSION 4.0.0) else(POLICY CMP0048) project(ccppphys) - set(PROJECT_VERSION 3.0.0) - set(PROJECT_VERSION_MAJOR 3) + set(PROJECT_VERSION 4.0.0) + set(PROJECT_VERSION_MAJOR 4) set(PROJECT_VERSION_MINOR 0) set(PROJECT_VERSION_PATCH 0) endif(POLICY CMP0048) @@ -27,7 +27,7 @@ endif(POLICY CMP0042) #------------------------------------------------------------------------------ set(PACKAGE "ccpp-physics") -set(AUTHORS "Grant J. Firl" "Dom Heinzeller") +set(AUTHORS "Grant J. Firl" "Dom Heinzeller" "Laurie Carson" "Ligia Bernardet" "Man Zhang") #------------------------------------------------------------------------------ # Enable Fortran From c2235b2089f056b535e70b2197898123f5378917 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Fri, 27 Dec 2019 20:53:40 -0700 Subject: [PATCH 05/11] doc updates --- physics/docs/ccpp_dox_layout.xml | 2 +- physics/docs/pdftxt/GFSv15p2_suite.txt | 15 +++++++-------- physics/docs/pdftxt/GFSv16beta_suite.txt | 6 +++--- physics/docs/pdftxt/GSD_adv_suite.txt | 3 +-- physics/docs/pdftxt/suite_input.nml.txt | 11 +++++------ 5 files changed, 17 insertions(+), 20 deletions(-) diff --git a/physics/docs/ccpp_dox_layout.xml b/physics/docs/ccpp_dox_layout.xml index a618eeacb..ceac40434 100644 --- a/physics/docs/ccpp_dox_layout.xml +++ b/physics/docs/ccpp_dox_layout.xml @@ -4,7 +4,7 @@ - + diff --git a/physics/docs/pdftxt/GFSv15p2_suite.txt b/physics/docs/pdftxt/GFSv15p2_suite.txt index 251322aec..a543d0b61 100644 --- a/physics/docs/pdftxt/GFSv15p2_suite.txt +++ b/physics/docs/pdftxt/GFSv15p2_suite.txt @@ -3,38 +3,37 @@ \section gfs1_suite_overview Overview -Version 15.2.0 of the Global Forecast System (GFS) was implemented operationally by the NOAA +Version 15p2 of the Global Forecast System (GFS) was implemented operationally by the NOAA National Centers for Environmental Prediction (NCEP) on November 7, 2019, begining with the 1200 Coordinated Universal Time (UTC) run. -GFS version 15.1.0 was implemented into operations at the 12Z cycle on June 12, 2019. It was the +GFS version 15p1 was implemented into operations at the 12Z cycle on June 12, 2019. It was the first GFS implementation with the finite-volume cubed-sphere (FV3) dynamical core as the the NWS's -Next Generation Global Prediction System (NGGPS) +Next Generation Global Prediction System (NGGPS). -The GFS v15.2.0 physics suite uses the parameterizations in the following order: +The GFS v15p2 physics suite uses the parameterizations in the following order: - \ref GFS_RRTMG - \ref GFS_SFCLYR - \ref GFS_NSST - \ref GFS_NOAH - \ref GFS_SFCSICE - \ref GFS_HEDMF - - \ref GFS_GWDPS + - \ref GFS_UGWPv0 - \ref GFS_RAYLEIGH - \ref GFS_OZPHYS - \ref GFS_H2OPHYS - \ref GFS_SAMFdeep - - \ref GFS_GWDC - \ref GFS_SAMFshal - \ref GFDL_cloud - \ref GFS_CALPRECIPTYPE \section sdf_gfsv15p2 Suite Definition File -The GFS v15.2.0 suite uses the parameterizations in the following order, as defined in \c FV3_GFS_v15: +The GFS v15p2 suite uses the parameterizations in the following order, as defined in \c FV3_GFS_v15: \code - + diff --git a/physics/docs/pdftxt/GFSv16beta_suite.txt b/physics/docs/pdftxt/GFSv16beta_suite.txt index 285457b40..fcd11e7ac 100644 --- a/physics/docs/pdftxt/GFSv16beta_suite.txt +++ b/physics/docs/pdftxt/GFSv16beta_suite.txt @@ -19,7 +19,7 @@ The GFS v16beta physics suite uses the parameterizations in the following order: - \ref GFS_NSST - \ref GFS_NOAH - \ref GFS_SFCSICE - - \ref GFS_GFS_SATMEDMFVDIFQ + - \ref GFS_SATMEDMFVDIFQ - \ref GFS_UGWPv0 - \ref GFS_RAYLEIGH - \ref GFS_OZPHYS @@ -29,9 +29,9 @@ The GFS v16beta physics suite uses the parameterizations in the following order: - \ref GFDL_cloud - \ref GFS_CALPRECIPTYPE -\section sdf_gfsv15 Suite Definition File +\section sdf_gfsv16b Suite Definition File -The GFS v15 suite uses the parameterizations in the following order, as defined in \c SCM_GFS_v15: +The GFS v16beta suite uses the parameterizations in the following order, as defined in \c FV3_GFS_v16beta: \code diff --git a/physics/docs/pdftxt/GSD_adv_suite.txt b/physics/docs/pdftxt/GSD_adv_suite.txt index 08c6b19df..5d4bfc0de 100644 --- a/physics/docs/pdftxt/GSD_adv_suite.txt +++ b/physics/docs/pdftxt/GSD_adv_suite.txt @@ -24,14 +24,13 @@ The advanced GSD RAP/HRRR physics suite uses the parameterizations in the follow - \ref GFS_NSST - \ref GSD_RUCLSM - \ref GSD_MYNNEDMF - - \ref GFS_GWDPS + - \ref GFS_UGWPv0 - \ref GFS_RAYLEIGH - \ref GFS_OZPHYS - \ref GFS_H2OPHYS - \ref GSD_CU_GF - \ref cu_gf_deep_group - \ref cu_gf_sh_group - - \ref GFS_GWDC - \ref GSD_THOMPSON - \ref GFS_CALPRECIPTYPE diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index 0fdce4d31..95ca14956 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -201,6 +201,7 @@ and how stochastic perturbations are used in the Noah Land Surface Model. 1 imfdeepcnv gfs_control_type flag for mass-flux deep convective scheme:\n
      +
    • -1: Chikira-Sugiyama deep convection (with \b cscnv = .T.)
    • 1: July 2010 version of SAS convective scheme (operational version as of 2016)
    • 2: scale- & aerosol-aware mass-flux deep convective scheme (2017)
    • 3: scale- & aerosol-aware Grell-Freitas scheme (GSD) @@ -219,8 +220,7 @@ and how stochastic perturbations are used in the Noah Land Surface Model. prslrd0 gfs_control_type pressure level above which to apply Rayleigh damping 0.0d0 lsm gfs_control_type flag for land surface model to use \n
        -
      • 0: OSU LSM -
      • 1: NOAH LSM +
      • 1: Noah LSM
      • 2: RUC LSM
      1 @@ -363,7 +363,9 @@ and how stochastic perturbations are used in the Noah Land Surface Model.
    1 lsoil_lsm gfs_control_type number of soil layers internal to land surface model -1 -\b Stochastic \b Physics \b Specific \b Parameters +ldiag_ugwp GFS_control_type flag for CIRES UGWP diagnostics .false. +do_ugwp GFS_control_type flag for CIRES Unified Gravity Wave Drag Parameterization .false. +do_tofd GFS_control_type flag for turbulent orographic form drag .false. do_sppt gfs_control_type flag for stochastic SPPT option .false. do_shum gfs_control_type flag for stochastic SHUM option .false. do_skeb gfs_control_type flag for stochastic SKEB option .false. @@ -511,8 +513,5 @@ and how stochastic perturbations are used in the Noah Land Surface Model. launch_level cires_ugwp_module parameter has been introduced by EMC during implementation. It defines the interface model level from the surface at which NGWs are launched. \n Default value for FV3GFS-64L, launch_level=25 and for FV3GFS-128L, launch_level=52. 55 -ldiag_ugwp GFS_control_type flag for CIRES UGWP diagnostics .false. -do_ugwp GFS_control_type flag for CIRES Unified Gravity Wave Drag Parameterization .false. -do_tofd GFS_control_type flag for turbulent orographic form drag .false. */ From 83ce6b579254555911442ce208e65026f92a64fc Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Thu, 2 Jan 2020 15:37:44 -0700 Subject: [PATCH 06/11] doc updates --- physics/GFS_GWD_generic.F90 | 2 +- physics/GFS_rad_time_vary.fv3.F90 | 2 +- physics/GFS_rrtmg_pre.F90 | 2 +- physics/GFS_rrtmg_setup.F90 | 6 +- physics/cires_ugwp.F90 | 73 ++++++++++++---- physics/cires_ugwp_triggers.F90 | 9 +- physics/docs/pdftxt/CPT_adv_suite.txt | 3 +- physics/docs/pdftxt/GFS_UGWPv0.txt | 110 ++++++++++++++++++++++-- physics/docs/pdftxt/GFSv15p2_suite.txt | 2 +- physics/docs/pdftxt/all_shemes_list.txt | 1 - physics/docs/pdftxt/suite_input.nml.txt | 9 +- physics/ugwp_driver_v0.F | 73 ++++++++++------ 12 files changed, 226 insertions(+), 66 deletions(-) diff --git a/physics/GFS_GWD_generic.F90 b/physics/GFS_GWD_generic.F90 index 0915dd170..006982476 100644 --- a/physics/GFS_GWD_generic.F90 +++ b/physics/GFS_GWD_generic.F90 @@ -1,4 +1,4 @@ -!> \file GFS_GWD_generic.f +!> \file GFS_GWD_generic.F90 !! This file contains the CCPP-compliant orographic gravity wave !! drag pre interstitial codes. diff --git a/physics/GFS_rad_time_vary.fv3.F90 b/physics/GFS_rad_time_vary.fv3.F90 index 9a4583dc4..1584051e1 100644 --- a/physics/GFS_rad_time_vary.fv3.F90 +++ b/physics/GFS_rad_time_vary.fv3.F90 @@ -1,4 +1,4 @@ -!>\file GFS_rad_time_vary.F90 +!>\file GFS_rad_time_vary.fv3.F90 !! Contains code related to GFS physics suite setup (radiation part of time_vary_step) module GFS_rad_time_vary diff --git a/physics/GFS_rrtmg_pre.F90 b/physics/GFS_rrtmg_pre.F90 index efe715168..ac20cfd3b 100644 --- a/physics/GFS_rrtmg_pre.F90 +++ b/physics/GFS_rrtmg_pre.F90 @@ -1,4 +1,4 @@ -!> \file GFS_rrtmg_pre.f90 +!> \file GFS_rrtmg_pre.F90 !! This file contains module GFS_rrtmg_pre diff --git a/physics/GFS_rrtmg_setup.F90 b/physics/GFS_rrtmg_setup.F90 index b6d86a34e..95d6806db 100644 --- a/physics/GFS_rrtmg_setup.F90 +++ b/physics/GFS_rrtmg_setup.F90 @@ -1,4 +1,4 @@ -!> \file GFS_rrtmg_setup.f90 +!> \file GFS_rrtmg_setup.F90 !! This file contains module GFS_rrtmg_setup @@ -646,9 +646,7 @@ end subroutine radinit !! \param slag equation of time in radians !! \param sdec,cdec sine and cosine of the solar declination angle !! \param solcon solar constant adjusted by sun-earth distance \f$(W/m^2)\f$ -!> \section gen_radupdate General Algorithm -!> @{ -!----------------------------------- +!! \section gen_radupdate General Algorithm subroutine radupdate( idate,jdate,deltsw,deltim,lsswr, me, & & slag,sdec,cdec,solcon) !................................... diff --git a/physics/cires_ugwp.F90 b/physics/cires_ugwp.F90 index e0abc58ff..0e8b8d145 100644 --- a/physics/cires_ugwp.F90 +++ b/physics/cires_ugwp.F90 @@ -31,12 +31,11 @@ module cires_ugwp ! ------------------------------------------------------------------------ ! CCPP entry points for CIRES Unified Gravity Wave Physics (UGWP) scheme v0 ! ------------------------------------------------------------------------ -!>@brief The subroutine initializes the CIRES UGWP +!>\ingroup cires_ugwp_run +!> The subroutine initializes the CIRES UGWP. !> \section arg_table_cires_ugwp_init Argument Table !! \htmlinclude cires_ugwp_init.html !! -! ----------------------------------------------------------------------- -! subroutine cires_ugwp_init (me, master, nlunit, input_nml_file, logunit, & fn_nml2, lonr, latr, levs, ak, bk, dtp, cdmbgwd, cgwf, & pa_rf_in, tau_rf_in, con_p0, do_ugwp, errmsg, errflg) @@ -101,7 +100,7 @@ end subroutine cires_ugwp_init ! finalize of cires_ugwp (_finalize) ! ----------------------------------------------------------------------- -!>@brief The subroutine finalizes the CIRES UGWP +!>\ The subroutine finalizes the CIRES UGWP #if 0 !> \section arg_table_cires_ugwp_finalize Argument Table !! \htmlinclude cires_ugwp_finalize.html @@ -135,18 +134,57 @@ end subroutine cires_ugwp_finalize ! ----------------------------------------------------------------------- ! order = dry-adj=>conv=mp-aero=>radiation -sfc/land- chem -> vertdiff-> [rf-gws]=> ion-re ! ----------------------------------------------------------------------- -!>@brief These subroutines and modules execute the CIRES UGWP Version 0 -!>\defgroup cires_ugwp_run Unified Gravity Wave Physics General Algorithm -!> @{ -!! The physics of NGWs in the UGWP framework (Yudin et al. 2018 \cite yudin_et_al_2018) is represented by four GW-solvers, which is introduced in Lindzen (1981) \cite lindzen_1981, Hines (1997) \cite hines_1997, Alexander and Dunkerton (1999) \cite alexander_and_dunkerton_1999, and Scinocca (2003) \cite scinocca_2003. 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 \cite shaw_and_shepherd_2009). In the UGWP-v0, the modification of Scinocca (2003) \cite scinocca_2003 scheme for NGWs with non-hydrostatic and rotational effects for GW propagations and background dissipation is represented by the subroutine \ref 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). +!>\defgroup cires_ugwp_run CIRES Unified Gravity Wave Physics Module +!! The physics of NGWs in the UGWP framework (Yudin et al. 2018 \cite yudin_et_al_2018) +!! is represented by four GW-solvers, which have been introduced in +!! Lindzen (1981) \cite lindzen_1981, Hines (1997) \cite hines_1997, +!! Alexander and Dunkerton (1999) \cite alexander_and_dunkerton_1999, +!! and Scinocca (2003) \cite scinocca_2003. These GW solvers have +!! been modified by considring the background dissipation of temperature +!! and winds. This feature, which is important in the mesosphere and +!! thermosphere for WAM applications, considers appropriate +!! scale-dependent dissipation of waves near the model top lid providing +!! momentum and energy conservation in the vertical column physics +!! (Shaw and Shepherd 2009 \cite shaw_and_shepherd_2009). In the UGWP-v0, +!! a modification of Scinocca (2003) \cite scinocca_2003 scheme for +!! NGWs with non-hydrostatic and rotational effects for GW propagations +!! and background 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 Goddard Earth Observing System Version 5 (GEOS-5) global atmosphere +!! model of the National Aeronautic and Space Administration (NASA) Goddard +!! Space Flight Center (GSFC) Global Modeling and Assimilation Office (GMAO), +!! as described in Molod et al. (2015) \cite molod_et_al_2015 and employed +!! in the Modern-Era Retrospective analysis for Research and Applications +!! (MERRA)-2 reanalysis (Gelaro et al., 2017 \cite gelaro_et_al_2017). +!! The Fortran subroutine slat_geos5_tamp() describes the latitudinal +!! shape of VMF-function as displayed in Figure 3 of Molod et al. +!! (2015) \cite molod_et_al_2015. 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. !! -!! 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) \cite molod_et_al_2015 and employed in the MERRRA-2 reanalysis (Gelaro et al., 2017 \cite gelaro_et_al_2017). The Fortran subroutine \ref slat_geos5_tamp describes the latitudinal shape of VMF-function as displayed in Figure 3 of Molod et al. (2015) \cite molod_et_al_2015. 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. +!! The UGWP-v0 code has been enhanced by scientists from NOAA's EMC to +!! modulate the zonal mean NGW forcing by three-dimensional distributions +!! of the total precipitation (as a proxy for the excitation of NGWs by +!! convection) and vertically-integrated (surface-tropopause) turbulent +!! kinetic energy. The vertically extented configuration of the UFS +!! weather model is being tuned using reanalysis products from MERRA-2 and +!! the European Centre for Medium-Range Weather Forecasts (ERA-5), ALONG +!! with temperature, ozone, and water vapor observations of middle +!! atmosphere satellite missions. The verification scores with updated +!! NGW forcing, as reported elsewhere by EMC researchers, display noticeable +!! improvements into the mesosphere. !! !> \section arg_table_cires_ugwp_run Argument Table !! \htmlinclude cires_ugwp_run.html -!! - -! subroutines original +!>\section gen_cires_ugwp_run General Algorithm subroutine 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, & @@ -215,9 +253,8 @@ subroutine cires_ugwp_run(do_ugwp, me, master, im, levs, ntrac, dtp, kdt, lonr errmsg = '' errflg = 0 - ! 1) ORO stationary GWs - ! ------------------ - ! wrap everything in a do_ugwp 'if test' in order not to break the namelist functionality + !> -# ORO stationary GWs + !! - wrap everything in a do_ugwp 'if test' in order not to break the namelist functionality if (do_ugwp) then ! calling revised old GFS gravity wave drag ! topo paras @@ -271,7 +308,7 @@ subroutine cires_ugwp_run(do_ugwp, me, master, im, levs, ntrac, dtp, kdt, lonr if (cdmbgwd(3) > 0.0) then - ! 2) non-stationary GW-scheme with GMAO/MERRA GW-forcing + !> -# Call slat_geos5_tamp(), non-stationary GW-scheme with GMAO/MERRA GW-forcing call slat_geos5_tamp(im, tamp_mpa, xlat_d, tau_ngw) if (abs(1.0-cdmbgwd(3)) > 1.0e-6) then @@ -309,6 +346,10 @@ subroutine cires_ugwp_run(do_ugwp, me, master, im, levs, ntrac, dtp, kdt, lonr enddo endif + !> - Call fv3_ugwp_solv2_v0(), which is the modification + !! of Scinocca (2003) \cite scinocca_2003 scheme for + !! NGWs with non-hydrostatic and rotational effects for GW propagations + !! and background dissipation. call fv3_ugwp_solv2_v0(im, levs, dtp, tgrs, ugrs, vgrs,qgrs(:,:,1), & prsl, prsi, phil, xlat_d, sinlat, coslat, gw_dudt, gw_dvdt, gw_dtdt, gw_kdis, & tau_ngw, me, master, kdt) diff --git a/physics/cires_ugwp_triggers.F90 b/physics/cires_ugwp_triggers.F90 index c345a8e85..407115e51 100644 --- a/physics/cires_ugwp_triggers.F90 +++ b/physics/cires_ugwp_triggers.F90 @@ -464,9 +464,12 @@ end subroutine get_spectra_tau_okw ! ! !>\ingroup cires_ugwp_run -!> @{ -!! -!! +!! This subroutine describes the latitudinal shape of the VMF-function +!! as displayed in Figure 3 of Molod et al. (2015). The enhanced values +!! of VMF in the equatorial region result in QBO-like oscillations +!! in the equatorial zonal winds and more realistic simulations of +!! the equatorial dynamics in the GEOS-5 operational and MERRA-2 +!! reanalysis products. subroutine slat_geos5_tamp(im, tau_amp, xlatdeg, tau_gw) !================= ! GEOS-5 & MERRA-2 lat-dependent GW-source function tau(z=Zlaunch) =rho* diff --git a/physics/docs/pdftxt/CPT_adv_suite.txt b/physics/docs/pdftxt/CPT_adv_suite.txt index 7ced98f3b..1788af919 100644 --- a/physics/docs/pdftxt/CPT_adv_suite.txt +++ b/physics/docs/pdftxt/CPT_adv_suite.txt @@ -10,12 +10,11 @@ The advanced csawmg physics suite uses the parameterizations in the following or - \ref GFS_NOAH - \ref GFS_SFCSICE - \ref GFS_HEDMF - - \ref GFS_GWDPS + - \ref GFS_UGWPv0 - \ref GFS_RAYLEIGH - \ref GFS_OZPHYS - \ref GFS_H2OPHYS - \ref CSAW_scheme - - \ref GFS_GWDC - \ref GFS_SAMFshal - \ref CPT_MG3 - \ref mod_cs_conv_aw_adj diff --git a/physics/docs/pdftxt/GFS_UGWPv0.txt b/physics/docs/pdftxt/GFS_UGWPv0.txt index f64472f21..d8983ce48 100644 --- a/physics/docs/pdftxt/GFS_UGWPv0.txt +++ b/physics/docs/pdftxt/GFS_UGWPv0.txt @@ -1,16 +1,112 @@ /** -\page GFS_UGWPv0 GFS Unified Gravity Wave Physics Version 0 +\page GFS_UGWPv0 CIRES Unified Gravity Wave Physics Version 0 \section des_UGWP Description - -Gravity waves (GWs) are generated by a variety of sources in the atmosphere including orographic GWs (OGWs; quasi-stationary waves) and non-orographic GWs (NGWs; non-stationary oscillations). The subgrid scale parameterization scheme for OGWs can be found in Section \ref GFS_GWDPS. This scheme represents the operational version of the subgrid scale orography effects in Version 15 of Global Forecast System (GFS). -The NGW physics scheme parameterizes the effects of non-stationary subgrid-scale waves in the global atmosphere models extended into the stratosphere, mesosphere, and thermosphere. These non-stationary oscillations with periods bounded by Coriolis and Brunt-Väisälä frequencies and typical horizontal scales from tens to several hundreds of kilometers are forced by the imbalance of convective and frontal/jet dynamics in the troposphere and lower stratosphere (Fritts 1984 \cite fritts_1984; Alexander et al. 2010 \cite alexander_et_al_2010; Plougonven and Zhang 2014 \cite plougonven_and_zhang_2014). The NGWs propagate upwards and the amplitudes exponentially grow with altitude until instability and breaking of waves occur. Convective and dynamical instability induced by GWs with large amplitudes can trigger production of small-scale turbulence and self-destruction of waves. The latter process in the theory of atmospheric GWs is frequently referred as the wave saturation (Lindzen 1981 \cite lindzen_1981; Weinstock 1984 \cite weinstock_1984; Fritts 1984 \cite fritts_1984). Herein, “saturation” or "breaking" refers to any processes that act to reduce wave amplitudes due to instabilities and/or interactions arising from large-amplitude perturbations limiting the exponential growth of GWs with height. Background dissipation processes such as molecular diffusion and radiative cooling, in contrast, act independently of GW amplitudes. In the middle atmosphere, impacts of NGW saturation (or breaking) and dissipation on the large-scale circulation, mixing, and transport have been acknowledged in the physics of global weather and climate models after pioneering studies by Lindzen 1981 \cite lindzen_1981 and Holton 1983 \cite holton_1983. Comprehensive reviews on the physics of NGWs and OGWs in the climate research and weather forecasting highlighted the variety of parameterization schemes for NGWs (Alexander et al. 2010 \cite alexander_et_al_2010; Geller et al. 2013 \cite geller_et_al_2013; Garcia et al. 2017 \cite garcia_et_al_2017). They are formulated using different aspects of the nonlinear and linear propagation, instability, breaking and dissipation of waves along with different specifications of GW sources (Garcia et al. 2007 \cite garcia_et_al_2007; Richter et al 2010 \cite richter_et_al_2010; Eckermann et al. 2009 \cite eckermann_et_al_2009; Eckermann 2011 \cite eckermann_2011; Lott et al. 2012 \cite lott_et_al_2012). +Gravity waves (GWs) are generated by a variety of sources in the atmosphere +including orographic GWs (OGWs; quasi-stationary waves) and non-orographic +GWs (NGWs; non-stationary oscillations). When the Version 0 of the Unified +Gravity Wave Physics (UGWP v0) is invoked, the subgrid OGWs and NGWs are +parameterized. For the subgrid-scale parameterization of OGWs, the UGWP +invokes a seperate scheme, the \ref GFS_GWDPS, which is used in the operational +Global Forecast System (GFS) version 15. -The current operational GFS physics parameterizes effects of stationary OGWs and convective GWs, neglecting the impacts of non-stationary subgrid scale GW physics. This leads to well-known shortcomings in the global model predictions in the stratosphere and upper atmosphere (Alexander et al. 2010 \cite alexander_et_al_2010; Geller et al. 2013). In order to describe the effects of unresolved GWs by dynamical cores in global forecast models, subgrid scales physics of stationary and non-stationary GWs needs to be implemented in the self-consistent manner under the Unified Gravity Wave Physics (UGWP) framework. +The NGW physics scheme parameterizes the effects of non-stationary waves +unresolved by dynamical cores. These non-stationary oscillations with periods +bounded by Coriolis and Brunt-Väisälä frequencies and typical horizontal +scales from tens to several hundreds of kilometers, are forced by the +imbalance of convective and frontal/jet dynamics in the troposphere and +lower stratosphere (Fritts 1984 \cite fritts_1984; Alexander et al. +2010 \cite alexander_et_al_2010; Plougonven and Zhang 2014 \cite plougonven_and_zhang_2014). +The NGWs propagate upwards and the amplitudes exponentially grow with +altitude until instability and breaking of waves occur. Convective and +dynamical instability induced by GWs with large amplitudes can trigger +production of small-scale turbulence and self-destruction of waves. +The latter process in the theory of atmospheric GWs is frequently referred +as the wave saturation (Lindzen 1981 \cite lindzen_1981; Weinstock +1984 \cite weinstock_1984; Fritts 1984 \cite fritts_1984). Herein, +“saturation” or "breaking" refers to any processes that act to reduce +wave amplitudes due to instabilities and/or interactions arising from +large-amplitude perturbations limiting the exponential growth of GWs +with height. Background dissipation processes such as molecular diffusion +and radiative cooling, in contrast, act independently of GW amplitudes. +In the middle atmosphere, impacts of NGW saturation (or breaking) and +dissipation on the large-scale circulation, mixing, and transport have +been acknowledged in the physics of global weather and climate models +after pioneering studies by Lindzen 1981 \cite lindzen_1981 and Holton +1983 \cite holton_1983. Comprehensive reviews on the physics of NGWs +and OGWs in climate and weather models have been discussted in Alexander +et al. 2010 \cite alexander_et_al_2010, Geller et al. +2013 \cite geller_et_al_2013, and Garcia et al. 2017 \cite garcia_et_al_2017. +They are formulated using different aspects of the nonlinear and linear +propagation, instability, breaking and dissipation of waves along with +different specifications of GW sources (Garcia et al. 2007 \cite garcia_et_al_2007; +Richter et al 2010 \cite richter_et_al_2010; Eckermann et al. +2009 \cite eckermann_et_al_2009; Eckermann 2011 \cite eckermann_2011; +Lott et al. 2012 \cite lott_et_al_2012). -The concept of UGWP and the related programming architecture implemented in FV3GFS was first proposed by CU-CIRES, NOAA Space Weather Prediction Center (SWPC) and Environmental Modeling Center (EMC) for the Unified Forecast System (UFS) with variable positions of the model top lids (Alpert et al. 2019 \cite alpert_et_al_2019; Yudin et al. 2016 \cite yudin_et_al_2016; Yudin et al. 2018 \cite yudin_et_al_2018). As above, the UGWP considers identical GW propagation solvers for OGWs and NGWs with different approaches for specification of subgrid wave sources. The current set of the input and control parameters for UGWP version 0 (UGWP-v0) can select different options for GW effects including momentum deposition (also called GW drag), heat deposition, and mixing by eddy viscosity, conductivity and diffusion. The input GW parameters can control the number of directional azimuths in which waves can propagate, number of waves in single direction, and the interface model layer from the surface at which NGWs can be launched. Among the input parameters, the GW efficiency factors reflect intermittency of wave excitation. They can vary with horizontal resolutions, reflecting capability of the FV3 dynamical core to resolve mesoscale wave activity with the enhancement of model resolution. The prescribed distributions for vertical momentum flux (VMF) of NGWs have been employed in the global forecast models of NWP centers and reanalysis projects to ease tuning of GW schemes to the climatology of the middle atmosphere dynamics in the absence of the global wind data above about 35 km (Eckermann et al. 2009 \cite eckermann_et_al_2009; Molod et al. 2015 \cite molod_et_al_2015). These distributions of VMF qualitatively describe the general features of the latitudinal and seasonal variations of the global GW activity in the lower stratosphere, observed from the ground and space (Ern et al. 2018 \cite ern_et_al_2018). For the long-term climate projections, global models seek to establish communication between model physics and dynamics. This provides variable in time and space excitation of subgrid GWs under year-to-year variations of solar input and anthropogenic emissions (Richter et al 2010 \cite richter_et_al_2010; 2014 \cite richter_et_al_2014). +Several studies have demonstrated the importance of NGW physics to improve +model predictions in the stratosphere and upper atmosphere (Alexander et al. + 2010 \cite alexander_et_al_2010; Geller et al. 2013). In order to describe +the effects of unresolved GWs in global forecast models, the representation of +subgrid OGWs and NGWs has been implemented in the self-consistent manner using the +UGWP framework. -Note that in the first release of UGWP (UGWP-v0), the momentum and heat deposition due to GW breaking and dissipation have been tested in the multi-year simulations and medium-range forecasts using FV3GFS-L127 configuration with top lid at about 80 km. In addition, the eddy mixing effects induced by instability of GWs are not activated in this version. Along with the GW heat and momentum depositions, GW eddy mixing is an important element of the Whole Atmosphere Model (WAM) physics, as shown in WAM simulations with the spectral dynamics (Yudin et al. 2018 \cite yudin_et_al_2018). The additional impact of eddy mixing effects in the middle and upper atmosphere need to be further tested, evaluated, and orchestrated with the subgrid turbulent diffusion of the GFS physics (work in progress). In UFS, the WAM with FV3 dynamics (FV3-WAM) will represent the global atmosphere model configuration extended into the thermosphere (top lid at ~600 km). In the mesosphere and thermosphere, the background attenuation of subgrid waves due to molecular and turbulent diffusion, radiative damping and ion drag will be the additional mechanism of NGW and OGW dissipation along with convective and dynamical instability of waves described by the linear (Lindzen 1981 \cite lindzen_1981) and nonlinear (Weinstock 1984 \cite weinstock_1984; Hines 1997 \cite hines_1997) saturation theories. +The concept of UGWP was first proposed and implemented in the Unified +Forecast System (UFS)with model top at different levels by scientists from +the University of Colorado Cooperative Institute for Research in the +Environmental Sciences (CIRES) at NOAA's Space Weather Prediction Center (SWPC) +and from NOAA's Environmental Modeling Center (EMC) (Alpert et al. +2019 \cite alpert_et_al_2019; Yudin et al. 2016 \cite yudin_et_al_2016; +Yudin et al. 2018 \cite yudin_et_al_2018). The UGWP considers identical +GW propagation solvers for OGWs and NGWs with different approaches for +specification of subgrid wave sources. The current set of the input and +control paramters for UGWP version 0 (UGWP-v0) enables options for GW +effects, including momentum deposition (also called GW drag), heat +deposition, and mixing by eddy viscosity, conductivity and diffusion; +however, note that the eddy mixing effects induced by instability of GWs +are not activated in this version. + +Namelist paramters control the number of directional azimuths in which +waves can propagate, number of waves in a single direction, and the level +above the surface at which NGWs can be launched. Among the input parameters, +the GW efficiency factors reflect intermittency of wave excitation. +They should vary with horizontal resolution, reflecting the capability of +the dynamical core to resolve mesoscale wave activity with the enhancement +of model resolution. + +Prescribed distributions for vertical momentum flux (VMF) of NGWs have been employed +in global numerical weather prediction and reanalysis models to ease tuning of GW +schemes to the climatology of the middle atmosphere dynamics in the absence of +the global wind data above about 35 km (Eckermann et al. 2009 \cite eckermann_et_al_2009; +Molod et al. 2015 \cite molod_et_al_2015). These distributions of VMF +qualitatively describe the general features of the latitudinal and seasonal + variations of the global GW activity in the lower stratosphere, observed from the +ground and space (Ern et al. 2018 \cite ern_et_al_2018). Subgrid GW sources can also be +parameterized to respond to year-to-year variations of solar input and +anthropogenic emissions (Richter et al 2010 \cite richter_et_al_2010; +2014 \cite richter_et_al_2014). + +Note that in UGWP-v0, the momentum and heat deposition due to GW breaking +and dissipation have been tested in the multi-year simulations and +medium-range forecasts using a configuration of the UFS weather model +using 127 levels with model top at approximately 80 km. + +Along with the GW heat and momentum depositions, GW eddy mixing is an +important element of the Whole Atmosphere Model (WAM) physics, as shown +in WAM simulations with the spectral dynamics (Yudin et al. 2018 \cite yudin_et_al_2018). +The impact of eddy mixing effects in the middle and upper atmosphere, +which is not included in this version, need to be tested, evaluated, and +orchestrated with the representation of the subgrid turbulent diffusion and +the numerical dissipation. + +The representation of subgrid GWs is particularly important for WAMs that +extend into the thermosphere (top lid at ~600 km). In the mesosphere and +thermosphere, the background attenuation of subgrid waves due to molecular +and turbulent diffusion, radiative damping and ion drag will be the +additional mechanism of NGW and OGW dissipation along with convective +and dynamical instability of waves described by the linear +(Lindzen 1981 \cite lindzen_1981) and nonlinear +(Weinstock 1984 \cite weinstock_1984; Hines 1997 \cite hines_1997) saturation theories. \section intra_UGWPv0 Intraphysics Communication \ref arg_table_cires_ugwp_run diff --git a/physics/docs/pdftxt/GFSv15p2_suite.txt b/physics/docs/pdftxt/GFSv15p2_suite.txt index a543d0b61..0e02d414a 100644 --- a/physics/docs/pdftxt/GFSv15p2_suite.txt +++ b/physics/docs/pdftxt/GFSv15p2_suite.txt @@ -29,7 +29,7 @@ The GFS v15p2 physics suite uses the parameterizations in the following order: \section sdf_gfsv15p2 Suite Definition File -The GFS v15p2 suite uses the parameterizations in the following order, as defined in \c FV3_GFS_v15: +The GFS v15p2 suite uses the parameterizations in the following order, as defined in \c FV3_GFS_v15p2: \code diff --git a/physics/docs/pdftxt/all_shemes_list.txt b/physics/docs/pdftxt/all_shemes_list.txt index 04cd0279d..ceccd2546 100644 --- a/physics/docs/pdftxt/all_shemes_list.txt +++ b/physics/docs/pdftxt/all_shemes_list.txt @@ -19,7 +19,6 @@ parameterizations in suites. - \b Land \b Surface \b Model - \subpage GFS_NOAH - \subpage GSD_RUCLSM - - \subpage NoahMP - \b Cumulus \b Parameterizations - \subpage GFS_SAMF diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index 95ca14956..b22ec82d1 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -167,7 +167,7 @@ and how stochastic perturbations are used in the Noah Land Surface Model. 0 lwhtr gfs_control_type logical flag for output of longwave heating rate .true. swhtr gfs_control_type logical flag for output of shortwave heating rate .true. -cnvgwd gfs_control_type logical flag for convective gravity wave drag scheme .false. +cnvgwd gfs_control_type logical flag for convective gravity wave drag scheme dependent on maxval(cdmbgwd(3:4) == 0.0) .false. shal_cnv gfs_control_type logical flag for calling shallow convection .false. lmfshal gfs_control_type flag for mass-flux shallow convection scheme in the cloud fraction calculation shal_cnv .and. (imfshalcnv > 0) lmfdeep2 gfs_control_type flag for mass-flux deep convection scheme in the cloud fraction calculation imfdeepcnv == 2 .or. 3 .or.4 @@ -364,7 +364,12 @@ and how stochastic perturbations are used in the Noah Land Surface Model. 1 lsoil_lsm gfs_control_type number of soil layers internal to land surface model -1 ldiag_ugwp GFS_control_type flag for CIRES UGWP diagnostics .false. -do_ugwp GFS_control_type flag for CIRES Unified Gravity Wave Drag Parameterization .false. +do_ugwp GFS_control_type flag for CIRES UGWP revised OGW +
      +
    • .T.: revised gwdps_v0 +
    • .F.: GFS operational orographic gwdps +
    + .false. do_tofd GFS_control_type flag for turbulent orographic form drag .false. do_sppt gfs_control_type flag for stochastic SPPT option .false. do_shum gfs_control_type flag for stochastic SHUM option .false. diff --git a/physics/ugwp_driver_v0.F b/physics/ugwp_driver_v0.F index 52e545af4..b178ccea7 100644 --- a/physics/ugwp_driver_v0.F +++ b/physics/ugwp_driver_v0.F @@ -262,22 +262,39 @@ end subroutine cires_ugwp_driver_v0 !===================================================================== !>\ingroup cires_ugwp_run !> @{ -!!Note for the sub-grid scale orography scheme in UGWP-v0: Due to degraded forecast scores of simulations with revised schemes for subgrid-scale orography effects in FV3GFS, EMC reinstalled the original gwdps-code with updated efficiency factors for the mountain blocking and OGW drag. The GFS OGW is described in the separate section (\ref GFS_GWDPS) and its “call” moved into UGWP-driver subroutine. This combination of NGW and OGW schemes was tested in the FV3GFS-L127 medium-range forecasts (15-30 days) for C96, C192, C384 and C768 resolutions and work in progress to introduce the optimal choice for the scale-aware representations of the efficiency factors that will reflect the better simulations of GW activity by FV3 dynamical core at higher horizontal resolutions. With the MERRA-2 VMF function for NGWs (\ref slat_geos5_tamp) and operational OGW drag scheme (\ref GFS_GWDPS), FV3GFS simulations can successfully forecast the recent major mid-winter sudden stratospheric warming (SSW) events of 2018-02-12 and 2018-12-31 (10-14 days before the SSW onset; Yudin et al. 2019 \cite yudin_et_al_2019). The first multi-year (2015-2018) FV3GFS simulations with UGWP-v0 also produce the equatorial QBO-like oscillations in the zonal wind and temperature anomalies. +!!Note for the sub-grid scale orography scheme in UGWP-v0: Due to +!! degraded forecast scores of simulations with revised schemes for +!! subgrid-scale orography effects in FV3GFS, EMC reinstalled the +!! original gwdps-code with updated efficiency factors for the mountain +!! blocking and OGW drag. The GFS OGW is described in the separate section +!! (\ref gfs_gwdps) and its “call” moved into UGWP-driver subroutine. +!! This combination of NGW and OGW schemes was tested in the FV3GFS-L127 +!! medium-range forecasts (15-30 days) for C96, C192, C384 and C768 +!! resolutions and work in progress to introduce the optimal choice for +!! the scale-aware representations of the efficiency factors that will +!! reflect the better simulations of GW activity by FV3 dynamical core +!! at higher horizontal resolutions. With the MERRA-2 VMF function for +!! NGWs (\ref slat_geos5_tamp) and operational OGW drag scheme +!! (\ref GFS_GWDPS), FV3GFS simulations can successfully forecast the +!! recent major mid-winter sudden stratospheric warming (SSW) events +!! of 2018-02-12 and 2018-12-31 (10-14 days before the SSW onset; +!! Yudin et al. 2019 \cite yudin_et_al_2019). The first multi-year +!! (2015-2018) FV3GFS simulations with UGWP-v0 also produce the equatorial +!! QBO-like oscillations in the zonal wind and temperature anomalies. !! - SUBROUTINE GWDPS_V0(IM, km, imx, do_tofd, - & Pdvdt, Pdudt, Pdtdt, Pkdis, U1,V1,T1,Q1,KPBL, - & PRSI,DEL,PRSL,PRSLK,PHII, PHIL,DTP,KDT, - & sgh30, HPRIME,OC,OA4,CLX4,THETA,vSIGMA,vGAMMA,ELVMAXD, - & DUSFC, DVSFC, xlatd, sinlat, coslat, sparea, - $ cdmbgwd, me, master, rdxzb, - & zmtb, zogw, tau_mtb, tau_ogw, tau_tofd, +!> modified/revised version of gwdps.f with bug fixes, tofd, appropriate +!! computation of kref for OGW + COORDE diagnostics. all constants/ +!! parameters inside cires_ugwp_initialize.F90. + SUBROUTINE GWDPS_V0(IM, km, imx, do_tofd, & + & Pdvdt, Pdudt, Pdtdt, Pkdis, U1,V1,T1,Q1,KPBL, & + & PRSI,DEL,PRSL,PRSLK,PHII, PHIL,DTP,KDT, & + & sgh30, HPRIME,OC,OA4,CLX4,THETA,vSIGMA,vGAMMA,ELVMAXD, & + & DUSFC, DVSFC, xlatd, sinlat, coslat, sparea, & + $ cdmbgwd, me, master, rdxzb, & + & zmtb, zogw, tau_mtb, tau_ogw, tau_tofd, & & dudt_mtb, dudt_ogw, dudt_tms) !---------------------------------------- ! ugwp_v0 -! -! modified/revised version of gwdps.f (with bug fixes, tofd, appropriate -! computation of kref for OGW + COORDE diagnostics -! all constants/parameters inside cires_ugwp_initialize.F90 !---------------------------------------- USE MACHINE , ONLY : kind_phys @@ -1257,10 +1274,10 @@ end subroutine gwdps_v0 !>\ingroup cires_ugwp_run !> @{ !! - subroutine fv3_ugwp_solv2_v0(klon, klev, dtime, - & tm1 , um1, vm1, qm1, - & prsl, prsi, philg, xlatd, sinlat, coslat, - & pdudt, pdvdt, pdtdt, dked, tau_ngw, + subroutine fv3_ugwp_solv2_v0(klon, klev, dtime, & + & tm1 , um1, vm1, qm1, & + & prsl, prsi, philg, xlatd, sinlat, coslat, & + & pdudt, pdvdt, pdtdt, dked, tau_ngw, & & mpi_id, master, kdt) ! @@ -1851,17 +1868,15 @@ subroutine fv3_ugwp_solv2_v0(klon, klev, dtime, return end subroutine fv3_ugwp_solv2_v0 -!------------------------------------------------------------------------------- -! -! Part-3 of UGWP-V01 Dissipative (eddy) effects of UGWP it will be activated -! after tests of OGW (new revision) and NGW with MERRA-2 forcing. -! -!------------------------------------------------------------------------------- - subroutine edmix_ugwp_v0(im, levs, dtp, - & t1, u1, v1, q1, del, - & prsl, prsi, phil, prslk, - & pdudt, pdvdt, pdTdt, pkdis, - & ed_dudt, ed_dvdt, ed_dTdt, + +!>\ingroup cires_ugwp_run +!! Part-3 of UGWP-V01 Dissipative (eddy) effects of UGWP it will be activated +!! after tests of OGW (new revision) and NGW with MERRA-2 forcing. + subroutine edmix_ugwp_v0(im, levs, dtp, & + & t1, u1, v1, q1, del, & + & prsl, prsi, phil, prslk, & + & pdudt, pdvdt, pdTdt, pkdis, & + & ed_dudt, ed_dvdt, ed_dTdt, & & me, master, kdt ) ! use machine, only : kind_phys @@ -2023,6 +2038,8 @@ subroutine edmix_ugwp_v0(im, levs, dtp, end subroutine edmix_ugwp_v0 +!>\ingroup cires_ugwp_run +!! explicit diffusion solver subroutine diff_1d_wtend(levs, dt, F, F1, Km, rdp, rdpm, S, S1) use machine, only: kind_phys implicit none @@ -2059,6 +2076,8 @@ subroutine diff_1d_wtend(levs, dt, F, F1, Km, rdp, rdpm, S, S1) S1(k) = F1(k) end subroutine diff_1d_wtend +!>\ingroup cires_ugwp_run +!! explicit "eddy" smoother for tendencies. subroutine diff_1d_ptend(levs, dt, F, Km, rdp, rdpm, S) use machine, only: kind_phys implicit none From bca30682e788791ed087d34a95cb1fca2041386c Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Thu, 2 Jan 2020 16:42:12 -0700 Subject: [PATCH 07/11] doc updates --- physics/cires_ugwp.F90 | 9 +++++++-- physics/cires_ugwp_module.F90 | 5 +++++ physics/cires_ugwp_triggers.F90 | 22 +++++++++++++++++++-- physics/cires_ugwp_utils.F90 | 6 +++++- physics/cires_vert_lsatdis.F90 | 5 +++++ physics/cires_vert_orodis.F90 | 7 +++++++ physics/cires_vert_wmsdis.F90 | 5 +++++ physics/docs/pdftxt/GFS_UGWPv0.txt | 2 +- physics/docs/ufs_doxyfile | 1 - physics/radlw_param.f | 8 ++++---- physics/radsw_param.f | 12 ++++++------ physics/ugwp_driver_v0.F | 31 +++++++++++++++--------------- 12 files changed, 80 insertions(+), 33 deletions(-) diff --git a/physics/cires_ugwp.F90 b/physics/cires_ugwp.F90 index 0e8b8d145..035ec26dc 100644 --- a/physics/cires_ugwp.F90 +++ b/physics/cires_ugwp.F90 @@ -31,7 +31,7 @@ module cires_ugwp ! ------------------------------------------------------------------------ ! CCPP entry points for CIRES Unified Gravity Wave Physics (UGWP) scheme v0 ! ------------------------------------------------------------------------ -!>\ingroup cires_ugwp_run +!>\ingroup cires_ugwp_run_mod !> The subroutine initializes the CIRES UGWP. !> \section arg_table_cires_ugwp_init Argument Table !! \htmlinclude cires_ugwp_init.html @@ -134,7 +134,9 @@ end subroutine cires_ugwp_finalize ! ----------------------------------------------------------------------- ! order = dry-adj=>conv=mp-aero=>radiation -sfc/land- chem -> vertdiff-> [rf-gws]=> ion-re ! ----------------------------------------------------------------------- -!>\defgroup cires_ugwp_run CIRES Unified Gravity Wave Physics Module + +!>\defgroup cires_ugwp_run_mod CIRES Unified Gravity Wave Physics Module +!>@{ !! The physics of NGWs in the UGWP framework (Yudin et al. 2018 \cite yudin_et_al_2018) !! is represented by four GW-solvers, which have been introduced in !! Lindzen (1981) \cite lindzen_1981, Hines (1997) \cite hines_1997, @@ -185,6 +187,7 @@ end subroutine cires_ugwp_finalize !> \section arg_table_cires_ugwp_run Argument Table !! \htmlinclude cires_ugwp_run.html !>\section gen_cires_ugwp_run General Algorithm +!!@{ subroutine 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, & @@ -407,5 +410,7 @@ subroutine cires_ugwp_run(do_ugwp, me, master, im, levs, ntrac, dtp, kdt, lonr gw_dudt = gw_dudt*(1.-pked) + ed_dudt*pked end subroutine cires_ugwp_run +!!@} +!>@} end module cires_ugwp diff --git a/physics/cires_ugwp_module.F90 b/physics/cires_ugwp_module.F90 index 51c297237..8938bd8d6 100644 --- a/physics/cires_ugwp_module.F90 +++ b/physics/cires_ugwp_module.F90 @@ -1,3 +1,4 @@ +!>\file cires_ugwp_module.F90 ! module cires_ugwp_module @@ -106,6 +107,7 @@ module cires_ugwp_module ! init of cires_ugwp (_init) called from GFS_driver.F90 ! ! ----------------------------------------------------------------------- +!>\ingroup cires_ugwp_run_mod subroutine cires_ugwp_mod_init (me, master, nlunit, input_nml_file, logunit, & fn_nml, lonr, latr, levs, ak, bk, pref, dtp, cdmvgwd, cgwf, & pa_rf_in, tau_rf_in) @@ -289,6 +291,7 @@ end subroutine cires_ugwp_mod_init ! Diag%zmtb, Diag%zlwb, Diag%zogw, Diag%du3dt_mtb, & ! Diag%du3dt_ogw, Diag%du3dt_tms ) +!>\ingroup cires_ugwp_run_mod subroutine cires_ugwp_driver & (im, levs, dtp, kdt, me, lprnt, lonr, & pa_rf, tau_rf, cdmbgwd, xlat, xlatd, sinlat, coslat, & @@ -629,6 +632,7 @@ end subroutine cires_ugwp_driver !============================================= +!>\ingroup cires_ugwp_run_mod subroutine cires_ugwp_advance !----------------------------------------------------------------------- ! @@ -653,6 +657,7 @@ end subroutine cires_ugwp_advance ! ----------------------------------------------------------------------- +!>\ingroup cires_ugwp_run_mod subroutine cires_ugwp_mod_finalize ! ! deallocate sources/spectra & some diagnostics need to find where "deaalocate them" diff --git a/physics/cires_ugwp_triggers.F90 b/physics/cires_ugwp_triggers.F90 index 407115e51..71aa39c00 100644 --- a/physics/cires_ugwp_triggers.F90 +++ b/physics/cires_ugwp_triggers.F90 @@ -1,3 +1,7 @@ +!>\file cires_ugwp_triggers.F90 +!! + +!>\ingroup cires_ugwp_run_mod subroutine ugwp_triggers implicit none write(6,*) ' physics-based triggers for UGWP ' @@ -62,7 +66,8 @@ SUBROUTINE subs_diag_geo(nx, ny, lat, lon, rlat, rlon, dy, dx, & ! return end SUBROUTINE subs_diag_geo -! +! +!>\ingroup cires_ugwp_run_mod subroutine get_xy_pt(V, Vx, Vy, nx, ny, dlam1, dlat) !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! compute for each Vert-column: grad(V) @@ -87,6 +92,7 @@ subroutine get_xy_pt(V, Vx, Vy, nx, ny, dlam1, dlat) end subroutine get_xy_pt +!>\ingroup cires_ugwp_run_mod subroutine get_xyd_wind( V, Vx, Vy, Vyd, nx, ny, dlam1, dlat, divJp, divJm) ! ! compute for each Vert-column: grad(V) @@ -119,6 +125,7 @@ subroutine get_xyd_wind( V, Vx, Vy, Vyd, nx, ny, dlam1, dlat, divJp, divJm) end subroutine get_xyd_wind +!>\ingroup cires_ugwp_run_mod subroutine trig3d_fjets( nx, ny, nz, U, V, T, Q, P3D, PS, delp, delz, lon, lat, pmid, trig3d_fgf) implicit none integer :: nx, ny, nz @@ -161,8 +168,11 @@ subroutine trig3d_fjets( nx, ny, nz, U, V, T, Q, P3D, PS, delp, delz, lon, lat, trig3d_fgf(:,:,k) = -ptx*ptx*ux - pty*pty*vy -(vx+uyd)*ptx*pty enddo + +!>\ingroup cires_ugwp_run_mod end subroutine trig3d_fjets +!>\ingroup cires_ugwp_run_mod subroutine trig3d_okubo( nx, ny, nz, U, V, T, Q, P3d, PS, delp, delz, lon, lat, pmid, trig3d_okw) implicit none integer :: nx, ny, nz @@ -212,6 +222,7 @@ subroutine trig3d_okubo( nx, ny, nz, U, V, T, Q, P3d, PS, delp, delz, lon, lat, enddo end subroutine trig3d_okubo ! +!>\ingroup cires_ugwp_run_mod subroutine trig3d_dconv(nx, ny, nz, U, V, T, Q, P3d, PS, delp, delz, lon, lat, pmid, trig3d_conv, & dcheat3d, precip2d, cld_klevs2d, scheat3d) @@ -230,6 +241,7 @@ subroutine trig3d_dconv(nx, ny, nz, U, V, T, Q, P3d, PS, delp, delz, lon, lat, p integer :: k end subroutine trig3d_dconv +!>\ingroup cires_ugwp_run_mod subroutine cires_3d_triggers( nx, ny, nz, lon, lat, pmid, & U, V, W, T, Q, delp, delz, p3d, PS, HS, Hyam, Hybm, Hyai, Hybi, & trig3d_okw, trig3d_fgf, trig3d_conv, & @@ -283,6 +295,7 @@ end subroutine cires_3d_triggers ! specify time-dep bulk sources: taub, klev, if_src, nf_src ! !================================================================================== +!>\ingroup cires_ugwp_run_mod subroutine get_spectra_tau_convgw & (nw, im, levs, dcheat, scheat, precip, icld, xlatd, sinlat, coslat,taub, klev, if_src, nf_src) ! @@ -352,6 +365,7 @@ subroutine get_spectra_tau_convgw & ! print *, ' get_spectra_tau_convgw ' end subroutine get_spectra_tau_convgw ! +!>\ingroup cires_ugwp_run_mod subroutine get_spectra_tau_nstgw(nw, im, levs, trig_fgf, xlatd, sinlat, coslat, taub, klev, if_src, nf_src) integer :: nw, im, levs real, dimension(im, levs) :: trig_fgf @@ -412,6 +426,7 @@ subroutine get_spectra_tau_nstgw(nw, im, levs, trig_fgf, xlatd, sinlat, coslat, ! end subroutine get_spectra_tau_nstgw ! +!>\ingroup cires_ugwp_run_mod subroutine get_spectra_tau_okw(nw, im, levs, trig_okw, xlatd, sinlat, coslat, taub, klev, if_src, nf_src) integer :: nw, im, levs real, dimension(im, levs) :: trig_okw @@ -463,7 +478,7 @@ end subroutine get_spectra_tau_okw ! ! ! -!>\ingroup cires_ugwp_run +!>\ingroup cires_ugwp_run_mod !! This subroutine describes the latitudinal shape of the VMF-function !! as displayed in Figure 3 of Molod et al. (2015). The enhanced values !! of VMF in the equatorial region result in QBO-like oscillations @@ -503,6 +518,7 @@ subroutine slat_geos5_tamp(im, tau_amp, xlatdeg, tau_gw) ! end subroutine slat_geos5_tamp +!>\ingroup cires_ugwp_run_mod subroutine slat_geos5(im, xlatdeg, tau_gw) !================= ! GEOS-5 & MERRA-2 lat-dependent GW-source function tau(z=Zlaunch) =rho* @@ -541,6 +557,8 @@ subroutine slat_geos5(im, xlatdeg, tau_gw) enddo ! end subroutine slat_geos5 + +!>\ingroup cires_ugwp_run_mod subroutine init_nazdir(naz, xaz, yaz) use ugwp_common , only : pi2 implicit none diff --git a/physics/cires_ugwp_utils.F90 b/physics/cires_ugwp_utils.F90 index 63a5b3238..1533e3ab4 100644 --- a/physics/cires_ugwp_utils.F90 +++ b/physics/cires_ugwp_utils.F90 @@ -1,4 +1,6 @@ -! +!>\file cires_ugwp_utils.F90 + +!>\ingroup cires_ugwp_run_mod subroutine um_flow(nz, klow, ktop, up, vp, tp, qp, dp, zpm, zpi, & pmid, pint, bn2, uhm, vhm, bn2hm, rhohm) ! @@ -61,6 +63,7 @@ subroutine um_flow(nz, klow, ktop, up, vp, tp, qp, dp, zpm, zpi, & end subroutine um_flow ! ! +!>\ingroup cires_ugwp_run_mod subroutine mflow_tauz(levs, up, vp, tp, qp, dp, zpm, zpi, & pmid, pint, rho, ui, vi, ti, bn2i, bvi, rhoi) @@ -132,6 +135,7 @@ subroutine mflow_tauz(levs, up, vp, tp, qp, dp, zpm, zpi, & end subroutine mflow_tauz ! +!>\ingroup cires_ugwp_run_mod subroutine get_unit_vector(u, v, u_n, v_n, mag) implicit none real, intent(in) :: u, v diff --git a/physics/cires_vert_lsatdis.F90 b/physics/cires_vert_lsatdis.F90 index 362bed8ef..4adebf2ca 100644 --- a/physics/cires_vert_lsatdis.F90 +++ b/physics/cires_vert_lsatdis.F90 @@ -1,3 +1,6 @@ +!>\file cires_vert_lsatdis.F90 + +!>\ingroup cires_ugwp_run_mod subroutine ugwp_lsatdis_naz(levs, ksrc, nw, naz, kxw, taub_spect, ch, xaz, yaz, & fcor, c2f2, dp, zmid, zint, pmid, pint, rho, ui, vi, ti, & kvg, ktg, krad, kion, bn2i, bvi, rhoi, ax, ay, eps, ked, tau1) @@ -101,6 +104,7 @@ subroutine ugwp_lsatdis_naz(levs, ksrc, nw, naz, kxw, taub_spect, ch, xaz, yaz, end subroutine ugwp_lsatdis_naz ! +!>\ingroup cires_ugwp_run_mod subroutine ugwp_lsatdis_az1(levs, ksrc, nw, kxw, ch, taub_sp, & fcor, c2f2, zm, zi, rho, um, tm, bn2, bn, rhoi, & dzirho, dzpi, kvg, ktg, krad, kion, kmol, eps, ked, tau ) @@ -510,6 +514,7 @@ subroutine ugwp_lsatdis_az1(levs, ksrc, nw, kxw, ch, taub_sp, & ! end subroutine ugwp_lsatdis_az1 ! +!>\ingroup cires_ugwp_run_mod subroutine ugwp_limit_1d(ax, ay,eps, ked, levs) use cires_ugwp_module, only : max_kdis, max_eps, max_axyz implicit none diff --git a/physics/cires_vert_orodis.F90 b/physics/cires_vert_orodis.F90 index 0d3cce194..2846860d7 100644 --- a/physics/cires_vert_orodis.F90 +++ b/physics/cires_vert_orodis.F90 @@ -1,7 +1,10 @@ +!>\file cires_vert_orodis.F90 + ! subroutine ugwp_drag_mtb ! subroutine ugwp_taub_oro ! subroutine ugwp_oro_lsatdis ! +!>\ingroup cires_ugwp_run_mod subroutine ugwp_drag_mtb( iemax, nz, & elvpd, elvp, hprime , sigma, theta, oc, oa4, clx4, gam, zpbl, & up, vp, tp, qp, dp, zpm, zpi, pmid, pint, idxzb, drmtb,taumtb) @@ -266,6 +269,7 @@ end subroutine ugwp_drag_mtb ! ugwp_taub_oro - Computes [taulin, taufrb, drlee(levs) ] ! ! +!>\ingroup cires_ugwp_run_mod subroutine ugwp_taub_oro(levs, izb, kxw, tau_izb, fcor, & hprime , sigma, theta, oc, oa4, clx4, gamm, & elvp, up, vp, tp, qp, dp, zpm, zpi, pmid, pint, xn, yn, umag, & @@ -765,6 +769,7 @@ end subroutine ugwp_taub_oro ! fcor(j), c2f2(j), up, vp, tp, qp, dp, zpm, zpi, pmid1, pint1, & ! xn, yn, umag, drtau, kdis_oro) +!>\ingroup cires_ugwp_run_mod subroutine ugwp_oro_lsatdis( krefj, levs, tauogw, tautot, tau_src, & kxw, fcor, kxridge, up, vp, tp, qp, dp, zpm, zpi, pmid, pint, & xn, yn, umag, drtau, kdis) @@ -926,6 +931,7 @@ subroutine ugwp_oro_lsatdis( krefj, levs, tauogw, tautot, tau_src, & end subroutine ugwp_oro_lsatdis ! ! +!>\ingroup cires_ugwp_run_mod subroutine ugwp_tofd(im, levs, sigflt, elvmax, zpbl, u, v, zmid, & utofd, vtofd, epstofd, krf_tofd) use machine , only : kind_phys @@ -974,6 +980,7 @@ subroutine ugwp_tofd(im, levs, sigflt, elvmax, zpbl, u, v, zmid, & end subroutine ugwp_tofd ! ! +!>\ingroup cires_ugwp_run_mod subroutine ugwp_tofd1d(levs, sigflt, elvmax, zsurf, zpbl, u, v, & zmid, utofd, vtofd, epstofd, krf_tofd) use machine , only : kind_phys diff --git a/physics/cires_vert_wmsdis.F90 b/physics/cires_vert_wmsdis.F90 index 9e0bbf37c..bfb77c5d2 100644 --- a/physics/cires_vert_wmsdis.F90 +++ b/physics/cires_vert_wmsdis.F90 @@ -1,3 +1,6 @@ +!>\file cires_vert_wmsdis.F90 + +!>\ingroup cires_ugwp_run_mod subroutine ugwp_wmsdis_naz(levs, ksrc, nw, naz, kxw, taub_lat, ch, xaz, yaz, & fcor, c2f2, dp, zmid, zint, pmid, pint, rho, ui, vi, ti, & kvg, ktg, krad, kion, bn2i, bvi, rhoi, ax, ay, eps, ked, tau1) @@ -124,6 +127,7 @@ end subroutine ugwp_wmsdis_naz ! ======================================================================= +!>\ingroup cires_ugwp_run_mod subroutine ugwp_wmsdis_az1(levs, ksrc, nw, kxw, ch, dch, taub_sp, tau_bulk, & spnorm, fcor, c2f2, zm, zi, rho, um, tm, bn2, bn, rhoi, bnrho, & dzirho, dzpi, kvg, ktg, krad, kion, kmol, eps, ked, tau ) @@ -325,6 +329,7 @@ subroutine ugwp_wmsdis_az1(levs, ksrc, nw, kxw, ch, dch, taub_sp, tau_bulk, & end subroutine ugwp_wmsdis_az1 ! ! +!>\ingroup cires_ugwp_run_mod subroutine FVS93_ugwps(nw, ch, dch, taub_sp, spnorm, nslope, bn2, bn, bnrhos) implicit none integer :: nw, nslope diff --git a/physics/docs/pdftxt/GFS_UGWPv0.txt b/physics/docs/pdftxt/GFS_UGWPv0.txt index d8983ce48..c4b2bd604 100644 --- a/physics/docs/pdftxt/GFS_UGWPv0.txt +++ b/physics/docs/pdftxt/GFS_UGWPv0.txt @@ -112,6 +112,6 @@ and dynamical instability of waves described by the linear \ref arg_table_cires_ugwp_run \section gen_al_ugwpv0 General Algorithm -\ref cires_ugwp_run +\ref gen_cires_ugwp_run */ diff --git a/physics/docs/ufs_doxyfile b/physics/docs/ufs_doxyfile index bb9c54aaf..4effcd95d 100644 --- a/physics/docs/ufs_doxyfile +++ b/physics/docs/ufs_doxyfile @@ -139,7 +139,6 @@ INPUT = pdftxt/mainpage.txt \ ../gfdl_fv_sat_adj.F90 \ ### time_vary ../GFS_time_vary_pre.fv3.F90 \ - ../GFS_rrtmg_setup.F90 \ ../GFS_rad_time_vary.fv3.F90 \ ../GFS_phys_time_vary.fv3.F90 \ ../ozne_def.f \ diff --git a/physics/radlw_param.f b/physics/radlw_param.f index 6c107a3d8..7a1553ea3 100644 --- a/physics/radlw_param.f +++ b/physics/radlw_param.f @@ -72,8 +72,8 @@ module module_radlw_parameters ! public ! !> derived type for LW fluxes at top of atmosphere -!! \section arg_table_topflw_type -!! \htmlinclude topflw_type.html +! \section arg_table_topflw_type +! \htmlinclude topflw_type.html !! type topflw_type !< define type construct for radiation fluxes at toa real (kind=kind_phys) :: upfxc !< total sky upward flux at toa @@ -81,8 +81,8 @@ module module_radlw_parameters ! end type topflw_type ! !> derived type for LW fluxes at surface -!! \section arg_table_sfcflw_type -!! \htmlinclude sfcflw_type.html +! \section arg_table_sfcflw_type +! \htmlinclude sfcflw_type.html !! type sfcflw_type !< define type construct for radiation fluxes at surface real (kind=kind_phys) :: upfxc !< total sky upward flux at sfc diff --git a/physics/radsw_param.f b/physics/radsw_param.f index 93608eb65..165ea7e3a 100644 --- a/physics/radsw_param.f +++ b/physics/radsw_param.f @@ -73,8 +73,8 @@ module module_radsw_parameters ! public ! !> derived type for SW fluxes at TOA -!! \section arg_table_topfsw_type -!! \htmlinclude topfsw_type.html +! \section arg_table_topfsw_type +! \htmlinclude topfsw_type.html !! type topfsw_type real (kind=kind_phys) :: upfxc !< total-sky upward flux @@ -83,8 +83,8 @@ module module_radsw_parameters ! end type topfsw_type ! !> derived type for SW fluxes at surface -!! \section arg_table_sfcfsw_type -!! \htmlinclude sfcfsw_type.html +! \section arg_table_sfcfsw_type +! \htmlinclude sfcfsw_type.html !! type sfcfsw_type real (kind=kind_phys) :: upfxc !< total-sky upward flux @@ -102,8 +102,8 @@ module module_radsw_parameters ! end type profsw_type ! !> derived type for special components of surface SW fluxes -!! \section arg_table_cmpfsw_type -!! \htmlinclude cmpfsw_type.html +! \section arg_table_cmpfsw_type +! \htmlinclude cmpfsw_type.html !! type cmpfsw_type real (kind=kind_phys) :: uvbfc !< total-sky downward flux cover UV-B spectrum diff --git a/physics/ugwp_driver_v0.F b/physics/ugwp_driver_v0.F index b178ccea7..1a2e4fe5e 100644 --- a/physics/ugwp_driver_v0.F +++ b/physics/ugwp_driver_v0.F @@ -1,4 +1,5 @@ -!!23456 +!>\file ugwp_driver_v0.F + module sso_coorde ! ! specific to COORDE-2019 project OGW switches/sensitivity @@ -260,8 +261,7 @@ end subroutine cires_ugwp_driver_v0 !ugwp-v0 subroutines: GWDPS_V0 and fv3_ugwp_solv2_v0 ! !===================================================================== -!>\ingroup cires_ugwp_run -!> @{ +!>\ingroup cires_ugwp_run_mod !!Note for the sub-grid scale orography scheme in UGWP-v0: Due to !! degraded forecast scores of simulations with revised schemes for !! subgrid-scale orography effects in FV3GFS, EMC reinstalled the @@ -275,7 +275,7 @@ end subroutine cires_ugwp_driver_v0 !! reflect the better simulations of GW activity by FV3 dynamical core !! at higher horizontal resolutions. With the MERRA-2 VMF function for !! NGWs (\ref slat_geos5_tamp) and operational OGW drag scheme -!! (\ref GFS_GWDPS), FV3GFS simulations can successfully forecast the +!! (gwdps), FV3GFS simulations can successfully forecast the !! recent major mid-winter sudden stratospheric warming (SSW) events !! of 2018-02-12 and 2018-12-31 (10-14 days before the SSW onset; !! Yudin et al. 2019 \cite yudin_et_al_2019). The first multi-year @@ -326,11 +326,11 @@ SUBROUTINE GWDPS_V0(IM, km, imx, do_tofd, & real(kind=kind_phys), intent(in) :: dtp ! time step real(kind=kind_phys), intent(in) :: cdmbgwd(2) - real(kind=kind_phys), intent(in), dimension(im,km) :: - & u1, v1, t1, q1, - & del, prsl, prslk, phil + real(kind=kind_phys), intent(in), dimension(im,km) :: & + & u1, v1, t1, q1, & + & del, prsl, prslk, phil & real(kind=kind_phys), intent(in),dimension(im,km+1):: prsi, phii - real(kind=kind_phys), intent(in) :: xlatd(im),sinlat(im), + real(kind=kind_phys), intent(in) :: xlatd(im),sinlat(im), & & coslat(im) real(kind=kind_phys), intent(in) :: sparea(im) @@ -341,13 +341,13 @@ SUBROUTINE GWDPS_V0(IM, km, imx, do_tofd, & real(kind=kind_phys) :: SIGMA(IM), GAMMA(IM) !output -phys-tend - real(kind=kind_phys),dimension(im,km),intent(out) :: + real(kind=kind_phys),dimension(im,km),intent(out) :: & & Pdvdt, Pdudt, Pkdis, Pdtdt ! output - diag-coorde &, dudt_mtb, dudt_ogw, dudt_tms ! - real(kind=kind_phys),dimension(im) :: RDXZB, zmtb, zogw - &, tau_ogw, tau_mtb, tau_tofd + real(kind=kind_phys),dimension(im) :: RDXZB, zmtb, zogw & + &, tau_ogw, tau_mtb, tau_tofd & &, dusfc, dvsfc ! !--------------------------------------------------------------------- @@ -1271,8 +1271,7 @@ end subroutine gwdps_v0 ! !23456============================================================================== -!>\ingroup cires_ugwp_run -!> @{ +!>\ingroup cires_ugwp_run_mod !! subroutine fv3_ugwp_solv2_v0(klon, klev, dtime, & & tm1 , um1, vm1, qm1, & @@ -1869,7 +1868,7 @@ subroutine fv3_ugwp_solv2_v0(klon, klev, dtime, & return end subroutine fv3_ugwp_solv2_v0 -!>\ingroup cires_ugwp_run +!>\ingroup cires_ugwp_run_mod !! Part-3 of UGWP-V01 Dissipative (eddy) effects of UGWP it will be activated !! after tests of OGW (new revision) and NGW with MERRA-2 forcing. subroutine edmix_ugwp_v0(im, levs, dtp, & @@ -2038,7 +2037,7 @@ subroutine edmix_ugwp_v0(im, levs, dtp, & end subroutine edmix_ugwp_v0 -!>\ingroup cires_ugwp_run +!>\ingroup cires_ugwp_run_mod !! explicit diffusion solver subroutine diff_1d_wtend(levs, dt, F, F1, Km, rdp, rdpm, S, S1) use machine, only: kind_phys @@ -2076,7 +2075,7 @@ subroutine diff_1d_wtend(levs, dt, F, F1, Km, rdp, rdpm, S, S1) S1(k) = F1(k) end subroutine diff_1d_wtend -!>\ingroup cires_ugwp_run +!>\ingroup cires_ugwp_run_mod !! explicit "eddy" smoother for tendencies. subroutine diff_1d_ptend(levs, dt, F, Km, rdp, rdpm, S) use machine, only: kind_phys From df915cc3b21ba458478b7195dba6f60170edd933 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Fri, 3 Jan 2020 15:20:01 -0700 Subject: [PATCH 08/11] doc updates --- physics/GFS_time_vary_pre.fv3.F90 | 2 +- physics/cires_ugwp.F90 | 9 +++--- physics/docs/pdftxt/CPT_adv_suite.txt | 12 +++----- physics/docs/pdftxt/GFS_OZPHYS.txt | 2 +- physics/docs/pdftxt/GFS_SAMFdeep.txt | 2 +- physics/docs/pdftxt/GFS_SAMFshal.txt | 2 +- physics/docs/pdftxt/GFS_UGWPv0.txt | 8 ++--- physics/docs/pdftxt/GFSv15p2_suite.txt | 19 ++++-------- physics/docs/pdftxt/GFSv16beta_suite.txt | 20 +++++------- physics/docs/pdftxt/GSD_adv_suite.txt | 24 +++++---------- physics/docs/pdftxt/UGWPv0.txt | 21 ------------- physics/docs/pdftxt/all_shemes_list.txt | 39 +++++++++++------------- physics/docs/pdftxt/mainpage.txt | 28 +++++++---------- physics/docs/pdftxt/suite_input.nml.txt | 20 ++++++------ physics/docs/ufs_doxyfile | 5 ++- physics/module_gfdl_cloud_microphys.F90 | 2 +- physics/ozphys_2015.f | 2 +- physics/satmedmfvdifq.F | 12 ++++---- physics/ugwp_driver_v0.F | 6 ++-- 19 files changed, 91 insertions(+), 144 deletions(-) delete mode 100644 physics/docs/pdftxt/UGWPv0.txt diff --git a/physics/GFS_time_vary_pre.fv3.F90 b/physics/GFS_time_vary_pre.fv3.F90 index 46284a1bb..321e0f08a 100644 --- a/physics/GFS_time_vary_pre.fv3.F90 +++ b/physics/GFS_time_vary_pre.fv3.F90 @@ -1,4 +1,4 @@ -!> \file GFS_time_vary_pre.F90 +!> \file GFS_time_vary_pre.fv3.F90 !! Contains code related to GFS physics suite setup (generic part of time_vary_step) module GFS_time_vary_pre diff --git a/physics/cires_ugwp.F90 b/physics/cires_ugwp.F90 index 035ec26dc..7cea94aed 100644 --- a/physics/cires_ugwp.F90 +++ b/physics/cires_ugwp.F90 @@ -147,7 +147,7 @@ end subroutine cires_ugwp_finalize !! thermosphere for WAM applications, considers appropriate !! scale-dependent dissipation of waves near the model top lid providing !! momentum and energy conservation in the vertical column physics -!! (Shaw and Shepherd 2009 \cite shaw_and_shepherd_2009). In the UGWP-v0, +!! (Shaw and Shepherd 2009 \cite shaw_and_shepherd_2009). In the UGWP v0, !! a modification of Scinocca (2003) \cite scinocca_2003 scheme for !! NGWs with non-hydrostatic and rotational effects for GW propagations !! and background dissipation is represented by the subroutine @@ -157,7 +157,7 @@ end subroutine cires_ugwp_finalize !! 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 +!! In UGWP v0, the specification for the VMF function is adopted from !! the Goddard Earth Observing System Version 5 (GEOS-5) global atmosphere !! model of the National Aeronautic and Space Administration (NASA) Goddard !! Space Flight Center (GSFC) Global Modeling and Assimilation Office (GMAO), @@ -172,13 +172,13 @@ end subroutine cires_ugwp_finalize !! realistic simulations of the equatorial dynamics in GEOS-5 operational !! and MERRA-2 reanalysis products. !! -!! The UGWP-v0 code has been enhanced by scientists from NOAA's EMC to +!! The UGWP v0 code has been enhanced by scientists from NOAA's EMC to !! modulate the zonal mean NGW forcing by three-dimensional distributions !! of the total precipitation (as a proxy for the excitation of NGWs by !! convection) and vertically-integrated (surface-tropopause) turbulent !! kinetic energy. The vertically extented configuration of the UFS !! weather model is being tuned using reanalysis products from MERRA-2 and -!! the European Centre for Medium-Range Weather Forecasts (ERA-5), ALONG +!! the European Centre for Medium-Range Weather Forecasts (ERA-5), along !! with temperature, ozone, and water vapor observations of middle !! atmosphere satellite missions. The verification scores with updated !! NGW forcing, as reported elsewhere by EMC researchers, display noticeable @@ -412,5 +412,4 @@ subroutine cires_ugwp_run(do_ugwp, me, master, im, levs, ntrac, dtp, kdt, lonr end subroutine cires_ugwp_run !!@} !>@} - end module cires_ugwp diff --git a/physics/docs/pdftxt/CPT_adv_suite.txt b/physics/docs/pdftxt/CPT_adv_suite.txt index 1788af919..ce51b6a30 100644 --- a/physics/docs/pdftxt/CPT_adv_suite.txt +++ b/physics/docs/pdftxt/CPT_adv_suite.txt @@ -1,16 +1,16 @@ /** -\page csawmg_page SCM csawmg Suite +\page csawmg_page csawmg Suite \section csawmg_suite_overview Overview -The advanced csawmg physics suite uses the parameterizations in the following order: +The csawmg physics suite uses the parameterizations in the following order: - \ref GFS_RRTMG - \ref GFS_SFCLYR - \ref GFS_NSST - \ref GFS_NOAH - \ref GFS_SFCSICE - \ref GFS_HEDMF - - \ref GFS_UGWPv0 + - \ref GFS_UGWP_v0 - \ref GFS_RAYLEIGH - \ref GFS_OZPHYS - \ref GFS_H2OPHYS @@ -21,12 +21,10 @@ The advanced csawmg physics suite uses the parameterizations in the following or - \ref GFS_CALPRECIPTYPE \section sdf_cpt_suite Suite Definition File - -The advanced csawmg physics suite uses the parameterizations in the following order, as defined in \c SCM_csawmg : \code - + @@ -115,7 +113,7 @@ The advanced csawmg physics suite uses the parameterizations in the following or \endcode -\section cpt_nml_option Namelist Option +\section cpt_nml_option Namelist \code &gfs_physics_nml fhzero = 6. diff --git a/physics/docs/pdftxt/GFS_OZPHYS.txt b/physics/docs/pdftxt/GFS_OZPHYS.txt index fadaf95a5..3a2ddc173 100644 --- a/physics/docs/pdftxt/GFS_OZPHYS.txt +++ b/physics/docs/pdftxt/GFS_OZPHYS.txt @@ -1,5 +1,5 @@ /** -\page GFS_OZPHYS GFS Ozone Photochemistry Scheme +\page GFS_OZPHYS GFS Ozone Photochemistry (2015) Scheme \section des_ozone Description In recent years, the leading NWP centers have extended the vertical range of their NWP and DA systems from the surface up through the stratosphere (~10-50 km altitude) and lower mesosphere (~50-65 km). Some diff --git a/physics/docs/pdftxt/GFS_SAMFdeep.txt b/physics/docs/pdftxt/GFS_SAMFdeep.txt index 66d541563..4e422f3f3 100644 --- a/physics/docs/pdftxt/GFS_SAMFdeep.txt +++ b/physics/docs/pdftxt/GFS_SAMFdeep.txt @@ -1,5 +1,5 @@ /** -\page GFS_SAMFdeep GFS Scale-Aware Simplified Arakawa-Schubert (sa-SAS) Deep Convection Scheme +\page GFS_SAMFdeep GFS SAS-based Mass-Flux Deep Convection Scheme \section des_deep Description The scale-aware mass-flux (SAMF) deep convection scheme is an updated version of the previous Simplified Arakawa-Schubert (SAS) scheme diff --git a/physics/docs/pdftxt/GFS_SAMFshal.txt b/physics/docs/pdftxt/GFS_SAMFshal.txt index 435fb0e87..532faf3d9 100644 --- a/physics/docs/pdftxt/GFS_SAMFshal.txt +++ b/physics/docs/pdftxt/GFS_SAMFshal.txt @@ -1,5 +1,5 @@ /** -\page GFS_SAMFshal GFS SAS-based Mass-Flux Scheme for Shallow convection (sa-MF) +\page GFS_SAMFshal GFS SAS-based Mass-Flux Shallow Convection Scheme \section des_shal Description \ref SAMF_shal is an updated version of the previous mass-flux shallow diff --git a/physics/docs/pdftxt/GFS_UGWPv0.txt b/physics/docs/pdftxt/GFS_UGWPv0.txt index c4b2bd604..d17b19e9e 100644 --- a/physics/docs/pdftxt/GFS_UGWPv0.txt +++ b/physics/docs/pdftxt/GFS_UGWPv0.txt @@ -1,5 +1,5 @@ /** -\page GFS_UGWPv0 CIRES Unified Gravity Wave Physics Version 0 +\page GFS_UGWP_v0 CIRES Unified Gravity Wave Physics Scheme - Version 0 \section des_UGWP Description Gravity waves (GWs) are generated by a variety of sources in the atmosphere @@ -7,7 +7,7 @@ including orographic GWs (OGWs; quasi-stationary waves) and non-orographic GWs (NGWs; non-stationary oscillations). When the Version 0 of the Unified Gravity Wave Physics (UGWP v0) is invoked, the subgrid OGWs and NGWs are parameterized. For the subgrid-scale parameterization of OGWs, the UGWP -invokes a seperate scheme, the \ref GFS_GWDPS, which is used in the operational +invokes a separate scheme, the \subpage GFS_GWDPS, which is used in the operational Global Forecast System (GFS) version 15. The NGW physics scheme parameterizes the effects of non-stationary waves @@ -60,7 +60,7 @@ and from NOAA's Environmental Modeling Center (EMC) (Alpert et al. Yudin et al. 2018 \cite yudin_et_al_2018). The UGWP considers identical GW propagation solvers for OGWs and NGWs with different approaches for specification of subgrid wave sources. The current set of the input and -control paramters for UGWP version 0 (UGWP-v0) enables options for GW +control paramters for UGWP version 0 (UGWP v0) enables options for GW effects, including momentum deposition (also called GW drag), heat deposition, and mixing by eddy viscosity, conductivity and diffusion; however, note that the eddy mixing effects induced by instability of GWs @@ -86,7 +86,7 @@ parameterized to respond to year-to-year variations of solar input and anthropogenic emissions (Richter et al 2010 \cite richter_et_al_2010; 2014 \cite richter_et_al_2014). -Note that in UGWP-v0, the momentum and heat deposition due to GW breaking +Note that in UGWP v0, the momentum and heat deposition due to GW breaking and dissipation have been tested in the multi-year simulations and medium-range forecasts using a configuration of the UFS weather model using 127 levels with model top at approximately 80 km. diff --git a/physics/docs/pdftxt/GFSv15p2_suite.txt b/physics/docs/pdftxt/GFSv15p2_suite.txt index 0e02d414a..ef0f0829d 100644 --- a/physics/docs/pdftxt/GFSv15p2_suite.txt +++ b/physics/docs/pdftxt/GFSv15p2_suite.txt @@ -3,22 +3,17 @@ \section gfs1_suite_overview Overview -Version 15p2 of the Global Forecast System (GFS) was implemented operationally by the NOAA -National Centers for Environmental Prediction (NCEP) on November 7, 2019, begining with the 1200 -Coordinated Universal Time (UTC) run. +Suite GFS_v15p2 has the parameterizations used in the GFS v15 implemented operationally +in June 2019. -GFS version 15p1 was implemented into operations at the 12Z cycle on June 12, 2019. It was the -first GFS implementation with the finite-volume cubed-sphere (FV3) dynamical core as the the NWS's -Next Generation Global Prediction System (NGGPS). - -The GFS v15p2 physics suite uses the parameterizations in the following order: +The GFS_v15p2 physics suite uses the parameterizations in the following order: - \ref GFS_RRTMG - \ref GFS_SFCLYR - \ref GFS_NSST - \ref GFS_NOAH - \ref GFS_SFCSICE - \ref GFS_HEDMF - - \ref GFS_UGWPv0 + - \ref GFS_UGWP_v0 - \ref GFS_RAYLEIGH - \ref GFS_OZPHYS - \ref GFS_H2OPHYS @@ -28,12 +23,10 @@ The GFS v15p2 physics suite uses the parameterizations in the following order: - \ref GFS_CALPRECIPTYPE \section sdf_gfsv15p2 Suite Definition File - -The GFS v15p2 suite uses the parameterizations in the following order, as defined in \c FV3_GFS_v15p2: \code - + @@ -127,7 +120,7 @@ The GFS v15p2 suite uses the parameterizations in the following order, as define \endcode -\section gfs15p2_nml_opt_des Namelist Option +\section gfs15p2_nml_opt_des Namelist \code &gfs_physics_nml fhzero = 6 diff --git a/physics/docs/pdftxt/GFSv16beta_suite.txt b/physics/docs/pdftxt/GFSv16beta_suite.txt index fcd11e7ac..b41d93f12 100644 --- a/physics/docs/pdftxt/GFSv16beta_suite.txt +++ b/physics/docs/pdftxt/GFSv16beta_suite.txt @@ -4,23 +4,19 @@ \section gfsv16beta_suite_overview Overview Version 16 of the Global Forecast System (GFS) will be implemented operationally by the NOAA -National Centers for Environmental Prediction (NCEP) in 2021. GFSv16beta is a prototype of GFSv16 suite, which -will increase vertical resolution from 64 to 127 vertical levels and raise model top from 54 km to 80 km; increase -horizontal resolution from 13 km to 10 km and include advanced physics chosen from physics test plan: -- PBL/turbulence: \ref GFS_HEDMF -> \ref GFS_SATMEDMFVDIFQ -- Gravity Wave Drag: \ref GFS_UGWPv0 -- Radiation: updates to cloud-overlap assumptions -- Microphysics: improvements to \ref GFDL_cloud +National Centers for Environmental Prediction (NCEP) in 2021. GFS_v16beta is a prototype of +the GFS_v16 suite. The main difference between the GFS_v15p2 and GFS_v16beta suites is the +replacement of the K-based EDMF PBL scheme with a moist TKE based one. -The GFS v16beta physics suite uses the parameterizations in the following order: +The GFS_v16beta physics suite uses the parameterizations in the following order: - \ref GFS_RRTMG - \ref GFS_SFCLYR - \ref GFS_NSST - \ref GFS_NOAH - \ref GFS_SFCSICE - \ref GFS_SATMEDMFVDIFQ - - \ref GFS_UGWPv0 + - \ref GFS_UGWP_v0 - \ref GFS_RAYLEIGH - \ref GFS_OZPHYS - \ref GFS_H2OPHYS @@ -30,12 +26,10 @@ The GFS v16beta physics suite uses the parameterizations in the following order: - \ref GFS_CALPRECIPTYPE \section sdf_gfsv16b Suite Definition File - -The GFS v16beta suite uses the parameterizations in the following order, as defined in \c FV3_GFS_v16beta: \code - + @@ -130,7 +124,7 @@ The GFS v16beta suite uses the parameterizations in the following order, as defi \endcode -\section gfs15_nml_opt_des Namelist Option +\section gfs16beta_nml_opt_des Namelist \code &gfs_physics_nml fhzero = 6 diff --git a/physics/docs/pdftxt/GSD_adv_suite.txt b/physics/docs/pdftxt/GSD_adv_suite.txt index 5d4bfc0de..3ee38f32f 100644 --- a/physics/docs/pdftxt/GSD_adv_suite.txt +++ b/physics/docs/pdftxt/GSD_adv_suite.txt @@ -1,30 +1,24 @@ /** -\page GSD_v0_page SCM GSD_v1 Suite +\page GSD_v1_page GSD_v1 Suite \section gsd_suite_overview Overview -The original Rapid Update Cycle (RUC), implemented in 1994, was designed to provide accurate short-range (0 to 12-hr) -numerical forecast guidance for weather-sensitive users, including those in the U.S. aviation community. -The RUC started to run every hour starting in 1998. Significant weather forecasting problems that occur in the 0- to -12-hr range include severe weather in all seasons (for example, tornadoes, severe thunderstorms, crippling snow, and -ice storms) and hazards to aviation (for example, clear air turbulence, icing, and downbursts). The RUC soon became a -key model for short-range convection forecasts and for the pre-convective environments. +Suite GSD_v1 contains the parameterizations used in the NOAA operational Rapid Refresh (RAP) +and High-Resolution Rapid Refresh (HRRR) models. These models runs at 13- and 3- km resolution, +respectively. -The RAP, which replaced the RUC in 2012, runs hourly at the National Centers for Environmental Prediction (NCEP), providing -high frequency updates of current conditions and short-range forecasts over North America at 13km resolution. A CONUS-nested -version at 3-km resolution called the High Resolution Rapid Refresh (HRRR), was implemented in the fall of 2014. Additional Model Information Links: - https://rapidrefresh.noaa.gov - https://rapidrefresh.noaa.gov/hrrr/ -The advanced GSD RAP/HRRR physics suite uses the parameterizations in the following order: +The GSD_v1 physics suite uses the parameterizations in the following order: - \ref GFS_RRTMG - \ref GFS_SFCLYR - \ref GFS_NSST - \ref GSD_RUCLSM - \ref GSD_MYNNEDMF - - \ref GFS_UGWPv0 + - \ref GFS_UGWP_v0 - \ref GFS_RAYLEIGH - \ref GFS_OZPHYS - \ref GFS_H2OPHYS @@ -35,12 +29,10 @@ The advanced GSD RAP/HRRR physics suite uses the parameterizations in the follow - \ref GFS_CALPRECIPTYPE \section sdf_gsdsuite Suite Definition File - -The GSD RAP/HRRR physics suite uses the parameterizations in the following order, as defined in \c SCM_GSD_v0: \code - + @@ -129,7 +121,7 @@ The GSD RAP/HRRR physics suite uses the parameterizations in the following order \endcode -\section gsd_nml_option Namelist Option +\section gsd_nml_option Namelist \code &gfs_physics_nml fhzero = 6. diff --git a/physics/docs/pdftxt/UGWPv0.txt b/physics/docs/pdftxt/UGWPv0.txt deleted file mode 100644 index 627e850f8..000000000 --- a/physics/docs/pdftxt/UGWPv0.txt +++ /dev/null @@ -1,21 +0,0 @@ -/** -\page UGWPv0 CIRES Unified Gravity Wave Physics Version 0 -\section des_UGWP Description - -Gravity waves (GWs) are generated by a variety of sources in the atmosphere including orographic GWs (OGWs; quasi-stationary waves) and non-orographic GWs (NGWs; non-stationary oscillations). The subgrid scale parameterization scheme for OGWs can be found in Section \ref GFS_GWDPS. This scheme represents the operational version of the subgrid scale orography effects in Version 15 of Global Forecast System (GFS). - -The NGW physics scheme parameterizes the effects of non-stationary subgrid-scale waves in the global atmosphere models extended into the stratosphere, mesosphere, and thermosphere. These non-stationary oscillations with periods bounded by Coriolis and Brunt-Väisälä frequencies and typical horizontal scales from tens to several hundreds of kilometers are forced by the imbalance of convective and frontal/jet dynamics in the troposphere and lower stratosphere (Fritts 1984 \cite fritts_1984; Alexander et al. 2010 \cite alexander_et_al_2010; Plougonven and Zhang 2014 \cite plougonven_and_zhang_2014). The NGWs propagate upwards and the amplitudes exponentially grow with altitude until instability and breaking of waves occur. Convective and dynamical instability induced by GWs with large amplitudes can trigger production of small-scale turbulence and self-destruction of waves. The latter process in the theory of atmospheric GWs is frequently referred as the wave saturation (Lindzen 1981 \cite lindzen_1981; Weinstock 1984 \cite weinstock_1984; Fritts 1984 \cite fritts_1984). Herein, “saturation” or "breaking" refers to any processes that act to reduce wave amplitudes due to instabilities and/or interactions arising from large-amplitude perturbations limiting the exponential growth of GWs with height. Background dissipation processes such as molecular diffusion and radiative cooling, in contrast, act independently of GW amplitudes. In the middle atmosphere, impacts of NGW saturation (or breaking) and dissipation on the large-scale circulation, mixing, and transport have been acknowledged in the physics of global weather and climate models after pioneering studies by Lindzen 1981 \cite lindzen_1981 and Holton 1983 \cite holton_1983. Comprehensive reviews on the physics of NGWs and OGWs in the climate research and weather forecasting highlighted the variety of parameterization schemes for NGWs (Alexander et al. 2010 \cite alexander_et_al_2010; Geller et al. 2013 \cite geller_et_al_2013; Garcia et al. 2017 \cite garcia_et_al_2017). They are formulated using different aspects of the nonlinear and linear propagation, instability, breaking and dissipation of waves along with different specifications of GW sources (Garcia et al. 2007 \cite garcia_et_al_2007; Richter et al 2010 \cite richter_et_al_2010; Eckermann et al. 2009 \cite eckermann_et_al_2009; Eckermann 2011 \cite eckermann_2011; Lott et al. 2012 \cite lott_et_al_2012). - -The current operational GFS physics parameterizes effects of stationary OGWs and convective GWs, neglecting the impacts of non-stationary subgrid scale GW physics. This leads to well-known shortcomings in the global model predictions in the stratosphere and upper atmosphere (Alexander et al. 2010 \cite alexander_et_al_2010; Geller et al. 2013). In order to describe the effects of unresolved GWs by dynamical cores in global forecast models, subgrid scales physics of stationary and non-stationary GWs needs to be implemented in the self-consistent manner under the Unified Gravity Wave Physics (UGWP) framework. - -The concept of UGWP and the related programming architecture implemented in FV3GFS was first proposed by CU-CIRES, NOAA Space Weather Prediction Center (SWPC) and Environmental Modeling Center (EMC) for the Unified Forecast System (UFS) with variable positions of the model top lids (Alpert et al. 2019 \cite alpert_et_al_2019; Yudin et al. 2016 \cite yudin_et_al_2016; Yudin et al. 2018 \cite yudin_et_al_2018). As above, the UGWP considers identical GW propagation solvers for OGWs and NGWs with different approaches for specification of subgrid wave sources. The current set of the input and control parameters for UGWP version 0 (UGWP-v0) can select different options for GW effects including momentum deposition (also called GW drag), heat deposition, and mixing by eddy viscosity, conductivity and diffusion. The input GW parameters can control the number of directional azimuths in which waves can propagate, number of waves in single direction, and the interface model layer from the surface at which NGWs can be launched. Among the input parameters, the GW efficiency factors reflect intermittency of wave excitation. They can vary with horizontal resolutions, reflecting capability of the FV3 dynamical core to resolve mesoscale wave activity with the enhancement of model resolution. The prescribed distributions for vertical momentum flux (VMF) of NGWs have been employed in the global forecast models of NWP centers and reanalysis projects to ease tuning of GW schemes to the climatology of the middle atmosphere dynamics in the absence of the global wind data above about 35 km (Eckermann et al. 2009 \cite eckermann_et_al_2009; Molod et al. 2015 \cite molod_et_al_2015). These distributions of VMF qualitatively describe the general features of the latitudinal and seasonal variations of the global GW activity in the lower stratosphere, observed from the ground and space (Ern et al. 2018 \cite ern_et_al_2018). For the long-term climate projections, global models seek to establish communication between model physics and dynamics. This provides variable in time and space excitation of subgrid GWs under year-to-year variations of solar input and anthropogenic emissions (Richter et al 2010 \cite richter_et_al_2010; 2014 \cite richter_et_al_2014). - -Note that in the first release of UGWP (UGWP-v0), the momentum and heat deposition due to GW breaking and dissipation have been tested in the multi-year simulations and medium-range forecasts using FV3GFS-L127 configuration with top lid at about 80 km. In addition, the eddy mixing effects induced by instability of GWs are not activated in this version. Along with the GW heat and momentum depositions, GW eddy mixing is an important element of the Whole Atmosphere Model (WAM) physics, as shown in WAM simulations with the spectral dynamics (Yudin et al. 2018 \cite yudin_et_al_2018). The additional impact of eddy mixing effects in the middle and upper atmosphere need to be further tested, evaluated, and orchestrated with the subgrid turbulent diffusion of the GFS physics (work in progress). In UFS, the WAM with FV3 dynamics (FV3-WAM) will represent the global atmosphere model configuration extended into the thermosphere (top lid at ~600 km). In the mesosphere and thermosphere, the background attenuation of subgrid waves due to molecular and turbulent diffusion, radiative damping and ion drag will be the additional mechanism of NGW and OGW dissipation along with convective and dynamical instability of waves described by the linear (Lindzen 1981 \cite lindzen_1981) and nonlinear (Weinstock 1984 \cite weinstock_1984; Hines 1997 \cite hines_1997) saturation theories. - -\section intra_UGWPv0 Intraphysics Communication -\ref arg_table_cires_ugwp_run - -\section gen_al_ugwpv0 General Algorithm -\ref cires_ugwp_run - -*/ diff --git a/physics/docs/pdftxt/all_shemes_list.txt b/physics/docs/pdftxt/all_shemes_list.txt index ceccd2546..5c2c8fc13 100644 --- a/physics/docs/pdftxt/all_shemes_list.txt +++ b/physics/docs/pdftxt/all_shemes_list.txt @@ -1,11 +1,10 @@ /** \page allscheme_page Parameterizations and Suites Overview -\section allscheme_overview Physics Parameterizations +\section allscheme_overview Physical Parameterizations -In the NOAA's Unified Forecast System (UFS) public release, each parameterization is in its own modern Fortran module, - which facilitates model development and -code maintenance. While some individual parameterization can be invoked for the GMTB SCM, most users will assemble the +In the CCPP, each parameterization is in its own modern Fortran module, which facilitates model development and +code maintenance. While some individual parameterization can be invoked for the SCM, most users will assemble the parameterizations in suites. - \b Radiation @@ -26,8 +25,6 @@ parameterizations in suites. - \subpage GFS_SAMFshal - \subpage CSAW_scheme - \subpage GSD_CU_GF - - \ref cu_gf_deep_group - - \ref cu_gf_sh_group - \b Microphysics - \subpage GFDL_cloud @@ -36,13 +33,13 @@ parameterizations in suites. - \b Ozone \b Photochemical \b Production \b and \b Loss - \subpage GFS_OZPHYS - - \ref GFS_ozphys_2015 - \b Water \b Vapor \b Photochemical \b Production \b and \b Loss - \subpage GFS_H2OPHYS - \b Gravity \b Wave \b Drag - - \subpage GFS_UGWPv0 + - \subpage GFS_UGWP_v0 + - \subpage GFS_GWDPS - \b Surface \b Layer \b and \b Simplified \b Ocean \b and \b Sea \b Ice \b Representation - \subpage GFS_SFCLYR @@ -59,37 +56,37 @@ In addition to the physical schemes themselves, this scientific documentation al - \ref physcons - \ref radcons -The input information for the physics include the values of the gridbox mean prognostic variables (wind components, temperature, +The input information for the physics includes the values of the gridbox mean prognostic variables (wind components, temperature, specific humidity, cloud fraction, water contents for cloud liquid, cloud ice, rain, snow, graupel, and ozone concentration), the provisional dynamical tendencies for the same variables and various surface fields, both fixed and variable. -The time integration of the physics suites is based on the following: -- The tendencies from the different physical processes are computed by the parameterizations or derived in separate interstitial routines +The time integration of the physical suites is based on the following: +- The tendencies from the different physical processes are computed by the parameterizations or derived in separate interstitial routines. - The first part of the suite, comprised of the parameterizations for radiation, surface layer, surface (land, ocean, and sea ice), boundary layer, orographic gravity wave drag, and Rayleigh damping, is computed using a hybrid of parallel and sequential splitting described in Donahue and Caldwell(2018) \cite donahue_and_caldwell_2018, a method in which the various parameterizations use the same model state as input but are impacted by the preceding parameterizations. The tendencies from the various parameterizations are then added together and used to update the model state. - The surface parameterizations (land, ocean and sea ice) are invoked twice in a loop, with the first time to create a guess, and the second time to produce the tendencies. -- The second part of the physics suite, comprised of the parameterizations of ozone, stratospheric water vapor, deep convection, convective gravity wave drag, +- The second part of the physical suite, comprised of the parameterizations of ozone, stratospheric water vapor, deep convection, convective gravity wave drag, shallow convection, and microphysics, is computed using sequential splitting in the order listed above, in which the model state is updated between calls to the parameterization. - If the in-core saturation adjustment is used (\p do_sat_adj=.true.), it is invoked at shorter timesteps along with the dynamical solver. -\section allsuite_overview Physics Suites +\section allsuite_overview Physical Suites -The CCPP includes the suite used in the GFS v15p2 implemented operationally in Nov 2019 (suite GFS_v15p2) and a proposed version 16beta to be implemented operationally in 2021. - Additionally, it includes two -developmental suites which are undergoing testing for possible future implementation in the UFS. Suite GFS_v16beta is identical to suite -GFS_v15p2 except for an update in the PBL parameterization (Han et al. 2019 \cite Han_2019 ) and \ref GFS_UGWPv0. Suite csawmg differs from GFS_v15p2 as it +The CCPP includes the suite GFS_v15p2, which has the same parameterizations used in the GFS v15 implemented operationally in June 2019, and suite +GFS_v16beta, i.e., the beta version of the suite planned for GFS v16 to be implemented operationally in 2021. Suite GFS_v16beta is identical to +Suite GFS_v15p2 except for an update in the PBL parameterization (Han et al. 2019 \cite Han_2019 ). Additionally, CCPP v4 includes two +developmental suites which are undergoing testing to inform future implementations of the UFS. Suite csawmg differs from GFS_v15p2 as it contains different convection and microphysics schemes made available through a NOAA Climate Process Team (CPT) with components developed -at multiple research centers and universities, including Colorado State, Utah, NASA, NCAR, and EMC. Suite GSD_v0 differs from GFS_v15p2 as it +at multiple research centers and universities, including Colorado State, Utah, NASA, NCAR, and EMC. Suite GSD_v1 differs from GFS_v15p2 as it uses the convection, microphysics, and boundary layer schemes employed in the Rapid Refresh (RAP) and High-Resolution Rapid Refresh (HRRR \cite Benjamin_2016 ) operational models and was assembled by NOAA/GSD. An assessment of an earlier version of these suites can be found in the UFS portal -and in the GMTB website . +and in the DTC website . -Table 1. Physics suite options included in this documentation. +Table 1. Physics suites option included in this documentation. \tableofcontents | Phys suites | GFS_v15p2 | GFS_v16beta | csawmg | GSD_v1 | |------------------|-----------------------------------|----------------------|---------------------|----------------------| @@ -98,7 +95,7 @@ Table 1. Physics suite options included in this documentation. | Microphysics | \ref GFDL_cloud | \ref GFDL_cloud | \ref CPT_MG3 | \ref GSD_THOMPSON | | PBL/TURB | \ref GFS_HEDMF | \ref GFS_SATMEDMFVDIFQ | \ref GFS_HEDMF | \ref GSD_MYNNEDMF | | Land | \ref GFS_NOAH | \ref GFS_NOAH | \ref GFS_NOAH | \ref GSD_RUCLSM | -| Gravity Wave Drag| \ref GFS_UGWPv0 | \ref GFS_UGWPv0 | \ref GFS_UGWPv0 | \ref GFS_UGWPv0 | +| Gravity Wave Drag| \ref GFS_UGWP_v0 | \ref GFS_UGWP_v0 | \ref GFS_UGWP_v0 | \ref GFS_UGWP_v0 | \tableofcontents diff --git a/physics/docs/pdftxt/mainpage.txt b/physics/docs/pdftxt/mainpage.txt index ea2e78582..40061277a 100644 --- a/physics/docs/pdftxt/mainpage.txt +++ b/physics/docs/pdftxt/mainpage.txt @@ -1,28 +1,22 @@ /** \mainpage Introduction -Welcome to the scientific documentation for the parameterizations available in the Common -Community Physics Package (CCPP) for the Unified Forecast System (UFS) public release. +Welcome to the scientific documentation for the parameterizations and suites available in the Common +Community Physics Package (CCPP) v4. -The Unified Foreacst System (UFS) is a community-based, coupled comprehensive Earth system modeling system. -The UFS numerical applications span local to global domains and predictive time scales from sub-hourly analyses -to seasonal predictions. It is designed to support the Weather Enterprise and to be the source system for -NOAA's operational numerical weather prediction applications.For more details and current UFS events, please -go to the UFS Community Web Portal at https://ufscommunity.org/ - -The CCPP-Physics is envisioned to contain parameterizations used by NOAA operational models for weather through -seasonal prediction timescales, as well as developmental schemes under consideration for upcoming +The CCPP-Physics is envisioned to contain parameterizations used in NOAA's Unified Forecast System (UFS) +applications for weather through seasonal prediction timescales, encompassing operational schemes as well as +developmental schemes under consideration for upcoming operational implementations. This version contains all parameterizations of the current operational GFS, -plus additional developmental schemes. The CCPP can currently be used with the Single Column Model (SCM) developed -by the Global Model Test Bed (GMTB) of the Developmental Testbed Center, as well as with the atmospheric component -of NOAA's Unified Forecast System (UFS-Atmosphere), which employs the the non-hydrostatic -Finite-Volume Cubed-Sphere (FV3) dynamic core. +plus additional developmental schemes. There are four suites supported for use with the Single Column Model (SCM) +developed by the Development Testbed Center (GFS_v15p2, GFS_v16beta, GSD_v1, and csawmg), and two suites +supported for use with the atmospheric component of the UFS (i.e., GFS_v15p2 and GFS_v16beta). In this website you will find documentation on various aspects of each parameterization, including a high-level overview of its function, the input/output argument list, and a description of the algorithm. -The latest CCPP public release is Version 4.0 (Jan 2019), and more details on it may be found on the - CCPP website hosted by the Global Model Test -Bed (GMTB) of the Developmental Testbed Center (DTC). +The latest CCPP public release is Version 4.0 (January 2019), and more details on it may be found on the + CCPP website hosted by +the Developmental Testbed Center (DTC). */ diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index b22ec82d1..c98c83eef 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -1,21 +1,23 @@ /** -\page GFSsuite_nml Namelist Options Description +\page CCPPsuite_nml_desp Namelist Options Description -At runtime, the SCM and the UFS Atmosphere access runtime configurations from file \c input.nml. This file contains -various namelists that control aspects of the I/O, dynamics, physics etc. Most physics-related options are grouped into -two namelists:\b &gfs_physics_nml and \b &gfdl_cloud_microphysics_nml, with additional specifications for stochastic physics in +The SCM and the UFS Atmosphere access runtime configurations from file \c input.nml. This file contains +various namelists records that control aspects of the I/O, dynamics, physics etc. Most physics-related options are in +reords \b &gfs_physics_nml and \b &cires_ugwp_nml. When using the GFDL microphysics scheme, variables in namelist +\b &gfdl_cloud_microphysics_nml are also used. Additional specifications for stochastic physics are in namelists \b &stochy_nam and \b &nam_sfcperts. - Namelist \b &gfdl_cloud_microphysics_nml is only relevant when the GFDL microphysics is used, and its variables are defined in module_gfdl_cloud_microphys.F90. +- Namelist \b &cires_ugwp_nml specifies options for the use of CIRES Unified Gravity Wave Physics Version 0. + - Namelist \b &gfs_physics_nml pertains to all of the suites used, but some of the variables are only relevant for specific parameterizations. Its variables are defined in file GFS_typedefs.F90 in the host model. - Namelist \b &stochy_nam specifies options for the use of SPPT, SKEB and SHUM, while namelist \b &nam_sfcperts specifies whether and how stochastic perturbations are used in the Noah Land Surface Model. -- Namelist \b &cires_ugwp_nml specifies options for the use of CIRES Unified Gravity Wave Physics Version 0. @@ -463,7 +465,7 @@ and how stochastic perturbations are used in the Noah Land Surface Model.
    NML Description
    icloud_f gfdl_cloud_microphys_mod flag (0,1,or 2) for cloud fraction diagnostic scheme 0
    mp_time gfdl_cloud_microphys_mod time step of GFDL cloud microphysics 150.
    \b &cires_ugwp_nml -
    knob_ugwp_version cires_ugwp_module parameter selects a version of the UGWP-implementation in FV3GFS-127L \n +
    knob_ugwp_version cires_ugwp_module parameter selects a version of the UGWP implementation in FV3GFS-127L \n
    • 0: default version delivered to EMC in Jan 2019 for implementation
    • 1: version of UGWP under development that plans to consider the physics-based sources of NGWs (\b knob_ugwp_wvspec [2:4]), options for stochastic and deterministic excitation of waves (\b knob_ugwp_stoch), and switches between different UGWP schemes (\b knob_ugwp_solver) @@ -484,7 +486,7 @@ and how stochastic perturbations are used in the Noah Land Surface Model.
    knob_ugwp_dokdis cires_ugwp_module parameter controls application of the eddy diffusion due to instability of NGWs \n
    • 0: the eddy diffusion tendencies due to NGWs are calculated but tendencies do not change the model state vector -
    • 1: it computes eddy diffusion coefficient due to instability of NGWs; in UGWP-v0, eddy viscosity, heat conductivity and tracer diffusion are not activated +
    • 1: it computes eddy diffusion coefficient due to instability of NGWs; in UGWP v0, eddy viscosity, heat conductivity and tracer diffusion are not activated
    0
    knob_ugwp_solver cires_ugwp_module parameter controls the selection of UGWP-solvers(wave propagation, dissipation and wave breaking) for NGWs \n @@ -505,9 +507,9 @@ and how stochastic perturbations are used in the Noah Land Surface Model. (2) convective (\b knob_ugwp_wvspec[2]=25), \n (3) frontal (\b knob_ugwp_wvspec[3]=25) activity, \n (4) \b knob_ugwp_wvspec[4] represents number of wave excited by dynamical imbalances that may mimic both convective and front-jet mechanisms of GW triggering. \n - In UGWP-v0, first two elements of the array, \b knob_ugwp_wvspec(1:2), control number of waves for stationary (OGW) and nonstationary waves (NGWs). + In UGWP v0, first two elements of the array, \b knob_ugwp_wvspec(1:2), control number of waves for stationary (OGW) and nonstationary waves (NGWs). 1,32,32,32 -
    knob_ugwp_azdir cires_ugwp_module four-dimensional array that defines number of azimuths for propagation of GWs triggered by four types of physics-based sources (orography, convection, front-jets, and dynamical imbalance). In UGWP-v0, first two elements of the array, \b knob_ugwp_azdir(1:2), control number of azimuths for OGW and NGWs respectively. +
    knob_ugwp_azdir cires_ugwp_module four-dimensional array that defines number of azimuths for propagation of GWs triggered by four types of physics-based sources (orography, convection, front-jets, and dynamical imbalance). In UGWP v0, first two elements of the array, \b knob_ugwp_azdir(1:2), control number of azimuths for OGW and NGWs respectively. 2,4,4,4
    knob_ugwp_stoch cires_ugwp_module four-dimensional array that control stochastic selection of GWs triggered by four types of physics-based sources. \n Default values:0,0,0,0 - reflect determinstic selection of GW parameters without stochastic selection diff --git a/physics/docs/ufs_doxyfile b/physics/docs/ufs_doxyfile index 4effcd95d..84e05db94 100644 --- a/physics/docs/ufs_doxyfile +++ b/physics/docs/ufs_doxyfile @@ -1,6 +1,6 @@ # Doxyfile 1.8.11 DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = "Common Community Physics Package (CCPP) Scientific Documentation" +PROJECT_NAME = "CCPP Scientific Documentation" PROJECT_NUMBER = "" PROJECT_BRIEF = "v4.0" PROJECT_LOGO = img/dtc_logo.png @@ -115,13 +115,12 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/GFS_SATMEDMFVDIFQ.txt \ ## pdftxt/GFS_NoahMP.txt \ pdftxt/GFS_UGWPv0.txt \ -## pdftxt/GFS_GWDPS.txt \ + pdftxt/GFS_GWDPS.txt \ pdftxt/GFS_OZPHYS.txt \ pdftxt/GFS_H2OPHYS.txt \ pdftxt/GFS_RAYLEIGH.txt \ pdftxt/GFS_SAMF.txt \ pdftxt/GFS_SAMFdeep.txt \ -### pdftxt/GFS_GWDC.txt \ pdftxt/GFS_SAMFshal.txt \ pdftxt/GFDL_cloud.txt \ pdftxt/GFS_CALPRECIPTYPE.txt \ diff --git a/physics/module_gfdl_cloud_microphys.F90 b/physics/module_gfdl_cloud_microphys.F90 index 2f6e5ec1a..82cc4dfc7 100644 --- a/physics/module_gfdl_cloud_microphys.F90 +++ b/physics/module_gfdl_cloud_microphys.F90 @@ -1,6 +1,6 @@ !> \file gfdl_cloud_microphys.F90 !! This file contains the full GFDL cloud microphysics (Chen and Lin (2013) -!! \cite chen_and_lin_2013 and Zhou et al. 2019 \cite zhou2019toward). +!! \cite chen_and_lin_2013 ). !! The module is paired with 'gfdl_fv_sat_adj', which performs the "fast" !! processes !>author Shian-Jiann Lin, Linjiong Zhou diff --git a/physics/ozphys_2015.f b/physics/ozphys_2015.f index 3126313dc..721ea63d0 100644 --- a/physics/ozphys_2015.f +++ b/physics/ozphys_2015.f @@ -37,7 +37,7 @@ subroutine ozphys_2015_finalize() end subroutine ozphys_2015_finalize -!>\defgroup GFS_ozphys_2015 GFS Ozone Photochemistry (2015) Scheme Module +!>\defgroup GFS_ozphys_2015 GFS Ozone Photochemistry (2015) Scheme !! \brief The operational GFS currently parameterizes ozone production and !! destruction based on monthly mean coefficients ( !! \c ozprdlos_2015_new_sbuvO3_tclm15_nuchem.f77) provided by Naval diff --git a/physics/satmedmfvdifq.F b/physics/satmedmfvdifq.F index 8a93cc5fa..f47a07c99 100644 --- a/physics/satmedmfvdifq.F +++ b/physics/satmedmfvdifq.F @@ -7,15 +7,15 @@ module satmedmfvdifq contains -!> \defgroup satmedmfvdifq GFS Scale-aware TKE-based Moist Eddy-Diffusivity Mass-flux (TKE-EDMF, updated version) Scheme Module +!> \defgroup satmedmfvdifq GFS Scale-aware TKE-based Moist Eddy-Diffusivity Mass-flux (moist TKE-EDMF) Scheme Module !! @{ !! \brief This subroutine contains all of the logic for the -!! scale-aware TKE-based moist eddy-diffusion mass-flux (TKE-EDMF, updated version) scheme. +!! scale-aware TKE-based moist eddy-diffusion mass-flux (moist TKE-EDMF) scheme. !! For local turbulence mixing, a TKE closure model is used. -!! Updated version of satmedmfvdif.f (May 2019) to have better low level -!! inversion, to reduce the cold bias in lower troposphere, -!! and to reduce the negative wind speed bias in upper troposphere - +!! This scheme is an updated version of satmedmfvdif.f (May 2019) to better represent +!! low level inversions, and to address the negative biases of temperature in lower troposphere +!! and of wind speed in the upper troposphere present in GFS v15. +!! !> \section arg_table_satmedmfvdifq_init Argument Table !! \htmlinclude satmedmfvdifq_init.html !! diff --git a/physics/ugwp_driver_v0.F b/physics/ugwp_driver_v0.F index 1a2e4fe5e..637eb8d4a 100644 --- a/physics/ugwp_driver_v0.F +++ b/physics/ugwp_driver_v0.F @@ -262,7 +262,7 @@ end subroutine cires_ugwp_driver_v0 ! !===================================================================== !>\ingroup cires_ugwp_run_mod -!!Note for the sub-grid scale orography scheme in UGWP-v0: Due to +!!Note for the sub-grid scale orography scheme in UGWP v0: Due to !! degraded forecast scores of simulations with revised schemes for !! subgrid-scale orography effects in FV3GFS, EMC reinstalled the !! original gwdps-code with updated efficiency factors for the mountain @@ -279,7 +279,7 @@ end subroutine cires_ugwp_driver_v0 !! recent major mid-winter sudden stratospheric warming (SSW) events !! of 2018-02-12 and 2018-12-31 (10-14 days before the SSW onset; !! Yudin et al. 2019 \cite yudin_et_al_2019). The first multi-year -!! (2015-2018) FV3GFS simulations with UGWP-v0 also produce the equatorial +!! (2015-2018) FV3GFS simulations with UGWP v0 also produce the equatorial !! QBO-like oscillations in the zonal wind and temperature anomalies. !! !> modified/revised version of gwdps.f with bug fixes, tofd, appropriate @@ -1869,7 +1869,7 @@ subroutine fv3_ugwp_solv2_v0(klon, klev, dtime, & end subroutine fv3_ugwp_solv2_v0 !>\ingroup cires_ugwp_run_mod -!! Part-3 of UGWP-V01 Dissipative (eddy) effects of UGWP it will be activated +!! Part-3 of UGWP v1 Dissipative (eddy) effects of UGWP it will be activated !! after tests of OGW (new revision) and NGW with MERRA-2 forcing. subroutine edmix_ugwp_v0(im, levs, dtp, & & t1, u1, v1, q1, del, & From 9c9f413ea29bf42e2390b073aac6adf4d324aa99 Mon Sep 17 00:00:00 2001 From: "Man.Zhang" Date: Sun, 5 Jan 2020 19:27:57 -0700 Subject: [PATCH 09/11] doc update --- physics/cires_ugwp.F90 | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/physics/cires_ugwp.F90 b/physics/cires_ugwp.F90 index 035ec26dc..7ce5115f4 100644 --- a/physics/cires_ugwp.F90 +++ b/physics/cires_ugwp.F90 @@ -184,10 +184,10 @@ end subroutine cires_ugwp_finalize !! NGW forcing, as reported elsewhere by EMC researchers, display noticeable !! improvements into the mesosphere. !! -!> \section arg_table_cires_ugwp_run Argument Table +!! \section arg_table_cires_ugwp_run Argument Table !! \htmlinclude cires_ugwp_run.html +!! !>\section gen_cires_ugwp_run General Algorithm -!!@{ subroutine 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, & @@ -410,7 +410,6 @@ subroutine cires_ugwp_run(do_ugwp, me, master, im, levs, ntrac, dtp, kdt, lonr gw_dudt = gw_dudt*(1.-pked) + ed_dudt*pked end subroutine cires_ugwp_run -!!@} !>@} end module cires_ugwp From 9a529d737d885f730b2ee6b9224d534c67498a1f Mon Sep 17 00:00:00 2001 From: "Man.Zhang" Date: Tue, 7 Jan 2020 11:08:27 -0700 Subject: [PATCH 10/11] code changed to pass RTs --- physics/satmedmfvdifq.F | 59 ++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 30 deletions(-) diff --git a/physics/satmedmfvdifq.F b/physics/satmedmfvdifq.F index f47a07c99..4d8a37c42 100644 --- a/physics/satmedmfvdifq.F +++ b/physics/satmedmfvdifq.F @@ -56,7 +56,7 @@ end subroutine satmedmfvdifq_finalize !! -# A mass-flux approach is also used to represent the stratocumulus-top-induced turbulence !! (mfscuq.f). !! \section detail_satmedmfvidfq GFS satmedmfvdifq Detailed Algorithm -!! @{ +!> @{ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & & grav,rd,cp,rv,hvap,hfus,fv,eps,epsm1, & & dv,du,tdt,rtg,u1,v1,t1,q1,swh,hlw,xmu,garea, & @@ -196,7 +196,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & & rlmn, rlmn1, rlmx, elmx, & ttend, utend, vtend, qtend, & zfac, zfmin, vk, spdk2, - & tkmin, tkminx, xkzinv, xkgdx, + & tkmin, xkzinv, xkgdx, & zlup, zldn, bsum, & tem, tem1, tem2, & ptem, ptem0, ptem1, ptem2 @@ -215,11 +215,11 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & parameter(prmin=0.25,prmax=4.0) parameter(pr0=1.0,prtke=1.0,prscu=0.67) parameter(f0=1.e-4,crbmin=0.15,crbmax=0.35) - parameter(tkmin=1.e-9,tkminx=0.2,dspmax=10.0) + parameter(tkmin=1.e-9,dspmax=10.0) parameter(qmin=1.e-8,qlmin=1.e-12,zfmin=1.e-8) parameter(aphi5=5.,aphi16=16.) parameter(elmfac=1.0,elefac=1.0,cql=100.) - parameter(dw2min=1.e-4,dkmax=1000.,xkgdx=5000.) + parameter(dw2min=1.e-4,dkmax=1000.,xkgdx=25000.) parameter(qlcr=3.5e-5,zstblmax=2500.,xkzinv=0.1) parameter(h1=0.33333333) parameter(ck0=0.4,ck1=0.15,ch0=0.4,ch1=0.15) @@ -335,20 +335,20 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & xkzo(i,k) = 0.0 xkzmo(i,k) = 0.0 if (k < kinver(i)) then -! minimum turbulent mixing length +! vertical background diffusivity + ptem = prsi(i,k+1) * tx1(i) + tem1 = 1.0 - ptem + tem2 = tem1 * tem1 * 10.0 + tem2 = min(1.0, exp(-tem2)) + xkzo(i,k) = xkzm_hx(i) * tem2 +! ptem = prsl(i,k) * tx1(i) tem1 = 1.0 - ptem tem2 = tem1 * tem1 * 2.5 tem2 = min(1.0, exp(-tem2)) rlmnz(i,k)= rlmn * tem2 rlmnz(i,k)= max(rlmnz(i,k), rlmn1) -! vertical background diffusivity - ptem = prsi(i,k+1) * tx1(i) - tem1 = 1.0 - ptem - tem2 = tem1 * tem1 * 10.0 - tem2 = min(1.0, exp(-tem2)) - xkzo(i,k) = xkzm_hx(i) * tem2 -! vertical background diffusivity for momentum +! vertical background diffusivity for momentum if (ptem >= xkzm_s) then xkzmo(i,k) = xkzm_mx(i) kx1(i) = k + 1 @@ -542,7 +542,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & enddo enddo ! -! Find pbl height based on bulk richardson number (mrf pbl scheme) +! find pbl height based on bulk richardson number (mrf pbl scheme) ! and also for diagnostic purpose ! do i=1,im @@ -808,23 +808,23 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & ! ! background diffusivity decreasing with increasing surface layer stability ! -! do i = 1, im -! if(.not.sfcflg(i)) then -! tem = (1. + 5. * rbsoil(i))**2. -!! tem = (1. + 5. * zol(i))**2. -! frik(i) = 0.1 + 0.9 / tem -! endif -! enddo -! -! do k = 1,km1 -! do i=1,im -! xkzo(i,k) = frik(i) * xkzo(i,k) -! xkzmo(i,k)= frik(i) * xkzmo(i,k) -! enddo -! enddo + do i = 1, im + if(.not.sfcflg(i)) then + tem = (1. + 5. * rbsoil(i))**2. +! tem = (1. + 5. * zol(i))**2. + frik(i) = 0.1 + 0.9 / tem + endif + enddo +! + do k = 1,km1 + do i=1,im + xkzo(i,k) = frik(i) * xkzo(i,k) + xkzmo(i,k)= frik(i) * xkzmo(i,k) + enddo + enddo ! !> ## The background vertical diffusivities in the inversion layers are limited -!! to be less than or equal to xkzinv +! to be less than or equal to xkzminv ! do k = 1,km1 do i=1,im @@ -1013,14 +1013,13 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, & do i = 1, im if(k == 1) then tem = ckz(i,1) - tem1 = 0.5 * xkzmo(i,1) + tem1 = xkzmo(i,1) else tem = 0.5 * (ckz(i,k-1) + ckz(i,k)) tem1 = 0.5 * (xkzmo(i,k-1) + xkzmo(i,k)) endif ptem = tem1 / (tem * elm(i,k)) tkmnz(i,k) = ptem * ptem - tkmnz(i,k) = min(tkmnz(i,k), tkminx) tkmnz(i,k) = max(tkmnz(i,k), tkmin) enddo enddo From 2d0a0aa1dafa664dbad9650647072c1b36fd5cf6 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Tue, 7 Jan 2020 14:11:29 -0700 Subject: [PATCH 11/11] physics/samfdeepcnv.f: bugfix to prevent using uninitialized variables, leads to crashes in debug mode --- physics/samfdeepcnv.f | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/physics/samfdeepcnv.f b/physics/samfdeepcnv.f index bb5d5deb1..83e1efb80 100644 --- a/physics/samfdeepcnv.f +++ b/physics/samfdeepcnv.f @@ -1554,22 +1554,22 @@ subroutine samfdeepcnv_run (im,ix,km,itc,ntc,cliq,cp,cvap, & enddo enddo do i = 1, im - betamn = betas - if(islimsk(i) == 1) betamn = betal - if(ntk > 0) then - betamx = betamn + dbeta - if(tkemean(i) > tkemx) then - beta = betamn - else if(tkemean(i) < tkemn) then - beta = betamx + if(cnvflg(i)) then + betamn = betas + if(islimsk(i) == 1) betamn = betal + if(ntk > 0) then + betamx = betamn + dbeta + if(tkemean(i) > tkemx) then + beta = betamn + else if(tkemean(i) < tkemn) then + beta = betamx + else + tem = (betamx - betamn) * (tkemean(i) - tkemn) + beta = betamx - tem / dtke + endif else - tem = (betamx - betamn) * (tkemean(i) - tkemn) - beta = betamx - tem / dtke + beta = betamn endif - else - beta = betamn - endif - if(cnvflg(i)) then dz = (sumx(i)+zi(i,1))/float(kbcon(i)) tem = 1./float(kbcon(i)) xlamd(i) = (1.-beta**tem)/dz