Common Community Physics Package (CCPP) Scientific Documentation  Version 2.0
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 
)
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)
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
IXhorizontal dimention
NLAYvertical layer dimension
NLP1vertical level dimension
lmfshalmass-flux shallow convective scheme flag
lmfdeep2scale-aware mass-flux deep convective scheme 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 \((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)
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

progcld2 General Algorithm

  • Assign water/ice/rain/snow cloud properties for Ferrier scheme.
  • Compute SFC/low/middle/high cloud top pressure for each cloud domain for given latitude.
  • Seperate cloud condensate into liquid, ice, and rain types, and save the liquid+ice condensate in array clw2 for later calculation of cloud fraction.
  • Call module_microphysics::rsipath2(), in Ferrier's scheme, to compute layer's cloud liquid, ice, rain, and snow water condensate path and the partical effective radius for liquid droplet, rain drop, and snow flake.
  • Calculate layer cloud fraction.
  • When lnoprec = .true. snow/rain has no impact on radiation.
  • Calculate effective ice cloud droplet radius following Heymsfield and McFarquhar (1996) [44] .
  • 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.

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, and module_microphysics::rsipath2().

Here is the call graph for this function: