CCPP Scientific Documentation
v5.0.0
micro_mg_utils.F90 File Reference

This file contains process rates and utility functions used by the MG microphysics. More...

Data Types

interface  micro_mg_utils::mghydrometeorprops
 
interface  micro_mg_utils::mghydrometeorprops
 
interface  micro_mg_utils::size_dist_param_liq
 
interface  micro_mg_utils::size_dist_param_basic
 
interface  micro_mg_utils::size_dist_param_ice
 
interface  micro_mg_utils::rising_factorial
 
interface  micro_mg_utils::var_coef
 

Modules

module  micro_mg_utils
 

Functions/Subroutines

subroutine, public micro_mg_utils::micro_mg_utils_init (kind, rair, rh2o, cpair, tmelt_in, latvap, latice, dcs)
 Initialize module variables. More...
 
type(mghydrometeorprops) function micro_mg_utils::newmghydrometeorprops (rho, eff_dim, lambda_bounds, min_mean_mass)
 Constructor for a constituent property object. More...
 
pure real(r8) function micro_mg_utils::rising_factorial_r8 (x, n)
 
pure real(r8) function micro_mg_utils::rising_factorial_integer (x, n)
 
elemental real(r8) function micro_mg_utils::calc_ab (t, qv, xxl)
 
elemental subroutine micro_mg_utils::size_dist_param_liq_line (props, qcic, ncic, rho, pgam, lamc)
 get cloud droplet size distribution parameters More...
 
subroutine micro_mg_utils::size_dist_param_liq_vect (props, qcic, ncic, rho, pgam, lamc, mgncol)
 This subroutine gets cloud droplet size distribution parameters. More...
 
elemental subroutine micro_mg_utils::size_dist_param_basic_line (props, qic, nic, lam, n0)
 Basic routine for getting size distribution parameters. More...
 
subroutine micro_mg_utils::size_dist_param_basic_vect (props, qic, nic, lam, mgncol, n0)
 This subroutine calculates. More...
 
elemental subroutine micro_mg_utils::size_dist_param_ice_line (props, qic, nic, lam, n0)
 ice routine for getting size distribution parameters. More...
 
subroutine micro_mg_utils::size_dist_param_ice_vect (props, qic, nic, lam, mgncol, n0)
 This subroutine. More...
 
real(r8) elemental function, public micro_mg_utils::avg_diameter (q, n, rho_air, rho_sub)
 Finds the average diameter of particles given their density, and mass/number concentrations in the air. Assumes that diameter follows an exponential distribution. More...
 
elemental real(r8) function micro_mg_utils::var_coef_r8 (relvar, a)
 Finds a coefficient for process rates based on the relative variance of cloud water. More...
 
elemental real(r8) function micro_mg_utils::var_coef_integer (relvar, a)
 Finds a coefficient for process rates based on the relative variance of cloud water. More...
 
subroutine, public micro_mg_utils::ice_deposition_sublimation (t, qv, qi, ni, icldm, rho, dv, qvl, qvi, berg, vap_dep, ice_sublim, mgncol)
 Initial ice deposition and sublimation loop. Run before the main loop This subroutine written by Peter Caldwell. More...
 
subroutine, public micro_mg_utils::kk2000_liq_autoconversion (microp_uniform, qcic, ncic, rho, relvar, prc, nprc, nprc1, mgncol)
 autoconversion of cloud liquid water to rain formula from Khrouditnov and Kogan (2000), modified for sub-grid distribution of qc minimum qc of 1 x 10^-8 prevents floating point error More...
 
subroutine, public micro_mg_utils::sb2001v2_liq_autoconversion (pgam, qc, nc, qr, rho, relvar, au, nprc, nprc1, mgncol)
 This subroutine. More...
 
subroutine, public micro_mg_utils::liu_liq_autoconversion (pgam, qc, nc, qr, rho, relvar, au, nprc, nprc1, mgncol)
 Anning Cheng 10/5/2017 add Liu et al. autoconversion. More...
 
subroutine, public micro_mg_utils::sb2001v2_accre_cld_water_rain (qc, nc, qr, rho, relvar, pra, npra, mgncol)
 
