← Back to Documentation Home
CCPP SciDoc v8.0.0  v8.0.0
Common Community Physics Package Developed at DTC
 
Loading...
Searching...
No Matches
GFS RRTMG-SW Main Module

This module includes NCEP's modifications of the RRTMG-SW radiation code from AER. More...

Modules

module  module_radsw_ref
 This module contains the reference pressures (in logarithm form) at 59 vertical levels (TOA is omitted), and the mid-latitude summer (MLS) standard temperature profile for the 59 pressure layers that are used to establish pre calculated transmission tables.
 
module  module_radsw_cldprtb
 This module contains cloud radiative property coefficients.
 
module  module_radsw_sflux
 This module contains various indexes and coefficients for SW spectral bands, as well as the spectral distribution of solar flux. The values of spectral solar flux are derived based on a prescribed solar constant ( \(1368.22 W/m^2\)). Scaling will be applied for the actual inputted solar constant value.
 
module  module_radsw_kgb16
 This module sets up absorption coefficients for band 16: 2600-3250 cm-1 (low - h2o, ch4; high - ch4)
 
module  module_radsw_kgb17
 This module sets up absorption coeffients for band 17: 3250-4000 cm-1 (low - h2o,co2; high - h2o,co2)
 
module  module_radsw_kgb18
 This module sets up absorption coeffients for band 18: 4000-4650 cm-1 (low - h2o,ch4; high - ch4)
 
module  module_radsw_kgb19
 This module sets up absorption coeffients for band 19: 4650-5150 cm-1 (low - h2o,co2; high - co2)
 
module  module_radsw_kgb20
 This module sets up absorption coeffients for band 20: 5150-6150 cm-1 (low - h2o; high - h2o)
 
module  module_radsw_kgb21
 This module sets up absorption coeffients for band 21: 6150-7700 cm-1 (low - h2o,co2; high - h2o,co2)
 
module  module_radsw_kgb22
 This module sets up absorption coeffients for band 22: 7700-8050 cm-1 (low - h2o, o2; high - o2)
 
module  module_radsw_kgb23
 This module sets up absorption coeffients for band 23: 8050-12850 cm-1 (low - h2o; high - nothing)
 
module  module_radsw_kgb24
 This module sets up absorption coeffients for band 24: 12850-16000 cm-1 (low - h2o, o2; high - o2)
 
module  module_radsw_kgb25
 This module sets up absorption coeffients for band 25: 16000-22650 cm-1 (low - h2o; high - nothing)
 
module  module_radsw_kgb26
 This module sets up absorption coeffients for band 26: 22650-29000 cm-1 (low - nothing; high - nothing)
 
module  module_radsw_kgb27
 This module sets up absorption coeffients for band 27: 29000-38000 cm-1 (low - o3; high - o3)
 
module  module_radsw_kgb28
 This module sets up absorption coeffients for band 28: 38000-50000 cm-1 (low - o3,o2; high - o3,o2)
 
module  module_radsw_kgb29
 This module sets up absorption coeffients for band 29: 820-2600 cm-1 (low - h2o; high - co2)
 
module  module_radsw_parameters
 This module is for specifying the band structures and program parameters used by the RRTMG-SW scheme.
 

Functions/Subroutines

subroutine, public rrtmg_sw::rrtmg_sw_run (plyr, plvl, tlyr, tlvl, qlyr, olyr, gasvmr_co2, gasvmr_n2o, gasvmr_ch4, gasvmr_o2, gasvmr_co, gasvmr_cfc11, gasvmr_cfc12, gasvmr_cfc22, gasvmr_ccl4, icseed, aeraod, aerssa, aerasy, sfcalb_nir_dir, sfcalb_nir_dif, sfcalb_uvis_dir, sfcalb_uvis_dif, dzlyr, delpin, de_lgth, alpha, cosz, solcon, nday, idxday, npts, nlay, nlp1, lprnt, inc_minor_gas, iswcliq, iswcice, isubcsw, iovr, top_at_1, iswmode, cld_cf, lsswr, iovr_rand, iovr_maxrand, iovr_max, iovr_dcorr, iovr_exp, iovr_exprand, hswc, topflx, sfcflx, cldtau, hsw0, hswb, flxprf, fdncmp, cld_lwp, cld_ref_liq, cld_iwp, cld_ref_ice, cld_rwp, cld_ref_rain, cld_swp, cld_ref_snow, cld_od, cld_ssa, cld_asy, errmsg, errflg)
 
subroutine, public rrtmg_sw::rswinit (me, rad_hr_units, inc_minor_gas, iswcliq, isubcsw, iovr, iovr_rand, iovr_maxrand, iovr_max, iovr_dcorr, iovr_exp, iovr_exprand, iswmode, errflg, errmsg)
 This subroutine initializes non-varying module variables, conversion factors, and look-up tables.
 

Detailed Description

This module includes NCEP's modifications of the RRTMG-SW radiation code from AER.

The SW radiation model in the current NOAA Environmental Modeling System (NEMS) was adapted from the RRTM radiation model developed by AER Inc. ([41]; [143]). It contains 14 spectral bands spanning a spectral wavenumber range of \(50000-820 cm^{-1}\) (corresponding to a wavelength range \(0.2-12.2\mu m\)), each spectral band focuses on a specific set of atmospheric absorbing species as shown in Table 1. To achieve great computation efficiency while at the same time to maintain a high degree of accuracy, the RRTM radiation model employs a corrected-k distribution method (i.e. mapping the highly spectral changing absorption coefficient, k, into a monotonic and smooth varying cumulative probability function, g). In the RRTM-SW, there are 16 unevenly distributed g points for each of the 14 bands for a total of 224 g points. The GCM version of the code (RRTMG-SW) uses a reduced number (various between 2 to 16) of g points for each of the bands that totals to 112 instead of the full set of 224. To get high quality for the scheme, many advanced techniques are used in RRTM such as carefully selecting the band structure to handle various major (key-species) and minor absorbers; deriving a binary parameter for a paired key molecular species in the same domain; and using two pressure regions (dividing level is at about 96mb) for optimal treatment of various species, etc.

Table 1. RRTMG-SW spectral bands and the corresponding absorbing species

Band # Wavenumber Range Lower Atm (Key) Lower Atm (Minor) Mid/Up Atm (Key) Mid/Up Atm (Minor)
16 2600-3250 H2O,CH4 CH4
17 3250-4000 H2O,CO2 H2O,CO2
18 4000-4650 H2O,CH4 CH4
19 4650-5150 H2O,CO2 CO2
20 5150-6150 H2O CH4 H2O CH4
21 6150-7700 H2O,CO2 H2O,CO2
22 7700-8050 H2O,O2 O2
23 8050-12850 H2O —
24 12850-16000 H2O,O2 O3 O2 O3
25 16000-22650 H2O O3 — O3
26 22650-29000 — —
27 29000-38000 O3 O3
28 38000-50000 O3,O2 O3,O2
29 820-2600 H2O CO2 CO2 H2O

The RRTMG-SW package includes three files:

Author
Eli J. Mlawer, emlaw.nosp@m.er@a.nosp@m.er.co.nosp@m.m
Jennifer S. Delamere, jdela.nosp@m.mer@.nosp@m.aer.c.nosp@m.om
Michael J. Iacono, miaco.nosp@m.no@a.nosp@m.er.co.nosp@m.m
Shepard A. Clough
Version
NCEP SW v5.1 Nov 2012 -RRTMG-SW v3.8

The authors wish to acknowledge the contributions of the following people: Steven J. Taubman, Karen Cady-Pereira, Patrick D. Brown, Ronald E. Farren, Luke Chen, Robert Bergstrom.

Argument Table

RRTMG Shortwave Radiation Scheme General Algorithm

Function/Subroutine Documentation

◆ rrtmg_sw_run()

subroutine, public rrtmg_sw::rrtmg_sw_run ( real (kind=kind_phys), dimension(:,:), intent(in)  plyr,
real (kind=kind_phys), dimension(:,:), intent(in)  plvl,
real (kind=kind_phys), dimension(:,:), intent(in)  tlyr,
real (kind=kind_phys), dimension(:,:), intent(in)  tlvl,
real (kind=kind_phys), dimension(:,:), intent(in)  qlyr,
real (kind=kind_phys), dimension(:,:), intent(in)  olyr,
real(kind=kind_phys), dimension(:,:), intent(in)  gasvmr_co2,
real(kind=kind_phys), dimension(:,:), intent(in)  gasvmr_n2o,
real(kind=kind_phys), dimension(:,:), intent(in)  gasvmr_ch4,
real(kind=kind_phys), dimension(:,:), intent(in)  gasvmr_o2,
real(kind=kind_phys), dimension(:,:), intent(in)  gasvmr_co,
real(kind=kind_phys), dimension(:,:), intent(in)  gasvmr_cfc11,
real(kind=kind_phys), dimension(:,:), intent(in)  gasvmr_cfc12,
real(kind=kind_phys), dimension(:,:), intent(in)  gasvmr_cfc22,
real(kind=kind_phys), dimension(:,:), intent(in)  gasvmr_ccl4,
integer, dimension(:), intent(in)  icseed,
real(kind=kind_phys), dimension(:,:,:), intent(in)  aeraod,
real(kind=kind_phys), dimension(:,:,:), intent(in)  aerssa,
real(kind=kind_phys), dimension(:,:,:), intent(in)  aerasy,
real (kind=kind_phys), dimension(:), intent(in)  sfcalb_nir_dir,
real (kind=kind_phys), dimension(:), intent(in)  sfcalb_nir_dif,
real (kind=kind_phys), dimension(:), intent(in)  sfcalb_uvis_dir,
real (kind=kind_phys), dimension(:), intent(in)  sfcalb_uvis_dif,
real (kind=kind_phys), dimension(:,:), intent(in)  dzlyr,
real (kind=kind_phys), dimension(:,:), intent(in)  delpin,
real (kind=kind_phys), dimension(npts), intent(in)  de_lgth,
real (kind=kind_phys), dimension(npts,nlay), intent(in)  alpha,
real (kind=kind_phys), dimension(npts), intent(in)  cosz,
real (kind=kind_phys), intent(in)  solcon,
integer, intent(in)  nday,
integer, dimension(:), intent(in)  idxday,
integer, intent(in)  npts,
integer, intent(in)  nlay,
integer, intent(in)  nlp1,
logical, intent(in)  lprnt,
logical, intent(in)  inc_minor_gas,
integer, intent(in)  iswcliq,
integer, intent(in)  iswcice,
integer, intent(in)  isubcsw,
integer, intent(in)  iovr,
logical, intent(in)  top_at_1,
integer, intent(in)  iswmode,
real (kind=kind_phys), dimension(:,:), intent(in)  cld_cf,
logical, intent(in)  lsswr,
integer, intent(in)  iovr_rand,
integer, intent(in)  iovr_maxrand,
integer, intent(in)  iovr_max,
integer, intent(in)  iovr_dcorr,
integer, intent(in)  iovr_exp,
integer, intent(in)  iovr_exprand,
real (kind=kind_phys), dimension(:,:), intent(inout)  hswc,
type (topfsw_type), dimension(:), intent(inout)  topflx,
type (sfcfsw_type), dimension(:), intent(inout)  sfcflx,
real (kind=kind_phys), dimension(:,:), intent(inout)  cldtau,
real (kind=kind_phys), dimension(:,:), intent(inout), optional  hsw0,
real (kind=kind_phys), dimension(:,:,:), intent(inout), optional  hswb,
type (profsw_type), dimension(:,:), intent(inout), optional  flxprf,
type (cmpfsw_type), dimension(:), intent(inout), optional  fdncmp,
real (kind=kind_phys), dimension(:,:), intent(in), optional  cld_lwp,
real (kind=kind_phys), dimension(:,:), intent(in), optional  cld_ref_liq,
real (kind=kind_phys), dimension(:,:), intent(in), optional  cld_iwp,
real (kind=kind_phys), dimension(:,:), intent(in), optional  cld_ref_ice,
real (kind=kind_phys), dimension(:,:), intent(in), optional  cld_rwp,
real (kind=kind_phys), dimension(:,:), intent(in), optional  cld_ref_rain,
real (kind=kind_phys), dimension(:,:), intent(in), optional  cld_swp,
real (kind=kind_phys), dimension(:,:), intent(in), optional  cld_ref_snow,
real (kind=kind_phys), dimension(:,:), intent(in), optional  cld_od,
real (kind=kind_phys), dimension(:,:), intent(in), optional  cld_ssa,
real (kind=kind_phys), dimension(:,:), intent(in), optional  cld_asy,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)
  • Compute solar constant adjustment factor (s0fac) according to solcon.
  • Initial output arrays (and optional) as zero.
  • Change random number seed value for each radiation invocation (isubcsw =1 or 2).
  • Prepare surface albedo: bm,df - dir,dif; 1,2 - nir,uvv.
  • Prepare atmospheric profile for use in rrtm.
  • Set absorber and gas column amount, convert from volume mixing ratio to molec/cm2 based on coldry (scaled to 1.0e-20)
    • colamt(nlay,maxgas):column amounts of absorbing gases 1 to maxgas are for h2o,co2,o3,n2o,ch4,o2,co, respectively ( \( mol/cm^2 \))
  • Read aerosol optical properties from 'aerosols'.
  • Read cloud optical properties from 'clouds'.
  • Compute fractions of clear sky view:
    • random overlapping
    • max/ran overlapping
    • maximum overlapping
  • For cloudy sky column, call cldprop() to compute the cloud optical properties for each cloudy layer.
  • Call setcoef() to compute various coefficients needed in radiative transfer calculations.
  • Call taumol() to calculate optical depths for gaseous absorption and rayleigh scattering
  • Call the 2-stream radiation transfer model:
    • if GFS_typedefs::isubcsw .le.0, using standard cloud scheme, call spcvrtc().
    • if GFS_typedefs::isubcsw .gt.0, using mcica cloud scheme, call spcvrtm().
  • Save outputs.

Definition at line 493 of file radsw_main.F90.

◆ rswinit()

subroutine, public rrtmg_sw::rswinit ( integer, intent(in)  me,
integer, intent(in)  rad_hr_units,
logical, intent(in)  inc_minor_gas,
integer, intent(in)  iswcliq,
integer, intent(in)  isubcsw,
integer, intent(in)  iovr,
integer, intent(in)  iovr_rand,
integer, intent(in)  iovr_maxrand,
integer, intent(in)  iovr_max,
integer, intent(in)  iovr_dcorr,
integer, intent(in)  iovr_exp,
integer, intent(in)  iovr_exprand,
integer, intent(in)  iswmode,
integer, intent(out)  errflg,
character(len=*), intent(out)  errmsg 
)

This subroutine initializes non-varying module variables, conversion factors, and look-up tables.

Parameters
meprint control for parallel process

rswinit General Algorithm

  • Setup constant factors for heating rate the 1.0e-2 is to convert pressure from mb to \(N/m^2\) .
  • Define exponential lookup tables for transmittance.

Definition at line 1390 of file radsw_main.F90.