This module includes NCEP's modifications of the rrtmg-sw radiation code from AER. More...
This module includes NCEP's modifications of the rrtmg-sw radiation code from AER.
The RRTM-SW package includes three files:
All the SW radiation subprograms become contained subprograms in module 'module_radsw_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_radsw_kgbnn | |
Modules | |
module | module_radsw_parameters |
This module contains SW band parameters set up. | |
Functions/Subroutines | |
subroutine, public | module_radsw_main::rswinit |
This subroutine initializes non-varying module variables, conversion factors, and look-up tables. More... | |
subroutine | module_radsw_main::mcica_subcol |
This subroutine computes the sub-colum cloud profile flag array. More... | |
subroutine | module_radsw_main::setcoef |
This subroutine computes various coefficients needed in radiative transfer calculation. More... | |
subroutine | module_radsw_main::spcvrtm |
This subroutine computes the shortwave radiative fluxes using two-stream method of h. barder and mcica,the monte-carlo independent column approximation, for the representation of sub-grid cloud variability (i.e. cloud overlap). More... | |
constant values | |
real(kind=kind_phys), parameter | module_radsw_main::eps = 1.0e-6 |
real(kind=kind_phys), parameter | module_radsw_main::oneminus = 1.0 - eps |
real(kind=kind_phys), parameter | module_radsw_main::bpade = 1.0/0.278 |
pade approx constant | |
real(kind=kind_phys), parameter | module_radsw_main::stpfac = 296.0/1013.0 |
real(kind=kind_phys), parameter | module_radsw_main::ftiny = 1.0e-12 |
real(kind=kind_phys), parameter | module_radsw_main::s0 = 1368.22 |
internal solar constant | |
real(kind=kind_phys), parameter | module_radsw_main::f_zero = 0.0 |
real(kind=kind_phys), parameter | module_radsw_main::f_one = 1.0 |
band indices | |
integer, dimension(nblow:nbhgh) | module_radsw_main::nspa |
integer, dimension(nblow:nbhgh) | module_radsw_main::nspb |
integer, dimension(nblow:nbhgh) | module_radsw_main::idxsfc |
band index for sfc flux | |
integer, dimension(nblow:nbhgh) | module_radsw_main::idxebc |
band index for cld prop | |
integer, parameter | module_radsw_main::nuvb = 27 |
uv-b band index | |
logical flags for optional output fields | |
logical | module_radsw_main::lhswb = .false. |
logical | module_radsw_main::lhsw0 = .false. |
logical | module_radsw_main::lflxprf = .false. |
logical | module_radsw_main::lfdncmp = .false. |
real(kind=kind_phys), dimension(0:ntbmx) | module_radsw_main::exp_tbl |
those data will be set up only once by "rswinit" | |
real(kind=kind_phys) | module_radsw_main::heatfac |
the factor for heating rates (in k/day, or k/sec set by subroutine 'rswinit') | |
integer, parameter | module_radsw_main::ipsdsw0 = 1 |
initial permutation seed used for sub-column cloud scheme | |
subroutine, public | module_radsw_main::swrad |
This subroutine is the main SW radiation routine. More... | |
subroutine | module_radsw_main::cldprop |
This subroutine computes the cloud optical properties for each cloudy layer and g-point interval. More... | |
subroutine | module_radsw_main::spcvrtc |
This subroutine computes the shortwave radiative fluxes using two-stream method. More... | |
subroutine | module_radsw_main::vrtqdr |
This subroutine is called by spcvrtc() and spcvrtm(), and computes the upward and downward radiation fluxes. More... | |
subroutine | module_radsw_main::taumol |
This subroutine calculates optical depths for gaseous absorption and rayleigh scattering subroutine called taumol## (## = 16-29) More... | |
subroutine | taumol16 |
The subroutine computes the optical depth in band 16: 2600-3250 cm-1 (low - h2o,ch4; high - ch4) | |
|
private |
This subroutine computes the cloud optical properties for each cloudy layer and g-point interval.
cfrac | layer cloud fraction for physparam::iswcliq > 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 eff radius for snow flake(micron) for physparam::iswcliq = 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 |
cf1 | effective total cloud cover at surface |
nlay | vertical layer number |
ipseed | permutation seed for generating random numbers (isubcsw>0) |
taucw | cloud optical depth, w/o delta scaled |
ssacw | weighted cloud single scattering albedo (ssa = ssacw / taucw) |
asycw | weighted cloud asymmetry factor (asy = asycw / ssacw) |
cldfrc | cloud fraction of grid mean value |
cldfmc | cloud fraction for each sub-column |
Definition at line 1458 of file radsw_main.f.
References idxebc, physparam::isubcsw, physparam::iswcice, physparam::iswcliq, mcica_subcol(), module_radsw_parameters::nbhgh, module_radsw_parameters::nblow, and module_radsw_parameters::ngptsw.
Referenced by swrad().
|
private |
This subroutine computes the 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 1819 of file radsw_main.f.
References physparam::iovrsw, and module_radsw_parameters::ngptsw.
Referenced by cldprop().
subroutine, public module_radsw_main::rswinit | ( | ) |
This subroutine initializes non-varying module variables, conversion factors, and look-up tables.
me | print control for parallel process |
Definition at line 1272 of file radsw_main.f.
References bpade, physcons::con_cp, physcons::con_g, exp_tbl, heatfac, physparam::icldflg, physparam::iovrsw, physparam::isubcsw, physparam::iswcliq, physparam::iswmode, physparam::iswrate, physparam::iswrgas, and module_radsw_parameters::ntbmx.
Referenced by module_radiation_driver::radinit().
|
private |
This subroutine computes various coefficients needed in radiative transfer calculation.
pavel | layer pressure (mb) |
tavel | layer temperature (k) |
h2ovmr | layer w.v. volumn mixing ratio (kg/kg) |
nlay | total number of vertical layers |
nlp1 | total number of vertical levels |
laytrop | tropopause layer index (unitless) |
jp | indices of lower reference pressure |
jt,jt1 | indices of lower reference temperatures at levels of jp and jp+1 |
facij | factors mltiply the reference ks,i,j=0/1 for lower/higher of the 2 appropriate temperature and altitudes. |
selffac | scale factor for w. v. self-continuum equals (w.v. density)/(atmospheric density at 296k and 1013 mb) |
seffrac | 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 |
Definition at line 2001 of file radsw_main.f.
References module_radsw_ref::preflog.
Referenced by swrad().
|
private |
This subroutine computes the shortwave radiative fluxes using two-stream method.
ssolar | incoming solar flux at top |
cosz | cosine solar zenith angle |
sntz | secant solar zenith angle |
albbm | surface albedo for direct beam radiation |
albdf | surface albedo for diffused radiation |
sfluxzen | spectral distribution of incoming solar flux |
cldfrc | layer cloud fraction |
cf1 | >0: cloudy sky, otherwise: clear sky |
cf0 | =1-cf1 |
taug | spectral optical depth for gases |
taur | optical depth for rayleigh scattering |
tauae | aerosols optical depth |
ssaae | aerosols single scattering albedo |
asyae | aerosols asymmetry factor |
taucw | weighted cloud optical depth |
ssacw | weighted cloud single scat albedo |
asycw | weighted cloud asymmetry factor |
nlay,nlp1 | number of layers/levels |
fxupc | tot sky upward flux |
fxdnc | tot sky downward flux |
fxup0 | clr sky upward flux |
fxdn0 | clr sky downward flux |
ftoauc | tot sky toa upwd flux |
ftoau0 | clr sky toa upwd flux |
ftoadc | toa downward (incoming) solar flux |
fsfcuc | tot sky sfc upwd flux |
fsfcu0 | clr sky sfc upwd flux |
fsfcdc | tot sky sfc dnwd flux |
fsfcd0 | clr sky sfc dnwd flux |
sfbmc | tot sky sfc dnwd beam flux (nir/uv+vis) |
sfdfc | tot sky sfc dnwd diff flux (nir/uv+vis) |
sfbm0 | clr sky sfc dnwd beam flux (nir/uv+vis) |
sfdf0 | clr sky sfc dnwd diff flux (nir/uv+vis) |
suvbfc | tot sky sfc dnwd uv-b flux |
suvbf0 | clr sky sfc dnwd uv-b flux |
Definition at line 2191 of file radsw_main.f.
References bpade, exp_tbl, idxsfc, physparam::iswmode, module_radsw_parameters::nblow, module_radsw_parameters::ngb, module_radsw_parameters::ngptsw, module_radsw_parameters::ntbmx, nuvb, and vrtqdr().
Referenced by swrad().
|
private |
This subroutine computes the shortwave radiative fluxes using two-stream method of h. barder and mcica,the monte-carlo independent column approximation, for the representation of sub-grid cloud variability (i.e. cloud overlap).
ssolar | incoming solar flux at top |
cosz | cosine solar zenith angle |
sntz | secant solar zenith angle |
albbm | surface albedo for direct beam radiation |
albdf | surface albedo for diffused radiation |
sfluxzen | spectral distribution of incoming solar flux |
cldfmc | layer cloud fraction for g-point |
cf1 | >0: cloudy sky, otherwise: clear sky |
cf0 | =1-cf1 |
taug | spectral optical depth for gases |
taur | optical depth for rayleigh scattering |
tauae | aerosols optical depth |
ssaae | aerosols single scattering albedo |
asyae | aerosols asymmetry factor |
taucw | weighted cloud optical depth |
ssacw | weighted cloud single scat albedo |
asycw | weighted cloud asymmetry factor |
nlay,nlp1 | number of layers/levels |
fxupc | tot sky upward flux |
fxdnc | tot sky downward flux |
fxup0 | clr sky upward flux |
fxdn0 | clr sky downward flux |
ftoauc | tot sky toa upwd flux |
ftoau0 | clr sky toa upwd flux |
ftoadc | toa downward (incoming) solar flux |
fsfcuc | tot sky sfc upwd flux |
fsfcu0 | clr sky sfc upwd flux |
fsfcdc | tot sky sfc dnwd flux |
fsfcd0 | clr sky sfc dnwd flux |
sfbmc | tot sky sfc dnwd beam flux (nir/uv+vis) |
sfdfc | tot sky sfc dnwd diff flux (nir/uv+vis) |
sfbm0 | clr sky sfc dnwd beam flux (nir/uv+vis) |
sfdf0 | clr sky sfc dnwd diff flux (nir/uv+vis) |
suvbfc | tot sky sfc dnwd uv-b flux |
suvbf0 | clr sky sfc dnwd uv-b flux |
Definition at line 2951 of file radsw_main.f.
References bpade, exp_tbl, idxsfc, physparam::iswmode, module_radsw_parameters::nblow, module_radsw_parameters::ngb, module_radsw_parameters::ngptsw, module_radsw_parameters::ntbmx, nuvb, and vrtqdr().
Referenced by swrad().
subroutine, public module_radsw_main::swrad | ( | ) |
This subroutine is the main SW radiation routine.
plyr | model layer mean pressure in mb |
plvl | model level pressure in mb |
tlyr | model layer mean temperature in K |
tlvl | model level temperature in K (not in use) |
qlyr | layer specific humidity in gm/gm |
olyr | layer ozone concentration in gm/gm |
gasvmr | atmospheric constent gases (:,:,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 (not used) (:,:,6) - cfc11 volume mixing ratio (not used) (:,:,7) - cfc12 volume mixing ratio (not used) (:,:,8) - cfc22 volume mixing ratio (not used) (:,:,9) - ccl4 volume mixing ratio (not used) |
clouds | cloud profile (:,:,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) |
icseed | auxiliary special cloud related array. |
aerosols | aerosol optical properties (:,:,:,1) - optical depth (:,:,:,2) - single scattering albedo (:,:,:,3) - asymmetry parameter |
sfcalb | surface albedo in fraction (:,1) - near ir direct beam albedo (:,2) - near ir diffused albedo (:,3) - uv+vis direct beam albedo (:,4) - uv+vis diffused albedo |
cosz | cosine of solar zenith angle |
solcon | solar constant ( \(W/m^2\)) |
NDAY | num of daytime points |
idxday | index array for daytime points |
npts | number of horizontal points |
nlay,nlp1 | vertical layer/lavel numbers |
lprnt | logical check print flag |
hswc | total sky heating rates (k/sec or k/day) |
topflx | radiation fluxes at toa ( \(W/m^2\)), components: upfxc - total sky upward flux at toa dnflx - total sky downward flux at toa upfx0 - clear sky upward flux at toa |
sfcflx | radiation fluxes at sfc ( \(W/m^2\)), components: upfxc - total sky upward flux at sfc dnfxc - total sky downward flux at sfc upfx0 - clear sky upward flux at sfc dnfx0 - clear sky downward flux at sfc |
hswb | spectral band total sky heating rates |
hsw0 | clear sky heating rates (k/sec or k/day) |
flxprf | level radiation fluxes ( \( W/m^2 \)), components: dnfxc - total sky downward flux at interface upfxc - total sky upward flux at interface dnfx0 - clear sky downward flux at interface upfx0 - clear sky upward flux at interface |
fdncmp | surface downward fluxes ( \(W/m^2\)), components: uvbfc - total sky downward uv-b flux at sfc uvbf0 - clear sky downward uv-b flux at sfc nirbm - downward surface nir direct beam flux nirdf - downward surface nir diffused flux visbm - downward surface uv+vis direct beam flux visdf - downward surface uv+vis diffused flux |
Definition at line 483 of file radsw_main.f.
References cldprop(), physcons::con_amd, physcons::con_amw, physcons::con_avgd, physcons::con_g, heatfac, physparam::iovrsw, ipsdsw0, physparam::isubcsw, physparam::iswcliq, physparam::iswrgas, physparam::ivflip, s0, setcoef(), spcvrtc(), spcvrtm(), and taumol().
Referenced by module_radiation_driver::grrad().
|
private |
This subroutine calculates optical depths for gaseous absorption and rayleigh scattering
subroutine called taumol## (## = 16-29)
colamt | column amounts of absorbing gases the index are for h2o, co2, o3, n2o, ch4, and o2, respectively \((mol/cm^2)\) |
colmol | total column amount (dry air+water vapor) |
facij | for each layer, these are factors that are needed to compute the interpolation factors that multiply the appropriate reference k-values. a value of 0/1 for i,j indicates that the corresponding factor multiplies reference k-value for the lower/higher of the two appropriate temperatures, and altitudes, respectively. |
jp | the index of the lower (in altitude) of the two appropriate ref pressure levels needed for interpolation. |
jt,jt1 | the indices of the lower of the two approp ref temperatures needed for interpolation (for pressure levels jp and jp+1, respectively) |
laytrop | tropopause layer index |
forfac | scale factor needed to foreign-continuum. |
forfrac | factor needed for temperature interpolation |
indfor | index of the lower of the two appropriate reference temperatures needed for foreign-continuum interpolation |
selffac | scale factor needed to h2o self-continuum. |
selffrac | factor needed for temperature interpolation of reference h2o self-continuum data |
indself | index of the lower of the two appropriate reference temperatures needed for the self-continuum interpolation |
nlay | number of vertical layers |
sfluxzen | spectral distribution of incoming solar flux |
taug | spectral optical depth for gases |
taur | opt depth for rayleigh scattering |
Definition at line 3792 of file radsw_main.f.
References module_radsw_parameters::nbhgh, module_radsw_parameters::nblow, taumol16(), taumol17(), taumol18(), taumol19(), taumol20(), taumol21(), taumol22(), taumol23(), taumol24(), taumol25(), taumol26(), taumol27(), taumol28(), and taumol29().
Referenced by swrad().
|
private |
This subroutine is called by spcvrtc() and spcvrtm(), and computes the upward and downward radiation fluxes.
zrefb | layer direct beam reflectivity |
zrefd | layer diffuse reflectivity |
ztrab | layer direct beam transmissivity |
ztrad | layer diffuse transmissivity |
zldbt | layer mean beam transmittance |
ztdbt | total beam transmittance at levels |
NLAY,NLP1 | number of layers/levels |
zfu | upward flux at layer interface |
zfd | downward flux at layer interface |
Definition at line 3656 of file radsw_main.f.
Referenced by spcvrtc(), and spcvrtm().