This module contains the column GFDL Cloud microphysics scheme.
| Functions/Subroutines | |
| subroutine, public | gfdl_cloud_microphys_mod_driver (iis, iie, jjs, jje, kks, kke, ktop, kbot, qv, ql, qr, qi, qs, qg, qa, qn, qv_dt, ql_dt, qr_dt, qi_dt, qs_dt, qg_dt, qa_dt, pt_dt, pt, w, uin, vin, udt, vdt, dz, delp, area, dt_in, land, rain, snow, ice, graupel, hydrostatic, phys_hydrostatic, p, lradar, refl_10cm, reset, pfils, pflls) | 
| This subroutine is the driver of the GFDL cloud microphysics. | |
| subroutine | mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, qg, qa, qn, dz, is, ie, js, je, ks, ke, ktop, kbot, j, dt_in, ntimes, rain, snow, graupel, ice, m2_rain, m2_sol, cond, area1, land, u_dt, v_dt, pt_dt, qv_dt, ql_dt, qr_dt, qi_dt, qs_dt, qg_dt, qa_dt, w_var, vt_r, vt_s, vt_g, vt_i, qn2) | 
| GFDL cloud microphysics, major program, and is based on Lin et al.(1983) [119] and Rutledge and Hobbs (1984) [172]. | |
| subroutine | sedi_heat (ktop, kbot, dm, m1, dz, tz, qv, ql, qr, qi, qs, qg, cw) | 
| This subroutine calculates sedimentation of heat. | |
| subroutine | warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, den, denfac, ccn, c_praut, rh_rain, vtr, r1, m1_rain, w1, h_var) | 
| This subroutine includes warm rain cloud microphysics. | |
| subroutine | revap_racc (ktop, kbot, dt, tz, qv, ql, qr, qi, qs, qg, den, denfac, rh_rain, h_var) | 
| This subroutine calculates evaporation of rain and accretion of rain. | |
| subroutine | linear_prof (km, q, dm, z_var, h_var) | 
| Definition of vertical subgrid variability used for cloud ice and cloud water autoconversion. | |
| subroutine | icloud (ktop, kbot, tzk, p1, qvk, qlk, qrk, qik, qsk, qgk, dp1, den, denfac, vts, vtg, vtr, qak, rh_adj, rh_rain, dts, h_var) | 
| This subroutine includes cloud ice microphysics processes. | |
| subroutine | subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, rh_adj, tz, qv, ql, qr, qi, qs, qg, qa, h_var, rh_rain) | 
| This subroutine calculates temperature sentive high vertical resolution processes. | |
| subroutine | revap_rac1 (hydrostatic, is, ie, dt, tz, qv, ql, qr, qi, qs, qg, den, hvar) | 
| This subroutine calculates rain evaporation. | |
| subroutine | terminal_fall (dtm, ktop, kbot, tz, qv, ql, qr, qg, qs, qi, dz, dp, den, vtg, vts, vti, r1, g1, s1, i1, m1_sol, w1) | 
| The subroutine 'terminal_fall' computes terminal fall speed. | |
| subroutine | check_column (ktop, kbot, q, no_fall) | 
| The subroutine 'check_column' checks if the water species is large enough to fall. | |
| subroutine | implicit_fall (dt, ktop, kbot, ze, vt, dp, q, precip, m1) | 
| The subroutine computes the time-implicit monotonic fall scheme. | |
| subroutine | lagrangian_fall_ppm (ktop, kbot, zs, ze, zt, dp, q, precip, m1, mono) | 
| Lagrangian scheme. | |
| subroutine | cs_profile (a4, del, km, do_mono) | 
| subroutine | cs_limiters (km, a4) | 
| This subroutine perform positive definite constraint. | |
| subroutine | fall_speed (ktop, kbot, den, qs, qi, qg, ql, tk, vts, vti, vtg) | 
| The subroutine calculates vertical fall speed of snow/ice/graupel. | |
| subroutine | setupm | 
| The subroutine sets up gfdl cloud microphysics parameters. | |
| subroutine, public | gfdl_cloud_microphys_mod_init (me, master, nlunit, input_nml_file, logunit, fn_nml, errmsg, errflg) | 
| The subroutine 'gfdl_cloud_microphys_init' initializes the GFDL cloud microphysics. | |
| subroutine, public | gfdl_cloud_microphys_mod_end () | 
| The subroutine 'gfdl_cloud_microphys_init' terminates the GFDL cloud microphysics. | |
| subroutine | setup_con | 
| The subroutine 'setup_con' sets up constants and calls 'qsmith_init'. | |
| real function | acr3d (v1, v2, q1, q2, c, cac, rho) | 
| The function is an accretion function (Lin et al.(1983) [119] ) | |
| real function | smlt (tc, dqs, qsrho, psacw, psacr, c, rho, rhofac) | 
| Melting of snow function (Lin et al.(1983) [119]) note: psacw and psacr must be calc before smlt is called. | |
| real function | gmlt (tc, dqs, qgrho, pgacw, pgacr, c, rho) | 
| Melting of graupel function (Eq.(47) in Lin et al. 1983 [119]) note: \(P_{gacw}\) and \(P_{gacr}\) must be calculated before gmlt is called. | |
| subroutine | qsmith_init | 
| The subroutine 'qsmith_init' initializes lookup tables for saturation water vapor pressure for the following utility routines that are designed to return qs consistent with the assumptions in FV3. | |
| real function | wqs1 (ta, den) | 
| The function 'wqs1' returns the saturation vapor pressure over pure liquid water for a given temperature and air density. | |
| real function | wqs2 (ta, den, dqdt) | 
| The function 'wqs2' returns the saturation vapor pressure over pure liquid water for a given temperature and air density, as well as the analytic dqs/dT: rate of change of saturation vapor pressure WRT temperature. | |
| real function | wet_bulb (q, t, den) | 
| The function 'wet_bulb' uses 'wqs2' to compute the wet-bulb temperature from the mixing ratio and the temperature. | |
| real function | iqs1 (ta, den) | 
| The function 'iqs1' computes the saturated specific humidity for table iii. | |
| real function | iqs2 (ta, den, dqdt) | 
| The function 'iqs2' computes the gradient of saturated specific humidity for table iii. | |
| real function | qs1d_moist (ta, qv, pa, dqdt) | 
| The function 'qs1d_moist' computes the gradient of saturated specific humidity for table iii. | |
| real function | wqsat2_moist (ta, qv, pa, dqdt) | 
| The function 'wqsat2_moist' computes the saturated specific humidity for pure liquid water , as well as des/dT. | |
| real function | wqsat_moist (ta, qv, pa) | 
| The function 'wqsat_moist' computes the saturated specific humidity for pure liquid water. | |
| real function | qs1d_m (ta, qv, pa) | 
| The function 'qs1d_m' computes the saturated specific humidity for table iii. | |
| real function | d_sat (ta, den) | 
| The function 'd_sat' computes the difference in saturation vapor * density * between water and ice. | |
| real function | esw_table (ta) | 
| The function 'esw_table' computes the saturated water vapor pressure for table ii. | |
| real function | es2_table (ta) | 
| The function 'es2_table' computes the saturated water vapor pressure for table iii. | |
| subroutine | esw_table1d (ta, es, n) | 
| The subroutine 'esw_table1d' computes the saturated water vapor pressure for table ii. | |
| subroutine | es2_table1d (ta, es, n) | 
| The subroutine 'es3_table1d' computes the saturated water vapor pressure for table iii. | |
| subroutine | es3_table1d (ta, es, n) | 
| The subroutine 'es3_table1d' computes the saturated water vapor pressure for table iv. | |
| subroutine | qs_tablew (n) | 
| saturation water vapor pressure table ii | |
| subroutine | qs_table2 (n) | 
| saturation water vapor pressure table iii | |
| subroutine | qs_table3 (n) | 
| saturation water vapor pressure table iv | |
| real function | qs_blend (t, p, q) | 
| The function 'qs_blend' computes the saturated specific humidity with a blend of water and ice depending on the temperature. | |
| subroutine | qs_table (n) | 
| saturation water vapor pressure table i | |
| subroutine | qsmith (im, km, ks, t, p, q, qs, dqdt) | 
| The function 'qsmith' computes the saturated specific humidity with a blend of water and ice depending on the temperature in 3D. | |
| subroutine | neg_adj (ktop, kbot, pt, dp, qv, ql, qr, qi, qs, qg) | 
| The subroutine 'neg_adj' fixes negative water species. | |
| subroutine | interpolate_z (is, ie, js, je, km, zl, hgt, a3, a2) | 
| quick local sum algorithm | |
| subroutine, public | cloud_diagnosis (is, ie, ks, ke, den, delp, lsm, qmw, qmi, qmr, qms, qmg, t, rew, rei, rer, res, reg) | 
| The subroutine 'cloud_diagnosis' diagnoses the radius of cloud species. | |
| subroutine | refl10cm_gfdl (qv1d, qr1d, qs1d, qg1d, t1d, p1d, dbz, kts, kte, ii, jj, melti) | 
| This subroutine calculates radar reflectivity. | |
| Variables | |
| real | missing_value = - 1.e10 | 
| logical | module_is_initialized = .false. | 
| logical | qsmith_tables_initialized = .false. | 
| character(len=17) | mod_name = 'gfdl_cloud_microphys' | 
| real, parameter | n0r = 8.0e6 | 
| real, parameter | n0s = 3.0e6 | 
| real, parameter | n0g = 4.0e6 | 
| real, parameter, public | rhos = 0.1e3 | 
| real, parameter, public | rhog = 0.4e3 | 
| real, parameter | grav = 9.80665 | 
| gfs: acceleration due to gravity | |
| real, parameter | rdgas = 287.05 | 
| gfs: gas constant for dry air | |
| real, parameter | rvgas = 461.50 | 
| gfs: gas constant for water vapor | |
| real, parameter | cp_air = 1004.6 | 
| gfs: heat capacity of dry air at constant pressure | |
| real, parameter | hlv = 2.5e6 | 
| gfs: latent heat of evaporation | |
| real, parameter | hlf = 3.3358e5 | 
| gfs: latent heat of fusion | |
| real, parameter | pi = 3.1415926535897931 | 
| gfs: ratio of circle circumference to diameter | |
| real, parameter | cp_vap = 4.0 * rvgas | 
| 1846.0, heat capacity of water vapore at constnat pressure | |
| real, parameter | cv_air = cp_air - rdgas | 
| 717.55, heat capacity of dry air at constant volume | |
| real, parameter | cv_vap = 3.0 * rvgas | 
| 1384.5, heat capacity of water vapor at constant volume | |
| real, parameter | c_ice = 1972.0 | 
| gfdl: heat capacity of ice at - 15 deg c | |
| real, parameter | c_liq = 4185.5 | 
| gfdl: heat capacity of water at 15 deg c | |
| real, parameter | eps = rdgas / rvgas | 
| 0.6219934995 | |
| real, parameter | zvir = rvgas / rdgas - 1. | 
| 0.6077338443 | |
| real, parameter | t_ice = 273.16 | 
| freezing temperature | |
| real, parameter | table_ice = 273.16 | 
| freezing point for qs table | |
| real, parameter | e00 = 611.21 | 
| ifs: saturation vapor pressure at 0 deg c | |
| real, parameter | dc_vap = cp_vap - c_liq | 
| real, parameter | dc_ice = c_liq - c_ice | 
| 2213.5, isobaric heating / colling | |
| real, parameter | hlv0 = hlv | 
| gfs: evaporation latent heat coefficient at 0 deg c | |
| real, parameter | hlf0 = hlf | 
| gfs: fussion latent heat coefficient at 0 deg c | |
| real, parameter | lv0 = hlv0 - dc_vap * t_ice | 
| 3.13905782e6, evaporation latent heat coefficient at 0 deg k | |
| real, parameter | li00 = hlf0 - dc_ice * t_ice | 
| real, parameter | d2ice = dc_vap + dc_ice | 
| real, parameter | li2 = lv0 + li00 | 
| 2.86799816e6, sublimation latent heat coefficient at 0 deg k | |
| real, parameter | qrmin = 1.e-8 | 
| min value for rain | |
| real, parameter | qvmin = 1.e-20 | 
| min value for water vapor (treated as zero) | |
| real, parameter | qcmin = 1.e-12 | 
| min value for cloud condensates | |
| real, parameter | vr_min = 1.e-3 | 
| min fall speed for rain | |
| real, parameter | vf_min = 1.e-5 | 
| min fall speed for cloud ice, snow, graupel | |
| real, parameter | dz_min = 1.e-2 | 
| use for correcting flipped height | |
| real, parameter | sfcrho = 1.2 | 
| surface air density | |
| real, parameter, public | rhor = 1.e3 | 
| density of rain water, lin83 | |
| real, parameter, public | rnzr = 8.0e6 | 
| real, parameter, public | rnzs = 3.0e6 | 
| real, parameter, public | rnzg = 4.0e6 | 
| real, parameter, public | rnzh = 4.0e4 | 
| real, parameter, public | rhoh = 0.917e3 | 
| real | cracs | 
| real | csacr | 
| real | cgacr | 
| real | cgacs | 
| real | csacw | 
| real | craci | 
| real | csaci | 
| real | cgacw | 
| real | cgaci | 
| real | cracw | 
| constants for accretions | |
| real, dimension(3, 4) | acco | 
| constants for accretions | |
| real, dimension(5) | cssub | 
| real, dimension(5) | cgsub | 
| real, dimension(5) | crevp | 
| real, dimension(2) | cgfr | 
| real, dimension(5) | csmlt | 
| real, dimension(5) | cgmlt | 
| real | es0 | 
| real | ces0 | 
| real | pie | 
| real | rgrav | 
| real | fac_rc | 
| real | c_air | 
| real | c_vap | 
| real | lati | 
| real | latv | 
| real | lats | 
| real | lat2 | 
| real | lcp | 
| real | icp | 
| real | tcp | 
| used in Bigg mechanism and wet bulk | |
| real | d0_vap | 
| the same as dc_vap, except that cp_vap can be cp_vap or cv_vap | |
| real | lv00 | 
| the same as lv0, except that cp_vap can be cp_vap or cv_vap | |
| integer, public | icloud_f = 0 | 
| cloud scheme | |
| integer, public | irain_f = 0 | 
| cloud water to rain auto conversion scheme | |
| logical, public | de_ice = .false. | 
| to prevent excessive build - up of cloud ice from external sources | |
| logical, public | sedi_transport = .true. | 
| transport of momentum in sedimentation | |
| logical, public | do_sedi_w = .false. | 
| transport of vertical motion in sedimentation | |
| logical, public | do_sedi_heat = .true. | 
| transport of heat in sedimentation | |
| logical, public | prog_ccn = .false. | 
| do prognostic ccn (yi ming's method) | |
| logical, public | do_qa = .true. | 
| do inline cloud fraction | |
| logical, public | rad_snow = .true. | 
| consider snow in cloud fraciton calculation | |
| logical, public | rad_graupel = .true. | 
| consider graupel in cloud fraction calculation | |
| logical, public | rad_rain = .true. | 
| consider rain in cloud fraction calculation | |
| logical, public | fix_negative = .false. | 
| fix negative water species | |
| logical | do_setup = .true. | 
| setup constants and parameters | |
| logical | p_nonhydro = .false. | 
| perform hydrosatic adjustment on air density | |
| real, dimension(:), allocatable | table | 
| real, dimension(:), allocatable | table2 | 
| real, dimension(:), allocatable | table3 | 
| real, dimension(:), allocatable | tablew | 
| real, dimension(:), allocatable | des | 
| real, dimension(:), allocatable | des2 | 
| real, dimension(:), allocatable | des3 | 
| real, dimension(:), allocatable | desw | 
| logical | tables_are_initialized = .false. | 
| real, parameter | dt_fr = 8. | 
| homogeneous freezing of all cloud water at t_wfr - dt_fr | |
| real | p_min = 100. | 
| minimum pressure (pascal) for mp to operate | |
| real, public | cld_min = 0.05 | 
| minimum cloud fraction | |
| real, public | tice = 273.16 | 
| set tice = 165. to trun off ice - phase phys (kessler emulator) | |
| real, public | t_min = 178. | 
| min temp to freeze - dry all water vapor | |
| real, public | t_sub = 184. | 
| min temp for sublimation of cloud ice | |
| real, public | mp_time = 150. | 
| maximum micro - physics time step (sec) | |
| real, public | rh_inc = 0.25 | 
| rh increment for complete evaporation of cloud water and cloud ice | |
| real, public | rh_inr = 0.25 | 
| rh increment for minimum evaporation of rain | |
| real, public | rh_ins = 0.25 | 
| rh increment for sublimation of snow | |
| real, public | tau_r2g = 900. | 
| rain freezing during fast_sat | |
| real, public | tau_smlt = 900. | 
| snow melting | |
| real, public | tau_g2r = 600. | 
| graupel melting to rain | |
| real, public | tau_imlt = 600. | 
| cloud ice melting | |
| real, public | tau_i2s = 1000. | 
| cloud ice to snow auto-conversion | |
| real, public | tau_l2r = 900. | 
| cloud water to rain auto-conversion | |
| real, public | tau_v2l = 150. | 
| water vapor to cloud water (condensation) | |
| real, public | tau_l2v = 300. | 
| cloud water to water vapor (evaporation) | |
| real, public | tau_g2v = 900. | 
| graupel sublimation | |
| real, public | tau_v2g = 21600. | 
| graupel deposition – make it a slow process | |
| real, public | dw_land = 0.20 | 
| base value for subgrid deviation / variability over land | |
| real, public | dw_ocean = 0.10 | 
| base value for ocean | |
| real, public | ccn_o = 90. | 
| ccn over ocean (cm^ - 3) | |
| real, public | ccn_l = 270. | 
| ccn over land (cm^ - 3) | |
| real, public | rthresh = 10.0e-6 | 
| critical cloud drop radius (micro m) | |
| real, public | sat_adj0 = 0.90 | 
| adjustment factor (0: no, 1: full) during fast_sat_adj | |
| real, public | qc_crt = 5.0e-8 | 
| mini condensate mixing ratio to allow partial cloudiness | |
| real, public | qi_lim = 1. | 
| cloud ice limiter to prevent large ice build up | |
| real, public | ql_mlt = 2.0e-3 | 
| max value of cloud water allowed from melted cloud ice | |
| real, public | qs_mlt = 1.0e-6 | 
| max cloud water due to snow melt | |
| real, public | ql_gen = 1.0e-3 | 
| max cloud water generation during remapping step if fast_sat_adj = .t. | |
| real, public | qi_gen = 1.82e-6 | 
| max cloud ice generation during remapping step | |
| real, public | ql0_max = 2.0e-3 | 
| max cloud water value (auto converted to rain) | |
| real, public | qi0_max = 1.0e-4 | 
| max cloud ice value (by other sources) | |
| real, public | qi0_crt = 1.0e-4 | 
| cloud ice to snow autoconversion threshold (was 1.e-4); qi0_crt is highly dependent on horizontal resolution | |
| real, public | qr0_crt = 1.0e-4 | 
| rain to snow or graupel/hail threshold | |
| real, public | qs0_crt = 1.0e-3 | 
| snow to graupel density threshold (0.6e-3 in purdue lin scheme) | |
| real, public | c_paut = 0.55 | 
| autoconversion cloud water to rain (use 0.5 to reduce autoconversion) | |
| real, public | c_psaci = 0.02 | 
| accretion: cloud ice to snow (was 0.1 in zetac) | |
| real, public | c_piacr = 5.0 | 
| accretion: rain to ice: | |
| real, public | c_cracw = 0.9 | 
| rain accretion efficiency | |
| real, public | c_pgacs = 2.0e-3 | 
| snow to graupel "accretion" eff. (was 0.1 in zetac) | |
| real, public | alin = 842.0 | 
| "a" in lin1983 | |
| real, public | clin = 4.8 | 
| "c" in lin 1983, 4.8 – > 6. (to ehance ql – > qs) | |
| logical, public | const_vi = .false. | 
| if .t. the constants are specified by v * _fac | |
| logical, public | const_vs = .false. | 
| if .t. the constants are specified by v * _fac | |
| logical, public | const_vg = .false. | 
| if .t. the constants are specified by v * _fac | |
| logical, public | const_vr = .false. | 
| if .t. the constants are specified by v * _fac | |
| real, public | vi_fac = 1. | 
| if const_vi: 1 / 3 | |
| real, public | vs_fac = 1. | 
| if const_vs: 1. | |
| real, public | vg_fac = 1. | 
| if const_vg: 2. | |
| real, public | vr_fac = 1. | 
| if const_vr: 4. | |
| real, public | vi_max = 0.5 | 
| max fall speed for ice | |
| real, public | vs_max = 5.0 | 
| max fall speed for snow | |
| real, public | vg_max = 8.0 | 
| max fall speed for graupel | |
| real, public | vr_max = 12. | 
| max fall speed for rain | |
| logical, public | fast_sat_adj = .false. | 
| has fast saturation adjustments | |
| logical, public | z_slope_liq = .true. | 
| use linear mono slope for autocconversions | |
| logical, public | z_slope_ice = .false. | 
| use linear mono slope for autocconversions | |
| logical, public | use_ccn = .false. | 
| must be true when prog_ccn is false | |
| logical, public | use_ppm = .false. | 
| use ppm fall scheme | |
| logical, public | mono_prof = .true. | 
| perform terminal fall with mono ppm scheme | |
| logical, public | mp_print = .false. | 
| cloud microphysics debugging printout | |
| logical, public | do_hail = .false. | 
| use hail parameters instead of graupel | |
| real | log_10 | 
| real | tice0 | 
| real | t_wfr | 
| integer, public | reiflag = 1 | 
| logical, public | tintqs = .false. | 
| use temperature in the saturation mixing in PDF | |
| real, public | rewmin = 5.0 | 
| real, public | rewmax = 10.0 | 
| real, public | reimin = 10.0 | 
| real, public | reimax = 150.0 | 
| real, public | rermin = 10.0 | 
| real, public | rermax = 10000.0 | 
| real, public | resmin = 150.0 | 
| real, public | resmax = 10000.0 | 
| real, public | regmin = 300.0 | 
| real, public | regmax = 10000.0 |