Common Community Physics Package (CCPP) Scientific Documentation  Version 2.0
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 
)
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
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)
IXhorizontal dimention
NLAY,NLP1vertical 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

diagcld1 General Algorithm

  1. Get rh-cld relation for this lat.
  2. Linear transition between latitudinal regions.
  3. Get rh-cld relationship for each grid point, interpolating longitudinally between regions if necessary.
  4. Find top pressure for each cloud domain.
  5. Compute stratiform cloud optical depth.
  6. Calculate potential temperature and its lapse rate.
  7. Diagnostic method to find cloud amount cldtot, cldcnv.
    • Find the lowest low cloud top sigma level, computed for each lat cause domain definition changes with latitude.
    • Find the stratosphere cut off layer for high cloud (about 250mb). It is assumed to be above the layerwith dthdp less than -0.25 in the high cloud domain.
    • Put convective cloud into 'cldcnv', no merge at this point.
    • Calculate stratiform cloud and put into array 'cldtot' using the cld-rh relationship from table look-up, where tables obtained using k.mitchell frequency distribution tuning.
    • Compute vertical velocity adjustment on low clouds.
    • Calculate diagnostic cloud optical depth.
  8. Call gethml(), to compute low, mid, high, total, and boundary layer cloud fractions and cloud top/bottom layer indices for low, mid, and high clouds.

References physcons::con_pi, physcons::con_rocp, physcons::con_ttp, gethml(), and physparam::ivflip.

Here is the call graph for this function: