← Back to Documentation Home
CCPP SciDoc v8.0.0  v8.0.0
Common Community Physics Package Developed at DTC
 
Loading...
Searching...
No Matches
Radiation Clouds Module

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: More...

Modules

module  module_radiation_clouds
 This module computes cloud related quantities for radiation computations.
 

Functions/Subroutines

subroutine, public module_radiation_clouds::cld_init (si, nlay, imp_physics, me, con_g, con_rd, errflg, errmsg)
 This subroutine is an initialization program for cloud-radiation calculations and sets up boundary layer cloud top.
 
subroutine, public module_radiation_clouds::radiation_clouds_prop (plyr, plvl, tlyr, tvly, qlyr, qstl, rhly, ccnd, ncndl, cnvw, cnvc, tracer1, xlat, xlon, slmsk, dz, delp, ix, lm, nlay, nlp1, deltaq, sup, dcorr_con, me, icloud, kdt, ntrac, ntcw, ntiw, ntrw, ntsw, ntgl, ntclamt, imp_physics, imp_physics_nssl, imp_physics_fer_hires, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_tempo, imp_physics_mg, iovr, iovr_rand, iovr_maxrand, iovr_max, iovr_dcorr, iovr_exp, iovr_exprand, idcor, idcor_con, idcor_hogan, idcor_oreopoulos, lcrick, lcnorm, imfdeepcnv, imfdeepcnv_gf, imfdeepcnv_c3, do_mynnedmf, lgfdlmprad, xr_cnvcld, uni_cld, lmfshal, lmfdeep2, cldcov, clouds1, effrl, effri, effrr, effrs, effr_in, effrl_inout, effri_inout, effrs_inout, lwp_ex, iwp_ex, lwp_fc, iwp_fc, dzlay, latdeg, julian, yearlen, gridkm, top_at_1, si, xr_con, xr_exp, con_ttp, con_pi, con_g, con_rd, con_thgni, cld_frac, cld_lwp, cld_reliq, cld_iwp, cld_reice, cld_rwp, cld_rerain, cld_swp, cld_resnow, clds, mtop, mbot, de_lgth, alpha)
 Subroutine radiation_clouds_prop computes cloud related quantities for different cloud microphysics schemes.
 
subroutine, public module_radiation_clouds::progcld_gfdl_lin (plyr, plvl, tlyr, tvly, qlyr, qstl, rhly, clw, cnvw, cnvc, xlat, xlon, slmsk, cldtot, dz, delp, ix, nlay, nlp1, dzlay, cldtot1, cldcnv, lcrick, lcnorm, con_ttp, cld_frac, cld_lwp, cld_reliq, cld_iwp, cld_reice, cld_rwp, cld_rerain, cld_swp, cld_resnow)
 This subroutine computes cloud related quantities using GFDL Lin MP prognostic cloud microphysics scheme.
 
subroutine, public module_radiation_clouds::progcld_fer_hires (plyr, plvl, tlyr, tvly, qlyr, qstl, rhly, clw, xlat, xlon, slmsk, dz, delp, ntrac, ntcw, ntiw, ntrw, ix, nlay, nlp1, icloud, xr_con, xr_exp, uni_cld, lmfshal, lmfdeep2, cldcov, re_cloud, re_ice, re_snow, dzlay, cldtot, cldcnv, lcnorm, cld_frac, cld_lwp, cld_reliq, cld_iwp, cld_reice, cld_rwp, cld_rerain, cld_swp, cld_resnow)
 This subroutine computes cloud related quantities using Ferrier-Aligo cloud microphysics scheme.
 
subroutine, public module_radiation_clouds::progcld_thompson_wsm6 (plyr, plvl, tlyr, qlyr, qstl, rhly, clw, xlat, xlon, slmsk, dz, delp, ntrac, ntcw, ntiw, ntrw, ntsw, ntgl, con_ttp, xr_cnvcld, ix, nlay, nlp1, xr_con, xr_exp, uni_cld, lmfshal, lmfdeep2, cldcov, cnvw, re_cloud, re_ice, re_snow, lwp_ex, iwp_ex, lwp_fc, iwp_fc, dzlay, cldtot, cldcnv, lcnorm, cld_frac, cld_lwp, cld_reliq, cld_iwp, cld_reice, cld_rwp, cld_rerain, cld_swp, cld_resnow)
 This subroutine is used by Thompson/WSM6/NSSL cloud microphysics (EMC)
 
subroutine, public module_radiation_clouds::progcld_thompson (plyr, plvl, tlyr, qlyr, qstl, rhly, clw, xlat, xlon, slmsk, dz, delp, ntrac, ntcw, ntiw, ntrw, ntsw, ntgl, ix, nlay, nlp1, uni_cld, lmfshal, lmfdeep2, cldcov, re_cloud, re_ice, re_snow, lwp_ex, iwp_ex, lwp_fc, iwp_fc, dzlay, gridkm, top_at_1, cldtot, cldcnv, cld_frac, cld_lwp, cld_reliq, cld_iwp, cld_reice, cld_rwp, cld_rerain, cld_swp, cld_resnow)
 This subroutine added by G. Thompson specifically to account for explicit (microphysics-produced) cloud liquid water, cloud ice, and snow with 100% cloud fraction. Also, a parameterization for cloud fraction less than 1.0 but greater than 0.0 follows Mocko and Cotton (1996) from Sundqvist et al. (1989) with cloud fraction increasing as RH increases above a critical value. In locations with non-zero (but less than 1.0) cloud fraction, there MUST be a value assigned to cloud liquid water and ice or else there is zero impact in the RRTMG radiation scheme.
 
subroutine, public module_radiation_clouds::progclduni (plyr, plvl, tlyr, tvly, ccnd, ncnd, xlat, xlon, slmsk, dz, delp, ix, nlay, nlp1, cldtot, effrl, effri, effrr, effrs, effr_in, dzlay, cldtot1, cldcnv, lcrick, lcnorm, con_ttp, cld_frac, cld_lwp, cld_reliq, cld_iwp, cld_reice, cld_rwp, cld_rerain, cld_swp, cld_resnow)
 This subroutine computes cloud related quantities using for unified cloud microphysics scheme.
 
subroutine, public module_radiation_clouds::gethml (plyr, ptop1, cldtot, cldcnv, dz, de_lgth, alpha, ix, nlay, iovr, iovr_rand, iovr_maxrand, iovr_max, iovr_dcorr, iovr_exp, iovr_exprand, top_at_1, si, 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.
 
subroutine, public module_radiation_clouds::cal_cldfra3 (cldfra, qv, qc, qi, qs, dz, p, t, xland, gridkm, modify_qvapor, max_relh, kts, kte, debug_flag)
 Cloud fraction scheme by G. Thompson (NCAR-RAL), not intended for combining with any cumulus or shallow cumulus parameterization scheme cloud fractions. This is intended as a stand-alone for cloud fraction and is relatively good at getting widespread stratus and stratoCu without caring whether any deep/shallow Cu param schemes is making sub-grid-spacing clouds/precip. Under the hood, this scheme follows Mocko and Cotton (1995) in application of the Sundqvist et al (1989) scheme but using a grid-scale dependent RH threshold, one each for land v. ocean points based on experiences with HWRF testing.
 
subroutine, public module_radiation_clouds::find_cloudlayers (qvs1d, cfr1d, t1d, p1d, dz1d, entrmnt, debugfl, qc1d, qi1d, qs1d, kts, kte)
 From cloud fraction array, find clouds of multi-level depth and compute a reasonable value of LWP or IWP that might be contained in that depth, unless existing LWC/IWC is already there.
 
subroutine, public module_radiation_clouds::adjust_cloudice (cfr, qi, qs, qvs, t, dz, entr, k1, k2, kts, kte)
 
subroutine, public module_radiation_clouds::adjust_cloudh2o (cfr, qc, qvs, t, dz, entr, k1, k2, kts, kte)
 
subroutine, public module_radiation_clouds::adjust_cloudfinal (cfr, qc, qi, rho, dz, kts, kte)
 Do not alter any grid-explicitly resolved hydrometeors, rather only the supposed amounts due to the cloud fraction scheme.
 
real(kind_phys) function, public module_radiation_clouds::cld_frac_xurandall (p_lay, qs_lay, relhum, cld_mr, alpha, lambda, factor, cond_cfrac_onrh)
 This function computes the cloud-fraction following Xu-Randall(1996) [200].
 
subroutine module_microphysics::rsipath2 (plyr, plvl, tlyr, qlyr, qcwat, qcice, qrain, rrime, im, levs, iflip, flgmin, cwatp, cicep, rainp, snowp, recwat, rerain, resnow, snden)
 This program is a modified version of Ferrier's original "rshipath" subprogram. It computes layer's cloud liquid, ice, rain, and snow water condensate path and the partical effective radius for liquid droplet, rain drop, and snow flake.
 

Variables

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
 

Detailed Description

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:

Cloud overlapping method (namelist control parameter - IOVR)
IOVR=0: randomly overlapping vertical cloud layers
IOVR=1: maximum-random overlapping vertical cloud layers
IOVR=2: maximum overlapping vertical cloud layers
IOVR=3: decorrelation length overlapping vertical cloud layers
IOVR=4: exponential overlapping vertical cloud layers
IOVR=5: exponential-random overlapping vertical cloud layers

Sub-grid cloud approximation (namelist control parameter - ISUBC_LW=2, ISUBC_SW=2)
ISUBC=0: grid averaged quantities, without sub-grid cloud approximation
ISUBC=1: with McICA sub-grid approximation (use prescribed permutation seeds)
ISUBC=2: with McICA sub-grid approximation (use random permutation seeds)

Function/Subroutine Documentation

◆ adjust_cloudfinal()

subroutine, public module_radiation_clouds::adjust_cloudfinal ( real, dimension(kts:kte), intent(in)  cfr,
real, dimension(kts:kte), intent(inout)  qc,
real, dimension(kts:kte), intent(inout)  qi,
real, dimension(kts:kte), intent(in)  rho,
real, dimension(kts:kte), intent(in)  dz,
integer, intent(in)  kts,
integer, intent(in)  kte 
)

Do not alter any grid-explicitly resolved hydrometeors, rather only the supposed amounts due to the cloud fraction scheme.

Definition at line 3091 of file radiation_clouds.f.

Referenced by cal_cldfra3().

Here is the caller graph for this function:

◆ adjust_cloudh2o()

subroutine, public module_radiation_clouds::adjust_cloudh2o ( real, dimension(kts:kte), intent(in)  cfr,
real, dimension(kts:kte), intent(inout)  qc,
real, dimension(kts:kte), intent(in)  qvs,
real, dimension(kts:kte), intent(in)  t,
real, dimension(kts:kte), intent(in)  dz,
real, intent(in)  entr,
integer, intent(in)  k1,
integer, intent(in)  k2,
integer, intent(in)  kts,
integer, intent(in)  kte 
)

Definition at line 3047 of file radiation_clouds.f.

◆ adjust_cloudice()

subroutine, public module_radiation_clouds::adjust_cloudice ( real, dimension(kts:kte), intent(in)  cfr,
real, dimension(kts:kte), intent(inout)  qi,
real, dimension(kts:kte), intent(in)  qs,
real, dimension(kts:kte), intent(in)  qvs,
real, dimension(kts:kte), intent(in)  t,
real, dimension(kts:kte), intent(in)  dz,
real, intent(in)  entr,
integer, intent(in)  k1,
integer, intent(in)  k2,
integer, intent(in)  kts,
integer, intent(in)  kte 
)

Definition at line 3005 of file radiation_clouds.f.

◆ cal_cldfra3()

subroutine, public module_radiation_clouds::cal_cldfra3 ( real, dimension(kts:kte), intent(inout)  cldfra,
real, dimension(kts:kte), intent(inout)  qv,
real, dimension(kts:kte), intent(inout)  qc,
real, dimension(kts:kte), intent(inout)  qi,
real, dimension(kts:kte), intent(in)  qs,
real, dimension(kts:kte), intent(in)  dz,
real, dimension(kts:kte), intent(in)  p,
real, dimension(kts:kte), intent(in)  t,
real, intent(in)  xland,
real, intent(in)  gridkm,
logical, intent(in)  modify_qvapor,
real, intent(in)  max_relh,
integer, intent(in)  kts,
integer, intent(in)  kte,
logical, intent(in)  debug_flag 
)

Cloud fraction scheme by G. Thompson (NCAR-RAL), not intended for combining with any cumulus or shallow cumulus parameterization scheme cloud fractions. This is intended as a stand-alone for cloud fraction and is relatively good at getting widespread stratus and stratoCu without caring whether any deep/shallow Cu param schemes is making sub-grid-spacing clouds/precip. Under the hood, this scheme follows Mocko and Cotton (1995) in application of the Sundqvist et al (1989) scheme but using a grid-scale dependent RH threshold, one each for land v. ocean points based on experiences with HWRF testing.

Definition at line 2705 of file radiation_clouds.f.

References adjust_cloudfinal(), find_cloudlayers(), module_mp_thompson::rsif(), and module_mp_thompson::rslf().

Referenced by progcld_thompson().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cld_frac_xurandall()

real(kind_phys) function, public module_radiation_clouds::cld_frac_xurandall ( real(kind_phys), intent(in)  p_lay,
real(kind_phys), intent(in)  qs_lay,
real(kind_phys), intent(in)  relhum,
real(kind_phys), intent(in)  cld_mr,
real(kind_phys), intent(in)  alpha,
real(kind_phys), intent(in)  lambda,
real(kind_phys), intent(in)  factor,
logical, intent(in), optional  cond_cfrac_onrh 
)

This function computes the cloud-fraction following Xu-Randall(1996) [200].

Parameters
p_layPressure (100Pa)
qs_laySaturation vapor-pressure (Pa)
relhumRelative humidity
cld_mrTotal cloud mixing ratio
alphaScheme parameter (default=100)

Definition at line 3133 of file radiation_clouds.f.

References cld_frac_xurandall().

Referenced by cld_frac_xurandall(), progcld_fer_hires(), and progcld_thompson_wsm6().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cld_init()

subroutine, public module_radiation_clouds::cld_init ( real (kind=kind_phys), dimension(:), intent(in)  si,
integer, intent(in)  nlay,
integer, intent(in)  imp_physics,
integer, intent(in)  me,
real (kind=kind_phys), intent(in)  con_g,
real (kind=kind_phys), intent(in)  con_rd,
integer, intent(out)  errflg,
character(len=*), intent(out)  errmsg 
)

This subroutine is an initialization program for cloud-radiation calculations and sets up boundary layer cloud top.

Parameters
simodel vertical sigma layer interface
NLAYvertical layer number
imp_physicscloud microphysics scheme control flag
=11: GFDL microphysics cloud
=8: Thompson microphysics
=6: WSM6 microphysics
=10: MG microphysics
=15: Ferrier-Aligo microphysics
=17/18: NSSL microphysics
meprint control flag

General Algorithm

Definition at line 250 of file radiation_clouds.f.

◆ find_cloudlayers()

subroutine, public module_radiation_clouds::find_cloudlayers ( real, dimension(kts:kte), intent(in)  qvs1d,
real, dimension(kts:kte), intent(inout)  cfr1d,
real, dimension(kts:kte), intent(in)  t1d,
real, dimension(kts:kte), intent(in)  p1d,
real, dimension(kts:kte), intent(in)  dz1d,
real, intent(in)  entrmnt,
logical, intent(in)  debugfl,
real, dimension(kts:kte), intent(inout)  qc1d,
real, dimension(kts:kte), intent(inout)  qi1d,
real, dimension(kts:kte), intent(in)  qs1d,
integer, intent(in)  kts,
integer, intent(in)  kte 
)

From cloud fraction array, find clouds of multi-level depth and compute a reasonable value of LWP or IWP that might be contained in that depth, unless existing LWC/IWC is already there.

Definition at line 2850 of file radiation_clouds.f.

Referenced by cal_cldfra3().

Here is the caller graph for this function:

◆ gethml()

subroutine, public module_radiation_clouds::gethml ( real (kind=kind_phys), dimension(:,:), intent(in)  plyr,
real (kind=kind_phys), dimension(:,:), intent(in)  ptop1,
real (kind=kind_phys), dimension(:,:), intent(in)  cldtot,
real (kind=kind_phys), dimension(:,:), intent(in)  cldcnv,
real (kind=kind_phys), dimension(:,:), intent(in)  dz,
real (kind=kind_phys), dimension(:), intent(in)  de_lgth,
real (kind=kind_phys), dimension(:,:), intent(in)  alpha,
integer, intent(in)  ix,
integer, intent(in)  nlay,
integer, intent(in)  iovr,
  iovr_rand,
  iovr_maxrand,
  iovr_max,
  iovr_dcorr,
  iovr_exp,
  iovr_exprand,
logical, intent(in)  top_at_1,
real (kind=kind_phys), dimension(:), intent(in)  si,
real (kind=kind_phys), dimension(:,:), intent(out)  clds,
integer, dimension(:,:), intent(out)  mtop,
integer, dimension(:,:), intent(out)  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.

Parameters
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)
dz(IX,NLAY), layer thickness (km)
de_lgth(IX), clouds decorrelation length (km)
alpha(IX,NLAY), alpha decorrelation parameter
IXhorizontal dimension
NLAYvertical layer dimensions
iovr_randflag for random cloud overlap method
iovr_maxrandflag for maximum-random cloud overlap method
iovr_maxflag for maximum cloud overlap method
iovr_dcorrflag for decorrelation-length cloud overlap method
iovr_expflag for exponential cloud overlap method
iovr_exprandflag for exponential-random cloud overlap method
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

Detailed Algorithm

  • Compute the top of BL cld (llyr), which is the topmost non cld(low) layer for stratiform (at or above lowest 0.1 of the atmosphere).
  • Calculate total and BL cloud fractions (maximum-random cloud overlapping is operational).
  • Calculte high, mid, low cloud fractions and vertical indices of cloud tops/bases.

Definition at line 2263 of file radiation_clouds.f.

References nk_clds.

Referenced by radiation_clouds_prop().

Here is the caller graph for this function:

◆ progcld_fer_hires()

subroutine, public module_radiation_clouds::progcld_fer_hires ( 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)  ntrac,
integer, intent(in)  ntcw,
integer, intent(in)  ntiw,
integer, intent(in)  ntrw,
integer, intent(in)  ix,
integer, intent(in)  nlay,
integer, intent(in)  nlp1,
integer, intent(in)  icloud,
real (kind=kind_phys), intent(in)  xr_con,
real (kind=kind_phys), intent(in)  xr_exp,
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(inout)  re_cloud,
real (kind=kind_phys), dimension(:,:), intent(inout)  re_ice,
real (kind=kind_phys), dimension(:,:), intent(inout)  re_snow,
real (kind=kind_phys), dimension(:,:), intent(in)  dzlay,
real (kind=kind_phys), dimension(ix,nlay)  cldtot,
real (kind=kind_phys), dimension(ix,nlay)  cldcnv,
logical, intent(in)  lcnorm,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_frac,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_lwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_reliq,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_iwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_reice,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_rwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_rerain,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_swp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_resnow 
)

This subroutine computes cloud related quantities using Ferrier-Aligo cloud microphysics scheme.

  • Compute cloud liquid/ice condensate path in \( g/m^2 \) .
  • Calculate layer cloud fraction.

Definition at line 1087 of file radiation_clouds.f.

References cld_frac_xurandall().

Referenced by radiation_clouds_prop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ progcld_gfdl_lin()

subroutine, public module_radiation_clouds::progcld_gfdl_lin ( 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)  cnvw,
real (kind=kind_phys), dimension(:,:), intent(in)  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,
real (kind=kind_phys), dimension(:,:), intent(in)  cldtot,
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,
real (kind=kind_phys), dimension(:,:), intent(in)  dzlay,
real (kind=kind_phys), dimension(:,:), intent(inout)  cldtot1,
real (kind=kind_phys), dimension(ix,nlay)  cldcnv,
logical, intent(in)  lcrick,
logical, intent(in)  lcnorm,
real (kind=kind_phys)  con_ttp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_frac,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_lwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_reliq,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_iwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_reice,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_rwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_rerain,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_swp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_resnow 
)

This subroutine computes cloud related quantities using GFDL Lin MP prognostic cloud microphysics scheme.

General Algorithm

  • Assign liquid/ice/rain/snow cloud doplet effective radius as default value.
  • Compute liquid/ice condensate path in \(g m^{-2}\).
  • Compute effective liquid cloud droplet radius over land.
  • Compute effective ice cloud droplet radius in Heymsfield and McFarquhar (1996) [90] .

Definition at line 848 of file radiation_clouds.f.

Referenced by radiation_clouds_prop().

Here is the caller graph for this function:

◆ progcld_thompson()

subroutine, public module_radiation_clouds::progcld_thompson ( 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)  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)  ntrac,
integer, intent(in)  ntcw,
integer, intent(in)  ntiw,
integer, intent(in)  ntrw,
integer, intent(in)  ntsw,
integer, intent(in)  ntgl,
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)  re_cloud,
real (kind=kind_phys), dimension(:,:), intent(in)  re_ice,
real (kind=kind_phys), dimension(:,:), intent(in)  re_snow,
real (kind=kind_phys), dimension(:), intent(inout)  lwp_ex,
real (kind=kind_phys), dimension(:), intent(inout)  iwp_ex,
real (kind=kind_phys), dimension(:), intent(inout)  lwp_fc,
real (kind=kind_phys), dimension(:), intent(inout)  iwp_fc,
real (kind=kind_phys), dimension(:,:), intent(in)  dzlay,
real(kind=kind_phys), dimension(:), intent(in)  gridkm,
logical, intent(in)  top_at_1,
real (kind=kind_phys), dimension(ix,nlay)  cldtot,
real (kind=kind_phys), dimension(ix,nlay)  cldcnv,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_frac,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_lwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_reliq,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_iwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_reice,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_rwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_rerain,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_swp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_resnow 
)

This subroutine added by G. Thompson specifically to account for explicit (microphysics-produced) cloud liquid water, cloud ice, and snow with 100% cloud fraction. Also, a parameterization for cloud fraction less than 1.0 but greater than 0.0 follows Mocko and Cotton (1996) from Sundqvist et al. (1989) with cloud fraction increasing as RH increases above a critical value. In locations with non-zero (but less than 1.0) cloud fraction, there MUST be a value assigned to cloud liquid water and ice or else there is zero impact in the RRTMG radiation scheme.

  • Compute cloud liquid/ice condensate path in \( g/m^2 \) .
    • Since using Thompson MP, assume 1 percent of snow is actually in ice sizes.
  • Sum the liquid water and ice paths that come from explicit micro
  • Now determine the cloud fraction. Here, we will use the scheme of G. Thompson that implements a variannt of Mocko and Cotton (1995) based on work within HWRF and WRF. Where the bulk microphysics scheme already has explicit clouds, assume cloud fraction of one, but, otherwise, use a Sundqvist et al (1989) scheme and RH-critical to account for sub-grid-scale clouds, include those in the water and ice paths seen by the radiation scheme, but do not actually include these fake clouds into anything other than radiation.
  • Sum the liquid water and ice paths that come from fractional clouds

Definition at line 1677 of file radiation_clouds.f.

References cal_cldfra3().

Referenced by radiation_clouds_prop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ progcld_thompson_wsm6()

subroutine, public module_radiation_clouds::progcld_thompson_wsm6 ( 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)  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)  ntrac,
integer, intent(in)  ntcw,
integer, intent(in)  ntiw,
integer, intent(in)  ntrw,
integer, intent(in)  ntsw,
integer, intent(in)  ntgl,
real (kind=kind_phys), intent(in)  con_ttp,
logical, intent(in)  xr_cnvcld,
integer, intent(in)  ix,
integer, intent(in)  nlay,
integer, intent(in)  nlp1,
real (kind=kind_phys), intent(in)  xr_con,
real (kind=kind_phys), intent(in)  xr_exp,
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)  cnvw,
real (kind=kind_phys), dimension(:,:), intent(in)  re_cloud,
real (kind=kind_phys), dimension(:,:), intent(in)  re_ice,
real (kind=kind_phys), dimension(:,:), intent(in)  re_snow,
real (kind=kind_phys), dimension(:), intent(inout)  lwp_ex,
real (kind=kind_phys), dimension(:), intent(inout)  iwp_ex,
real (kind=kind_phys), dimension(:), intent(inout)  lwp_fc,
real (kind=kind_phys), dimension(:), intent(inout)  iwp_fc,
real (kind=kind_phys), dimension(:,:), intent(in)  dzlay,
real (kind=kind_phys), dimension(ix,nlay)  cldtot,
real (kind=kind_phys), dimension(ix,nlay)  cldcnv,
logical, intent(in)  lcnorm,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_frac,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_lwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_reliq,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_iwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_reice,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_rwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_rerain,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_swp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_resnow 
)

This subroutine is used by Thompson/WSM6/NSSL cloud microphysics (EMC)

  • Include grid-mean suspended cloud condensate in Xu-Randall cloud fraction if xr_cnvcld is true:
  • Compute total-cloud liquid/ice condensate path in \( g/m^2 \). The total condensate includes convective condensate.
  • Sum the liquid water and ice paths that come from explicit micro
  • Calculate layer cloud fraction.

Definition at line 1341 of file radiation_clouds.f.

References cld_frac_xurandall().

Referenced by radiation_clouds_prop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ progclduni()

subroutine, public module_radiation_clouds::progclduni ( 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)  ccnd,
integer, intent(in)  ncnd,
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,
real (kind=kind_phys), dimension(:,:), intent(in)  cldtot,
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(in)  dzlay,
real (kind=kind_phys), dimension(:,:), intent(inout)  cldtot1,
real (kind=kind_phys), dimension(ix,nlay)  cldcnv,
logical, intent(in)  lcrick,
logical, intent(in)  lcnorm,
real (kind=kind_phys), intent(in)  con_ttp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_frac,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_lwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_reliq,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_iwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_reice,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_rwp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_rerain,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_swp,
real (kind=kind_phys), dimension(:,:), intent(inout)  cld_resnow 
)

This subroutine computes cloud related quantities using for unified cloud microphysics scheme.

General Algorithm

  1. Compute cloud liquid/ice condensate path in \( g/m^2 \) .
  1. Compute effective liquid cloud droplet radius over land.
  1. Compute effective ice cloud droplet radius following Heymsfield and McFarquhar (1996) [90].

Definition at line 1957 of file radiation_clouds.f.

Referenced by radiation_clouds_prop().

Here is the caller graph for this function:

◆ radiation_clouds_prop()

subroutine, public module_radiation_clouds::radiation_clouds_prop ( 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)  ccnd,
integer, intent(in)  ncndl,
real (kind=kind_phys), dimension(:,:), intent(in)  cnvw,
real (kind=kind_phys), dimension(:,:), intent(in)  cnvc,
real (kind=kind_phys), dimension(:,:,:), intent(in)  tracer1,
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)  lm,
integer, intent(in)  nlay,
integer, intent(in)  nlp1,
real(kind=kind_phys), dimension(:,:)  deltaq,
real (kind=kind_phys), intent(in)  sup,
real (kind=kind_phys), intent(in)  dcorr_con,
integer, intent(in)  me,
integer, intent(in)  icloud,
integer, intent(in)  kdt,
integer, intent(in)  ntrac,
integer, intent(in)  ntcw,
integer, intent(in)  ntiw,
integer, intent(in)  ntrw,
integer, intent(in)  ntsw,
integer, intent(in)  ntgl,
integer, intent(in)  ntclamt,
integer, intent(in)  imp_physics,
  imp_physics_nssl,
  imp_physics_fer_hires,
  imp_physics_gfdl,
  imp_physics_thompson,
  imp_physics_wsm6,
  imp_physics_tempo,
  imp_physics_mg,
integer, intent(in)  iovr,
  iovr_rand,
  iovr_maxrand,
  iovr_max,
  iovr_dcorr,
  iovr_exp,
  iovr_exprand,
  idcor,
  idcor_con,
  idcor_hogan,
  idcor_oreopoulos,
