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) [120] and Rutledge and Hobbs (1984) [173]. | |
| 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) [120] ) | |
| real function | smlt (tc, dqs, qsrho, psacw, psacr, c, rho, rhofac) |
| Melting of snow function (Lin et al.(1983) [120]) 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 [120]) 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=20) | 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 | |
| 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 | log_10 |
| real | tice0 |
| real | t_wfr |