CCPP SciDoc for HSD Capabilities  SRW v3.0.0
Common Community Physics Package Developed at DTC
Loading...
Searching...
No Matches
module_mp_thompson Module Reference

This module computes the moisture tendencies of water vapor, cloud droplets, rain, cloud ice (pristine), snow, and graupel. Prior to WRFv2.2 this code was based on Reisner et al (1998), but few of those pieces remain. A complete description is now found in Thompson, G., P. R. Field, R. M. Rasmussen, and W. D. Hall, 2008: Explicit Forecasts of winter precipitation using an improved bulk microphysics scheme. Part II: Implementation of a new snow parameterization. Mon. Wea. Rev., 136, 5095-5115. More...

Functions/Subroutines

subroutine thompson_init (l_mp_tables, hail_aware_flag, aerosol_aware_flag)
subroutine thompson_3d_to_1d_driver (qv, qc, qr, qi, qs, qg, qb, ni, nr, nc, ng, nwfa, nifa, nwfa2d, nifa2d, th, pii, p, w, dz, dt_in, itimestep, rainnc, rainncv, snownc, snowncv, graupelnc, graupelncv, sr, refl_10cm, diagflag, do_radar_ref, re_cloud, re_ice, re_snow, has_reqc, has_reqi, has_reqs, ntc, muc, ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, its, ite, jts, jte, kts, kte)
subroutine thompson_finalize ()
subroutine qr_acr_qg
 Rain collecting graupel (and inverse). Explicit CE integration.
subroutine qr_acr_qs
 Rain collecting snow (and inverse). Explicit CE integration.
subroutine freezeh2o (threads)
 This is a literal adaptation of Bigg (1954) probability of drops of a particular volume freezing. Given this probability, simply freeze the proportion of drops summing their masses.
subroutine qi_aut_qs
 Cloud ice converting to snow since portion greater than min snow size. Given cloud ice content (kg/m**3), number concentration (#/m**3) and gamma shape parameter, mu_i, break the distrib into bins and figure out the mass/number of ice with sizes larger than D0s. Also, compute incomplete gamma function for the integration of ice depositional growth from diameter=0 to D0s. Amount of ice depositional growth is this portion of distrib while larger diameters contribute to snow growth (as in Harrington et al. 1995).
subroutine table_efrw
 Variable collision efficiency for rain collecting cloud water using method of Beard and Grover, 1974 if a/A less than 0.25; otherwise uses polynomials to get close match of Pruppacher & Klett Fig 14-9.
subroutine table_efsw
 Variable collision efficiency for snow collecting cloud water using method of Wang and Ji, 2000 except equate melted snow diameter to their "effective collision cross-section.".
real function eff_aero (d, da, visc, rhoa, temp, species)
 Function to compute collision efficiency of collector species (rain, snow, graupel) of aerosols. Follows Wang et al, 2010, ACP, which follows Slinn (1983).
subroutine table_dropevap
 Integrate rain size distribution from zero to D-star to compute the number of drops smaller than D-star that evaporate in a single timestep. Drops larger than D-star dont evaporate entirely so do not affect number concentration.
subroutine table_ccnact (errmess, errflag)
 Fill the table of CCN activation data created from parcel model run by Trude Eidhammer with inputs of aerosol number concentration, vertical velocity, temperature, lognormal mean aerosol radius, and hygroscopicity, kappa. The data are read from external file and contain activated fraction of CCN for given conditions.
real function activ_ncloud (tt, ww, nccn, lsm_in)
 Retrieve fraction of CCN that gets activated given the model temp, vertical velocity, and available CCN concentration. The lookup table (read from external file) has CCN concentration varying the quickest, then updraft, then temperature, then mean aerosol radius, and finally hygroscopicity, kappa.
subroutine gcf (gammcf, a, x, gln)
 Returns the incomplete gamma function q(a,x) evaluated by its continued fraction representation as gammcf.
subroutine gser (gamser, a, x, gln)
 Returns the incomplete gamma function p(a,x) evaluated by its series representation as gamser.
real function gammln (xx)
 Returns the value ln(gamma(xx)) for xx > 0.
real function gammp (a, x)
real function wgamma (y)
real function rslf (p, t)
 THIS FUNCTION CALCULATES THE LIQUID SATURATION VAPOR MIXING RATIO AS A FUNCTION OF TEMPERATURE AND PRESSURE.
real function rsif (p, t)
 THIS FUNCTION CALCULATES THE ICE SATURATION VAPOR MIXING RATIO AS A FUNCTION OF TEMPERATURE AND PRESSURE.
real function icedemott (tempc, qv, qvs, qvsi, rho, nifa)
real function icekoop (temp, qv, qvs, naero, dt)
 Newer research since Koop et al (2001) suggests that the freezing rate should be lower than original paper, so J_rate is reduced by two orders of magnitude.
real function delta_p (yy, y1, y2, aa, bb)
 Helper routine for Phillips et al (2008) ice nucleation.
subroutine calc_effectrad (t1d, p1d, qv1d, qc1d, nc1d, qi1d, ni1d, qs1d, re_qc1d, re_qi1d, re_qs1d, lsml, kts, kte)
 Compute radiation effective radii of cloud water, ice, and snow. These are entirely consistent with microphysics assumptions, not constant or otherwise ad hoc as is internal to most radiation schemes. Since only the smallest snowflakes should impact radiation, compute from first portion of complicated Field number distribution, not the second part, which is the larger sizes.
subroutine calc_refl10cm (qv1d, qc1d, qr1d, nr1d, qs1d, qg1d, t1d, p1d, dbz, rand1, kts, kte, ii, jj, melti, vt_dbz, first_time_step)
 Compute radar reflectivity assuming 10 cm wavelength radar and using Rayleigh approximation. Only complication is melted snow/graupel which we treat as water-coated ice spheres and use Uli Blahak's library of routines. The meltwater fraction is simply the amount of frozen species remaining from what initially existed at the melting level interface.
subroutine semi_lagrange_sedim (km, dzl, wwl, rql, precip, pfsan, dt, r1)
 This routine is a semi-Lagrangian forward advection for hydrometeors with mass conservation and positive definite advection 2nd order interpolation with monotonic piecewise parabolic method is used. This routine is under assumption of decfl < 1 for semi_Lagrangian (Juang and Hong, 2010 [63]).
subroutine graupel_psd_parameters (kts, kte, rand1, rg, ilamg, n0_g)
 Calculates graupel size distribution parameters.
real(wp) function hail_mass_99th_percentile (kts, kte, qg, temperature, pressure, qv)
 Calculates graupel/hail maximum diameter.
subroutine thompson_init (is_aerosol_aware_in, merra2_aerosol_aware_in, mpicomm, mpirank, mpiroot, threads, errmsg, errflg)
 This subroutine calculates simplified cloud species equations and create lookup tables in Thomspson scheme.
subroutine mp_gt_driver (wrf_chem)
 This is a wrapper routine designed to transfer values from 3D to 1D.
subroutine mp_thompson (wrf_chem)
 This subroutine computes the moisture tendencies of water vapor, cloud droplets, rain, cloud ice (pristine), snow, and graupel. Previously this code was based on Reisner et al (1998), but few of those pieces remain. A complete description is now found in Thompson et al. (2004, 2008)[140] [141].

Variables

logical, parameter, private iiwarm = .false.
logical, private is_aerosol_aware = .false.
logical, private merra2_aerosol_aware = .false.
logical, parameter, private dustyice = .true.
logical, parameter, private homogice = .true.
integer, parameter, private ifdry = 0
real(wp) t_0
real(wp) pi
real(wp), parameter, private rho_w = 1000.0
real(wp), parameter, private rho_s = 100.0
real(wp), parameter, private rho_g = 500.0
real(wp), parameter, private rho_i = 890.0
real(wp), parameter, private nt_c_max = 1999.e6
real(wp) nt_c_l = 150.e6
real(wp) nt_c_o = 50.e6
real(wp) av_i
real(wp) xnc_max = 1000.e3
real(wp) ssati_min = 0.15
real(wp) nt_i_max = 4999.e3_dp
real(wp) rr_min = 1000.0
real(wp), parameter nain0 = 1.5e6
real(wp), parameter nain1 = 0.5e6
real(wp), parameter naccn0 = 300.0e6
real(wp), parameter naccn1 = 50.0e6
real(wp), parameter, private mu_r = 0.0
real(wp), parameter, private mu_g = 0.0
real(wp), parameter, private mu_i = 0.0
real(wp), private mu_c_o
real(wp), private mu_c_l
real(wp), parameter, private mu_s = 0.6357
real(wp), parameter, private kap0 = 490.6
real(wp), parameter, private kap1 = 17.46
real(wp), parameter, private lam0 = 20.78
real(wp), parameter, private lam1 = 3.29
real(wp), parameter, private gonv_min = 1.E2
real(wp), parameter, private gonv_max = 1.E6
real(wp), private am_r
real(wp), parameter, private bm_r = 3.0
real(wp), parameter, private am_s = 0.069
real(wp), parameter, private bm_s = 2.0
real(wp), private am_g
real(wp), parameter, private bm_g = 3.0
real(wp), private am_i
real(wp), parameter, private bm_i = 3.0
real(wp), parameter, private av_r = 4854.0
real(wp), parameter, private bv_r = 1.0
real(wp), parameter, private fv_r = 195.0
real(wp), parameter av_s = 40.0
real(wp), parameter bv_s = 0.55
real(wp), parameter, private fv_s = 100.0
real(wp), parameter, private av_g = 442.0
real(wp), parameter, private bv_g = 0.89
real(wp), parameter bv_i = 1.0
real(wp), parameter, private av_c = 0.316946E8
real(wp), parameter, private bv_c = 2.0
real(wp), parameter, private c_cube = 0.5
real(wp), parameter, private c_sqrd = 0.15
real(wp), parameter, private ef_si = 0.05
real(wp), parameter, private ef_rs = 0.95
real(wp), parameter, private ef_rg = 0.75
real(wp), parameter, private ef_ri = 0.95
real(wp), parameter, private r1 = 1.e-12
real(wp), parameter, private r2 = 1.e-6
real(wp), parameter eps = 1.E-15
real(wp), parameter, private tno = 5.0
real(wp), parameter, private ato = 0.304
real(wp) rho_not
real(wp), parameter, private sc = 0.632
real(wp), private sc3
real(wp), parameter, private hgfr = 235.16
real(wp) rv
real(wp), private orv
real(wp) r
real(wp) roverrv
real(wp) cp
real(wp) r_uni
real(dp) k_b
real(dp) m_w
real(dp) m_a
real(dp) n_avo
real(dp), private ma_w
real(wp), private ar_volume
real(wp), private lsub
real(wp) lvap0
real(wp) lfus
real(wp), private olfus
real(wp), parameter, private xm0i = R1
real(wp), parameter, private d0c = 1.e-6
real(wp), parameter, private d0r = 50.e-6
real(wp), parameter d0s = 300.e-6
real(wp), parameter, private d0g = 350.e-6
real(wp), private d0i
real(wp), private xm0s
real(wp), private xm0g
real(wp), parameter re_qc_min = 2.50e-6
real(wp), parameter re_qc_max = 50.0e-6
real(wp), parameter re_qi_min = 2.50e-6
real(wp), parameter re_qi_max = 125.0e-6
real(wp), parameter re_qs_min = 5.00e-6
real(wp), parameter re_qs_max = 999.0e-6
integer, parameter, private nbins = 100
integer, parameter, private nbc = nbins
integer, parameter, private nbi = nbins
integer, parameter, private nbr = nbins
integer, parameter, private nbs = nbins
integer, parameter, private nbg = nbins
integer, parameter, private ntb_c = 37
integer, parameter, private ntb_i = 64
integer, parameter, private ntb_r = 37
integer, parameter, private ntb_s = 28
integer, parameter, private ntb_g = 28
integer, parameter, private ntb_g1 = 37
integer, parameter, private ntb_r1 = 37
integer, parameter, private ntb_i1 = 55
integer, parameter, private ntb_t = 9
integer, private nic1
integer, private nic2
integer, private nii2
integer, private nii3
integer, private nir2
integer, private nir3
integer, private nis2
integer, private nig2
integer, private nig3
integer, parameter, private ntb_arc = 7
integer, parameter, private ntb_arw = 9
integer, parameter, private ntb_art = 7
integer, parameter, private ntb_arr = 5
integer, parameter, private ntb_ark = 4
integer, parameter, private ntb_in = 55
integer, private niin2
real(dp), dimension(nbins+1) xdx
real(dp), dimension(nbcdc
real(dp), dimension(nbcdtc
real(dp), dimension(nbidi
real(dp), dimension(nbidti
real(dp), dimension(nbrdr
real(dp), dimension(nbrdtr
real(dp), dimension(nbsds
real(dp), dimension(nbsdts
real(dp), dimension(nbgdg
real(dp), dimension(nbgdtg
real(dp), dimension(nbct_nc
real(wp), dimension(ntb_c), parameter, private r_c = (/1.e-6,2.e-6,3.e-6,4.e-6,5.e-6,6.e-6,7.e-6,8.e-6,9.e-6, 1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3,2.e-3,3.e-3,4.e-3,5.e-3,6.e-3,7.e-3,8.e-3,9.e-3, 1.e-2/)
 Lookup tables for cloud water content (kg/m**3).
real(wp), dimension(ntb_i), parameter, private r_i = (/1.e-10,2.e-10,3.e-10,4.e-10, 5.e-10,6.e-10,7.e-10,8.e-10,9.e-10, 1.e-9,2.e-9,3.e-9,4.e-9,5.e-9,6.e-9,7.e-9,8.e-9,9.e-9, 1.e-8,2.e-8,3.e-8,4.e-8,5.e-8,6.e-8,7.e-8,8.e-8,9.e-8, 1.e-7,2.e-7,3.e-7,4.e-7,5.e-7,6.e-7,7.e-7,8.e-7,9.e-7, 1.e-6,2.e-6,3.e-6,4.e-6,5.e-6,6.e-6,7.e-6,8.e-6,9.e-6, 1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3/)
 Lookup tables for cloud ice content (kg/m**3).
real(wp), dimension(ntb_r), parameter, private r_r = (/1.e-6,2.e-6,3.e-6,4.e-6,5.e-6,6.e-6,7.e-6,8.e-6,9.e-6, 1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3,2.e-3,3.e-3,4.e-3,5.e-3,6.e-3,7.e-3,8.e-3,9.e-3, 1.e-2/)
 Lookup tables for rain content (kg/m**3).
real(wp), dimension(ntb_g), parameter, private r_g = (/1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3,2.e-3,3.e-3,4.e-3,5.e-3,6.e-3,7.e-3,8.e-3,9.e-3, 1.e-2/)
 Lookup tables for graupel content (kg/m**3).
real(wp), dimension(ntb_s), parameter, private r_s = (/1.e-5,2.e-5,3.e-5,4.e-5,5.e-5,6.e-5,7.e-5,8.e-5,9.e-5, 1.e-4,2.e-4,3.e-4,4.e-4,5.e-4,6.e-4,7.e-4,8.e-4,9.e-4, 1.e-3,2.e-3,3.e-3,4.e-3,5.e-3,6.e-3,7.e-3,8.e-3,9.e-3, 1.e-2/)
 Lookup tables for snow content (kg/m**3).
real(wp), dimension(ntb_r1), parameter, private n0r_exp = (/1.e6,2.e6,3.e6,4.e6,5.e6,6.e6,7.e6,8.e6,9.e6, 1.e7,2.e7,3.e7,4.e7,5.e7,6.e7,7.e7,8.e7,9.e7, 1.e8,2.e8,3.e8,4.e8,5.e8,6.e8,7.e8,8.e8,9.e8, 1.e9,2.e9,3.e9,4.e9,5.e9,6.e9,7.e9,8.e9,9.e9, 1.e10/)
 Lookup tables for rain y-intercept parameter (/m**4).
real(wp), dimension(ntb_g1), parameter, private n0g_exp = (/1.e2,2.e2,3.e2,4.e2,5.e2,6.e2,7.e2,8.e2,9.e2, 1.e3,2.e3,3.e3,4.e3,5.e3,6.e3,7.e3,8.e3,9.e3, 1.e4,2.e4,3.e4,4.e4,5.e4,6.e4,7.e4,8.e4,9.e4, 1.e5,2.e5,3.e5,4.e5,5.e5,6.e5,7.e5,8.e5,9.e5, 1.e6/)
 Lookup tables for graupel y-intercept parameter (/m**4).
real(wp), dimension(ntb_i1), parameter, private nt_i = (/1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0, 1.e1,2.e1,3.e1,4.e1,5.e1,6.e1,7.e1,8.e1,9.e1, 1.e2,2.e2,3.e2,4.e2,5.e2,6.e2,7.e2,8.e2,9.e2, 1.e3,2.e3,3.e3,4.e3,5.e3,6.e3,7.e3,8.e3,9.e3, 1.e4,2.e4,3.e4,4.e4,5.e4,6.e4,7.e4,8.e4,9.e4, 1.e5,2.e5,3.e5,4.e5,5.e5,6.e5,7.e5,8.e5,9.e5, 1.e6/)
 Lookup tables for ice number concentration (/m**3).
real(wp), dimension(ntb_arc), parameter, private ta_na = (/10.0, 31.6, 100.0, 316.0, 1000.0, 3160.0, 10000.0/)
real(wp), dimension(ntb_arw), parameter, private ta_ww = (/0.01, 0.0316, 0.1, 0.316, 1.0, 3.16, 10.0, 31.6, 100.0/)
real(wp), dimension(ntb_art), parameter, private ta_tk = (/243.15, 253.15, 263.15, 273.15, 283.15, 293.15, 303.15/)
real(wp), dimension(ntb_arr), parameter, private ta_ra = (/0.01, 0.02, 0.04, 0.08, 0.16/)
real(wp), dimension(ntb_ark), parameter, private ta_ka = (/0.2, 0.4, 0.6, 0.8/)
real(wp), dimension(ntb_in), parameter, private nt_in = (/1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0, 1.e1,2.e1,3.e1,4.e1,5.e1,6.e1,7.e1,8.e1,9.e1, 1.e2,2.e2,3.e2,4.e2,5.e2,6.e2,7.e2,8.e2,9.e2, 1.e3,2.e3,3.e3,4.e3,5.e3,6.e3,7.e3,8.e3,9.e3, 1.e4,2.e4,3.e4,4.e4,5.e4,6.e4,7.e4,8.e4,9.e4, 1.e5,2.e5,3.e5,4.e5,5.e5,6.e5,7.e5,8.e5,9.e5, 1.e6/)
 Lookup tables for IN concentration (/m**3) from 0.001 to 1000/Liter.
real(wp), dimension(10), parameter, private sa = (/ 5.065339, -0.062659, -3.032362, 0.029469, -0.000285, 0.31255, 0.000204, 0.003199, 0.0, -0.015952/)
 For snow moments conversions (from Field et al. 2005).
real(wp), dimension(10), parameter, private sb = (/ 0.476221, -0.015896, 0.165977, 0.007468, -0.000141, 0.060366, 0.000079, 0.000594, 0.0, -0.003577/)
real(wp), dimension(ntb_t), parameter, private tc = (/-0.01, -5., -10., -15., -20., -25., -30., -35., -40./)
 Temperatures (5 C interval 0 to -40) used in lookup tables.
character(len= *), parameter thomp_table_file = 'thompson_tables_precomp_v2.sl'
character(len= *), parameter qr_acr_qg_file = 'qr_acr_qgV2.dat'
character(len= *), parameter qr_acr_qs_file = 'qr_acr_qsV2.dat'
character(len= *), parameter freeze_h2o_file = 'freezeH2O.dat'
real(dp), dimension(:,:,:,:), allocatable tcg_racg
real(dp), dimension(:,:,:,:), allocatable tmr_racg
real(dp), dimension(:,:,:,:), allocatable tcr_gacr
real(dp), dimension(:,:,:,:), allocatable tmg_gacr
real(dp), dimension(:,:,:,:), allocatable tnr_racg
real(dp), dimension(:,:,:,:), allocatable tnr_gacr
real(dp), dimension(:,:,:,:), allocatable tcs_racs1
real(dp), dimension(:,:,:,:), allocatable tmr_racs1
real(dp), dimension(:,:,:,:), allocatable tcs_racs2
real(dp), dimension(:,:,:,:), allocatable tmr_racs2
real(dp), dimension(:,:,:,:), allocatable tcr_sacr1
real(dp), dimension(:,:,:,:), allocatable tms_sacr1
real(dp), dimension(:,:,:,:), allocatable tcr_sacr2
real(dp), dimension(:,:,:,:), allocatable tms_sacr2
real(dp), dimension(:,:,:,:), allocatable tnr_racs1
real(dp), dimension(:,:,:,:), allocatable tnr_racs2
real(dp), dimension(:,:,:,:), allocatable tnr_sacr1
real(dp), dimension(:,:,:,:), allocatable tnr_sacr2
real(dp), dimension(:,:,:,:), allocatable tpi_qcfz
real(dp), dimension(:,:,:,:), allocatable tni_qcfz
real(dp), dimension(:,:,:,:), allocatable tpi_qrfz
real(dp), dimension(:,:,:,:), allocatable tpg_qrfz
real(dp), dimension(:,:,:,:), allocatable tni_qrfz
real(dp), dimension(:,:,:,:), allocatable tnr_qrfz
real(dp), dimension(:,:), allocatable tps_iaus
real(dp), dimension(:,:), allocatable tni_iaus
real(dp), dimension(:,:), allocatable tpi_ide
real(dp), dimension(:,:), allocatable t_efrw
real(dp), dimension(:,:), allocatable t_efsw
real(dp), dimension(:,:,:), allocatable tnr_rev
real(dp), dimension(:,:,:), allocatable tpc_wev
real(dp), dimension(:,:,:), allocatable tnc_wev
real(sp), dimension(:,:,:,:,:), allocatable tnccn_act
real(wp), dimension(5, 15), private cce
real(wp), dimension(5, 15), private ccg
real(wp), dimension(15), private ocg1
real(wp), dimension(15), private ocg2
real(wp), dimension(7), private cie
real(wp), dimension(7), private cig
real(wp), private oig1
real(wp), private oig2
real(wp), private obmi
real(wp), dimension(13), private cre
real(wp), dimension(13), private crg
real(wp), private ore1
real(wp), private org1
real(wp), private org2
real(wp), private org3
real(wp), private obmr
real(wp), dimension(18), private cse
real(wp), dimension(18), private csg
real(wp), private oams
real(wp), private obms
real(wp), private ocms
real(wp), dimension(12), private cge
real(wp), dimension(12), private cgg
real(wp), private oge1
real(wp), private ogg1
real(wp), private ogg2
real(wp), private ogg3
real(wp), private oamg
real(wp), private obmg
real(wp), private ocmg
real(wp) t1_qr_qc
real(wp) t1_qr_qi
real(wp) t2_qr_qi
real(wp) t1_qg_qc
real(wp) t1_qs_qc
real(wp) t1_qs_qi
real(wp) t1_qr_ev
real(wp) t2_qr_ev
real(wp) t1_qs_sd
real(wp) t2_qs_sd
real(wp) t1_qg_sd
real(wp) t2_qg_sd
real(wp) t1_qs_me
real(wp) t2_qs_me
real(wp) t1_qg_me
real(wp) t2_qg_me
type(mpi_comm) mpi_communicator
logical thompson_table_writer

Detailed Description

Prior to WRFv3.1, this code was single-moment rain prediction as described in the reference above, but in v3.1 and higher, the scheme is two-moment rain (predicted rain number concentration).

Beginning with WRFv3.6, this is also the "aerosol-aware" scheme as described in Thompson, G. and T. Eidhammer, 2014: A study of aerosol impacts on clouds and precipitation development in a large winter cyclone. J. Atmos. Sci., 71, 3636-3658. Setting WRF namelist option mp_physics=8 utilizes the older one-moment cloud water with constant droplet concentration set as Nt_c (found below) while mp_physics=28 uses double-moment cloud droplet number concentration, which is not permitted to exceed Nt_c_max below.

Most importantly, users may wish to modify the prescribed number of cloud droplets (Nt_c; see guidelines mentioned below). Otherwise, users may alter the rain and graupel size distribution parameters to use exponential (Marshal-Palmer) or generalized gamma shape. The snow field assumes a combination of two gamma functions (from Field et al. 2005) and would require significant modifications throughout the entire code to alter its shape as well as accretion rates. Users may also alter the constants used for density of rain, graupel, ice, and snow, but the latter is not constant when using Paul Field's snow distribution and moments methods. Other values users can modify include the constants for mass and/or velocity power law relations and assumed capacitances used in deposition/ sublimation/evaporation/melting. Remaining values should probably be left alone.

Author
Greg Thompson, NCAR-RAL, gthom.nosp@m.psn@.nosp@m.ucar..nosp@m.edu, 303-497-2805
  • Last modified: 24 Jan 2018 Aerosol additions to v3.5.1 code 9/2013 Cloud fraction additions 11/2014 part of pre-v3.7
  • Imported in CCPP by: Dom Heinzeller, NOAA/ESRL/GSD, dom.h.nosp@m.einz.nosp@m.eller.nosp@m.@noa.nosp@m.a.gov
  • Last modified: 6 Aug 2018 Update of initial import to WRFV4.0
  • Last modified: 13 Mar 2020 Add logic to turtn on/off the calculation of melting layer in radar reflectivity routine
  • Last modified: 2 Jun 2020 Add option to rollback to version 3.8.1 used in RAPv5/HRRRv4, include stochastic physics perturbations to the graupel intercept parameter, the cloud water shape parameter, and the number concentration of nucleated aerosols.
  • Last modified: 12 Feb 2021 G. Thompson updated to align more closely with his WRF version, including bug fixes and designed changes.