CCPP Scientific Documentation
v5.0.0
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,
real (kind=kind_phys), dimension(:,:), intent(in)  dz,
real (kind=kind_phys), dimension(:,:), intent(in)  delp,
integer, intent(in)  IX,
integer, intent(in)  NLAY,
integer, intent(in)  NLP1,
logical, intent(in)  uni_cld,
logical, intent(in)  lmfshal,
logical, intent(in)  lmfdeep2,
real (kind=kind_phys), dimension(:,:), intent(in)  cldcov,
real (kind=kind_phys), dimension(:,:), intent(in)  effrl,
real (kind=kind_phys), dimension(:,:), intent(in)  effri,
real (kind=kind_phys), dimension(:,:), intent(in)  effrr,
real (kind=kind_phys), dimension(:,:), intent(in)  effrs,
logical, intent(in)  effr_in,
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,
real (kind=kind_phys), dimension(:), intent(out)  de_lgth 
)
Parameters
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)
dz(IX,NLAY), layer thickness (km)
delp(IX,NLAY), model layer pressure thickness in mb (100Pa)
IXhorizontal dimention
NLAYvertical layer
NLP1level dimensions
uni_cldlogical, true for cloud fraction from shoc
lmfshallogical, mass-flux shallow convection scheme flag
lmfdeep2logical, scale-aware mass-flux deep convection scheme flag
cldcovlayer cloud fraction (used when uni_cld=.true.)
effrleffective radius for liquid water
effrieffective radius for ice water
effrreffective radius for rain water
effrseffective radius for snow water
effr_inlogical, if .true. use input effective radii
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
de_lgth(IX), clouds decorrelation length (km)

progcld1 General Algorithm

  • Assgin liquid/ice/rain/snow cloud effective radius from input or predefined values.
  • Compute SFC/low/middle/high cloud top pressure for each cloud domain for given latitude.
  • Compute cloud liquid/ice condensate path in \( g/m^2 \) .
  • Compute effective liquid cloud droplet radius over land.
  • Compute layer cloud fraction.
  • Compute effective ice cloud droplet radius following Heymsfield and McFarquhar (1996) [82].
  • Call gethml() to compute low,mid,high,total, and boundary layer cloud fractions and clouds top/bottom layer indices for low, mid, and high clouds. The three cloud domain boundaries are defined by ptopc. The cloud overlapping method is defined by control flag 'iovr', which may be different for lw and sw radiation programs.

References climit, climit2, physcons::con_pi, physcons::con_ttp, gethml(), gfac, gord, iovr, physparam::lcnorm, physparam::lcrick, nf_clds, ptopc, reice_def, reliq_def, rrain_def, and rsnow_def.

Here is the call graph for this function: