CCPP Scientific Documentation
v5.0.0
subroutine rrtmg_sw::cldprop ( real (kind=kind_phys), dimension(nlay), intent(in)  cfrac,
real (kind=kind_phys), dimension(nlay), intent(in)  cliqp,
real (kind=kind_phys), dimension(nlay), intent(in)  reliq,
real (kind=kind_phys), dimension(nlay), intent(in)  cicep,
real (kind=kind_phys), dimension(nlay), intent(in)  reice,
real (kind=kind_phys), dimension(nlay), intent(in)  cdat1,
real (kind=kind_phys), dimension(nlay), intent(in)  cdat2,
real (kind=kind_phys), dimension(nlay), intent(in)  cdat3,
real (kind=kind_phys), dimension(nlay), intent(in)  cdat4,
real (kind=kind_phys), intent(in)  cf1,
integer, intent(in)  nlay,
integer, intent(in)  ipseed,
real (kind=kind_phys), dimension(nlay), intent(in)  dz,
real (kind=kind_phys), intent(in)  delgth,
real (kind=kind_phys), dimension(nlay,nbdsw), intent(out)  taucw,
real (kind=kind_phys), dimension(nlay,nbdsw), intent(out)  ssacw,
real (kind=kind_phys), dimension(nlay,nbdsw), intent(out)  asycw,
real (kind=kind_phys), dimension(nlay), intent(out)  cldfrc,
real (kind=kind_phys), dimension(nlay,ngptsw), intent(out)  cldfmc 
)
private
Parameters
cfraclayer cloud fraction
for physparam::iswcliq > 0 (prognostic cloud scheme) - - -
cliqplayer in-cloud liq water path ( \(g/m^2\))
reliqmean eff radius for liq cloud (micron)
ciceplayer in-cloud ice water path ( \(g/m^2\))
reicemean eff radius for ice cloud (micron)
cdat1layer rain drop water path ( \(g/m^2\))
cdat2effective radius for rain drop (micron)
cdat3layer snow flake water path( \(g/m^2\))
cdat4mean eff radius for snow flake(micron)
for physparam::iswcliq = 0 (diagnostic cloud scheme) - - -
cliqpnot used
cicepnot used
reliqnot used
reicenot used
cdat1layer cloud optical depth
cdat2layer cloud single scattering albedo
cdat3layer cloud asymmetry factor
cdat4optional use
cf1effective total cloud cover at surface
nlayvertical layer number
ipseedpermutation seed for generating random numbers (isubcsw>0)
dzlayer thickness (km)
delgthlayer cloud decorrelation length (km)
taucwcloud optical depth, w/o delta scaled
ssacwweighted cloud single scattering albedo (ssa = ssacw / taucw)
asycwweighted cloud asymmetry factor (asy = asycw / ssacw)
cldfrccloud fraction of grid mean value
cldfmccloud fraction for each sub-column

cldprop General Algorithm

  1. Compute cloud radiative properties for a cloudy column.
    • Compute optical properties for rain and snow.
      For rain: tauran/ssaran/asyran
      For snow: tausnw/ssasnw/asysnw
    • Calculation of absorption coefficients due to water clouds
      For water clouds: tauliq/ssaliq/asyliq
    • Calculation of absorption coefficients due to ice clouds
      For ice clouds: tauice/ssaice/asyice
    • For Prognostic cloud scheme: sum up the cloud optical property:
      \( taucw=tauliq+tauice+tauran+tausnw \)
      \( ssacw=ssaliq+ssaice+ssaran+ssasnw \)
      \( asycw=asyliq+asyice+asyran+asysnw \)
    • If use fu's formula it needs to be normalized by snow/ice density. not use snow density = 0.1 g/cm**3 = 0.1 g/(mu * m**2)
      use ice density = 0.9167 g/cm**3 = 0.9167 g/(mu * m**2)
      1/0.9167 = 1.09087
      factor 1.5396=8/(3*sqrt(3)) converts reff to generalized ice particle size use newer factor value 1.0315
    • Calculation of absorption coefficients due to water clouds.
    • Calculation of absorption coefficients due to ice clouds.
      • ebert and curry approach for all particle sizes though somewhat unjustified for large ice particles.
      • streamer approach for ice effective radius between 5.0 and 131.0 microns.
      • fu's approach for ice effective radius between 4.8 and 135 microns (generalized effective size from 5 to 140 microns).
  2. if physparam::isubcsw > 0, call mcica_subcol() to distribute cloud properties to each g-point.

References module_radsw_cldprtb::a0r, module_radsw_cldprtb::a0s, module_radsw_cldprtb::a1s, module_radsw_cldprtb::abari, module_radsw_cldprtb::asyice2, module_radsw_cldprtb::asyice3, module_radsw_cldprtb::asyliq1, module_radsw_cldprtb::asyliq2, module_radsw_cldprtb::b0r, module_radsw_cldprtb::b0s, module_radsw_cldprtb::b1s, module_radsw_cldprtb::bbari, module_radsw_cldprtb::c0r, module_radsw_cldprtb::c0s, module_radsw_cldprtb::cbari, module_radsw_cldprtb::dbari, module_radsw_cldprtb::ebari, module_radsw_cldprtb::extice2, module_radsw_cldprtb::extice3, module_radsw_cldprtb::extliq1, module_radsw_cldprtb::extliq2, f_one, f_zero, module_radsw_cldprtb::fbari, ftiny, idxebc, physparam::isubcsw, physparam::iswcice, physparam::iswcliq, mcica_subcol(), module_radsw_parameters::nbdsw, module_radsw_parameters::nbhgh, module_radsw_parameters::nblow, module_radsw_parameters::ngptsw, module_radsw_cldprtb::ssaice2, module_radsw_cldprtb::ssaice3, module_radsw_cldprtb::ssaliq1, and module_radsw_cldprtb::ssaliq2.

Referenced by rrtmg_sw_run().

Here is the call graph for this function: