GFS Operational Physics Documentation  Revision: 81451

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

Detailed Description

This module includes NCEP's modifications of the rrtmg-lw radiation code from AER.

The RRTM-LW package includes three files:

All the LW radiation subprograms become contained subprograms in module 'module_radlw_main' and many of them are not directly accessable from places outside the module.

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 LW v5.1 Nov 2012 -RRTMG-LW v4.82

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.

Collaboration diagram for module_radlw_main:

Modules

 module_radlw_kgbnn
 

Modules

module  module_radlw_avplank
 This module contains plank flux data.
 
module  module_radlw_ref
 This module contains reference temperature and pressure.
 
module  module_radlw_cldprlw
 This module contains cloud property coefficients.
 
module  module_radlw_parameters
 This module contains LW band parameters set up.
 
module  module_radsw_ref
 This module contains reference temperature and pressure.
 
module  module_radsw_cldprtb
 This module contains coefficients of cloud optical properties for each of the spectral bands.
 
module  module_radsw_sflux
 This module contains spectral distribution of solar radiation flux used to obtain the incoming solar flux at toa.
 

Functions/Subroutines

subroutine, public module_radlw_main::rlwinit
 This subroutine performs calculations necessary for the initialization of the longwave model. lookup tables are computed for use in the lw radiative transfer, and input absorption coefficient data for each spectral band are reduced from 256 g-point intervals to 140. More...
 
subroutine module_radlw_main::mcica_subcol
 This suroutine computes sub-colum cloud profile flag array. More...
 
subroutine module_radlw_main::setcoef
 This subroutine computes various coefficients needed in radiative transfer calculations. More...
 
subroutine module_radlw_main::rtrn
 This subroutine computes the upward/downward radiative fluxes, and heating rates for both clear or cloudy atmosphere. Clouds assumed as randomly overlaping in a vertical column. More...
 
subroutine module_radlw_main::taumol
 This subroutine contains optical depths developed for the rapid radiative transfer model. More...
 
subroutine taugb01
 band 1: 10-350 cm-1 (low key - h2o; low minor - n2); (high key - h2o; high minor - n2)
 

Variables

real(kind=kind_phys), parameter module_radlw_main::oneminus = 1.0-eps
 
real(kind=kind_phys), parameter module_radlw_main::cldmin = 1.0e-80
 
real(kind=kind_phys), parameter module_radlw_main::bpade = 1.0/0.278
 
real(kind=kind_phys), parameter module_radlw_main::stpfac = 296.0/1013.0
 
real(kind=kind_phys), parameter module_radlw_main::wtdiff = 0.5
 
real(kind=kind_phys), parameter module_radlw_main::tblint = ntbl
 
real(kind=kind_phys), parameter module_radlw_main::f_zero = 0.0
 
real(kind=kind_phys), parameter module_radlw_main::f_one = 1.0
 
real(kind=kind_phys), parameter module_radlw_main::amdw = con_amd/con_amw
 
real(kind=kind_phys), parameter module_radlw_main::amdo3 = con_amd/con_amo3
 
integer, dimension(nbands) module_radlw_main::nspa
 
integer, dimension(nbands) module_radlw_main::nspb
 
real(kind=kind_phys), dimension(nbands) module_radlw_main::a0
 
real(kind=kind_phys), dimension(nbands) module_radlw_main::a1
 
real(kind=kind_phys), dimension(nbands) module_radlw_main::a2
 
logical module_radlw_main::lhlwb = .false.
 
logical module_radlw_main::lhlw0 = .false.
 
logical module_radlw_main::lflxprf = .false.
 
real(kind=kind_phys) module_radlw_main::fluxfac
 
real(kind=kind_phys) module_radlw_main::heatfac
 
real(kind=kind_phys), dimension(nbands) module_radlw_main::semiss0
 
real(kind=kind_phys), dimension(0:ntbl) module_radlw_main::tau_tbl
 
real(kind=kind_phys), dimension(0:ntbl) module_radlw_main::exp_tbl
 
real(kind=kind_phys), dimension(0:ntbl) module_radlw_main::tfn_tbl
 
integer, parameter module_radlw_main::ipsdlw0 = ngptlw
 
subroutine, public module_radlw_main::lwrad
 This subroutine is the main LW radiation routine. More...
 
subroutine module_radlw_main::cldprop
 This subroutine computes the cloud optical depth(s) for each cloudy layer and g-point interval. More...
 
subroutine module_radlw_main::rtrnmr
 This subroutine computes the upward/downward radiative fluxes, and heating rates for both clear or cloudy atmosphere. Clouds are assumed as in maximum-randomly overlaping in a vertical column. More...
 
subroutine module_radlw_main::rtrnmc
 This subroutine computes the upward/downward radiative fluxes, and heating rates for both clear or cloudy atmosphere.Clouds are treated with the mcica stochastic approach. More...
 

Function/Subroutine Documentation

subroutine module_radlw_main::cldprop ( )
private

This subroutine computes the cloud optical depth(s) for each cloudy layer and g-point interval.

Parameters
cfraclayer cloud fraction
— for ilwcliq > 0 (prognostic cloud scheme) - - -
cliqplayer in-cloud liq water path ( \(g/m^2\))
reliqmean eff radius for liq cloud (micron)
ciceplayer in-cloud ice water path ( \(g/m^2\))
reicemean eff radius for ice cloud (micron)
cdat1layer rain drop water path ( \(g/m^2\))
cdat2effective radius for rain drop (micron)
cdat3layer snow flake water path( \(g/m^2\))
cdat4mean effective radius for snow flake(micron)
— for ilwcliq = 0 (diagnostic cloud scheme) - - -
cliqpnot used
cicepnot used
reliqnot used
reicenot used
cdat1layer cloud optical depth
cdat2layer cloud single scattering albedo
cdat3layer cloud asymmetry factor
cdat4optional use
nlaynumber of layer number
nlp1number of veritcal levels
ipseedpermutation seed for generating random numbers (isubclw>0)
cldfmccloud fraction for each sub-column
taucldcloud optical depth for bands (non-mcica)

General Algorithm

  1. Compute cloud radiative properties for a cloudy column:
    - Compute cloud radiative properties for rain and snow (tauran,tausnw)
    - Calculation of absorption coefficients due to water clouds(tauliq)
    - Calculation of absorption coefficients due to ice clouds (tauice).
    - For prognostic cloud scheme: sum up the cloud optical property:
    \( taucld=tauice+tauliq+tauran+tausnw \)
  2. if physparam::isubclw > 0, call mcica_subcol() to distribute cloud properties to each g-point.

Definition at line 1487 of file radlw_main.f.

References module_radlw_cldprlw::absice1, module_radlw_cldprlw::absice2, module_radlw_cldprlw::absice3, module_radlw_cldprlw::absliq1, module_radlw_cldprlw::absrain, module_radlw_cldprlw::abssnow0, physparam::ilwcice, physparam::ilwcliq, module_radlw_cldprlw::ipat, physparam::isubclw, mcica_subcol(), module_radlw_parameters::nbands, and module_radlw_parameters::ngptlw.

Referenced by lwrad().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine, public module_radlw_main::lwrad ( )

This subroutine is the main LW radiation routine.

Parameters
plyrmodel layer mean pressure in mb
plvlmodel interface pressure in mb
tlyrmodel layer mean temperature in K
tlvlmodel interface temperature in K
qlyrlayer specific humidity in gm/gm
olyrlayer ozone concentration in gm/gm
gasvmratmospheric gases amount:
(:,:,1) - co2 volume mixing ratio
(:,:,2) - n2o volume mixing ratio
(:,:,3) - ch4 volume mixing ratio
(:,:,4) - o2 volume mixing ratio
(:,:,5) - co volume mixing ratio
(:,:,6) - cfc11 volume mixing ratio
(:,:,7) - cfc12 volume mixing ratio
(:,:,8) - cfc22 volume mixing ratio
(:,:,9) - ccl4 volume mixing ratio
cloudslayer cloud profile
for ilwcliq > 0 —
(:,:,1) - layer total cloud fraction
(:,:,2) - layer in-cloud liq water path ( \( g/m^2 \))
(:,:,3) - mean eff radius for liq cloud (micron)
(:,:,4) - layer in-cloud ice water path ( \( g/m^2 \))
(:,:,5) - mean eff radius for ice cloud (micron)
(:,:,6) - layer rain drop water path ( \( g/m^2 \))
(:,:,7) - mean eff radius for rain drop (micron)
(:,:,8) - layer snow flake water path ( \( g/m^2 \))
(:,:,9) - mean eff radius for snow flake(micron)
for ilwcliq = 0 —
(:,:,1) - layer total cloud fraction
(:,:,2) - layer cloud optical depth
(:,:,3) - layer cloud single scattering albedo
(:,:,4) - layer cloud asymmetry factor
icseedauxiliary special cloud related array.
aerosolsaerosol optical properties
(:,:,:,1) - optical depth
(:,:,:,2) - single scattering albedo
(:,:,:,3) - asymmetry parameter
sfemissurface emissivity
sfgtmpsurface ground temperature in K
nptstotal number of horizontal points
nlay,nlp1total number of vertical layers, levels
lprntcntl flag for diagnostic print out
hlwctotal sky heating rate in k/day or k/sec
topflxradiation fluxes at top, components
upfxc - total sky upward flux at top ( \( w/m^2 \))
upfx0 - clear sky upward flux at top ( \( w/m^2 \))
sfcflxradiation fluxes at sfc, components
upfxc - total sky upward flux at sfc ( \( w/m^2 \))
dnfxc - total sky downward flux at sfc ( \( w/m^2 \))
upfx0 - clear sky upward flux at sfc ( \( w/m^2 \))
dnfx0 - clear sky downward flux at sfc ( \( w/m^2 \))
hlwbspectral band total sky heating rates
hlw0clear sky heating rates (k/sec or k/day)
flxprflevel radiation fluxes ( \( w/m^2 \)), components
dnfxc - total sky downward flux
upfxc - total sky upward flux
dnfx0 - clear sky downward flux
upfx0 - clear sky upward flux

General Algorithm

  1. Change random number seed value for each radiation invocation (isubclw =1 or 2).
  2. Read surface emissivity.
  3. Prepare atmospheric profile for use in rrtm.
  4. Set absorber amount for h2o, co2, and o3.
  5. Set up column amount for rare gases n2o,ch4,o2,co,ccl4,cf11,cf12, cf22, convert from volume mixing ratio to molec/cm2 based on coldry (scaled to 1.0e-20).
  6. Set aerosol optical properties.
  7. Read cloud optical properties
  8. Compute precipitable water vapor for diffusivity angle adjustments.
  9. Compute column amount for broadening gases.
  10. Compute diffusivity angle adjustments.
  11. For cloudy atmosphere, call cldprop() to set cloud optical properties.
  12. Calling setcoef() to compute various coefficients needed in radiative transfer calculations.
  13. Call taumol() to calculte the gaseous optical depths and Plank fractions for each longwave spectral band.
  14. Call the radiative transfer routine based on cloud scheme selection. Compute the upward/downward radiative fluxes, and heating rates for both clear or cloudy atmosphere.
    - call rtrn(): clouds are assumed as randomly overlaping in a vertical column
    - call rtrnmr(): clouds are assumed as in maximum-randomly overlaping in a vertical column;
    - call rtrnmc(): clouds are treated with the mcica stochastic approach.
  15. Save outputs.

Definition at line 455 of file radlw_main.f.

References cldprop(), physcons::con_amd, physcons::con_amw, physcons::con_avgd, physcons::con_g, physparam::ilwcliq, physparam::ilwrgas, physparam::iovrlw, physparam::isubclw, physparam::ivflip, module_radlw_parameters::maxgas, module_radlw_parameters::nbands, rtrn(), rtrnmc(), rtrnmr(), setcoef(), and taumol().

Referenced by module_radiation_driver::grrad().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine module_radlw_main::mcica_subcol ( )
private

This suroutine computes sub-colum cloud profile flag array.

Parameters
cldflayer cloud fraction
nlaynumber of model vertical layers
ipseedpermute seed for random num generator
lcloudysub-colum cloud profile flag array

Definition at line 1795 of file radlw_main.f.

References physparam::iovrlw, and module_radlw_parameters::ngptlw.

Referenced by cldprop().

Here is the caller graph for this function:

subroutine, public module_radlw_main::rlwinit ( )

This subroutine performs calculations necessary for the initialization of the longwave model. lookup tables are computed for use in the lw radiative transfer, and input absorption coefficient data for each spectral band are reduced from 256 g-point intervals to 140.

Parameters
meprint control for parallel process

Definition at line 1262 of file radlw_main.f.

References physcons::con_cp, physcons::con_g, physparam::icldflg, physparam::ilwcliq, physparam::ilwrate, physparam::ilwrgas, physparam::iovrlw, physparam::isubclw, and module_radlw_parameters::ntbl.

Referenced by module_radiation_driver::radinit().

Here is the caller graph for this function:

subroutine module_radlw_main::rtrn ( )
private

This subroutine computes the upward/downward radiative fluxes, and heating rates for both clear or cloudy atmosphere. Clouds assumed as randomly overlaping in a vertical column.

Original Code Description: this program calculates the upward fluxes, downward fluxes, and heating rates for an arbitrary clear or cloudy atmosphere. The input to this program is the atmospheric profile, all Planck function information, and the cloud fraction by layer. A variable diffusivity angle (secdif) is used for the angle integration. Bands 2-3 and 5-9 use a value for secdif that varies from 1.50 to 1.80 as a function of the column water vapor, and other bands use a value of 1.66. The gaussian weight appropriate to this angle (wtdiff =0.5) is applied here. Note that use of the emissivity angle for the flux integration can cause errors of 1 to 4 \(W/m^2\) within cloudy layers. Clouds are treated with a random cloud overlap method.

Parameters
semisslw surface emissivity
delplayer pressure thickness (mb)
cldfrclayer cloud fraction
taucldlayer cloud opt depth
tautottotal optical depth (gas+aerosols)
pklayintegrated planck function at lay temp
pklevintegrated planck func at lev temp
fracsplanck fractions
secdifsecant of diffusivity angle
nlaynumber of vertical layers
nlp1number of vertical levels (interfaces)
totufluxtotal sky upward flux \((w/m^2)\)
totdfluxtotal sky downward flux \((w/m^2)\)
htrtotal sky heating rate (k/sec or k/day)
totuclflclear sky upward flux \((w/m^2)\)
totdclflclear sky downward flux \((w/m^2)\)
htrclclear sky heating rate (k/sec or k/day)
htrbspectral band lw heating rate (k/day)
  1. Downward radiative transfer loop.
  2. Compute spectral emissivity & reflectance, include the contribution of spectrally varying longwave emissivity and reflection from the surface to the upward radiative transfer.
  3. Compute total sky radiance.
  4. Compute clear sky radiance
  5. Upward radiative transfer loop.
  6. Process longwave output from band for total and clear streams. Calculate upward, downward, and net flux.

Definition at line 2285 of file radlw_main.f.

References module_radlw_parameters::nbands, module_radlw_parameters::ngb, and module_radlw_parameters::ngptlw.

Referenced by lwrad().

Here is the caller graph for this function:

subroutine module_radlw_main::rtrnmc ( )
private

This subroutine computes the upward/downward radiative fluxes, and heating rates for both clear or cloudy atmosphere.Clouds are treated with the mcica stochastic approach.