logical, intent(in)  lcrick,
logical, intent(in)  lcnorm,
integer, intent(in)  imfdeepcnv,
integer, intent(in)  imfdeepcnv_gf,
integer, intent(in)  imfdeepcnv_c3,
logical, intent(in)  do_mynnedmf,
logical, intent(in)  lgfdlmprad,
logical, intent(in)  xr_cnvcld,
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)  clouds1,
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(inout)  effrl_inout,
real(kind=kind_phys), dimension(:,:), intent(inout)  effri_inout,
real(kind=kind_phys), dimension(:,:), intent(inout)  effrs_inout,
real(kind=kind_phys), dimension(:), intent(inout)  lwp_ex,
real(kind=kind_phys), dimension(:), intent(inout)  iwp_ex,
real(kind=kind_phys), dimension(:), intent(inout)  lwp_fc,
real(kind=kind_phys), dimension(:), intent(inout)  iwp_fc,
real (kind=kind_phys), dimension(:,:), intent(in)  dzlay,
real(kind=kind_phys), dimension(:), intent(in)  latdeg,
real(kind=kind_phys), intent(in)  julian,
integer, intent(in)  yearlen,
real(kind=kind_phys), dimension(:), intent(in)  gridkm,
logical, intent(in)  top_at_1,
real (kind=kind_phys), dimension(:), intent(in)  si,
real (kind=kind_phys), intent(in)  xr_con,
real (kind=kind_phys), intent(in)  xr_exp,
real (kind=kind_phys), intent(in)  con_ttp,
real (kind=kind_phys), intent(in)  con_pi,
real (kind=kind_phys), intent(in)  con_g,
real (kind=kind_phys), intent(in)  con_rd,
real (kind=kind_phys), intent(in)  con_thgni,
real (kind=kind_phys), dimension(:,:), intent(out)  cld_frac,
real (kind=kind_phys), dimension(:,:), intent(out)  cld_lwp,
real (kind=kind_phys), dimension(:,:), intent(out)  cld_reliq,
real (kind=kind_phys), dimension(:,:), intent(out)  cld_iwp,
real (kind=kind_phys), dimension(:,:), intent(out)  cld_reice,
real (kind=kind_phys), dimension(:,:), intent(out)  cld_rwp,
real (kind=kind_phys), dimension(:,:), intent(out)  cld_rerain,
real (kind=kind_phys), dimension(:,:), intent(out)  cld_swp,
real (kind=kind_phys), dimension(:,:), intent(out)  cld_resnow,
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,
real (kind=kind_phys), dimension(:,:), intent(out)  alpha 
)

Subroutine radiation_clouds_prop computes cloud related quantities for different cloud microphysics schemes.

General Algorithm

  • Compute SFC/low/middle/high cloud top pressure for each cloud domain for given latitude.
  • 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.

Definition at line 331 of file radiation_clouds.f.

References gethml(), nk_clds, progcld_fer_hires(), progcld_gfdl_lin(), progcld_thompson(), progcld_thompson_wsm6(), and progclduni().

Here is the call graph for this function:

◆ rsipath2()

subroutine module_microphysics::rsipath2 ( real, dimension(:,:), intent(in)  plyr,
real, dimension(:,:), intent(in)  plvl,
real, dimension(:,:), intent(in)  tlyr,
real, dimension(:,:), intent(in)  qlyr,
real, dimension(:,:), intent(in)  qcwat,
real, dimension(:,:), intent(in)  qcice,
real, dimension(:,:), intent(in)  qrain,
real, dimension(:,:), intent(in)  rrime,
integer, intent(in)  im,
integer, intent(in)  levs,
integer, intent(in)  iflip,
real, dimension(:), intent(in)  flgmin,
real, dimension(:,:), intent(out)  cwatp,
real, dimension(:,:), intent(out)  cicep,
real, dimension(:,:), intent(out)  rainp,
real, dimension(:,:), intent(out)  snowp,
real, dimension(:,:), intent(out)  recwat,
real, dimension(:,:), intent(out)  rerain,
real, dimension(:,:), intent(out)  resnow,
real, dimension(:,:), intent(out)  snden 
)

This program is a modified version of Ferrier's original "rshipath" subprogram. It computes layer's cloud liquid, ice, rain, and snow water condensate path and the partical effective radius for liquid droplet, rain drop, and snow flake.

Definition at line 2897 of file module_bfmicrophysics.f.

Variable Documentation

◆ nf_clds

integer, parameter, public module_radiation_clouds::nf_clds = 9

number of fields in cloud array

Definition at line 182 of file radiation_clouds.f.

◆ nk_clds

integer, parameter, public module_radiation_clouds::nk_clds = 3

number of cloud vertical domains

Definition at line 183 of file radiation_clouds.f.

Referenced by gethml(), and radiation_clouds_prop().