This module computes cloud related quantities for radiation computations. More...
This module computes cloud related quantities for radiation computations.
Knowledge of cloud properties and their vertical structure is important for meteorological studies due to their impact on both the Earth's radiation budget and adiabatic heating within the atmosphere. Cloud properties in the US National Oceanic and Atmospheric Administration National Centers for Environmental Prediction Global Forecast System (GFS) include (i) cloud liquid/ice water path; (ii) the fraction of clouds; (iii) effective radius of water/ice droplet:
This module has three externally accessible subroutines:
and two internally accessable only subroutines:
\[ \sigma =RH^{k_{1}}\left[1-exp\left(-\frac{k_{2}q_{l}}{\left[\left(1-RH\right)q_{s}\right]^{k_{3}}}\right)\right] \]
Where \(RH\) is relative humidity, \(q_{l}\) is the cloud condensate, \(q_{s}\) is saturation specific humidity, \(k_{1}(=0.25)\), \(k_{2}(=100)\), \(k_{3}(=0.49)\) are the empirical parameters. The cloud condensate is partitioned into cloud water and ice in radiation based on temperature. Cloud drop effective radius ranges 5-10 microns over land depending on temperature. Ice crystal radius is function of ice water content (Heymsfield and McFarquhar (1996) [27]). Maximum-randomly cloud overlapping is used in both long-wave radiation and short-wave radiation. Convective clouds are not considered in radiation.\[ r_{ew} = 5+5\times F \]
Thus, the effective radius of cloud water droplets will reach to a minimum values of \(5\mu m\) when F=0, and to a maximum value of \(10\mu m\) when the ice fraction is increasing.\[ r_{ei}=\begin{cases}(1250/9.917)IWC^{0.109} & T <-50^0C \\(1250/9.337)IWC^{0.080} & -50^0C \leq T<-40^0C\\(1250/9.208)IWC^{0.055} & -40^0C\leq T <-30^0C\\(1250/9.387)IWC^{0.031} & -30^0C \leq T\end{cases} \]
where IWC and IWP satisfy:\[ IWP_{\triangle Z}=\int_{\triangle Z} IWCdZ \]
Variables | |
real(kind=kind_phys), parameter | module_radiation_clouds::gfac =1.0e5/con_g |
real(kind=kind_phys), parameter | module_radiation_clouds::gord =con_g/con_rd |
integer, parameter, public | module_radiation_clouds::nf_clds = 9 |
number of fields in cloud array | |
integer, parameter, public | module_radiation_clouds::nk_clds = 3 |
number of cloud vertical domains | |
real(kind=kind_phys), dimension(nk_clds+1, 2), save | module_radiation_clouds::ptopc |
pressure limits of cloud domain interfaces (low,mid,high) in mb (0.1kPa) | |
real(kind=kind_phys), parameter | module_radiation_clouds::climit = 0.001 |
real(kind=kind_phys), parameter | module_radiation_clouds::climit2 =0.05 |
real(kind=kind_phys), parameter | module_radiation_clouds::ovcst = 1.0 - 1.0e-8 |
real(kind=kind_phys), parameter | module_radiation_clouds::reliq_def = 10.0 |
default liq radius to 10 micron | |
real(kind=kind_phys), parameter | module_radiation_clouds::reice_def = 50.0 |
default ice radius to 50 micron | |
real(kind=kind_phys), parameter | module_radiation_clouds::rrain_def = 1000.0 |
default rain radius to 1000 micron | |
real(kind=kind_phys), parameter | module_radiation_clouds::rsnow_def = 250.0 |
default snow radius to 250 micron | |
integer, parameter | module_radiation_clouds::nbin =100 |
rh in one percent interval | |
integer, parameter | module_radiation_clouds::nlon =2 |
=1,2 for eastern and western hemispheres | |
integer, parameter | module_radiation_clouds::nlat =4 |
=1,4 for 60n-30n,30n-equ,equ-30s,30s-60s | |
integer, parameter | module_radiation_clouds::mcld =4 |
=1,4 for bl,low,mid,hi cld type | |
integer, parameter | module_radiation_clouds::nseal =2 |
=1,2 for land,sea | |
real(kind=kind_phys), parameter | module_radiation_clouds::cldssa_def = 0.99 |
default cld single scat albedo | |
real(kind=kind_phys), parameter | module_radiation_clouds::cldasy_def = 0.84 |
default cld asymmetry factor | |
real(kind=kind_phys), dimension(3) | module_radiation_clouds::xlabdy |
lat bndry between tuning regions | |
real(kind=kind_phys), dimension(3) | module_radiation_clouds::xlobdy |
lon bndry between tuning regions | |
real(kind=kind_phys), parameter | module_radiation_clouds::xlim =5.0 |
+/- xlim for transition | |
real(kind=kind_phys), parameter | module_radiation_clouds::vvcld1 = 0.0003e0 |
low cloud vertical velocity adjustment boundaries in mb/sec | |
real(kind=kind_phys), parameter | module_radiation_clouds::vvcld2 =-0.0005e0 |
low cloud vertical velocity adjustment boundaries in mb/sec | |
real(kind=kind_phys), dimension(nbin, nlon, nlat, mcld, nseal) | module_radiation_clouds::rhcl |
tuned relative humidity relation table for diagnostic cloud scheme | |
integer | module_radiation_clouds::llyr = 2 |
upper limit of boundary layer clouds | |
integer | module_radiation_clouds::iovr = 1 |
maximum-random cloud overlapping method | |
subroutine, public | module_radiation_clouds::cld_init (si, NLAY, me) |
This subroutine is an initialization program for cloud-radiation calculations and sets up boundary layer cloud top. More... | |
subroutine, public | module_radiation_clouds::progcld1 (plyr, plvl, tlyr, tvly, qlyr, qstl, rhly, clw, xlat, xlon, slmsk, IX, NLAY, NLP1, shoc_cld, lmfshal, lmfdeep2, cldcov, clouds, clds, mtop, mbot ) |
This subroutine computes cloud related quantities using zhao/moorthi's prognostic cloud microphysics scheme. More... | |
subroutine, public | module_radiation_clouds::progcld2 (plyr, plvl, tlyr, tvly, qlyr, qstl, rhly, clw, xlat, xlon, slmsk, f_ice, f_rain, r_rime, flgmin, IX, NLAY, NLP1, lmfshal, lmfdeep2, clouds, clds, mtop, mbot ) |
This subroutine computes cloud related quantities using ferrier's prognostic cloud microphysics scheme. More... | |
subroutine, public | module_radiation_clouds::progcld3 (plyr, plvl, tlyr, tvly, qlyr, qstl, rhly, clw, cnvw, cnvc, xlat, xlon, slmsk, ix, nlay, nlp1, deltaq, sup, kdt, me, clouds, clds, mtop, mbot ) |
This subroutine computes cloud related quantities using zhao/moorthi's prognostic cloud microphysics scheme + pdfcld. More... | |
subroutine, public | module_radiation_clouds::diagcld1 (plyr, plvl, tlyr, rhly, vvel, cv, cvt, cvb, xlat, xlon, slmsk, IX, NLAY, NLP1, clouds, clds, mtop, mbot ) |
This subroutine computes cloud fractions for radiation calculations. More... | |
subroutine | module_radiation_clouds::gethml (plyr, ptop1, cldtot, cldcnv, IX, NLAY, clds, mtop, mbot ) |
This subroutine computes high, mid, low, total, and boundary cloud fractions and cloud top/bottom layer indices for model diagnostic output. The three cloud domain boundaries are defined by ptopc. The cloud overlapping method is defined by control flag 'iovr', which is also used by LW and SW radiation programs. More... | |
subroutine | module_radiation_clouds::rhtable (me , ier) |
cld-rh relations obtained from mitchell-hahn procedure. | |
subroutine, public module_radiation_clouds::cld_init | ( | real (kind=kind_phys), dimension(:), intent(in) | si, |
integer, intent(in) | NLAY, | ||
integer, intent(in) | me | ||
) |
This subroutine is an initialization program for cloud-radiation calculations and sets up boundary layer cloud top.
si | model vertical sigma layer interface |
NLAY | vertical layer number |
me | print control flag |
Definition at line 333 of file radiation_clouds.f.
References physparam::icldflg, physparam::icmphys, iovr, physparam::iovrlw, physparam::iovrsw, physparam::ivflip, llyr, and rhtable().
Referenced by module_radiation_driver::radinit().
subroutine, public module_radiation_clouds::diagcld1 | ( | 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) | rhly, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | vvel, | ||
real (kind=kind_phys), dimension(:), intent(in) | cv, | ||
real (kind=kind_phys), dimension(:), intent(in) | cvt, | ||
real (kind=kind_phys), dimension(:), intent(in) | cvb, | ||
real (kind=kind_phys), dimension(:), intent(in) | xlat, | ||
real (kind=kind_phys), dimension(:), intent(in) | xlon, | ||
real (kind=kind_phys), dimension(:), intent(in) | slmsk, | ||
integer, intent(in) | IX, | ||
integer, intent(in) | NLAY, | ||
integer, intent(in) | NLP1, | ||
real (kind=kind_phys), dimension(:,:,:), intent(out) | clouds, | ||
real (kind=kind_phys), dimension(:,:), intent(out) | clds, | ||
integer, dimension(:,:), intent(out) | mtop, | ||
integer, dimension(:,:), intent(out) | mbot | ||
) |
This subroutine computes cloud fractions for radiation calculations.
plyr | (IX,NLAY), model layer mean pressure in mb (100Pa) |
plvl | (IX,NLP1), model level pressure in mb (100Pa) |
tlyr | (IX,NLAY), model layer mean temperature in K |
rhly | (IX,NLAY), layer relative humidity |
vvel | (IX,NLAY), layer mean vertical velocity in mb/sec |
cv | (IX), fraction of convective cloud |
cvt,cvb | (IX), conv cloud top/bottom pressure in mb |
xlat | (IX), grid latitude in radians, default to pi/2 -> -pi/2 range, otherwise see in-line comment |
xlon | (IX), grid longitude in radians, ok for both 0->2pi or -pi -> +pi ranges |
slmsk | (IX), sea/land mask array (sea:0,land:1,sea-ice:2) |
IX | horizontal dimention |
NLAY,NLP1 | vertical layer/level dimensions |
clouds | (IX,NLAY,NF_CLDS), cloud profiles (:,:,1) - layer total cloud fraction (:,:,2) - layer cloud optical depth (:,:,3) - layer cloud single scattering albedo (:,:,4) - layer cloud asymmetry factor |
clds | (IX,5), fraction of clouds for low, mid, hi, tot, bl |
mtop | (IX,3), vertical indices for low, mid, hi cloud tops |
mbot | (IX,3), vertical indices for low, mid, hi cloud bases |
Definition at line 1860 of file radiation_clouds.f.
References cldasy_def, cldssa_def, physcons::con_pi, physcons::con_ttp, gethml(), physparam::ivflip, llyr, mcld, nbin, nlon, nseal, ptopc, rhcl, vvcld1, vvcld2, xlabdy, xlim, and xlobdy.
Referenced by module_radiation_driver::grrad().
|
private |
This subroutine computes high, mid, low, total, and boundary cloud fractions and cloud top/bottom layer indices for model diagnostic output. The three cloud domain boundaries are defined by ptopc. The cloud overlapping method is defined by control flag 'iovr', which is also used by LW and SW radiation programs.
plyr | (IX,NLAY), model layer mean pressure in mb (100Pa) |
ptop1 | (IX,4), pressure limits of cloud domain interfaces (sfc,low,mid,high) in mb (100Pa) |
cldtot | (IX,NLAY), total or stratiform cloud profile in fraction |
cldcnv | (IX,NLAY), convective cloud (for diagnostic scheme only) |
IX | horizontal dimension |
NLAY | vertical layer dimensions |
clds | (IX,5), fraction of clouds for low, mid, hi, tot, bl |
mtop | (IX,3),vertical indices for low, mid, hi cloud tops |
mbot | (IX,3),vertical indices for low, mid, hi cloud bases |
Definition at line 2476 of file radiation_clouds.f.
References iovr, physparam::ivflip, llyr, and nk_clds.
Referenced by diagcld1(), progcld1(), progcld2(), and progcld3().
subroutine, public module_radiation_clouds::progcld1 | ( | 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) | tvly, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | qlyr, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | qstl, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | rhly, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | clw, | ||
real (kind=kind_phys), dimension(:), intent(in) | xlat, | ||
real (kind=kind_phys), dimension(:), intent(in) | xlon, | ||
real (kind=kind_phys), dimension(:), intent(in) | slmsk, | ||
integer, intent(in) | IX, | ||
integer, intent(in) | NLAY, | ||
integer, intent(in) | NLP1, | ||
logical, intent(in) | shoc_cld, | ||
logical, intent(in) | lmfshal, | ||
logical, intent(in) | lmfdeep2, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | cldcov, | ||
real (kind=kind_phys), dimension(:,:,:), intent(out) | clouds, | ||
real (kind=kind_phys), dimension(:,:), intent(out) | clds, | ||
integer, dimension(:,:), intent(out) | mtop, | ||
integer, dimension(:,:), intent(out) | mbot | ||
) |
This subroutine computes cloud related quantities using zhao/moorthi's prognostic cloud microphysics scheme.
plyr | (IX,NLAY), model layer mean pressure in mb (100Pa) |
plvl | (IX,NLP1), model level pressure in mb (100Pa) |
tlyr | (IX,NLAY), model layer mean temperature in K |
tvly | (IX,NLAY), model layer virtual temperature in K |
qlyr | (IX,NLAY), layer specific humidity in gm/gm |
qstl | (IX,NLAY), layer saturate humidity in gm/gm |
rhly | (IX,NLAY), layer relative humidity \( (=qlyr/qstl) \) |
clw | (IX,NLAY), layer cloud condensate amount |
xlat | (IX), grid latitude in radians, default to pi/2 -> -pi/2 range, otherwise see in-line comment |
xlon | (IX), grid longitude in radians (not used) |
slmsk | (IX), sea/land mask array (sea:0,land:1,sea-ice:2) |
IX | horizontal dimention |
NLAY,NLP1 | vertical layer/level dimensions |
clouds | (IX,NLAY,NF_CLDS), cloud profiles (:,:,1) - layer total cloud fraction (:,:,2) - layer cloud liq water path \((g/m^2)\) (:,:,3) - mean eff radius for liq cloud (micron) (:,:,4) - layer cloud ice water path \((g/m^2)\) (:,:,5) - mean eff radius for ice cloud (micron) (:,:,6) - layer rain drop water path (not assigned) (:,:,7) - mean eff radius for rain drop (micron) (:,:,8) - layer snow flake water path (not assigned) (:,:,9) - mean eff radius for snow flake (micron) *** fu's scheme need to be normalized by snow density \( (g/m^3/1.0e6)\) |
clds | (IX,5), fraction of clouds for low, mid, hi, tot, bl |
mtop | (IX,3), vertical indices for low, mid, hi cloud tops |
mbot | (IX,3), vertical indices for low, mid, hi cloud bases |
Definition at line 487 of file radiation_clouds.f.
References physcons::con_pi, physcons::con_ttp, gethml(), physparam::ivflip, physparam::lcnorm, physparam::lcrick, nf_clds, ptopc, reice_def, reliq_def, rrain_def, and rsnow_def.
Referenced by module_radiation_driver::grrad().
subroutine, public module_radiation_clouds::progcld2 | ( | 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) | tvly, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | qlyr, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | qstl, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | rhly, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | clw, | ||
real (kind=kind_phys), dimension(:), intent(in) | xlat, | ||
real (kind=kind_phys), dimension(:), intent(in) | xlon, | ||
real (kind=kind_phys), dimension(:), intent(in) | slmsk, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | f_ice, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | f_rain, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | r_rime, | ||
real (kind=kind_phys), dimension(:), intent(in) | flgmin, | ||
integer, intent(in) | IX, | ||
integer, intent(in) | NLAY, | ||
integer, intent(in) | NLP1, | ||
logical, intent(in) | lmfshal, | ||
logical, intent(in) | lmfdeep2, | ||
real (kind=kind_phys), dimension(:,:,:), intent(out) | clouds, | ||
real (kind=kind_phys), dimension(:,:), intent(out) | clds, | ||
integer, dimension(:,:), intent(out) | mtop, | ||
integer, dimension(:,:), intent(out) | mbot | ||
) |
This subroutine computes cloud related quantities using ferrier's prognostic cloud microphysics scheme.
plyr | (IX,NLAY), model layer mean pressure in mb (100Pa) |
plvl | (IX,NLP1), model level pressure in mb (100Pa) |
tlyr | (IX,NLAY), model layer mean temperature in K |
tvly | (IX,NLAY), model layer virtual temperature in K |
qlyr | (IX,NLAY), layer specific humidity in gm/gm |
qstl | (IX,NLAY), layer saturate humidity in gm/gm |
rhly | (IX,NLAY), layer relative humidity (=qlyr/qstl) |
clw | (IX,NLAY), layer cloud condensate amount |
f_ice | (IX,NLAY), fraction of layer cloud ice (ferrier micro-phys) |
f_rain | (IX,NLAY), fraction of layer rain water (ferrier micro-phys) |
r_rime | (IX,NLAY), mass ratio of total ice to unrimed ice (>=1) |
flgmin | (IX), minimum large ice fraction |
xlat | (IX), grid latitude in radians, default to pi/2 -> -pi/2 range, otherwise see in-line comment |
xlon | (IX), grid longitude in radians (not used) |
slmsk | (IX), sea/land mask array (sea:0,land:1,sea-ice:2) |
IX | horizontal dimention |
NLAY,NLP1 | vertical layer/level dimensions |
clouds | (IX,NLAY,NF_CLDS), cloud profiles (:,:,1) - layer total cloud fraction (:,:,2) - layer cloud liq water path \((g/m^2)\) (:,:,3) - mean eff radius for liq cloud (micron) (:,:,4) - layer 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) *** fu's scheme need to be normalized by snow density (g/m**3/1.0e6) |
clds | (IX,5), fraction of clouds for low, mid, hi, tot, bl |
mtop | (IX,3), vertical indices for low, mid, hi cloud tops |
mbot | (IX,3), vertical indices for low, mid, hi cloud bases |
Definition at line 939 of file radiation_clouds.f.
References physcons::con_g, physcons::con_pi, physcons::con_rd, physcons::con_t0c, physcons::con_ttp, gethml(), physparam::ivflip, physparam::lcnorm, physparam::lcrick, physparam::lnoprec, ptopc, reice_def, reliq_def, rrain_def, and rsnow_def.
Referenced by module_radiation_driver::grrad().
subroutine, public module_radiation_clouds::progcld3 | ( | 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) | tvly, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | qlyr, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | qstl, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | rhly, | ||
real (kind=kind_phys), dimension(:,:), intent(in) | clw, | ||
real (kind=kind_phys), dimension(:,:) | cnvw, | ||
real (kind=kind_phys), dimension(:,:) | cnvc, | ||
real (kind=kind_phys), dimension(:), intent(in) | xlat, | ||
real (kind=kind_phys), dimension(:), intent(in) | xlon, | ||
real (kind=kind_phys), dimension(:), intent(in) | slmsk, | ||
integer, intent(in) | ix, | ||
integer, intent(in) | nlay, | ||
integer, intent(in) | nlp1, | ||
real (kind=kind_phys), dimension(:,:) | deltaq, | ||
real (kind=kind_phys), intent(in) | sup, | ||
integer, intent(in) | kdt, | ||
integer | me, | ||
real (kind=kind_phys), dimension(:,:,:), intent(out) | clouds, | ||
real (kind=kind_phys), dimension(:,:), intent(out) | clds, | ||
integer, dimension(:,:), intent(out) | mtop, | ||
integer, dimension(:,:), intent(out) | mbot | ||
) |
This subroutine computes cloud related quantities using zhao/moorthi's prognostic cloud microphysics scheme + pdfcld.
plyr | (ix,nlay), model layer mean pressure in mb (100pa) |
plvl | (ix,nlp1), model level pressure in mb (100pa) |
tlyr | (ix,nlay), model layer mean temperature in K |
tvly | (ix,nlay), model layer virtual temperature in K |
qlyr | (ix,nlay), layer specific humidity in gm/gm |
qstl | (ix,nlay), layer saturate humidity in gm/gm |
rhly | (ix,nlay), layer relative humidity (=qlyr/qstl) |
clw | (ix,nlay), layer cloud condensate amount |
xlat | (ix), grid latitude in radians, default to pi/2 -> -pi/2 range, otherwise see in-line comment |
xlon | (ix), grid longitude in radians (not used) |
slmsk | (ix), sea/land mask array (sea:0,land:1,sea-ice:2) |
ix | horizontal dimention |
nlay,nlp1 | vertical layer/level dimensions |
deltaq | (ix,nlay), half total water distribution width |
sup | supersaturation |
kdt | |
me | print control flag |
clouds | (ix,nlay,nf_clds), cloud profiles (:,:,1) - layer total cloud fraction (:,:,2) - layer cloud liq water path (g/m**2) (:,:,3) - mean eff radius for liq cloud (micron) (:,:,4) - layer cloud ice water path (g/m**2) (:,:,5) - mean eff radius for ice cloud (micron) (:,:,6) - layer rain drop water path not assigned (:,:,7) - mean eff radius for rain drop (micron) (:,:,8) - layer snow flake water path not assigned (:,:,9) - mean eff radius for snow flake(micron) |
clds | (ix,5), fraction of clouds for low, mid, hi, tot, bl |
mtop | (ix,3), vertical indices for low, mid, hi cloud tops |
mbot | (ix,3), vertical indices for low, mid, hi cloud bases |
Definition at line 1439 of file radiation_clouds.f.
References physcons::con_pi, physcons::con_thgni, physcons::con_ttp, gethml(), physparam::ivflip, physparam::lcnorm, physparam::lcrick, nf_clds, ptopc, reice_def, reliq_def, rrain_def, and rsnow_def.
Referenced by module_radiation_driver::grrad().