This module contains 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).
Functions/Subroutines | |
| real function, private | fqvs (t) |
| This function is for saturation vapor pressure with respect to liquid water. | |
| real function, private | fqis (t) |
| This function is for saturation vapor pressure with respect to ice. | |
| subroutine, public | 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 | 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 | 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 | gamma_sp (xx) |
| Single-precision complete gamma function. | |
| double precision function, private | gamma_dpr (x) |
| Douple-precision complete gamma function (single precision input) | |
| real function, private | gamxinf (a1, x1) |
| single-precision incomplete gamma function (single precision args) | |
| double precision function, private | gamxinfdp (a1, x1) |
| Double-precision incomplete gamma function (single precision args) | |
| real function | gaminterp (ratio, alp, luindex, ilh) |
| Function to interpolate from a table of incomplete gamma function values. | |
| real function, private | gaml02 (x) |
| Function calculates Gamma(0.2,x)/Gamma[0.2] for 40 micro drops ( imurain == 3 ) | |
| real function, private | gaml02d300 (x) |
| Function calculates fraction of drops larger than 300 microns ( imurain == 3 ) | |
| real function, private | gaml02d500 (x) |
| Function calculates Gamma(0.2,x)/Gamma[0.2] for 500 micro drops ( imurain == 3 ) | |
| real function | beta (p, q) |
| double precision function, private | gamma_dp (xx) |
| Douple-precision complete gamma function (double precision argument) | |
| subroutine, private | gammadp (x, ga) |
| Double-precision complete gamma function subroutine (used by beta function routine) | |
| real function, private | delbk (bb, nu, mu, k) |
| Function calculates collection coefficients following Siefert (2006) | |
| real function, private | delabk (ba, bb, nua, nub, mua, mub, k) |
| Function calculates collection coefficients following Siefert (2006) | |
| subroutine | hailmaxd (dtp, nx, ny, nz, an, na, nor, norz, alpha2d, dn, hailmax1d, hailmaxk1, jslab) |
| Hail max size subroutine. | |
| subroutine | 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 | fallout1d (nx, ny, nz, nor, na, dtp, dtfrac, jgs, vt, a, db1, ia, id, xfall, dtz1, ixcol) |
| Column sedimentation fallout subroutine. | |
| subroutine | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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. | |
Variables | |
| logical, private | cleardiag = .false. |
| integer, parameter | wrfchem_flag = 1 |
| logical, private | is_aerosol_aware = .false. |
| logical, private | turn_on_cin = .false. |
| integer, private | eqtset = 1 |
| double precision, parameter, public | zscale = 1.0d0 |
| double precision, parameter, public | zscaleinv = 1.0d0/zscale |
| real, parameter | warmonly = 0.0 |
| logical, parameter | lwsm6 = .false. |
| real, parameter | dimax = 500.e-6 |
| real, parameter | roqimax = 2.08e22*dimax**8 |
| integer | iuseferrier = 1 |
| integer | idbzci = 1 |
| integer | iusewetgraupel = 1 |
| integer | iusewethail = 0 |
| integer | iusewetsnow = 0 |
| real, private | rho_qr = 1000. |
| real, private | cnor = 8.0e5 |
| real, private | rho_qs = 100. |
| real, private | cnos = 3.0e6 |
| real, private | rho_qh = 500. |
| real, private | cnoh = 4.0e5 |
| real, private | rho_qhl = 800. |
| real, private | cnohl = 4.0e4 |
| real, private | hdnmn = 170.0 |
| real, private | hldnmn = 500.0 |
| real | cnohmn = 1.e-2 |
| real | cnohlmn = 1.e-2 |
| real, private | qcmincwrn = 2.0e-3 |
| real, private | cwdiap = 20.0e-6 |
| real, private | cwdisp = 0.15 |
| real, private | ccn = 0.6e+09 |
| real, private | ccnuf = 0 |
| real, public | qccn |
| real, public | qccnuf |
| real, private | old_qccn = -1.0 |
| integer, private | iauttim = 1 |
| real, private | auttim = 300. |
| real, private | qcwmntim = 1.0e-5 |
| logical, parameter, private | invertccn = .true. |
| logical | switchccn = .false. |
| real | old_cccn = -1.0 |
| logical | restoreccn = .true. |
| real | ccntimeconst = 3600. |
| real, private | restoreccnfrac = 1.0 |
| real | ufccntimeconst = 6.*3600. |
| real | ufbackground = 0.1e9 |
| logical | decayufccn = .false. |
| integer | i_uf_or_ccn = 0 |
| integer, private | itfall = 0 |
| integer, private | iscfall = 1 |
| integer, private | irfall = -1 |
| integer, private | isfall = 2 |
| logical, private | do_accurate_sedimentation = .true. |
| integer, private | interval_sedi_vt = 2 |
| integer, private | infall = 4 |
| integer | imydiagalpha = 0 |
| real, private | rainfallfac = 1.0 |
| real, private | icefallfac = 1.5 |
| real, private | snowfallfac = 1.25 |
| real, private | graupelfallfac = 1.0 |
| real, private | hailfallfac = 1.0 |
| integer, private | icefallopt = 3 |
| integer, private | icdx = 6 |
| integer, private | icdxhl = 6 |
| real | axh = 75.7149 |
| real | bxh = 0.5 |
| real | axf = 75.7149 |
| real | bxf = 0.5 |
| real | axhl = 206.984 |
| real | bxhl = 0.6384 |
| real, private | cdhmin = 0.45 |
| real, private | cdhmax = 0.8 |
| real, private | cdhdnmin = 500. |
| real, private | cdhdnmax = 800.0 |
| real, private | cdhlmin = 0.45 |
| real, private | cdhlmax = 0.6 |
| real, private | cdhldnmin = 500. |
| real, private | cdhldnmax = 800.0 |
| real, private | vtmaxsed = 70. |
| integer | rssflg = 1 |
| integer | sssflg = 1 |
| integer | hssflg = 1 |
| integer | hlssflg = 1 |
| integer, private | ndebug = -1 |
| integer, private | ncdebug = 0 |
| integer, private | ipconc = 5 |
| integer, private | inucopt = 0 |
| integer, private | ichaff = 0 |
| integer, parameter | ilimit = 0 |
| real, private | constccw = -1. |
| real, private | cimn = 1.0e3 |
| real, private | cimx = 1.0e6 |
| real, private | rhofrz = 900 |
| real, private | ifrzg = 1.0 |
| real, private | ifiacrg = 1.0 |
| real, private | ifrzs = 1.0 |
| real, private | ffrzs = 0.0 |
| real, private | f2h = 1.0 |
| integer, private | irwfrz = 1 |
| integer, private | irimtim = 0 |
| integer, private | irimdenopt = 1 |
| real, private | rimc1 = 300.0 |
| real, private | rimc2 = 0.44 |
| real, private | rimc3 = 170.0 |
| real | rimc4 = 900.0 |
| real, private | rimtim = 120.0 |
| real, private | eqtot = 1.0e-9 |
| real, private | rimdenvwgt = 0.0 |
| integer, private | ireadmic = 0 |
| integer, private | idiagnosecnu = 0 |
| integer, private | iccwflg = 1 |
| integer, private | issfilt = 0 |
| integer, private | icnuclimit = 0 |
| integer, private | irenuc = 2 |
| integer, private | irenuc3d = 0 |
| real | renucfrac = 0.0 |
| real | ssf2kmax = 10. |
| real, private | cck = 0.6 |
| real, private | ciintmx = 1.0e6 |
| real, private | cwccn |
| real, private | ccwmx |
| integer, private | idocw = 1 |
| integer, private | idorw = 1 |
| integer, private | idoci = 1 |
| integer, private | idoir = 1 |
| integer, private | idoip = 1 |
| integer, private | idosw = 1 |
| integer, private | idogl = 1 |
| integer, private | idogm = 1 |
| integer, private | idogh = 1 |
| integer, private | idofw = 1 |
| integer, private | idohw = 1 |
| integer, private | idohl = 1 |
| integer, private | itype1 = 0 |
| integer, private | itype2 = 2 |
| integer, private | in_freeze_rain_first = 0 |
| integer, private | icenucopt = 1 |
| real, private | naer = 1.0e6 |
| integer, private | icfn = 2 |
| integer, private | ihrn = 0 |
| integer, private | ibfc = 1 |
| real, private | cwfrz2snowfrac = 0.0 |
| real, private | cwfrz2snowratio = 5. |
| integer, private | iremoveqwfrz = 1 |
| integer, private | iacr = 2 |
| integer, private | icrcev = 1 |
| integer, private | icracr = 1 |
| integer, private | icracrthresh = 1 |
| integer, private | ibfr = 2 |
| integer, private | ibiggopt = 2 |
| integer | ibiggsmallrain = 0 |
| integer, private | iacrsize = 5 |
| real, private | cimas0 = 6.62e-11 |
| real, private | cimas1 = 6.88e-13 |
| real, private | splintermass = 6.88e-13 |
| real, private | cfnfac = 0.1 |
| integer, private | iscni = 4 |
| real, private | fscni = 1.0 |
| logical, private | imeyers5 = .false. |
| real, private | dmincw = 15.0e-6 |
| integer, private | iehw = 1 |
| integer, private | iefw = 1 |
| integer, private | iehlw = 1 |
| integer, private | ierw = 1 |
| integer, private | iehr0c = 0 |
| integer, private | iehlr0c = 0 |
| real, private | ehw0 = 0.9 |
| real, private | erw0 = 1.0 |
| real, private | ehlw0 = 0.9 |
| real, private | efw0 = 0.5 |
| real | ehr0 = 1.0 |
| real | efr0 = 1.0 |
| real | ehlr0 = 1.0 |
| real, private | exwmindiam = 0.0 |
| real, private | esilfo0 = 1.0 |
| real, private | ehslfo0 = 1.0 |
| integer, private | ircnw = 5 |
| real, private | qminrncw = 2.0e-3 |
| integer, private | iqcinit = 2 |
| real, private | ssmxinit = 0.4 |
| real, private | ewfac = 1.0 |
| real, private | eii0 = 0.1 |
| real, private | eii1 = 0.1 |
| real, private | eii0hl = 0.2 |
| real, private | eii1hl = 0.0 |
| real, private | ewi_dcmin = 15.0e-06 |
| real, private | ewi_dimin = 30.0e-06 |
| real, private | eri0 = 0.1 |
| real, private | eri_cimin = 10.e-6 |
| real, private | esi0 = 0.1 |
| real, private | ehs0 = 0.1 |
| real, private | ehs1 = 0.1 |
| integer | iessopt = 1 |
| real, private | ess0 = 0.5 |
| real, private | ess1 = 0.05 |
| real, private | esstem1 = -15. |
| real, private | esstem2 = -10. |
| real, private | essrmax = 0.02 |
| real, private | essfrac1 = 0.5 |
| real, private | essfrac2 = 0.75 |
| integer, private | iessec0flag = 0 |
| real, private | ehsfrac = 1.0 |
| real, private | ehimin = 0.0 |
| real, private | ehimax = 1.0 |
| real, private | ehsmax = 0.5 |
| real, private | ecollmx = 0.5 |
| integer, private | iglcnvi = 1 |
| integer, private | iglcnvs = 2 |
| real, private | rz |
| real, private | rzhl |
| real, private | rzs |
| real, private | alphahacx = 0.0 |
| real, private | fconv = 1.0 |
| real, private | rg0 = 400.0 |
| integer, private | rcond = 2 |
| integer, parameter, private | icond = 1 |
| integer, private | iqis0 = 2 |
| real, private | dfrz = 0.15e-3 |
| real, private | dmlt = 3.0e-3 |
| real, private | dshd = 1.0e-3 |
| integer, private | ivshdgs = 1 |
| integer, private | ished2cld = 0 |
| integer, private | ihmlt = 2 |
| integer, private | imltshddmr = 2 |
| real | mltdiam1 = 9.0e-3 |
| real | mltdiam2 = 16.0e-3 |
| real | mltdiam3 = 19.0e-3 |
| real | mltdiam4 = 200.0e-3 |
| real | mltdiam05 = 4.5e-3 |
| integer, private | nsplinter = 0 |
| real, private | lawson_splinter_fac = 2.5e-11 |
| integer, private | isnwfrac = 0 |
| real, private | qhdpvdn = -1. |
| real, private | qhacidn = -1. |
| integer, private | iraintypes = 0 |
| logical, private | mixedphase = .false. |
| integer, private | imixedphase = 0 |
| logical, private | qsdenmod = .false. |
| logical, private | qhdenmod = .false. |
| logical, private | qsvtmod = .false. |
| real, private | sheddiam = 8.0e-03 |
| real | sheddiamlg = 10.0e-03 |
| real | sheddiam0 = 20.0e-03 |
| integer | ifwmhopt = 2 |
| integer | ihxw2rain = 0 |
| real, private | fwms = 0.5 |
| real, private | fwmh = 0.5 |
| real, private | fwmhl = 0.5 |
| real | fwmlarge = 0.2 |
| integer | ifwmfall = 0 |
| logical | rescale_high_alpha = .false. |
| logical | rescale_low_alpha = .true. |
| logical | rescale_low_alphar = .true. |
| logical | rescale_low_alphah = .true. |
| logical | rescale_low_alphahl = .true. |
| real, parameter | alpharmax = 8. |
| integer, private | ihlcnh = -1 |
| real, private | hlcnhdia = 1.e-3 |
| real, private | hlcnhqmin = 0.1e-3 |
| real, private | hldia1 = 10.0e-3 |
| integer, private | incwet = 0 |
| integer, private | iusedw = 0 |
| real, private | dwmin = 5.0e-3 |
| real, private | dwetmin = 5.0e-3 |
| real, private | dwmax = 15.e-3 |
| real, private | dwtempmin = 242. |
| real, private | dwehwmin = 0. |
| real, private | dg0thresh = 0.15 |
| integer | ifddenfac = 0 |
| real | fddenthresh = 500. |
| integer | icvhl2h = 0 |
| integer, private | imurain = 1 |
| integer, private | imusnow = 3 |
| integer, private | iturbenhance = 0 |
| integer, private | isedonly = 0 |
| integer, private | iferwisventr = 2 |
| integer, private | izwisventr = 2 |
| integer | iresetmoments = 0 |
| integer, private | imaxdiaopt = 3 |
| integer | iraintailbreak = 0 |
| real | draintail = 8.e-3 |
| integer, private | dmrauto = 0 |
| integer | dmropt = 0 |
| integer | dmhlopt = 0 |
| integer | irescalerainopt = 3 |
| real | rescale_wthresh = 3.0 |
| real | rescale_tempthresh = 0.0 |
| real, parameter | alpharaut = 0.0 |
| real | cxmin = 1.e-8 |
| real | zxmin = 1.e-28 |
| integer | ithompsoncnoh = 0 |
| integer | ivhmltsoak = 1 |
| logical, private | iwetsoak = .true. |
| integer, private | ioldlimiter = 0 |
| integer, private | isnowfall = 2 |
| integer, private | isnowdens = 1 |
| integer, private | ibiggsnow = 3 |
| real | biggsnowdiam = -1.0 |
| integer, private | ixtaltype = 1 |
| real, private | takshedsize1 = 0.15 |
| real, private | takshedsize2 = 0.3 |
| real, private | takshedsize3 = 0.45 |
| integer, private | numshedregimes = 3 |
| real, private | evapfac = 1.0 |
| real, private | depfac = 1.0 |
| real, parameter, private | meltfac = 1.0 |
| integer, private | ibinhmlr = 0 |
| integer, private | ibinhlmlr = 0 |
| integer, private | ibinnum = 2 |
| integer, private | iqhacrmlr = 1 |
| integer, private | iqhlacrmlr = 1 |
| integer, private | iqhacwshr = 1 |
| integer, private | iqhlacwshr = 1 |
| real, private | binmlrmxdia = 40.e-3 |
| real, private | binmlrzrrfac = 1.0 |
| real, private | snowmeltdia = 0 |
| real, private | alphasmlr0 = 14.0 |
| real, private | delta_alphamlr = 0.5 |
| integer | iqvsopt = 0 |
| integer | imaxsupopt = 4 |
| real | maxsupersat = 1.9 |
| real | maxlowtempss = 1.08 |
| real | ssmxuf = 4.0 |
| integer, parameter | icespheres = 0 |
| integer, parameter | lqmx = 30 |
| integer, parameter | lt = 1 |
| integer, parameter | lv = 2 |
| integer, parameter | lc = 3 |
| integer, parameter | lr = 4 |
| integer, parameter | li = 5 |
| integer, private | lis = 0 |
| integer, private | ls = 6 |
| integer, private | lh = 7 |
| integer, private | lf = 0 |
| integer, private | lhl = 0 |
| integer, private | lccn = 9 |
| integer, private | lccnuf = 0 |
| integer, private | lccna = 0 |
| integer, private | lcina = 0 |
| integer, private | lcin = 0 |
| integer, private | lnc = 9 |
| integer, private | lnr = 10 |
| integer, private | lni = 11 |
| integer, private | lnis = 0 |
| integer, private | lns = 12 |
| integer, private | lnh = 13 |
| integer, private | lnf = 0 |
| integer, private | lnhl = 0 |
| integer, private | lnhf = 0 |
| integer, private | lnhlf = 0 |
| integer, private | lss = 0 |
| integer | lvh = 15 |
| integer, private | lhab = 8 |
| integer, private | lg = 7 |
| integer | lvi = 0 |
| integer | lvs = 0 |
| integer | lvgl = 0 |
| integer | lvgm = 0 |
| integer | lvgh = 0 |
| integer | lvf = 0 |
| integer | lvhl = 0 |
| integer | lhw = 0 |
| integer | lfw = 0 |
| integer | lsw = 0 |
| integer | lhlw = 0 |
| integer | lhwlg = 0 |
| integer | lhlwlg = 0 |
| integer | lzr = 0 |
| integer | lzi = 0 |
| integer | lzs = 0 |
| integer | lzgl = 0 |
| integer | lzgm = 0 |
| integer | lzgh = 0 |
| integer | lzf = 0 |
| integer | lzh = 0 |
| integer | lzhl = 0 |
| integer | lscw = 0 |
| integer | lscr = 0 |
| integer | lsci = 0 |
| integer | lscis = 0 |
| integer | lscs = 0 |
| integer | lsch = 0 |
| integer | lscf = 0 |
| integer | lschl = 0 |
| integer | lscwi = 0 |
| integer | lscpi = 0 |
| integer | lscni = 0 |
| integer | lscpli = 0 |
| integer | lscnli = 0 |
| integer | lschab = 0 |
| integer | lscb = 0 |
| integer | lsce = 0 |
| integer | lsceq = 0 |
| integer | lne = 0 |
| real | cnoh0 = 4.0e+5 |
| real | hwdn1 = 700.0 |
| real | alphai = 0.0 |
| real | alphas = 0.0 |
| real | alphar = 0.0 |
| real, private | alphah = 0.0 |
| real, private | alphahl = 1.0 |
| real | dmuh = 1.0 |
| real | dmuhl = 1.0 |
| real, private | alphamax = 15. |
| real, private | alphamin = 0. |
| real, parameter | rnumin = -0.8 |
| real, parameter | rnumax = 15.0 |
| real | cnu = 0.0 |
| real, parameter | rnu = -0.8 |
| real, parameter | snu = -0.8 |
| real, parameter | cinu = 0.0 |
| real, dimension(lc:lqmx) | xnu |
| real, dimension(lc:lqmx) | xmu |
| real, dimension(lc:lqmx) | dnu |
| real, dimension(lc:lqmx) | dmu |
| real, dimension(lc:lqmx) | ax |
| real, dimension(lc:lqmx) | bx |
| real, dimension(lc:lqmx) | fx |
| real, dimension(lc:lqmx) | da0 |
| real, dimension(lc:lqmx, lc:lqmx) | dab0 |
| real, dimension(lc:lqmx, lc:lqmx) | dab1 |
| real, dimension(lc:lqmx) | da1 |
| real, dimension(lc:lqmx) | bb |
| integer | ipelec = 0 |
| integer | isaund = 0 |
| logical | idoniconly = .false. |
| integer, private | elec_on_time = -1 |
| integer, private | elec_ramp_time = 0 |
| integer | jchgs = 3 |
| integer | jchgn = 2 |
| integer | ichge = 3 |
| integer | ichgw = 2 |
| real | charging_border = 4000. |
| real, private | delqnw = -1.0e-10 |
| real, private | delqxw = 1.0e-10 |
| real | tindmn = 233 |
| real | tindmx = 298.0 |
| integer | ngm0 |
| integer | ngm1 |
| integer | ngm2 |
| double precision, parameter | dgam = 0.01 |
| double precision, parameter | dgami = 100. |
| double precision, dimension(0:ngm0) | gmoi |
| integer, parameter | nqiacralpha = 300 |
| integer, parameter | nqiacrratio = 400 |
| real, parameter | maxratiolu = 100. |
| real, parameter | maxalphalu = 15. |
| real, parameter | minalphalu = -0.95 |
| real, parameter | dqiacralpha = maxalphalu/Float(nqiacralpha) |
| real, parameter | dqiacrratio = maxratiolu/Float(nqiacrratio) |
| real, parameter | dqiacrratioinv = 1./dqiacrratio |
| real, parameter | dqiacralphainv = 1./dqiacralpha |
| integer, parameter | ialpstart = minalphalu*dqiacralphainv |
| real, dimension(0:nqiacrratio, ialpstart:nqiacralpha) | ciacrratio |
| real, dimension(0:nqiacrratio, ialpstart:nqiacralpha) | qiacrratio |
| real, dimension(0:nqiacrratio, ialpstart:nqiacralpha) | ziacrratio |
| double precision, dimension(0:nqiacrratio, ialpstart:nqiacralpha, 12, 2) | gamxinflu |
| real, dimension(ialpstart:nqiacralpha, ialpstart:nqiacralpha, lc:lqmx, lc:lqmx), save | dab0lu |
| real, dimension(ialpstart:nqiacralpha, ialpstart:nqiacralpha, lc:lqmx, lc:lqmx), save | dab1lu |
| integer, parameter | ngdnmm = 9 |
| real, dimension(ngdnmm, 3) | mmgraupvt |
| integer, dimension(lc:lqmx) | lsc |
| integer, dimension(lc:lqmx) | ln |
| integer, dimension(lc:lqmx) | ipc |
| integer, dimension(lc:lqmx) | lvol |
| integer, dimension(lc:lqmx) | lz |
| integer, dimension(li:lqmx) | lliq |
| integer, dimension(lc:lqmx) | denscale |
| integer, dimension(lc:lqmx) | ido |
| logical | ldovol |
| real, dimension(lc:lqmx) | xdn0 |
| real, dimension(lc:lqmx) | xdnmx |
| real, dimension(lc:lqmx) | xdnmn |
| real, dimension(lc:lqmx) | cdx |
| real, dimension(lc:lqmx) | cno |
| real, dimension(lc:lqmx) | xvmn |
| real, dimension(lc:lqmx) | xvmx |
| real, dimension(lc:lqmx) | qxmin |
| real, dimension(lc:lqmx) | qxmin_init |
| integer | nqsat |
| real | fqsat |
| real | fqsati |
| real, dimension(nqsat) | tabqvs |
| real, dimension(nqsat) | tabqis |
| real, dimension(nqsat) | dtabqvs |
| real, dimension(nqsat) | dtabqis |
| real, parameter | ar = 841.99666 |
| real, parameter | br = 0.8 |
| real, parameter | aradcw = -0.27544 |
| real, parameter | bradcw = 0.26249e+06 |
| real, parameter | cradcw = -1.8896e+10 |
| real, parameter | dradcw = 4.4626e+14 |
| real, parameter | bta1 = 0.6 |
| real, parameter | cnit = 1.0e-02 |
| real, parameter | dragh = 0.60 |
| real, parameter | dnz00 = 1.225 |
| real, parameter | rho00 = 1.225 |
| real, parameter | cs = 12.42 |
| real, parameter | ds = 0.42 |
| real | cp608 = 0.608 |
| real | gr = 9.8 |
| real, parameter | pi = 3.141592653589793 |
| real, parameter | piinv = 1./pi |
| real, parameter | pid4 = pi/4.0 |
| real | xvrmn |
| real | xvrmx0 |
| real | xvsmn |
| real | xvsmx |
| real | xvfmn |
| real | xvfmx |
| real | xvgmn |
| real | xvgmx |
| real | xvhmn |
| real | xvhmn0 |
| real | xvhmx |
| real | xvhmx0 |
| real | xvhlmn |
| real | xvhlmx |
| real, parameter | dhlmn = 0.3e-3 |
| real, parameter | dhlmx = 40.e-3 |
| real, parameter | dhmn0 = 0.3e-3 |
| real, private | dhmn = dhmn0 |
| real, private | dhmx = -1. |
| real, parameter | cwradn = 2.0e-6 |
| real, parameter | xcradmn = cwradn |
| real, parameter | cwradx = 60.e-6 |
| real, parameter | xcradmx = cwradx |
| real, parameter | cwc1 = 6.0/(pi*1000.) |
| real, parameter | xvcmn =0.523599*(2.*cwradn)**3 |
| real, parameter | xvcmx =0.523599*(2.*xcradmx)**3 |
| real, parameter | cwmasn = 1000.*xvcmn |
| real, parameter | cwmasx = 1000.*xvcmx |
| real, parameter | cwmasn5 = 1000.*0.523599*(2.*5.0e-6)**3 |
| real, parameter | xvimn =0.523599*(2.*5.e-6)**3 |
| real, parameter | xvimx =0.523599*(2.*1.e-3)**3 |
| real, private | xvdmx = -1.0 |
| real | xvrmx |
| real | eperao |
| real | ec |
| real | eci |
| real | scwppmx = 20.0e-12 |
| real | scippmx = 20.0e-12 |
| real, parameter | c1f3 = 1.0/3.0 |
| real, parameter | cai = 21.87455 |
| real, parameter | caw = 17.2693882 |
| real, parameter | cbi = 7.66 |
| real, parameter | cbw = 35.86 |
| real, parameter | cbwbolton = 29.65 |
| real, parameter | cawbolton = 17.67 |
| real, parameter | tfrh = 233.15 |
| real | tfr = 273.15 |
| real | cp = 1004.0 |
| real | rd = 287.04 |
| real | rw = 461.5 |
| real | cpl = 4190.0 |
| real | cpigb = 2106.0 |
| real | cpi = 1.0/1004.0 |
| real | cap = 287.04/1004.0 |
| real | tfrcbw = 273.15 - cbw |
| real | tfrcbi = 273.15 - cbi |
| real | rovcp = 287.04/1004.0 |
| real | rdorv = 0.622 |
| real, parameter | poo = 1.0e+05 |
| real, parameter | advisc0 = 1.832e-05 |
| real, parameter | advisc1 = 1.718e-05 |
| real, parameter | tka0 = 2.43e-02 |
| real, parameter, private | cv = 717.0 |
| real, parameter, private | cvv = 1408.5 |
| real, parameter | bfnu0 = (rnu + 2.0)/(rnu + 1.0) |
| real | ventr |
| real | ventrn |
| real | ventc |
| real | c1sw |
| real | cckm |
| real | ccne |
| real | ccnefac |
| real | cnexp |
| real | ccne0 |
| integer, public | na = 9 |
| integer | nxtra = 1 |
| real | gf4p5 |
| real | gf4ds |
| real | gf4br |
| real | gsnow1 |
| real | gsnow53 |
| real | gsnow73 |
| real | gfcinu1 |
| real | gfcinu1p47 |
| real | gfcinu2p47 |
| real | gfcinu1p22 |
| real | gfcinu2p22 |
| real | gfcinu1p18 |
| real | gfcinu2p18 |
| real | cwchtmp0 = 1.0 |
| real | cwchltmp0 = 1.0 |
| real | esctot = 1.0e-13 |
| integer, dimension(lc:lqmx, lc:lqmx) | iexy |
| integer | ieswi = 1 |
| integer | ieswc = 1 |
| integer | ieswr = 0 |
| integer | iehlsw = 1 |
| integer | iehli = 1 |
| integer | iehlc = 1 |
| integer | iehlr = 0 |
| integer | iehwsw = 1 |
| integer | iehwi = 1 |
| integer | iehwc = 1 |
| integer | iehwr = 0 |
| logical, parameter | do_satadj_for_wrfchem = .true. |
| integer, parameter | ac_opt = 0 |
| logical, private | nuaccoinp = .false. |