The GFS radiation driver module. More...
The GFS radiation driver module.
module_radiation_driver prepares the atmospheric profile, invokes the main radiation calculations, and computes radiative fluxes and heating rates for some arbitrary number of vertical columns. There are three externally accessible subroutines:
Constant values | |
real(kind=kind_phys) | module_radiation_driver::qmin |
QMIN=1.0e-10. | |
real(kind=kind_phys) | module_radiation_driver::qme5 |
QME5=1.0e-7. | |
real(kind=kind_phys) | module_radiation_driver::qme6 |
QME6=1.0e-7. | |
real(kind=kind_phys) | module_radiation_driver::epsq |
EPSQ=1.0e-12. | |
real, parameter | module_radiation_driver::prsmin = 1.0e-6 |
toa pressure minimum value in mb (hPa) | |
integer | module_radiation_driver::itsfc =0 |
control flag for lw sfc air/ground interface temp setting | |
input control variables (reset in radupdate): | |
integer | module_radiation_driver::month0 =0 |
integer | module_radiation_driver::iyear0 =0 |
integer | module_radiation_driver::monthd =0 |
logical | module_radiation_driver::loz1st =.true. |
first-time climatological ozone data read flag | |
integer, parameter | module_radiation_driver::ltp = 0 |
optional extra top layer on top of low ceiling models LTP=0: no extra top layer | |
logical, parameter | module_radiation_driver::lextop = (LTP > 0) |
subroutine, public | module_radiation_driver::radinit (si, NLAY, me) |
This subroutine is the initialization of radiation calculations. More... | |
subroutine, public | module_radiation_driver::radupdate (idate, jdate, deltsw, deltim, lsswr, me, |
This subroutine calls many update subroutines to check and update radiation required but time varying data sets and module variables. More... | |
subroutine, public | module_radiation_driver::grrad |
This subroutine is the driver of radiation calculation subroutines. It sets up profile variables for radiation input, including clouds, surface albedos, atmospheric aerosols, ozone, etc. More... | |
subroutine, public module_radiation_driver::grrad | ( | ) |
This subroutine is the driver of radiation calculation subroutines. It sets up profile variables for radiation input, including clouds, surface albedos, atmospheric aerosols, ozone, etc.
prsi | model level pressure in Pa |
prsl | model layer mean pressure in Pa |
prslk | exner function = \( (p/p0)^{rocp} \) |
tgrs | model layer mean temperature in K |
qgrs | layer specific humidity in gm/gm |
tracer | layer prognostic tracer amount/mixing-ration; include: oz,cwc,aeros,etc |
vvl | layer mean vertical velocity in pa/sec |
slmsk | sea/land mask array (sea:0,land:1,sea-ice:2) |
xlon | grid longitude in radians,ok for both 0->2pi or -pi->+pi ranges |
xlat | grid latitude in radians, default to pi/2->-pi/2 range, otherwise adj in subr called |
tsfc | surface temperature in K |
snowd | snow depth water equivalent in mm |
sncovr | snow cover in fraction |
snoalb | maximum snow albedo in fraction |
zorl | surface roughness in cm |
hprim | topographic standard deviation in m |
alvsf | mean vis albedo with strong cosz dependency |
alnsf | mean nir albedo with strong cosz dependency |
alvwf | mean vis albedo with weak cosz dependency |
alnwf | mean nir albedo with weak cosz dependency |
facsf | fractional coverage with strong cosz dependency |
facwf | fractional coverage with weak cosz dependency |
fice | ice fraction over open water grid |
tisfc | surface temperature over ice fraction |
sinlat | sine of the grids' corresponding latitudes |
coslat | cosine of the grids' corresponding latitudes |
solhr | hour time after 00z at the t-stepe |
jdate | current forecast date and time (yr, mon, day, t-zone, hr, min, sec, mil-sec) |
solcon | solar constant (sun-earth distant adjusted) |
cv | fraction of convective cloud |
cvt,cvb | convective cloud top/bottom pressure in pa |
fcice | fraction of cloud ice (in ferrier scheme) |
frain | fraction of rain water (in ferrier scheme) |
rrime | mass ratio of total to unrimed ice ( >= 1 ) |
flgmin | minimum large ice fraction |
icsdsw,icsdlw | auxiliary cloud control arrays passed to main radiations. if isubcsw/isubclw (input to init) are set to 2, the arrays contains provided random seeds for sub-column clouds generators |
ntcw | =0 no cloud condensate calculated; >0 array index location for cloud condensate |
ncld | only used when ntcw .gt. 0 |
ntoz | =0 climatological ozone profile; >0 interactive ozone profile |
NTRAC | dimension veriable for array oz |
NFXR | second dimension of input/output array fluxr |
dtlw,dtsw | time duration for lw/sw radiation call in sec |
lsswr,lslwr | logical flags for sw/lw radiation calls |
lssav | logical flag for store 3-d cloud field |
IX,IM | horizontal dimention and num of used points |
LM | vertical layer dimension |
me | control flag for parallel process |
lprnt | control flag for diagnostic print out |
ipt | index for diagnostic printout point |
kdt | time-step number |
deltaq | half width of uniform total water distribution |
sup | supersaturation in pdf cloud when t is very low |
cnvw | layer convective cloud water |
cnvc | layer convective cloud cover |
htrsw | total sky sw heating rate in k/sec |
topfsw | SW radiation fluxes at toa, components: (check module_radsw_parameters for definition) upfxc - total sky upward sw flux at toa ( \(W/m^2\)) dnflx - total sky downward sw flux at toa ( \(W/m^2\)) upfx0 - clear sky upward sw flux at toa ( \(W/m^2\)) |
sfcfsw | SW radiation fluxes at sfc, components: (check module_radsw_parameters for definition) upfxc - total sky upward sw flux at sfc ( \(W/m^2\)) dnfxc - total sky downward sw flux at sfc ( \(W/m^2\)) upfx0 - clear sky upward sw flux at sfc ( \(W/m^2\)) dnfx0 - clear sky downward sw flux at sfc ( \(W/m^2\)) |
dswcmp | down sfc SW spectral components: (:, 1) - total sky sfc downward nir direct flux (:, 2) - total sky sfc downward nir diffused flux (:, 3) - total sky sfc downward uv+vis direct flux (:, 4) - total sky sfc downward uv+vis diff flux |
uswcmp | up sfc SW spectral components: (:, 1) - total sky sfc upward nir direct flux (:, 2) - total sky sfc upward nir diffused flux (:, 3) - total sky sfc upward uv+vis direct flux (:, 4) - total sky sfc upward uv+vis diff flux |
sfalb | mean surface diffused sw albedo |
coszen | mean cos of zenith angle over rad call period |
coszdg | daytime mean cosz over rad call period |
htrlw | total sky LW heating rate in k/sec |
topflw | LW radiation fluxes at top, component: (check module_radlw_paramters for definition) upfxc - total sky upward LW flux at toa ( \(W/m^2\)) upfx0 - clear sky upward LW flux at toa ( \(W/m^2\)) |
sfcflw | LW radiation fluxes at sfc, component: (check module_radlw_paramters for definition) upfxc - total sky upward LW flux at sfc ( \(W/m^2\)) upfx0 - clear sky upward LW flux at sfc ( \(W/m^2\)) dnfxc - total sky downward LW flux at sfc ( \(W/m^2\)) dnfx0 - clear sky downward LW flux at sfc ( \(W/m^2\)) |
semis | surface LW emissivity in fraction |
cldcov | 3-d cloud fraction |
tsflw | surface air temp during LW calculation in K |
fluxr | time accumulated 2-d fields defined as: 1 - toa total sky upwd LW radiation flux 2 - toa total sky upwd SW radiation flux 3 - sfc total sky upwd SW radiation flux 4 - sfc total sky dnwd SW radiation flux 5 - high domain cloud fraction 6 - mid domain cloud fraction 7 - low domain cloud fraction 8 - high domain mean cloud top pressure 9 - mid domain mean cloud top pressure 10 - low domain mean cloud top pressure 11 - high domain mean cloud base pressure 12 - mid domain mean cloud base pressure 13 - low domain mean cloud base pressure 14 - high domain mean cloud top temperature 15 - mid domain mean cloud top temperature 16 - low domain mean cloud top temperature 17 - total cloud fraction 18 - boundary layer domain cloud fraction 19 - sfc total sky dnwd LW radiation flux 20 - sfc total sky upwd LW radiation flux 21 - sfc total sky dnwd SW uv-b radiation flux 22 - sfc clear sky dnwd SW uv-b radiation flux 23 - toa incoming solar radiation flux 24 - sfc vis beam dnwd SW radiation flux 25 - sfc vis diff dnwd SW radiation flux 26 - sfc nir beam dnwd SW radiation flux 27 - sfc nir diff dnwd SW radiation flux 28 - toa clear sky upwd LW radiation flux 29 - toa clear sky upwd SW radiation flux 30 - sfc clear sky dnwd LW radiation flux 31 - sfc clear sky upwd SW radiation flux 32 - sfc clear sky dnwd SW radiation flux 33 - sfc clear sky upwd LW radiation flux optional: 34 - aeros opt depth at 550nm (all components) 35 - aeros opt depth at 550nm for du component 36 - aeros opt depth at 550nm for bc component 37 - aeros opt depth at 550nm for oc component 38 - aeros opt depth at 550nm for su component 39 - aeros opt depth at 550nm for ss component |
htrswb | spectral band total sky sw heating rate |
htrlwb | spectral band total sky lw heating rate |
Definition at line 944 of file grrad.f.
References module_radiation_astronomy::coszmn(), module_radiation_clouds::diagcld1(), epsq, module_radiation_gases::getgases(), module_radiation_gases::getozn(), physparam::icmphys, itsfc, physparam::ivflip, ltp, module_radlw_main::lwrad(), module_radiation_clouds::progcld1(), module_radiation_clouds::progcld2(), module_radiation_clouds::progcld3(), prsmin, qme5, qme6, qmin, module_radiation_aerosols::setaer(), module_radiation_surface::setalb(), module_radiation_surface::setemis(), and module_radsw_main::swrad().
subroutine, public module_radiation_driver::radinit | ( | real (kind=kind_phys), dimension(:), intent(in) | si, |
integer, intent(in) | NLAY, | ||
integer, intent(in) | me | ||
) |
This subroutine is the initialization of radiation calculations.
si | model vertical sigma interface |
nlay | number of model vertical layers |
me | print control flag |
Definition at line 386 of file grrad.f.
References module_radiation_aerosols::aer_init(), module_radiation_clouds::cld_init(), module_radiation_gases::gas_init(), physparam::iaerflg, physparam::ialbflg, physparam::icldflg, physparam::icmphys, physparam::ico2flg, physparam::ictmflg, physparam::iemsflg, physparam::iovrlw, physparam::iovrsw, physparam::ioznflg, physparam::isolar, physparam::isubclw, physparam::isubcsw, itsfc, physparam::ivflip, physparam::lcnorm, physparam::lcrick, physparam::lnoprec, loz1st, ltp, module_radlw_main::rlwinit(), module_radsw_main::rswinit(), module_radiation_surface::sfc_init(), and module_radiation_astronomy::sol_init().
subroutine, public module_radiation_driver::radupdate | ( | integer, dimension(:), intent(in) | idate, |
integer, dimension(:), intent(in) | jdate, | ||
real (kind=kind_phys), intent(in) | deltsw, | ||
real (kind=kind_phys), intent(in) | deltim, | ||
logical, intent(in) | lsswr, | ||
integer, intent(in) | me | ||
) |
This subroutine calls many update subroutines to check and update radiation required but time varying data sets and module variables.
idate | NCEP absolute date and time of intial condition (yr,mon,day,t-zone,hr,min,sec,mil-sec) |
jdate | NCEP absolute date and time at fcst time (yr,mon,day,t-zone,hr,min,sec,mil-sec) |
deltsw | SW radiation calling frequency in seconds |
deltim | model timestep in seconds |
lsswr | logical flags for sw radiation calculations |
me | print control flag |
slag | equation of time in radians |
sdec,cdec | sin and cos of the solar declination angle |
solcon | sun-earth distance adjusted solar constant (w/m2) |
Definition at line 626 of file grrad.f.
References module_radiation_aerosols::aer_update(), module_radiation_gases::gas_update(), physparam::ictmflg, physparam::isolar, loz1st, and module_radiation_astronomy::sol_update().