Parameters
semisslw surface emissivity
delplayer pressure thickness (mb)
cldfmclayer cloud fraction (sub-column)
taucldlayer cloud opt depth
tautottotal optical depth (gas+aerosols)
pklayintegrated planck func at lay temp
pklevintegrated planck func at lev temp
fracsplanck fractions
secdifsecant of diffusivity angle
nlaynumber of vertical layers
nlp1number of vertical levels (interfaces)
totufluxtotal sky upward flux \((w/m^2)\)
totdfluxtotal sky downward flux \((w/m^2)\)
htrtotal sky heating rate (k/sec or k/day)
totuclflclear sky upward flux \((w/m^2)\)
totdclflclear sky downward flux \((w/m^2)\)
htrclclear sky heating rate (k/sec or k/day)
htrbspectral band lw heating rate (k/day)

General Algorithm

  1. Downward radiative transfer loop.
    - Clear sky, gases contribution
    - Total sky, gases+clouds contribution
    - Cloudy layer
    - Total sky radiance
    - Clear sky radiance
  2. Compute spectral emissivity & reflectance, include the contribution of spectrally varying longwave emissivity and reflection from the surface to the upward radiative transfer.
  3. Compute total sky radiance
  4. Compute clear sky radiance
  5. Upward radiative transfer loop
    - Compute total sky radiance
    - Compute clear sky radiance
  6. Process longwave output from band for total and clear streams. Calculate upward, downward, and net flux.

Definition at line 3261 of file radlw_main.f.

References module_radlw_parameters::nbands, module_radlw_parameters::ngb, and module_radlw_parameters::ngptlw.

Referenced by lwrad().

Here is the caller graph for this function:

subroutine module_radlw_main::rtrnmr ( )
private

This subroutine computes the upward/downward radiative fluxes, and heating rates for both clear or cloudy atmosphere. Clouds are assumed as in maximum-randomly overlaping in a vertical column.

Parameters
semisslw surface emissivity
delplayer pressure thickness (mb)
cldfrclayer cloud fraction
taucldlayer cloud opt depth
tautottotal optical depth (gas+aerosols)
pklayintegrated planck func at lay temp
pklevintegrated planck func at lev temp
fracsplanck fractions
secdifsecant of diffusivity angle
nlaynumber of vertical layers
nlp1number of vertical levels (interfaces)
totufluxtotal sky upward flux ( \(w/m^2\))
totdfluxtotal sky downward flux ( \(w/m^2\))
htrtotal sky heating rate (k/sec or k/day)
totuclflclear sky upward flux ( \(w/m^2\))
totdclflclear sky downward flux ( \(w/m^2\))
htrclclear sky heating rate (k/sec or k/day)
htrbspectral band lw heating rate (k/day)

General Algorithm

  1. Setup maximum/random cloud overlap.
  2. Initialize for radiative transfer
  3. Downward radiative transfer loop:
    • cloudy layer
    • total sky radiance
    • clear sky radiance
  4. Compute spectral emissivity & reflectance, include the contribution of spectrally varying longwave emissivity and reflection from the surface to the upward radiative transfer.
  5. Compute total sky radiance.
  6. Compute clear sky radiance.
  7. Upward radiative transfer loop:
    • cloudy layer radiance
    • total sky radiance
    • clear sky radiance
  8. Process longwave output from band for total and clear streams. calculate upward, downward, and net flux.

Definition at line 2668 of file radlw_main.f.

References module_radlw_parameters::nbands, module_radlw_parameters::ngb, and module_radlw_parameters::ngptlw.

Referenced by lwrad().

Here is the caller graph for this function:

subroutine module_radlw_main::setcoef ( )
private

This subroutine computes various coefficients needed in radiative transfer calculations.

Parameters
pavellayer pressure (mb)
tavellayer temperature (K)
tzlevel(interface) temperatures (K)
stempsurface ground temperature (K)
h2ovmrlayer w.v. volumn mixing ratio (kg/kg)
colamtcolumn amounts of absorbing gases. 2nd indices range: 1-maxgas, for watervapor,carbon dioxide, ozone, nitrous oxide, methane,oxigen, carbon monoxide,etc. \((mol/cm^2)\)
coldrydry air column amount
colbrdcolumn amount of broadening gases
nlaytotal number of vertical layers
nlp1total number of vertical levels
laytroptropopause layer index (unitless)
pklayintegrated planck func at lay temp
pklevintegrated planck func at lev temp
jpindices of lower reference pressure
jt,jt1indices of lower reference temperatures
rfrateref ratios of binary species param
(:,m,:)m=1-h2o/co2,2-h2o/o3,3-h2o/n2o, 4-h2o/ch4,5-n2o/co2,6-o3/co2
(:,:,n)n=1,2: the rates of ref press at the 2 sides of the layer
facijfactors multiply the reference ks, i,j=0/1 for lower/higher of the 2 appropriate temperatures and altitudes.
selffacscale factor for w. v. self-continuum equals (w. v. density)/(atmospheric density at 296k and 1013 mb)
selffracfactor for temperature interpolation of reference w. v. self-continuum data
indselfindex of lower ref temp for selffac
forfacscale factor for w. v. foreign-continuum
forfracfactor for temperature interpolation of reference w.v. foreign-continuum data
indforindex of lower ref temp for forfac
minorfracfactor for minor gases
scaleminor,scaleminorn2scale factors for minor gases
indminorindex of lower ref temp for minor gases

Definition at line 1991 of file radlw_main.f.

References module_radlw_parameters::nbands, and module_radlw_avplank::totplnk.

Referenced by lwrad().

Here is the caller graph for this function:

subroutine module_radlw_main::taumol ( )
private

This subroutine contains optical depths developed for the rapid radiative transfer model.

This file contains the subroutines taugbn (where n goes from 1 to 16). taugbn calculates the optical depths and planck fractions per g-value and layer for band n.

Parameters
laytroptropopause layer index (unitless) layer at which switch is made for key species
pavellayer pressures (mb)
coldrycolumn amount for dry air \((mol/cm^2)\)
colamtcolumn amounts of h2o, co2, o3, n2o, ch4,o2, co \((mol/cm^2)\)
colbrdcolumn amount of broadening gases
wxcross-section amounts \((mol/cm^2)\)
tauaeraerosol optical depth
rfratereference ratios of binary species parameter
(:,m,:)m=1-h2o/co2,2-h2o/o3,3-h2o/n2o,4-h2o/ch4, 5-n2o/co2,6-o3/co2
(:,:,n)n=1,2: the rates of ref press at the 2 sides of the layer
facijfactors multiply the reference ks, i,j of 0/1 for lower/higher of the 2 appropriate temperatures and altitudes
jpindex of lower reference pressure
jt,jt1indices of lower reference temperatures for pressure levels jp and jp+1, respectively
selffacscale factor for water vapor self-continuum equals (water vapor density)/(atmospheric density at 296k and 1013 mb)
selffracfactor for temperature interpolation of reference water vapor self-continuum data
indselfindex of lower reference temperature for the self-continuum interpolation
forfacscale factor for w. v. foreign-continuum
forfracfactor for temperature interpolation of reference w.v. foreign-continuum data
indforindex of lower reference temperature for the foreign-continuum interpolation
minorfracfactor for minor gases
scaleminor,scaleminorn2scale factors for minor gases
indminorindex of lower reference temperature for minor gases
nlaytotal number of layers
fracsplanck fractions
tautottotal optical depth (gas+aerosols)

Definition at line 3675 of file radlw_main.f.

References module_radlw_parameters::ngb, module_radlw_parameters::ngptlw, taugb01(), taugb02(), taugb03(), taugb04(), taugb05(), taugb06(), taugb07(), taugb08(), taugb09(), taugb10(), taugb11(), taugb12(), taugb13(), taugb14(), taugb15(), and taugb16().

Referenced by lwrad().

Here is the call graph for this function:

Here is the caller graph for this function: