This module provides a 1/2/3-moment bulk microphysics scheme based on a combination of Straka and Mansell (2005, JAM) and Zeigler (1985, JAS) and modified/upgraded in in Mansell, Zeigler, and Bruning (2010, JAS). Two-moment adaptive sedimentation follows Mansell (2010, JAS), using parameter infall = 4. More...
Functions/Subroutines | |
real function, private | module_mp_nssl_2mom::fqvs (t) |
This function is for saturation vapor pressure with respect to liquid water. | |
real function, private | module_mp_nssl_2mom::fqis (t) |
This function is for saturation vapor pressure with respect to ice. | |
subroutine, public | module_mp_nssl_2mom::nssl_2mom_init_const (con_g, con_rd, con_cp, con_rv, con_t0c, con_cliq, con_csol, con_eps) |
NSSL MP subroutine to initialize physical constants provided by host model. | |
subroutine, public | module_mp_nssl_2mom::nssl_2mom_init (ims, ime, jms, jme, kms, kme, nssl_params, ipctmp, mixphase, ihvol, idoniconlytmp, nssl_graupelfallfac, nssl_hailfallfac, nssl_ehw0, nssl_ehlw0, nssl_icdx, nssl_icdxhl, nssl_icefallfac, nssl_snowfallfac, nssl_cccn, nssl_ufccn, nssl_alphah, nssl_alphahl, nssl_alphar, nssl_density_on, nssl_hail_on, nssl_ccn_on, nssl_icecrystals_on, ccn_is_ccna, errmsg, errflg, infileunit, myrank, mpiroot) |
NSSL MP setup routine (sets local options and array indices) | |
subroutine, public | module_mp_nssl_2mom::nssl_2mom_driver (qv, qc, qr, qi, qs, qh, qhl, ccw, crw, cci, csw, chw, chl, cn, vhw, vhl, cna, cni, f_cn, f_cna, f_cina, f_qc, f_qr, f_qi, f_qs, f_qh, f_qhl, cnuf, f_cnuf, zrw, zhw, zhl, f_zrw, f_zhw, f_zhl, f_vhw, f_vhl, qsw, qhw, qhlw, tt, th, pii, p, w, dn, dz, dtp, itimestep, is_theta_or_temp, ntmul, ntcnt, lastloop, rainnc, rainncv, dx, dy, axtra, snownc, snowncv, grplnc, grplncv, sr, hailnc, hailncv, hail_maxk1, hail_max2d, nwp_diagnostics, tkediss, re_cloud, re_ice, re_snow, re_rain, re_graup, re_hail, has_reqc, has_reqi, has_reqs, has_reqr, has_reqg, has_reqh, rainncw2, rainnci2, dbz, vzf, compdbz, rscghis_2d, rscghis_2dp, rscghis_2dn, scr, scw, sci, scs, sch, schl, sctot, elec_physics, induc, elecz, scion, sciona, noninduc, noninducp, noninducn, pcc2, pre2, depsubr, mnucf2, melr2, ctr2, rim1_2, rim2_2, rim3_2, nctr2, nnuccd2, nnucf2, effc2, effr2, effi2, effs2, effg2, fc2, fr2, fi2, fs2, fg2, fnc2, fnr2, fni2, fns2, fng2, ipelectmp, diagflag, ke_diag, errmsg, errflg, nssl_progn, wetscav_on, rainprod, evapprod, cu_used, qrcuten, qscuten, qicuten, qccuten, ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, its, ite, jts, jte, kts, kte) |
Driver subroutine that copies state data to local 2D arrays for microphysics calls. | |
real function, private | module_mp_nssl_2mom::gamma_sp (xx) |
Single-precision complete gamma function. | |
double precision function, private | module_mp_nssl_2mom::gamma_dpr (x) |
Douple-precision complete gamma function (single precision input) | |
real function, private | module_mp_nssl_2mom::gamxinf (a1, x1) |
single-precision incomplete gamma function (single precision args) | |
double precision function, private | module_mp_nssl_2mom::gamxinfdp (a1, x1) |
Double-precision incomplete gamma function (single precision args) | |
real function | module_mp_nssl_2mom::gaminterp (ratio, alp, luindex, ilh) |
Function to interpolate from a table of incomplete gamma function values. | |
real function, private | module_mp_nssl_2mom::gaml02 (x) |
Function calculates Gamma(0.2,x)/Gamma[0.2] for 40 micro drops ( imurain == 3 ) | |
real function, private | module_mp_nssl_2mom::gaml02d300 (x) |
Function calculates fraction of drops larger than 300 microns ( imurain == 3 ) | |
real function, private | module_mp_nssl_2mom::gaml02d500 (x) |
Function calculates Gamma(0.2,x)/Gamma[0.2] for 500 micro drops ( imurain == 3 ) | |
double precision function, private | module_mp_nssl_2mom::gamma_dp (xx) |
Douple-precision complete gamma function (double precision argument) | |
subroutine, private | module_mp_nssl_2mom::gammadp (x, ga) |
Double-precision complete gamma function subroutine (used by beta function routine) | |
real function, private | module_mp_nssl_2mom::delbk (bb, nu, mu, k) |
Function calculates collection coefficients following Siefert (2006) | |
real function, private | module_mp_nssl_2mom::delabk (ba, bb, nua, nub, mua, mub, k) |
Function calculates collection coefficients following Siefert (2006) | |
subroutine | module_mp_nssl_2mom::hailmaxd (dtp, nx, ny, nz, an, na, nor, norz, alpha2d, dn, hailmax1d, hailmaxk1, jslab) |
Hail max size subroutine. | |
subroutine | module_mp_nssl_2mom::sediment1d (dtp, nx, ny, nz, an, na, nor, norz, xfall, dn, dz3d, dz3dinv, t0, t7, infdo, jslab, its, jts, timesed1, timesed2, timesed3, zmaxsed, timesetvt) |
Sedimentation driver subroutine. Calls fallout column by column. | |
subroutine | module_mp_nssl_2mom::fallout1d (nx, ny, nz, nor, na, dtp, dtfrac, jgs, vt, a, db1, ia, id, xfall, dtz1, ixcol) |
Column sedimentation fallout subroutine. | |
subroutine | module_mp_nssl_2mom::calczgr1d (nx, ny, nz, nor, na, a, ixe, kze, z, db, jgs, ipconc, alpha, l, ln, qmin, xvmn, xvmx, lvol, rho_qx, ixcol) |
Calculates temporary reflectivity moment for adaptive size-sorting limiter. | |
subroutine | module_mp_nssl_2mom::calcnfromz1d (nx, ny, nz, nor, na, a, t0, ixe, kze, z0, db, jgs, ipconc, alpha, l, ln, qmin, xvmn, xvmx, t1, lvol, rho_qx, infall, ixcol) |
Subroutine to correct number concentration to prevent reflectivity growth. | |
subroutine, public | module_mp_nssl_2mom::calcnfromq (nx, ny, nz, an, na, nor, norz, dn, qcw, qci, qsw, qrw, qhw, qhl, ccw, cci, csw, crw, chw, chl, cccn, cccna, vhw, vhl, qv, spechum, invertccn_flag, cwmasin) |
Subroutine to calculate number concentrations from initial state that has only mixing ratio. | |
subroutine | module_mp_nssl_2mom::calcnfromcuten (nx, ny, nz, an, anold, na, nor, norz, dn) |
Subroutine to calculate number concentrations from convection parameterization rates that have only mixing ratio. | |
subroutine, public | module_mp_nssl_2mom::calc_eff_radius (nx, ny, nz, na, jyslab, nor, norz, t1, t2, t3, t4, t5, t6, f_t5, f_t6, qcw, qci, qsw, qrw, ccw, cci, csw, crw, an, dn) |
Subroutine to calculate effective radii for use by radiation routines. | |
subroutine | module_mp_nssl_2mom::qvexcess (ngs, mgs, qwvp0, qv0, qcw1, pres, thetap0, theta0, qvex, pi0, tabqvs, nqsat, fqsat, cbw, fcqv1, felvcp, ss1, pk, ngscnt) |
Subroutine that returns the maximum possible condensation. | |
subroutine | module_mp_nssl_2mom::setvtz (ngscnt, qx, qxmin, qxw, cx, rho0, rhovt, xdia, cno, cnostmp, xmas, vtxbar, xdn, xvmn0, xvmx0, xv, cdx, cdxgs, ipconc1, ndebug1, ngs, nz, kgs, fadvisc, cwmasn, cwmasx, cwradn, cnina, cimna, cimxa, itype1a, itype2a, temcg, infdo, alpha, ildo, axx, bxx) |
Mean hydrometeor size and fall speed calculations. | |
subroutine | module_mp_nssl_2mom::ziegfall1d (nx, ny, nz, nor, norz, na, dtp, jgs, ixcol, xvt, rhovtzx, an, dn, ipconc0, t0, t7, cwmasn, cwmasx, cwradn, qxmin, xdnmx, xdnmn, cdx, cno, xdn0, xvmn, xvmx, ngs, qx, qxw, cx, xv, vtxbar, xmas, xdn, xdia, vx, alpha, zx, igs, kgs, rho0, temcg, temg, rhovt, cwnc, cinc, fadvisc, cwdia, cipmas, cnina, cimas, cnostmp, infdo, ildo, timesetvt) |
Column-wise front end to setvtz for sedimentation. | |
subroutine | module_mp_nssl_2mom::radardd02 (nx, ny, nz, nor, na, an, temk, dbz, db, nzdbz, cnoh0t, hwdn1t, ipconc, ke_diag, iunit) |
Radar reflectivity calculation. Assumes ideal Rayleigh scattering. | |
subroutine | module_mp_nssl_2mom::nucond (nx, ny, nz, na, jyslab, nor, norz, dtp, nxi, dz3d, t0, t9, an, dn, p2, pn, w, ngs, axtra, io_flag, ssfilt, t00, t77, flag_qndrop) |
Droplet nucleation routine. Explicit condensation/evaporation. Tiny mixing ratio cleanup. | |
subroutine | module_mp_nssl_2mom::nssl_2mom_gs (nx, ny, nz, na, jyslab, nor, norz, dtp, gz, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, an, dn, p2, pn, w, iunit, t00, t77, ventr, ventc, c1sw, jgs, ido, xdnmx, xdnmn, cdx, xdn0, tmp3d, tkediss, thproc, numproc, dx1, dy1, ngs, timevtcalc, axtra, io_flag, has_wetscav, rainprod2d, evapprod2d, alpha2d, errmsg, errflg, elec, its, ids, ide, jds, jde) |
Main microphysical processes routine. | |
Added info on graupel density and soaking is in Mansell and Ziegler (2013, JAS)
Average graupel and hail particle densities are predicted, which affects fall speed as well.
Maintainer: Ted Mansell, National Severe Storms Laboratory ted.m.nosp@m.anse.nosp@m.ll@no.nosp@m.aa.g.nosp@m.ov
Microphysics References:
Mansell, E. R., C. L. Ziegler, and E. C. Bruning, 2010: Simulated electrification of a small thunderstorm with two-moment bulk microphysics. J. Atmos. Sci., 67, 171-194, doi:10. 1175/2009JAS2965.1.
Mansell, E. R. and C. L. Ziegler, 2013: Aerosol effects on simulated storm electrification and precipitation in a two-moment bulk microphysics model. J. Atmos. Sci., 70 (7), 2032-2050, doi:10.1175/JAS-D-12-0264.1.
Ziegler, C. L., 1985: Retrieval of thermal and microphysical variables in observed convective storms. Part I: Model development and preliminary testing. J. Atmos. Sci., 42, 1487-1509.
Sedimentation reference:
Mansell, E. R., 2010: On sedimentation and advection in multimoment bulk microphysics. J. Atmos. Sci., 67, 3084-3094, doi:10.1175/2010JAS3341.1.