diff --git a/physics/MP/GFDL/module_gfdlmp_param.F90 b/physics/MP/GFDL/module_gfdlmp_param.F90 index d17a8516e..53d248de2 100644 --- a/physics/MP/GFDL/module_gfdlmp_param.F90 +++ b/physics/MP/GFDL/module_gfdlmp_param.F90 @@ -1,10 +1,8 @@ ! ######################################################################################### ! ######################################################################################### module module_gfdlmp_param - use machine, only: kind_phys + use machine, only: wp => kind_dbl_prec implicit none - - public :: cfg private ! ####################################################################################### @@ -12,11 +10,11 @@ module module_gfdlmp_param ! ####################################################################################### type ty_gfdlmp_config ! GFDL MP Version 1 parameters. - real :: tau_g2r, tau_g2v, tau_v2g, qc_crt, qr0_crt, c_piacr, c_cracw, alin, clin + real(wp) :: tau_g2r, tau_g2v, tau_v2g, qc_crt, qr0_crt, c_piacr, c_cracw, alin, clin logical :: fast_sat_adj, use_ccn, use_ppm, mono_prof, mp_print, de_ice, sedi_transport ! GFDL MP common (v1/v3) parameters - real :: cld_min, tice, t_min, t_sub, mp_time, rh_inc, rh_inr, rh_ins, tau_r2g, & + real(wp) :: cld_min, tice, t_min, t_sub, mp_time, rh_inc, rh_inr, rh_ins, tau_r2g, & tau_smlt, tau_imlt, tau_i2s, tau_l2r, tau_v2l, tau_l2v, dw_land, dw_ocean, & ccn_o, ccn_l, rthresh, sat_adj0, qi_lim, ql_mlt, ql_gen, qi_gen, ql0_max, & qi0_max, qi0_crt, qs0_crt, c_paut, c_psaci, c_pgacs, vi_fac, vs_fac, vg_fac, & @@ -28,7 +26,7 @@ module module_gfdlmp_param ! GFDL MP Version 3 parameters integer :: reiflag, icloud_f, irain_f - real :: c_psacw, c_pracw, c_praci, c_pgacw, c_pgaci, c_pracs, c_psacr, c_pgacr, & + real(wp) :: c_psacw, c_pracw, c_praci, c_pgacw, c_pgaci, c_pracs, c_psacr, c_pgacr, & alinw, alini, alinr, alins, aling, alinh, blinw, blini, blinr, blins, bling, & blinh, vw_fac, vw_max, tice_mlt, tau_gmlt, tau_wbf, tau_revp, is_fac, ss_fac, & gs_fac, rh_fac_evap, rh_fac_cond, sed_fac, xr_a, xr_b, xr_c, te_err, tw_err, & @@ -43,14 +41,14 @@ module module_gfdlmp_param integer :: ntimes, nconds, inflag, igflag, ifflag, rewflag, rerflag, resflag, & regflag, radr_flag, rads_flag, radg_flag, sedflag, vdiffflag contains - generic, public :: register => register_gfdlmp_param - generic, public :: display => display_gfdlmp_param - ! Internal procedures - procedure, private :: register_gfdlmp_param - procedure, private :: display_gfdlmp_param + procedure :: register => register_gfdlmp_param + procedure :: display => display_gfdlmp_param end type ty_gfdlmp_config - type(ty_gfdlmp_config) :: cfg + public :: cfg + + type(ty_gfdlmp_config), save, target :: cfg + contains ! ####################################################################################### @@ -73,276 +71,262 @@ subroutine register_gfdlmp_param(self, errmsg, errflg, unit, input_nml_file, fn_ ! ##################################################################################### ! GFDL MP Version 1 parameters. ! ##################################################################################### - real :: tau_g2r = 600. !< graupel melting to rain time scale (s) - real :: tau_g2v = 900. !< graupel sublimation time scale (s) - real :: tau_v2g = 21600. !< graupel deposition -- make it a slow process time scale (s) - real :: qc_crt = 5.0e-8 !< mini condensate mixing ratio to allow partial cloudiness - real :: qr0_crt = 1.0e-4 !< rain to snow or graupel/hail threshold + real(wp) :: tau_g2r = 600. !< graupel melting to rain time scale (s) + real(wp) :: tau_g2v = 900. !< graupel sublimation time scale (s) + real(wp) :: tau_v2g = 21600. !< graupel deposition -- make it a slow process time scale (s) + real(wp) :: qc_crt = 5.0e-8 !< mini condensate mixing ratio to allow partial cloudiness + real(wp) :: qr0_crt = 1.0e-4 !< rain to snow or graupel/hail threshold !< lfo used * mixing ratio * = 1.e-4 (hail in lfo) - real :: c_piacr = 5.0 !< accretion: rain to ice: - real :: c_cracw = 0.9 !< rain accretion efficiency - real :: alin = 842.0 !< "a" in lin1983 - real :: clin = 4.8 !< "c" in lin 1983, 4.8 -- > 6. (to ehance ql -- > qs) - logical :: fast_sat_adj = .false. !< has fast saturation adjustments - logical :: use_ccn = .false. !< must be true when prog_ccn is false - logical :: use_ppm = .false. !< use ppm fall scheme - logical :: mono_prof = .true. !< perform terminal fall with mono ppm scheme - logical :: mp_print = .false. !< cloud microphysics debugging printout - logical :: de_ice = .false. !< to prevent excessive build - up of cloud ice from external sources - logical :: sedi_transport = .true. !< transport of momentum in sedimentation + real(wp) :: c_piacr = 5.0 !< accretion: rain to ice: + real(wp) :: c_cracw = 0.9 !< rain accretion efficiency + real(wp) :: alin = 842.0 !< "a" in lin1983 + real(wp) :: clin = 4.8 !< "c" in lin 1983, 4.8 -- > 6. (to ehance ql -- > qs) + logical :: fast_sat_adj = .false. !< has fast saturation adjustments + logical :: use_ccn = .false. !< must be true when prog_ccn is false + logical :: use_ppm = .false. !< use ppm fall scheme + logical :: mono_prof = .true. !< perform terminal fall with mono ppm scheme + logical :: mp_print = .false. !< cloud microphysics debugging printout + logical :: de_ice = .false. !< to prevent excessive build - up of cloud ice from external sources + logical :: sedi_transport = .true. !< transport of momentum in sedimentation ! ##################################################################################### ! GFDL MP common (v1/v3) parameters ! ##################################################################################### - real :: cld_min = 0.05 !< (v1/v3) minimum cloud fraction - real :: tice = 273.16 !< (DIF for v3) freezing temperature (K): ref: GFDL, GFS (DJS: V3=273.15) - real :: t_min = 178. !< (v1/v3) min temp to freeze - dry all water vapor - real :: t_sub = 184. !< (v1/v3) min temp for sublimation of cloud ice - real :: mp_time = 150. !< (v1/v3) maximum micro - physics time step (sec) - real :: rh_inc = 0.25 !< (v1/v3) rh increment for complete evaporation of cloud water and cloud ice - real :: rh_inr = 0.25 !< (v1/v3) rh increment for minimum evaporation of rain - real :: rh_ins = 0.25 !< (v1/v3) rh increment for sublimation of snow - real :: tau_r2g = 900. !< (v1/v3) rain freezing during fast_sat time scale (s) - real :: tau_smlt = 900. !< (v1/v3) snow melting time scale (s) - real :: tau_imlt = 600. !< (DIF for v3) cloud ice melting time scale (s) (DJS: V3=1200.) - real :: tau_i2s = 1000. !< (v1/v3) cloud ice to snow auto-conversion time scale (s) - real :: tau_l2r = 900. !< (v1/v3) cloud water to rain auto-conversion time scale (s) - real :: tau_v2l = 150. !< (v1/v3) water vapor to cloud water (condensation) time scale (s) - real :: tau_l2v = 300. !< (v1/v3) cloud water to water vapor (evaporation) time scale (s) - real :: dw_land = 0.20 !< (v1/v3) value for subgrid deviation / variability over land - real :: dw_ocean = 0.10 !< (v1/v3) base value for ocean - real :: ccn_o = 90. !< (v1/v3) ccn over ocean (cm^ - 3) - real :: ccn_l = 270. !< (v1/v3) ccn over land (cm^ - 3) - real :: rthresh = 10.0e-6 !< (DIF for v3) critical cloud drop radius (micro m) (DJS: v3=20.0e-6) - real :: sat_adj0 = 0.90 !< (v1/v3) adjustment factor (0: no, 1: full) during fast_sat_adj - real :: qi_lim = 1. !< (v1/v3) cloud ice limiter (0: no, 1: full, >1: extra) to prevent large ice build up - real :: ql_mlt = 2.0e-3 !< (v1/v3) max value of cloud water allowed from melted cloud ice - real :: qs_mlt = 1.0e-6 !< (v1/v3) max cloud water due to snow melt - real :: ql_gen = 1.0e-3 !< (v1/v3) max cloud water generation during remapping step if fast_sat_adj = .t. - real :: qi_gen = 1.82e-6 !< (v1/v3) max cloud ice generation during remapping step (V1 ONLY. Computed internally in V3) - real :: ql0_max = 2.0e-3 !< (v1/v3) max cloud water value (auto converted to rain) - real :: qi0_max = 1.0e-4 !< (v1/v3) max cloud ice value (by other sources) - real :: qi0_crt = 1.0e-4 !< (v1/v3) cloud ice to snow autoconversion threshold (was 1.e-4); + real(wp) :: cld_min = 0.05 !< (v1/v3) minimum cloud fraction + real(wp) :: tice = 273.16 !< (DIF for v3) freezing temperature (K): ref: GFDL, GFS (DJS: V3=273.15) + real(wp) :: t_min = 178. !< (v1/v3) min temp to freeze - dry all water vapor + real(wp) :: t_sub = 184. !< (v1/v3) min temp for sublimation of cloud ice + real(wp) :: mp_time = 150. !< (v1/v3) maximum micro - physics time step (sec) + real(wp) :: rh_inc = 0.25 !< (v1/v3) rh increment for complete evaporation of cloud water and cloud ice + real(wp) :: rh_inr = 0.25 !< (v1/v3) rh increment for minimum evaporation of rain + real(wp) :: rh_ins = 0.25 !< (v1/v3) rh increment for sublimation of snow + real(wp) :: tau_r2g = 900. !< (v1/v3) rain freezing during fast_sat time scale (s) + real(wp) :: tau_smlt = 900. !< (v1/v3) snow melting time scale (s) + real(wp) :: tau_imlt = 600. !< (DIF for v3) cloud ice melting time scale (s) (DJS: V3=1200.) + real(wp) :: tau_i2s = 1000. !< (v1/v3) cloud ice to snow auto-conversion time scale (s) + real(wp) :: tau_l2r = 900. !< (v1/v3) cloud water to rain auto-conversion time scale (s) + real(wp) :: tau_v2l = 150. !< (v1/v3) water vapor to cloud water (condensation) time scale (s) + real(wp) :: tau_l2v = 300. !< (v1/v3) cloud water to water vapor (evaporation) time scale (s) + real(wp) :: dw_land = 0.20 !< (v1/v3) value for subgrid deviation / variability over land + real(wp) :: dw_ocean = 0.10 !< (v1/v3) base value for ocean + real(wp) :: ccn_o = 90. !< (v1/v3) ccn over ocean (cm^ - 3) + real(wp) :: ccn_l = 270. !< (v1/v3) ccn over land (cm^ - 3) + real(wp) :: rthresh = 10.0e-6 !< (DIF for v3) critical cloud drop radius (micro m) (DJS: v3=20.0e-6) + real(wp) :: sat_adj0 = 0.90 !< (v1/v3) adjustment factor (0: no, 1: full) during fast_sat_adj + real(wp) :: qi_lim = 1. !< (v1/v3) cloud ice limiter (0: no, 1: full, >1: extra) to prevent large ice build up + real(wp) :: ql_mlt = 2.0e-3 !< (v1/v3) max value of cloud water allowed from melted cloud ice + real(wp) :: qs_mlt = 1.0e-6 !< (v1/v3) max cloud water due to snow melt + real(wp) :: ql_gen = 1.0e-3 !< (v1/v3) max cloud water generation during remapping step if fast_sat_adj = .t. + real(wp) :: qi_gen = 1.82e-6 !< (v1/v3) max cloud ice generation during remapping step (V1 ONLY. Computed internally in V3) + real(wp) :: ql0_max = 2.0e-3 !< (v1/v3) max cloud water value (auto converted to rain) + real(wp) :: qi0_max = 1.0e-4 !< (v1/v3) max cloud ice value (by other sources) + real(wp) :: qi0_crt = 1.0e-4 !< (v1/v3) cloud ice to snow autoconversion threshold (was 1.e-4); !< qi0_crt is highly dependent on horizontal resolution - real :: qs0_crt = 1.0e-3 !< (v1/v3) snow to graupel density threshold (0.6e-3 in purdue lin scheme) - real :: c_paut = 0.55 !< (v1/v3) autoconversion cloud water to rain (use 0.5 to reduce autoconversion) - real :: c_psaci = 0.02 !< (DIF for v3) accretion: cloud ice to snow (was 0.1 in zetac) (DJS: v3=0.05) - real :: c_pgacs = 2.0e-3 !< (DIF for v3) snow to graupel "accretion" eff. (was 0.1 in zetac) (DJS: v3=0.01) - real :: vi_fac = 1. !< (v1/v3) if const_vi: 1 / 3 - real :: vs_fac = 1. !< (v1/v3) if const_vs: 1. - real :: vg_fac = 1. !< (v1/v3) if const_vg: 2. - real :: vr_fac = 1. !< (v1/v3) if const_vr: 4. - real :: vi_max = 1.0 !< (v1/v3) max fall speed for ice - real :: vs_max = 2.0 !< (v1/v3) max fall speed for snow - real :: vg_max = 12. !< (v1/v3) max fall speed for graupel - real :: vr_max = 12. !< (v1/v3) max fall speed for rain - real :: rewmin = 5.0 !< (v1/v3) minimum effective radii (liquid) - real :: rewmax = 10.0 !< (DIF for v3) maximum effective radii (liquid) (DJS: v3=15.0) - real :: reimin = 10.0 !< (v1/v3) minimum effective radii (ice) - real :: reimax = 150.0 !< (v1/v3) maximum effective radii (ice) - real :: rermin = 10.0 !< (DIF for v3) minimum effective radii (rain) (DJS: v3=15.0) - real :: rermax = 10000.0 !< (v1/v3) maximum effective radii (rain) - real :: resmin = 150.0 !< (v1/v3) minimum effective radii (snow) - real :: resmax = 10000.0 !< (v1/v3) maximum effective radii (snow) - real :: regmin = 300.0 !< (DIF for v3) minimum effective radii (graupel) (DJS: v3=150.0) - real :: regmax = 10000.0 !< (v1/v3) maximum effective radii (graupel) + real(wp) :: qs0_crt = 1.0e-3 !< (v1/v3) snow to graupel density threshold (0.6e-3 in purdue lin scheme) + real(wp) :: c_paut = 0.55 !< (v1/v3) autoconversion cloud water to rain (use 0.5 to reduce autoconversion) + real(wp) :: c_psaci = 0.02 !< (DIF for v3) accretion: cloud ice to snow (was 0.1 in zetac) (DJS: v3=0.05) + real(wp) :: c_pgacs = 2.0e-3 !< (DIF for v3) snow to graupel "accretion" eff. (was 0.1 in zetac) (DJS: v3=0.01) + real(wp) :: vi_fac = 1. !< (v1/v3) if const_vi: 1 / 3 + real(wp) :: vs_fac = 1. !< (v1/v3) if const_vs: 1. + real(wp) :: vg_fac = 1. !< (v1/v3) if const_vg: 2. + real(wp) :: vr_fac = 1. !< (v1/v3) if const_vr: 4. + real(wp) :: vi_max = 0.5 !< (DIF for v3) max fall speed for ice (DJS: v3=1.0) + real(wp) :: vs_max = 5.0 !< (DIF for v3) max fall speed for snow (DJS: v3=2.0) + real(wp) :: vg_max = 8.0 !< (DIF for v3) max fall speed for graupel (DJS: v3=12.0) + real(wp) :: vr_max = 12. !< (v1/v3) max fall speed for rain + real(wp) :: rewmin = 5.0 !< (v1/v3) minimum effective radii (liquid) + real(wp) :: rewmax = 10.0 !< (DIF for v3) maximum effective radii (liquid) (DJS: v3=15.0) + real(wp) :: reimin = 10.0 !< (v1/v3) minimum effective radii (ice) + real(wp) :: reimax = 150.0 !< (v1/v3) maximum effective radii (ice) + real(wp) :: rermin = 10.0 !< (DIF for v3) minimum effective radii (rain) (DJS: v3=15.0) + real(wp) :: rermax = 10000.0 !< (v1/v3) maximum effective radii (rain) + real(wp) :: resmin = 150.0 !< (v1/v3) minimum effective radii (snow) + real(wp) :: resmax = 10000.0 !< (v1/v3) maximum effective radii (snow) + real(wp) :: regmin = 300.0 !< (DIF for v3) minimum effective radii (graupel) (DJS: v3=150.0) + real(wp) :: regmax = 10000.0 !< (v1/v3) maximum effective radii (graupel) ! - logical :: const_vi = .false. !< (v1/v3) if .t. the constants are specified by v * _fac - logical :: const_vs = .false. !< (v1/v3) if .t. the constants are specified by v * _fac - logical :: const_vg = .false. !< (v1/v3) if .t. the constants are specified by v * _fac - logical :: const_vr = .false. !< (v1/v3) if .t. the constants are specified by v * _fac - logical :: z_slope_liq = .true. !< (v1/v3) use linear mono slope for autocconversions - logical :: z_slope_ice = .false. !< (DIF for v3) use linear mono slope for autocconversions (DJS: v3=.true.) - logical :: do_hail = .false. !< (v1/v3) use hail parameters instead of graupel - logical :: do_qa = .true. !< (v1/v3) do inline cloud fraction - logical :: rad_snow = .true. !< (v1/v3) consider snow in cloud fraciton calculation - logical :: rad_graupel = .true. !< (v1/v3) consider graupel in cloud fraction calculation - logical :: rad_rain = .true. !< (v1/v3) consider rain in cloud fraction calculation - logical :: do_sedi_w = .false. !< (DIF for v3) transport of vertical motion in sedimentation (DJS: v3=.true.) - logical :: do_sedi_heat = .true. !< (v1/v3) transport of heat in sedimentation - logical :: prog_ccn = .false. !< (v1/v3) do prognostic ccn (yi ming's method) - logical :: fix_negative = .false. !< (DIF for v3) fix negative water species (DJS: v3=.true.) - logical :: tintqs = .false. !< (v1/v3) + logical :: const_vi = .false. !< (v1/v3) if .t. the constants are specified by v * _fac + logical :: const_vs = .false. !< (v1/v3) if .t. the constants are specified by v * _fac + logical :: const_vg = .false. !< (v1/v3) if .t. the constants are specified by v * _fac + logical :: const_vr = .false. !< (v1/v3) if .t. the constants are specified by v * _fac + logical :: z_slope_liq = .true. !< (v1/v3) use linear mono slope for autocconversions + logical :: z_slope_ice = .false. !< (DIF for v3) use linear mono slope for autocconversions (DJS: v3=.true.) + logical :: do_hail = .false. !< (v1/v3) use hail parameters instead of graupel + logical :: do_qa = .true. !< (v1/v3) do inline cloud fraction + logical :: rad_snow = .true. !< (v1/v3) consider snow in cloud fraciton calculation + logical :: rad_graupel = .true. !< (v1/v3) consider graupel in cloud fraction calculation + logical :: rad_rain = .true. !< (v1/v3) consider rain in cloud fraction calculation + logical :: do_sedi_w = .false. !< (DIF for v3) transport of vertical motion in sedimentation (DJS: v3=.true.) + logical :: do_sedi_heat = .true. !< (v1/v3) transport of heat in sedimentation + logical :: prog_ccn = .false. !< (v1/v3) do prognostic ccn (yi ming's method) + logical :: fix_negative = .false. !< (DIF for v3) fix negative water species (DJS: v3=.true.) + logical :: tintqs = .false. !< (v1/v3) ! - integer :: icloud_f = 0 !< (v1/v3) GFDL cloud scheme - !< 0: subgrid variability based scheme - !< 1: same as 0, but for old fvgfs implementation - !< 2: binary cloud scheme - !< 3: extension of 0 - integer :: irain_f = 0 !< (v1/v3) cloud water to rain auto conversion scheme - !< 0: subgrid variability based scheme - !< 1: no subgrid varaibility - integer :: reiflag = 1 !< (DIF for v3) cloud ice effective radius scheme (DJS: v3=5) - !< 1: Heymsfield and Mcfarquhar (1996) - !< 2: Donner et al. (1997) - !< 3: Fu (2007) - !< 4: Kristjansson et al. (2000) - !< 5: Wyser (1998) - !< 6: Sun and Rikus (1999), Sun (2001) - !< 7: effective radius + integer :: icloud_f = 0 !< (v1/v3) GFDL cloud scheme + !< 0: subgrid variability based scheme + !< 1: same as 0, but for old fvgfs implementation + !< 2: binary cloud scheme + !< 3: extension of 0 + integer :: irain_f = 0 !< (v1/v3) cloud water to rain auto conversion scheme + !< 0: subgrid variability based scheme + !< 1: no subgrid varaibility + integer :: reiflag = 1 !< (DIF for v3) cloud ice effective radius scheme (DJS: v3=5) + !< 1: Heymsfield and Mcfarquhar (1996) + !< 2: Donner et al. (1997) + !< 3: Fu (2007) + !< 4: Kristjansson et al. (2000) + !< 5: Wyser (1998) + !< 6: Sun and Rikus (1999), Sun (2001) + !< 7: effective radius ! ##################################################################################### ! GFDL MP Version 3 parameters ! ##################################################################################### - real :: c_psacw = 1.0 ! cloud water to snow accretion efficiency - real :: c_pracw = 0.8 ! cloud water to rain accretion efficiency - real :: c_praci = 1.0 ! cloud ice to rain accretion efficiency - real :: c_pgacw = 1.0 ! cloud water to graupel accretion efficiency - real :: c_pgaci = 0.05 ! cloud ice to graupel accretion efficiency (was 0.1 in ZETAC) - real :: c_pracs = 1.0 ! snow to rain accretion efficiency - real :: c_psacr = 1.0 ! rain to snow accretion efficiency - real :: c_pgacr = 1.0 ! rain to graupel accretion efficiency - real :: alinw = 3.e7 ! "a" in Lin et al. (1983) for cloud water (Ikawa and Saito 1990) - real :: alini = 7.e2 ! "a" in Lin et al. (1983) for cloud ice (Ikawa and Saita 1990) - real :: alinr = 842.0 ! "a" in Lin et al. (1983) for rain (Liu and Orville 1969) - real :: alins = 4.8 ! "a" in Lin et al. (1983) for snow (straka 2009) - real :: aling = 1.0 ! "a" in Lin et al. (1983), similar to a, but for graupel (Pruppacher and Klett 2010) - real :: alinh = 1.0 ! "a" in Lin et al. (1983), similar to a, but for hail (Pruppacher and Klett 2010) - real :: blinw = 2.0 ! "b" in Lin et al. (1983) for cloud water (Ikawa and Saito 1990) - real :: blini = 1.0 ! "b" in Lin et al. (1983) for cloud ice (Ikawa and Saita 1990) - real :: blinr = 0.8 ! "b" in Lin et al. (1983) for rain (Liu and Orville 1969) - real :: blins = 0.25 ! "b" in Lin et al. (1983) for snow (straka 2009) - real :: bling = 0.5 ! "b" in Lin et al. (1983), similar to b, but for graupel (Pruppacher and Klett 2010) - real :: blinh = 0.5 ! "b" in Lin et al. (1983), similar to b, but for hail (Pruppacher and Klett 2010) - real :: vw_fac = 1.0 - real :: vw_max = 0.01 ! maximum fall speed for cloud water (m/s) - real :: tice_mlt = 273.16 ! can set ice melting temperature to 268 based on observation (Kay et al. 2016) (K) - real :: tau_gmlt = 600.0 ! graupel melting time scale (s) - real :: tau_wbf = 300.0 ! graupel melting time scale (s) - real :: tau_revp = 0.0 ! rain evaporation time scale (s) - real :: is_fac = 0.2 ! cloud ice sublimation temperature factor - real :: ss_fac = 0.2 ! snow sublimation temperature factor - real :: gs_fac = 0.2 ! graupel sublimation temperature factor - real :: rh_fac_evap = 10.0 ! cloud water evaporation relative humidity factor - real :: rh_fac_cond = 10.0 ! cloud water condensation relative humidity factor - real :: sed_fac = 1.0 ! coefficient for sedimentation fall, scale from 1.0 (implicit) to 0.0 (lagrangian) - real :: xr_a = 0.25 ! p value in Xu and Randall (1996) - real :: xr_b = 100.0 ! alpha_0 value in Xu and Randall (1996) - real :: xr_c = 0.49 ! gamma value in Xu and Randall (1996) - real :: te_err = 1.e-5 ! 64bit: 1.e-14, 32bit: 1.e-7; turn off to save computer time - real :: tw_err = 1.e-8 ! 64bit: 1.e-14, 32bit: 1.e-7; turn off to save computer time - real :: rh_thres = 0.75 ! minimum relative humidity for cloud fraction - real :: rhc_cevap = 0.85 ! maximum relative humidity for cloud water evaporation - real :: rhc_revap = 0.85 ! maximum relative humidity for rain evaporation - real :: f_dq_p = 1.0 ! cloud fraction adjustment for supersaturation - real :: f_dq_m = 1.0 ! cloud fraction adjustment for undersaturation - real :: fi2s_fac = 1.0 ! maximum sink of cloud ice to form snow: 0-1 - real :: fi2g_fac = 1.0 ! maximum sink of cloud ice to form graupel: 0-1 - real :: fs2g_fac = 1.0 ! maximum sink of snow to form graupel: 0-1 - logical :: const_vw = .false. ! if .ture., the constants are specified by v * _fac - logical :: do_sedi_uv = .true. ! transport of horizontal momentum in sedimentation - logical :: do_sedi_melt = .true. ! melt cloud ice, snow, and graupel during sedimentation - logical :: liq_ice_combine = .false. ! combine all liquid water, combine all solid water - logical :: snow_grauple_combine = .true. ! combine snow and graupel - logical :: use_rhc_cevap = .false. ! cap of rh for cloud water evaporation - logical :: use_rhc_revap = .false. ! cap of rh for rain evaporation - logical :: do_cld_adj = .false. ! do cloud fraction adjustment - logical :: do_evap_timescale = .true. ! whether to apply a timescale to evaporation - logical :: do_cond_timescale = .false. ! whether to apply a timescale to condensation - logical :: consv_checker = .false. ! turn on energy and water conservation checker - logical :: do_warm_rain_mp = .false. ! do warm rain cloud microphysics only - logical :: do_wbf = .false. ! do Wegener Bergeron Findeisen process - logical :: do_psd_water_fall = .false. ! calculate cloud water terminal velocity based on PSD - logical :: do_psd_ice_fall = .false. ! calculate cloud ice terminal velocity based on PSD - logical :: do_psd_water_num = .false. ! calculate cloud water number concentration based on PSD - logical :: do_psd_ice_num = .false. ! calculate cloud ice number concentration based on PSD - logical :: do_new_acc_water = .false. ! perform the new accretion for cloud water - logical :: do_new_acc_ice = .false. ! perform the new accretion for cloud ice - logical :: cp_heating = .false. ! update temperature based on constant pressure - logical :: delay_cond_evap = .false. ! do condensation evaporation only at the last time step - logical :: do_subgrid_proc = .true. ! do temperature sentive high vertical resolution processes - logical :: fast_fr_mlt = .true. ! do freezing and melting in fast microphysics - logical :: fast_dep_sub = .true. ! do deposition and sublimation in fast microphysics - integer :: ntimes = 1 ! cloud microphysics sub cycles - integer :: nconds = 1 ! condensation sub cycles - ! - integer :: inflag = 1 !< ice nucleation scheme - !< 1: Hong et al. (2004) - !< 2: Meyers et al. (1992) - !< 3: Meyers et al. (1992) - !< 4: Cooper (1986) - !, 5: Fletcher (1962) - ! - integer :: igflag = 3 !< ice generation scheme - !< 1: WSM6 - !< 2: WSM6 with 0 at 0 C - !< 3: WSM6 with 0 at 0 C and fixed value at - 10 C - !< 4: combination of 1 and 3 - ! - integer :: ifflag = 1 !< ice fall scheme - !< 1: Deng and Mace (2008) - !< 2: Heymsfield and Donner (1990) - ! - integer :: rewflag = 1 !< cloud water effective radius scheme - !< 1: Martin et al. (1994) - !< 2: Martin et al. (1994), GFDL revision - !< 3: Kiehl et al. (1994) - !< 4: effective radius - ! - integer :: rerflag = 1 !< rain effective radius scheme - !< 1: effective radius - ! - integer :: resflag = 1 !< snow effective radius scheme - !< 1: effective radius - ! - integer :: regflag = 1 !< graupel effective radius scheme - !< 1: effective radius - ! - integer :: radr_flag = 1 !< radar reflectivity for rain - !< 1: Mark Stoelinga (2005) - !< 2: Smith et al. (1975), Tong and Xue (2005) - !< 3: Marshall-Palmer formula (https://en.wikipedia.org/wiki/DBZ_(meteorology)) - ! - integer :: rads_flag = 1 !< radar reflectivity for snow - !< 1: Mark Stoelinga (2005) - !< 2: Smith et al. (1975), Tong and Xue (2005) - !< 3: Marshall-Palmer formula (https://en.wikipedia.org/wiki/DBZ_(meteorology)) - ! - integer :: radg_flag = 1 !< radar reflectivity for graupel - !< 1: Mark Stoelinga (2005) - !< 2: Smith et al. (1975), Tong and Xue (2005) - !< 3: Marshall-Palmer formula (https://en.wikipedia.org/wiki/DBZ_(meteorology)) - ! - integer :: sedflag = 1 !< sedimentation scheme - !< 1: implicit scheme - !< 2: explicit scheme - !< 3: lagrangian scheme - !< 4: combined implicit and lagrangian scheme + logical :: const_vw = .false. !< if .ture., the constants are specified by v * _fac + logical :: do_sedi_uv = .true. !< transport of horizontal momentum in sedimentation + logical :: do_sedi_melt = .true. !< melt cloud ice, snow, and graupel during sedimentation + logical :: liq_ice_combine = .false. !< combine all liquid water, combine all solid water + logical :: snow_grauple_combine = .true. !< combine snow and graupel + logical :: use_rhc_cevap = .false. !< cap of rh for cloud water evaporation + logical :: use_rhc_revap = .false. !< cap of rh for rain evaporation + logical :: do_cld_adj = .false. !< do cloud fraction adjustment + logical :: do_evap_timescale = .true. !< whether to apply a timescale to evaporation + logical :: do_cond_timescale = .false. !< whether to apply a timescale to condensation + logical :: consv_checker = .false. !< turn on energy and water conservation checker + logical :: do_warm_rain_mp = .false. !< do warm rain cloud microphysics only + logical :: do_wbf = .false. !< do Wegener Bergeron Findeisen process + logical :: do_psd_water_fall = .false. !< calculate cloud water terminal velocity based on PSD + logical :: do_psd_ice_fall = .false. !< calculate cloud ice terminal velocity based on PSD + logical :: do_psd_water_num = .false. !< calculate cloud water number concentration based on PSD + logical :: do_psd_ice_num = .false. !< calculate cloud ice number concentration based on PSD + logical :: do_new_acc_water = .false. !< perform the new accretion for cloud water + logical :: do_new_acc_ice = .false. !< perform the new accretion for cloud ice + logical :: cp_heating = .false. !< update temperature based on constant pressure + logical :: delay_cond_evap = .false. !< do condensation evaporation only at the last time step + logical :: do_subgrid_proc = .true. !< do temperature sentive high vertical resolution processes + logical :: fast_fr_mlt = .true. !< do freezing and melting in fast microphysics + logical :: fast_dep_sub = .true. !< do deposition and sublimation in fast microphysics ! - integer :: vdiffflag = 1 !< wind difference scheme in accretion - !< 1: Wisner et al. (1972) - !< 2: Mizuno (1990) - !< 3: Murakami (1990) + integer :: ntimes = 1 !< cloud microphysics sub cycles + integer :: nconds = 1 !< condensation sub cycles + integer :: inflag = 1 !< ice nucleation scheme + !< 1: Hong et al. (2004) + !< 2: Meyers et al. (1992) + !< 3: Meyers et al. (1992) + !< 4: Cooper (1986) + !< 5: Fletcher (1962) + integer :: igflag = 3 !< ice generation scheme + !< 1: WSM6 + !< 2: WSM6 with 0 at 0 C + !< 3: WSM6 with 0 at 0 C and fixed value at - 10 C + !< 4: combination of 1 and 3 + integer :: ifflag = 1 !< ice fall scheme + !< 1: Deng and Mace (2008) + !< 2: Heymsfield and Donner (1990) + integer :: rewflag = 1 !< cloud water effective radius scheme + !< 1: Martin et al. (1994) + !< 2: Martin et al. (1994), GFDL revision + !< 3: Kiehl et al. (1994) + !< 4: effective radius + integer :: rerflag = 1 !< rain effective radius scheme + !< 1: effective radius + integer :: resflag = 1 !< snow effective radius scheme + !< 1: effective radius + integer :: regflag = 1 !< graupel effective radius scheme + !< 1: effective radius + integer :: radr_flag = 1 !< radar reflectivity for rain + !< 1: Mark Stoelinga (2005) + !< 2: Smith et al. (1975), Tong and Xue (2005) + !< 3: Marshall-Palmer formula (https://en.wikipedia.org/wiki/DBZ_(meteorology)) + integer :: rads_flag = 1 !< radar reflectivity for snow + !< 1: Mark Stoelinga (2005) + !< 2: Smith et al. (1975), Tong and Xue (2005) + !< 3: Marshall-Palmer formula (https://en.wikipedia.org/wiki/DBZ_(meteorology)) + integer :: radg_flag = 1 !< radar reflectivity for graupel + !< 1: Mark Stoelinga (2005) + !< 2: Smith et al. (1975), Tong and Xue (2005) + !< 3: Marshall-Palmer formula (https://en.wikipedia.org/wiki/DBZ_(meteorology)) + integer :: sedflag = 1 !< sedimentation scheme + !< 1: implicit scheme + !< 2: explicit scheme + !< 3: lagrangian scheme + !< 4: combined implicit and lagrangian scheme + integer :: vdiffflag = 1 !< wind difference scheme in accretion + !< 1: Wisner et al. (1972) + !< 2: Mizuno (1990) + !< 3: Murakami (1990) - real :: n0w_sig = 1.1 ! intercept parameter (significand) of cloud water (Lin et al. 1983) (1/m^4) (Martin et al. 1994) - real :: n0i_sig = 1.3 ! intercept parameter (significand) of cloud ice (Lin et al. 1983) (1/m^4) (McFarquhar et al. 2015) - real :: n0r_sig = 8.0 ! intercept parameter (significand) of rain (Lin et al. 1983) (1/m^4) (Marshall and Palmer 1948) - real :: n0s_sig = 3.0 ! intercept parameter (significand) of snow (Lin et al. 1983) (1/m^4) (Gunn and Marshall 1958) - real :: n0g_sig = 4.0 ! intercept parameter (significand) of graupel (Rutledge and Hobbs 1984) (1/m^4) (Houze et al. 1979) - real :: n0h_sig = 4.0 ! intercept parameter (significand) of hail (Lin et al. 1983) (1/m^4) (Federer and Waldvogel 1975) - - real :: n0w_exp = 41 ! intercept parameter (exponent) of cloud water (Lin et al. 1983) (1/m^4) (Martin et al. 1994) - real :: n0i_exp = 18 ! intercept parameter (exponent) of cloud ice (Lin et al. 1983) (1/m^4) (McFarquhar et al. 2015) - real :: n0r_exp = 6 ! intercept parameter (exponent) of rain (Lin et al. 1983) (1/m^4) (Marshall and Palmer 1948) - real :: n0s_exp = 6 ! intercept parameter (exponent) of snow (Lin et al. 1983) (1/m^4) (Gunn and Marshall 1958) - real :: n0g_exp = 6 ! intercept parameter (exponent) of graupel (Rutledge and Hobbs 1984) (1/m^4) (Houze et al. 1979) - real :: n0h_exp = 4 ! intercept parameter (exponent) of hail (Lin et al. 1983) (1/m^4) (Federer and Waldvogel 1975) - - real :: muw = 6.0 ! shape parameter of cloud water in Gamma distribution (Martin et al. 1994) - real :: mui = 3.35 ! shape parameter of cloud ice in Gamma distribution (McFarquhar et al. 2015) - real :: mur = 1.0 ! shape parameter of rain in Gamma distribution (Marshall and Palmer 1948) - real :: mus = 1.0 ! shape parameter of snow in Gamma distribution (Gunn and Marshall 1958) - real :: mug = 1.0 ! shape parameter of graupel in Gamma distribution (Houze et al. 1979) - real :: muh = 1.0 ! shape parameter of hail in Gamma distribution (Federer and Waldvogel 1975) - real :: beta = 1.22 ! defined in Heymsfield and Mcfarquhar (1996) - - real :: rewfac = 1.0 !< this is a tuning parameter to compromise the inconsistency between - !< GFDL MP's PSD and cloud water radiative property's PSD assumption. - !< after the cloud water radiative property's PSD is rebuilt, - !< this parameter should be 1.0. - real :: reifac = 1.0 !< this is a tuning parameter to compromise the inconsistency between - !< GFDL MP's PSD and cloud ice radiative property's PSD assumption. - !< after the cloud ice radiative property's PSD is rebuilt, - !< this parameter should be 1.0. + real(wp) :: c_psacw = 1.0 !< cloud water to snow accretion efficiency + real(wp) :: c_pracw = 0.8 !< cloud water to rain accretion efficiency + real(wp) :: c_praci = 1.0 !< cloud ice to rain accretion efficiency + real(wp) :: c_pgacw = 1.0 !< cloud water to graupel accretion efficiency + real(wp) :: c_pgaci = 0.05 !< cloud ice to graupel accretion efficiency (was 0.1 in ZETAC) + real(wp) :: c_pracs = 1.0 !< snow to rain accretion efficiency + real(wp) :: c_psacr = 1.0 !< rain to snow accretion efficiency + real(wp) :: c_pgacr = 1.0 !< rain to graupel accretion efficiency + real(wp) :: alinw = 3.e7 !< "a" in Lin et al. (1983) for cloud water (Ikawa and Saito 1990) + real(wp) :: alini = 7.e2 !< "a" in Lin et al. (1983) for cloud ice (Ikawa and Saita 1990) + real(wp) :: alinr = 842.0 !< "a" in Lin et al. (1983) for rain (Liu and Orville 1969) + real(wp) :: alins = 4.8 !< "a" in Lin et al. (1983) for snow (straka 2009) + real(wp) :: aling = 1.0 !< "a" in Lin et al. (1983), similar to a, but for graupel (Pruppacher and Klett 2010) + real(wp) :: alinh = 1.0 !< "a" in Lin et al. (1983), similar to a, but for hail (Pruppacher and Klett 2010) + real(wp) :: blinw = 2.0 !< "b" in Lin et al. (1983) for cloud water (Ikawa and Saito 1990) + real(wp) :: blini = 1.0 !< "b" in Lin et al. (1983) for cloud ice (Ikawa and Saita 1990) + real(wp) :: blinr = 0.8 !< "b" in Lin et al. (1983) for rain (Liu and Orville 1969) + real(wp) :: blins = 0.25 !< "b" in Lin et al. (1983) for snow (straka 2009) + real(wp) :: bling = 0.5 !< "b" in Lin et al. (1983), similar to b, but for graupel (Pruppacher and Klett 2010) + real(wp) :: blinh = 0.5 !< "b" in Lin et al. (1983), similar to b, but for hail (Pruppacher and Klett 2010) + real(wp) :: vw_fac = 1.0 !< + real(wp) :: vw_max = 0.01 !< maximum fall speed for cloud water (m/s) + real(wp) :: tice_mlt = 273.16 !< can set ice melting temperature to 268 based on observation (Kay et al. 2016) (K) + real(wp) :: tau_gmlt = 600.0 !< graupel melting time scale (s) + real(wp) :: tau_wbf = 300.0 !< graupel melting time scale (s) + real(wp) :: tau_revp = 0.0 !< rain evaporation time scale (s) + real(wp) :: is_fac = 0.2 !< cloud ice sublimation temperature factor + real(wp) :: ss_fac = 0.2 !< snow sublimation temperature factor + real(wp) :: gs_fac = 0.2 !< graupel sublimation temperature factor + real(wp) :: rh_fac_evap = 10.0 !< cloud water evaporation relative humidity factor + real(wp) :: rh_fac_cond = 10.0 !< cloud water condensation relative humidity factor + real(wp) :: sed_fac = 1.0 !< coefficient for sedimentation fall, scale from 1.0 (implicit) to 0.0 (lagrangian) + real(wp) :: xr_a = 0.25 !< p value in Xu and Randall (1996) + real(wp) :: xr_b = 100.0 !< alpha_0 value in Xu and Randall (1996) + real(wp) :: xr_c = 0.49 !< gamma value in Xu and Randall (1996) + real(wp) :: te_err = 1.e-5 !< 64bit: 1.e-14, 32bit: 1.e-7; turn off to save computer time + real(wp) :: tw_err = 1.e-8 !< 64bit: 1.e-14, 32bit: 1.e-7; turn off to save computer time + real(wp) :: rh_thres = 0.75 !< minimum relative humidity for cloud fraction + real(wp) :: rhc_cevap = 0.85 !< maximum relative humidity for cloud water evaporation + real(wp) :: rhc_revap = 0.85 !< maximum relative humidity for rain evaporation + real(wp) :: f_dq_p = 1.0 !< cloud fraction adjustment for supersaturation + real(wp) :: f_dq_m = 1.0 !< cloud fraction adjustment for undersaturation + real(wp) :: fi2s_fac = 1.0 !< maximum sink of cloud ice to form snow: 0-1 + real(wp) :: fi2g_fac = 1.0 !< maximum sink of cloud ice to form graupel: 0-1 + real(wp) :: fs2g_fac = 1.0 !< maximum sink of snow to form graupel: 0-1 + real(wp) :: n0w_sig = 1.1 !< intercept parameter (significand) of cloud water (Lin et al. 1983) (1/m^4) (Martin et al. 1994) + real(wp) :: n0i_sig = 1.3 !< intercept parameter (significand) of cloud ice (Lin et al. 1983) (1/m^4) (McFarquhar et al. 2015) + real(wp) :: n0r_sig = 8.0 !< intercept parameter (significand) of rain (Lin et al. 1983) (1/m^4) (Marshall and Palmer 1948) + real(wp) :: n0s_sig = 3.0 !< intercept parameter (significand) of snow (Lin et al. 1983) (1/m^4) (Gunn and Marshall 1958) + real(wp) :: n0g_sig = 4.0 !< intercept parameter (significand) of graupel (Rutledge and Hobbs 1984) (1/m^4) (Houze et al. 1979) + real(wp) :: n0h_sig = 4.0 !< intercept parameter (significand) of hail (Lin et al. 1983) (1/m^4) (Federer and Waldvogel 1975) + real(wp) :: n0w_exp = 41 !< intercept parameter (exponent) of cloud water (Lin et al. 1983) (1/m^4) (Martin et al. 1994) + real(wp) :: n0i_exp = 18 !< intercept parameter (exponent) of cloud ice (Lin et al. 1983) (1/m^4) (McFarquhar et al. 2015) + real(wp) :: n0r_exp = 6 !< intercept parameter (exponent) of rain (Lin et al. 1983) (1/m^4) (Marshall and Palmer 1948) + real(wp) :: n0s_exp = 6 !< intercept parameter (exponent) of snow (Lin et al. 1983) (1/m^4) (Gunn and Marshall 1958) + real(wp) :: n0g_exp = 6 !< intercept parameter (exponent) of graupel (Rutledge and Hobbs 1984) (1/m^4) (Houze et al. 1979) + real(wp) :: n0h_exp = 4 !< intercept parameter (exponent) of hail (Lin et al. 1983) (1/m^4) (Federer and Waldvogel 1975) + real(wp) :: muw = 6.0 !< shape parameter of cloud water in Gamma distribution (Martin et al. 1994) + real(wp) :: mui = 3.35 !< shape parameter of cloud ice in Gamma distribution (McFarquhar et al. 2015) + real(wp) :: mur = 1.0 !< shape parameter of rain in Gamma distribution (Marshall and Palmer 1948) + real(wp) :: mus = 1.0 !< shape parameter of snow in Gamma distribution (Gunn and Marshall 1958) + real(wp) :: mug = 1.0 !< shape parameter of graupel in Gamma distribution (Houze et al. 1979) + real(wp) :: muh = 1.0 !< shape parameter of hail in Gamma distribution (Federer and Waldvogel 1975) + real(wp) :: beta = 1.22 !< defined in Heymsfield and Mcfarquhar (1996) + real(wp) :: rewfac = 1.0 !< this is a tuning parameter to compromise the inconsistency between + !< GFDL MP's PSD and cloud water radiative property's PSD assumption. + !< after the cloud water radiative property's PSD is rebuilt, + !< this parameter should be 1.0. + real(wp) :: reifac = 1.0 !< this is a tuning parameter to compromise the inconsistency between + !< GFDL MP's PSD and cloud ice radiative property's PSD assumption. + !< after the cloud ice radiative property's PSD is rebuilt, + !< this parameter should be 1.0. ! ####################################################################################### ! V1 namelist