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 |