This module includes NCEP's modifications of the rrtmg-lw radiation code from AER. More...
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.
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.
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 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. | |
Functions/Subroutines | |
subroutine, public | module_radlw_main::rlwinit (me) |
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 (cldf, nlay, ipseed, lcloudy ) |
This suroutine computes sub-colum cloud profile flag array. More... | |
subroutine | module_radlw_main::setcoef (pavel, tavel, tz, stemp, h2ovmr, colamt, coldry, colbrd, nlay, nlp1, laytrop, pklay, pklev, jp, jt, jt1, rfrate, fac00, fac01, fac10, fac11, selffac, selffrac, indself, forfac, forfrac, indfor, minorfrac, scaleminor, scaleminorn2, indminor ) |
This subroutine computes various coefficients needed in radiative transfer calculations. More... | |
subroutine | module_radlw_main::rtrn (semiss, delp, cldfrc, taucld, tautot, pklay, pklev, fracs, secdif, nlay, nlp1, totuflux, totdflux, htr, totuclfl, totdclfl, htrcl, htrb ) |
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 (laytrop, pavel, coldry, colamt, colbrd, wx, tauaer, rfrate, fac00, fac01, fac10, fac11, jp, jt, jt1, selffac, selffrac, indself, forfac, forfrac, indfor, minorfrac, scaleminor, scaleminorn2, indminor, nlay, fracs, tautot ) |
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::eps = 1.0e-6 |
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 (plyr, plvl, tlyr, tlvl, qlyr, olyr, gasvmr, clouds, icseed, aerosols, sfemis, sfgtmp, npts, nlay, nlp1, lprnt, hlwc, topflx, sfcflx, HLW0, HLWB, FLXPRF ) |
This subroutine is the main LW radiation routine. More... | |
subroutine | module_radlw_main::cldprop (cfrac, cliqp, reliq, cicep, reice, cdat1, cdat2, cdat3, cdat4, nlay, nlp1, ipseed, cldfmc, taucld ) |
This subroutine computes the cloud optical depth(s) for each cloudy layer and g-point interval. More... | |
subroutine | module_radlw_main::rtrnmr (semiss, delp, cldfrc, taucld, tautot, pklay, pklev, fracs, secdif, nlay, nlp1, totuflux, totdflux, htr, totuclfl, totdclfl, htrcl, htrb ) |
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 (semiss, delp, cldfmc, taucld, tautot, pklay, pklev, fracs, secdif, nlay, nlp1, totuflux, totdflux, htr, totuclfl, totdclfl, htrcl, htrb ) |
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... | |
|
private |
This subroutine computes the cloud optical depth(s) for each cloudy layer and g-point interval.
cfrac | layer cloud fraction — for ilwcliq > 0 (prognostic cloud scheme) - - - |
cliqp | layer in-cloud liq water path ( \(g/m^2\)) |
reliq | mean eff radius for liq cloud (micron) |
cicep | layer in-cloud ice water path ( \(g/m^2\)) |
reice | mean eff radius for ice cloud (micron) |
cdat1 | layer rain drop water path ( \(g/m^2\)) |
cdat2 | effective radius for rain drop (micron) |
cdat3 | layer snow flake water path( \(g/m^2\)) |
cdat4 | mean effective radius for snow flake(micron) — for ilwcliq = 0 (diagnostic cloud scheme) - - - |
cliqp | not used |
cicep | not used |
reliq | not used |
reice | not used |
cdat1 | layer cloud optical depth |
cdat2 | layer cloud single scattering albedo |
cdat3 | layer cloud asymmetry factor |
cdat4 | optional use |
nlay | number of layer number |
nlp1 | number of veritcal levels |
ipseed | permutation seed for generating random numbers (isubclw>0) |
cldfmc | cloud fraction for each sub-column |
taucld | cloud optical depth for bands (non-mcica) |
Definition at line 1491 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().
subroutine, public module_radlw_main::lwrad | ( | real (kind=kind_phys), dimension(npts,nlay), intent(in) | plyr, |
real (kind=kind_phys), dimension(npts,nlp1), intent(in) | plvl, | ||
real (kind=kind_phys), dimension(npts,nlay), intent(in) | tlyr, | ||
real (kind=kind_phys), dimension(npts,nlp1), intent(in) | tlvl, | ||
real (kind=kind_phys), dimension(npts,nlay), intent(in) | qlyr, | ||
real (kind=kind_phys), dimension(npts,nlay), intent(in) | olyr, | ||
real (kind=kind_phys), dimension(npts,nlay,9), intent(in) | gasvmr, | ||
real (kind=kind_phys), dimension(npts,nlay,9), intent(in) | clouds, | ||
integer, dimension(npts), intent(in) | icseed, | ||
real (kind=kind_phys), dimension(npts,nlay,nbands,3), intent(in) | aerosols, | ||
real (kind=kind_phys), dimension(npts), intent(in) | sfemis, | ||
real (kind=kind_phys), dimension(npts), intent(in) | sfgtmp, | ||
integer, intent(in) | npts, | ||
integer, intent(in) | nlay, | ||
integer, intent(in) | nlp1, | ||
logical, intent(in) | lprnt, | ||
real (kind=kind_phys), dimension(npts,nlay), intent(out) | hlwc, | ||
type (topflw_type), dimension(npts), intent(out) | topflx, | ||
type (sfcflw_type), dimension(npts), intent(out) | sfcflx, | ||
real (kind=kind_phys), dimension(npts,nlay), intent(out), optional | HLW0, | ||
real (kind=kind_phys), dimension(npts,nlay,nbands), intent(out), optional | HLWB, | ||
type (proflw_type), dimension(npts,nlp1), intent(out), optional | FLXPRF | ||
) |
This subroutine is the main LW radiation routine.
plyr | model layer mean pressure in mb |
plvl | model interface pressure in mb |
tlyr | model layer mean temperature in K |
tlvl | model interface temperature in K |
qlyr | layer specific humidity in gm/gm |
olyr | layer ozone concentration in gm/gm |
gasvmr | atmospheric 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 |
clouds | layer 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 |
icseed | auxiliary special cloud related array. |
aerosols | aerosol optical properties (:,:,:,1) - optical depth (:,:,:,2) - single scattering albedo (:,:,:,3) - asymmetry parameter |
sfemis | surface emissivity |
sfgtmp | surface ground temperature in K |
npts | total number of horizontal points |
nlay,nlp1 | total number of vertical layers, levels |
lprnt | cntl flag for diagnostic print out |
hlwc | total sky heating rate in k/day or k/sec |
topflx | radiation fluxes at top, components upfxc - total sky upward flux at top ( \( w/m^2 \)) upfx0 - clear sky upward flux at top ( \( w/m^2 \)) |
sfcflx | radiation 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 \)) |
hlwb | spectral band total sky heating rates |
hlw0 | clear sky heating rates (k/sec or k/day) |
flxprf | level 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 |
Definition at line 461 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().
|
private |
This suroutine computes sub-colum cloud profile flag array.
cldf | layer cloud fraction |
nlay | number of model vertical layers |
ipseed | permute seed for random num generator |
lcloudy | sub-colum cloud profile flag array |
Definition at line 1798 of file radlw_main.f.
References physparam::iovrlw, and module_radlw_parameters::ngptlw.
Referenced by cldprop().
subroutine, public module_radlw_main::rlwinit | ( | integer, intent(in) | me | ) |
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.
me | print control for parallel process |
Definition at line 1263 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().
|
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.
semiss | lw surface emissivity |
delp | layer pressure thickness (mb) |
cldfrc | layer cloud fraction |
taucld | layer cloud opt depth |
tautot | total optical depth (gas+aerosols) |
pklay | integrated planck function at lay temp |
pklev | integrated planck func at lev temp |
fracs | planck fractions |
secdif | secant of diffusivity angle |
nlay | number of vertical layers |
nlp1 | number of vertical levels (interfaces) |
totuflux | total sky upward flux \((w/m^2)\) |
totdflux | total sky downward flux \((w/m^2)\) |
htr | total sky heating rate (k/sec or k/day) |
totuclfl | clear sky upward flux \((w/m^2)\) |
totdclfl | clear sky downward flux \((w/m^2)\) |
htrcl | clear sky heating rate (k/sec or k/day) |
htrb | spectral band lw heating rate (k/day) |
Definition at line 2289 of file radlw_main.f.
References module_radlw_parameters::nbands, module_radlw_parameters::ngb, and module_radlw_parameters::ngptlw.
Referenced by lwrad().
|
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.
semiss | lw surface emissivity |
delp | layer pressure thickness (mb) |
cldfmc | layer cloud fraction (sub-column) |
taucld | layer cloud opt depth |
tautot | total optical depth (gas+aerosols) |
pklay | integrated planck func at lay temp |
pklev | integrated planck func at lev temp |
fracs | planck fractions |
secdif | secant of diffusivity angle |
nlay | number of vertical layers |
nlp1 | number of vertical levels (interfaces) |
totuflux | total sky upward flux \((w/m^2)\) |
totdflux | total sky downward flux \((w/m^2)\) |
htr | total sky heating rate (k/sec or k/day) |
totuclfl | clear sky upward flux \((w/m^2)\) |
totdclfl | clear sky downward flux \((w/m^2)\) |
htrcl | clear sky heating rate (k/sec or k/day) |
htrb | spectral band lw heating rate (k/day) |
Definition at line 3265 of file radlw_main.f.
References module_radlw_parameters::nbands, module_radlw_parameters::ngb, and module_radlw_parameters::ngptlw.
Referenced by lwrad().
|
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.
semiss | lw surface emissivity |
delp | layer pressure thickness (mb) |
cldfrc | layer cloud fraction |
taucld | layer cloud opt depth |
tautot | total optical depth (gas+aerosols) |
pklay | integrated planck func at lay temp |
pklev | integrated planck func at lev temp |
fracs | planck fractions |
secdif | secant of diffusivity angle |
nlay | number of vertical layers |
nlp1 | number of vertical levels (interfaces) |
totuflux | total sky upward flux ( \(w/m^2\)) |
totdflux | total sky downward flux ( \(w/m^2\)) |
htr | total sky heating rate (k/sec or k/day) |
totuclfl | clear sky upward flux ( \(w/m^2\)) |
totdclfl | clear sky downward flux ( \(w/m^2\)) |
htrcl | clear sky heating rate (k/sec or k/day) |
htrb | spectral band lw heating rate (k/day) |
Definition at line 2672 of file radlw_main.f.
References module_radlw_parameters::nbands, module_radlw_parameters::ngb, and module_radlw_parameters::ngptlw.
Referenced by lwrad().
|
private |
This subroutine computes various coefficients needed in radiative transfer calculations.
pavel | layer pressure (mb) |
tavel | layer temperature (K) |
tz | level(interface) temperatures (K) |
stemp | surface ground temperature (K) |
h2ovmr | layer w.v. volumn mixing ratio (kg/kg) |
colamt | column amounts of absorbing gases. 2nd indices range: 1-maxgas, for watervapor,carbon dioxide, ozone, nitrous oxide, methane,oxigen, carbon monoxide,etc. \((mol/cm^2)\) |
coldry | dry air column amount |
colbrd | column amount of broadening gases |
nlay | total number of vertical layers |
nlp1 | total number of vertical levels |
laytrop | tropopause layer index (unitless) |
pklay | integrated planck func at lay temp |
pklev | integrated planck func at lev temp |
jp | indices of lower reference pressure |
jt,jt1 | indices of lower reference temperatures |
rfrate | ref 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 |
facij | factors multiply the reference ks, i,j=0/1 for lower/higher of the 2 appropriate temperatures and altitudes. |
selffac | scale factor for w. v. self-continuum equals (w. v. density)/(atmospheric density at 296k and 1013 mb) |
selffrac | factor for temperature interpolation of reference w. v. self-continuum data |
indself | index of lower ref temp for selffac |
forfac | scale factor for w. v. foreign-continuum |
forfrac | factor for temperature interpolation of reference w.v. foreign-continuum data |
indfor | index of lower ref temp for forfac |
minorfrac | factor for minor gases |
scaleminor,scaleminorn2 | scale factors for minor gases |
indminor | index of lower ref temp for minor gases |
Definition at line 1998 of file radlw_main.f.
References module_radlw_parameters::nbands, and module_radlw_avplank::totplnk.
Referenced by lwrad().
|
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.
laytrop | tropopause layer index (unitless) layer at which switch is made for key species |
pavel | layer pressures (mb) |
coldry | column amount for dry air \((mol/cm^2)\) |
colamt | column amounts of h2o, co2, o3, n2o, ch4,o2, co \((mol/cm^2)\) |
colbrd | column amount of broadening gases |
wx | cross-section amounts \((mol/cm^2)\) |
tauaer | aerosol optical depth |
rfrate | reference 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 |
facij | factors multiply the reference ks, i,j of 0/1 for lower/higher of the 2 appropriate temperatures and altitudes |
jp | index of lower reference pressure |
jt,jt1 | indices of lower reference temperatures for pressure levels jp and jp+1, respectively |
selffac | scale factor for water vapor self-continuum equals (water vapor density)/(atmospheric density at 296k and 1013 mb) |
selffrac | factor for temperature interpolation of reference water vapor self-continuum data |
indself | index of lower reference temperature for the self-continuum interpolation |
forfac | scale factor for w. v. foreign-continuum |
forfrac | factor for temperature interpolation of reference w.v. foreign-continuum data |
indfor | index of lower reference temperature for the foreign-continuum interpolation |
minorfrac | factor for minor gases |
scaleminor,scaleminorn2 | scale factors for minor gases |
indminor | index of lower reference temperature for minor gases |
nlay | total number of layers |
fracs | planck fractions |
tautot | total optical depth (gas+aerosols) |
Definition at line 3682 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().