subroutine, public micro_mg_utils::ice_autoconversion (t, qiic, lami, n0i, dcs, ac_time, prci, nprci, mgncol)
 Autoconversion of cloud ice to snow similar to Ferrier (1994) More...
 
subroutine, public micro_mg_utils::gmao_ice_autoconversion (t, qiic, niic, lami, n0i, dcs, ac_time, prci, nprci, mgncol)
 GMAO ice autoconversion. More...
 
subroutine, public micro_mg_utils::immersion_freezing (microp_uniform, t, pgam, lamc, qcic, ncic, relvar, mnuccc, nnuccc, mgncol)
 immersion freezing (Bigg, 1953) More...
 
subroutine, public micro_mg_utils::contact_freezing (microp_uniform, t, p, rndst, nacon, pgam, lamc, qcic, ncic, relvar, mnucct, nnucct, mgncol, mdust)
 contact freezing (-40<T<-3 C) (Young, 1974) with hooks into simulated dust dust size and number in multiple bins are read in from companion routine More...
 
subroutine, public micro_mg_utils::snow_self_aggregation (t, rho, asn, rhosn, qsic, nsic, nsagg, mgncol)
 snow self-aggregation from passarelli, 1978, used by reisner, 1998 More...
 
subroutine, public micro_mg_utils::accrete_cloud_water_snow (t, rho, asn, uns, mu, qcic, ncic, qsic, pgam, lamc, lams, n0s, psacws, npsacws, mgncol)
 accretion of cloud droplets onto snow/graupel More...
 
subroutine, public micro_mg_utils::secondary_ice_production (t, psacws, msacwi, nsacwi, mgncol)
 add secondary ice production due to accretion of droplets by snow More...
 
subroutine, public micro_mg_utils::accrete_rain_snow (t, rho, umr, ums, unr, uns, qric, qsic, lamr, n0r, lams, n0s, pracs, npracs, mgncol)
 accretion of rain water by snow More...
 
subroutine, public micro_mg_utils::heterogeneous_rain_freezing (t, qric, nric, lamr, mnuccr, nnuccr, mgncol)
 heterogeneous freezing of rain drops More...
 
subroutine, public micro_mg_utils::accrete_cloud_water_rain (microp_uniform, qric, qcic, ncic, relvar, accre_enhan, pra, npra, mgncol)
 accretion of cloud liquid water by rain formula from Khrouditnov and Kogan (2000) More...
 
subroutine, public micro_mg_utils::self_collection_rain (rho, qric, nric, nragg, mgncol)
 Self-collection of rain drops from Beheng(1994) More...
 
subroutine, public micro_mg_utils::accrete_cloud_ice_snow (t, rho, asn, qiic, niic, qsic, lams, n0s, prai, nprai, mgncol)
 Accretion of cloud ice by snow. More...
 
subroutine, public micro_mg_utils::evaporate_sublimate_precip (t, rho, dv, mu, sc, q, qvl, qvi, lcldm, precip_frac, arn, asn, qcic, qiic, qric, qsic, lamr, n0r, lams, n0s, pre, prds, am_evp_st, mgncol)
 calculate evaporation/sublimation of rain and snow More...
 
subroutine micro_mg_utils::evaporate_sublimate_precip_graupel (t, rho, dv, mu, sc, q, qvl, qvi, lcldm, precip_frac, arn, asn, agn, bg, qcic, qiic, qric, qsic, qgic, lamr, n0r, lams, n0s, lamg, n0g, pre, prds, prdg, am_evp_st, mgncol)
 evaporation/sublimation of rain, snow and graupel More...
 
subroutine, public micro_mg_utils::bergeron_process_snow (t, rho, dv, mu, sc, qvl, qvi, asn, qcic, qsic, lams, n0s, bergs, mgncol)
 bergeron process - evaporation of droplets and deposition onto snow More...
 
subroutine micro_mg_utils::graupel_collecting_snow (qsic, qric, umr, ums, rho, lamr, n0r, lams, n0s, psacr, mgncol)
 Collection of snow by rain to form graupel. More...
 
subroutine micro_mg_utils::graupel_collecting_cld_water (qgic, qcic, ncic, rho, n0g, lamg, bg, agn, psacwg, npsacwg, mgncol)
 Collection of cloud water by graupel. More...
 
subroutine micro_mg_utils::graupel_riming_liquid_snow (psacws, qsic, qcic, nsic, rho, rhosn, rhog, asn, lams, n0s, dtime, pgsacw, nscng, mgncol)
 Conversion of rimed cloud water onto snow to graupel/hail. More...
 
subroutine micro_mg_utils::graupel_collecting_rain (qric, qgic, umg, umr, ung, unr, rho, n0r, lamr, n0g, lamg, pracg, npracg, mgncol)
 CHANGE IN Q,N COLLECTION RAIN BY GRAUPEL. More...
 
subroutine micro_mg_utils::graupel_rain_riming_snow (pracs, npracs, psacr, qsic, qric, nric, nsic, n0s, lams, n0r, lamr, dtime, pgracs, ngracs, mgncol)
 Rain riming snow to graupel. More...
 
subroutine micro_mg_utils::graupel_rime_splintering (t, qcic, qric, qgic, psacwg, pracg, qmultg, nmultg, qmultrg, nmultrg, mgncol)
 Rime splintering. More...
 
pure real(r8) function micro_mg_utils::no_limiter ()
 
pure logical function micro_mg_utils::limiter_is_on (lim)
 
real(r8) function micro_mg_utils::gamma_incomp (muice, x)
 

Variables

type(mghydrometeorprops), public micro_mg_utils::mg_liq_props
 
type(mghydrometeorprops), public micro_mg_utils::mg_ice_props
 
type(mghydrometeorprops), public micro_mg_utils::mg_rain_props
 
type(mghydrometeorprops), public micro_mg_utils::mg_snow_props
 
type(mghydrometeorprops), public micro_mg_utils::mg_graupel_props
 
real(r8), parameter, public micro_mg_utils::pi = 3.14159265358979323846_r8
 Pi to 20 digits; more than enough to reach the limit of double precision. More...
 
real(r8), parameter, public micro_mg_utils::omsm = 1._r8 - 1.e-6_r8
 "One minus small number": number near unity for round-off issues. More...
 
real(r8), parameter, public micro_mg_utils::qsmall = 1.e-18_r8
 Smallest mixing ratio considered in microphysics. More...
 
real(r8), parameter, public micro_mg_utils::mincld = 0.000001_r8
 minimum allowed cloud fraction More...
 
real(r8), parameter, public micro_mg_utils::rhosn = 250._r8
 bulk density snow More...
 
real(r8), parameter, public micro_mg_utils::rhoi = 500._r8
 bulk density ice More...
 
real(r8), parameter, public micro_mg_utils::rhow = 1000._r8
 bulk density liquid More...
 
real(r8), parameter, public micro_mg_utils::rhows = 917._r8
 bulk density water solid More...
 
real(r8), parameter, public micro_mg_utils::rhog = 500._r8
 
real(r8), parameter, public micro_mg_utils::rhoh = 400._r8
 
real(r8), parameter, public micro_mg_utils::ac = 3.e7_r8
 
real(r8), parameter, public micro_mg_utils::bc = 2._r8
 
real(r8), parameter, public micro_mg_utils::as = 11.72_r8
 
real(r8), parameter, public micro_mg_utils::bs = 0.41_r8
 
real(r8), parameter, public micro_mg_utils::ai = 700._r8
 
real(r8), parameter, public micro_mg_utils::bi = 1._r8
 
real(r8), parameter, public micro_mg_utils::aj = ac*((rhoi/rhows)**(bc/3._r8))*rhows/rhow
 
real(r8), parameter, public micro_mg_utils::bj = bc
 
real(r8), parameter, public micro_mg_utils::ar = 841.99667_r8
 
real(r8), parameter, public micro_mg_utils::br = 0.8_r8
 
real(r8), parameter, public micro_mg_utils::ag = 19.3_r8
 
real(r8), parameter, public micro_mg_utils::bg = 0.37_r8
 
real(r8), parameter, public micro_mg_utils::ah = 114.5_r8
 
real(r8), parameter, public micro_mg_utils::bh = 0.5_r8
 
real(r8), parameter, public micro_mg_utils::mi0 = 4._r8/3._r8*pi*rhoi*(1.e-6_r8)**3
 mass of new crystal due to aerosol freezing and growth (kg) Make this consistent with the lower bound, to support UTLS and stratospheric ice, and the smaller ice size limit. More...
 
real(r8), parameter, public micro_mg_utils::mg0 = 1.6e-10_r8
 
real(r8), parameter, public micro_mg_utils::mmult = 4._r8/3._r8*pi*rhoi*(5.e-6_r8)**3
 
integer(i8), parameter micro_mg_utils::limiter_off = int(Z'7FF1111111111111', i8)
 
real(r8), parameter micro_mg_utils::icsmall = 1.e-8_r8
 
real(r8), parameter micro_mg_utils::dsph = 3._r8
 
real(r8), dimension(2), parameter micro_mg_utils::lam_bnd_rain = 1._r8/[500.e-6_r8, 20.e-6_r8]
 
real(r8), dimension(2), parameter micro_mg_utils::lam_bnd_snow = 1._r8/[2000.e-6_r8, 10.e-6_r8]
 
real(r8), parameter micro_mg_utils::min_mean_mass_liq = 1.e-20_r8
 
real(r8), parameter micro_mg_utils::min_mean_mass_ice = 1.e-20_r8
 
real(r8), parameter micro_mg_utils::f1s = 0.86_r8
 
real(r8), parameter micro_mg_utils::f2s = 0.28_r8
 
real(r8), parameter micro_mg_utils::f1r = 0.78_r8
 
real(r8), parameter micro_mg_utils::f2r = 0.308_r8
 
real(r8), parameter micro_mg_utils::eii = 0.2_r8
 
real(r8), parameter, public micro_mg_utils::ecid = 0.7_r8
 
real(r8), parameter, public micro_mg_utils::ecr = 1.0_r8
 
real(r8), parameter micro_mg_utils::bimm = 100._r8
 
real(r8), parameter micro_mg_utils::aimm = 0.66_r8
 
real(r8), parameter micro_mg_utils::droplet_mass_25um = 4._r8/3._r8*pi*rhow*(25.e-6_r8)**3
 
real(r8), parameter micro_mg_utils::droplet_mass_40um = 4._r8/3._r8*pi*rhow*(40.e-6_r8)**3
 
real(r8), parameter micro_mg_utils::droplet_mass_40umi = 1._r8/droplet_mass_40um
 
real(r8) micro_mg_utils::rv
 
real(r8) micro_mg_utils::cpp
 
real(r8) micro_mg_utils::tmelt
 
real(r8) micro_mg_utils::ra
 
real(r8) micro_mg_utils::xxlv
 
real(r8) micro_mg_utils::xlf
 
real(r8) micro_mg_utils::xxls
 
real(r8) micro_mg_utils::gamma_bs_plus3
 
real(r8) micro_mg_utils::gamma_half_br_plus5
 
real(r8) micro_mg_utils::gamma_half_bs_plus5
 
real(r8) micro_mg_utils::gamma_2bs_plus2
 
real(r8), parameter micro_mg_utils::zero = 0._r8
 
real(r8), parameter micro_mg_utils::one = 1._r8
 
real(r8), parameter micro_mg_utils::two = 2._r8
 
real(r8), parameter micro_mg_utils::three = 3._r8
 
real(r8), parameter micro_mg_utils::four = 4._r8
 
real(r8), parameter micro_mg_utils::five = 5._r8
 
real(r8), parameter micro_mg_utils::six = 6._r8
 
real(r8), parameter micro_mg_utils::pio6 = pi/six
 
real(r8), parameter micro_mg_utils::pio3 = pi/three
 
real(r8), parameter micro_mg_utils::half = 0.5_r8
 
real(r8), parameter micro_mg_utils::oneo3 = one/three
 
real(r8), parameter micro_mg_utils::twopi = pi + pi