diff --git a/ccpp/physics b/ccpp/physics index ec016958..378517c8 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit ec0169587cec34a1388678e5fd895741c94abfbd +Subproject commit 378517c81dac9cbe4f0bee41284b46ae070b4323 diff --git a/scm/src/GFS_typedefs.F90 b/scm/src/GFS_typedefs.F90 index 1f88629a..2d769e20 100644 --- a/scm/src/GFS_typedefs.F90 +++ b/scm/src/GFS_typedefs.F90 @@ -605,6 +605,7 @@ module GFS_typedefs real (kind=kind_phys), pointer :: spp_wts_mp (:,:) => null() ! spp-mp-perts real (kind=kind_phys), pointer :: spp_wts_gwd (:,:) => null() ! spp-gwd-perts real (kind=kind_phys), pointer :: spp_wts_rad (:,:) => null() ! spp-rad-perts + real (kind=kind_phys), pointer :: spp_wts_cu_deep (:,:) => null() ! spp-cu-deep-perts !--- aerosol surface emissions for Thompson microphysics real (kind=kind_phys), pointer :: nwfa2d (:) => null() !< instantaneous water-friendly sfc aerosol source @@ -965,9 +966,9 @@ module GFS_typedefs real(kind=kind_phys) :: nssl_cccn !< CCN concentration (m-3) real(kind=kind_phys) :: nssl_alphah !< graupel shape parameter real(kind=kind_phys) :: nssl_alphahl !< hail shape parameter - real(kind=kind_phys) :: nssl_alphar ! shape parameter for rain (imurain=1 only) - real(kind=kind_phys) :: nssl_ehw0 ! constant or max assumed graupel-droplet collection efficiency - real(kind=kind_phys) :: nssl_ehlw0 ! constant or max assumed hail-droplet collection efficiency + real(kind=kind_phys) :: nssl_alphar ! shape parameter for rain (imurain=1 only) + real(kind=kind_phys) :: nssl_ehw0 ! constant or max assumed graupel-droplet collection efficiency + real(kind=kind_phys) :: nssl_ehlw0 ! constant or max assumed hail-droplet collection efficiency logical :: nssl_hail_on !< NSSL flag to activate the hail category logical :: nssl_ccn_on !< NSSL flag to activate the CCN category logical :: nssl_invertccn !< NSSL flag to treat CCN as activated (true) or unactivated (false) @@ -1322,6 +1323,7 @@ module GFS_typedefs integer :: nseed !< cellular automata seed frequency integer :: nseed_g !< cellular automata seed frequency logical :: do_ca !< cellular automata main switch + logical :: ca_advect !< Advection of cellular automata logical :: ca_sgs !< switch for sgs ca logical :: ca_global !< switch for global ca logical :: ca_smooth !< switch for gaussian spatial filter @@ -1363,8 +1365,9 @@ module GFS_typedefs integer :: spp_mp integer :: spp_rad integer :: spp_gwd + integer :: spp_cu_deep integer :: n_var_spp - character(len=3) , pointer :: spp_var_list(:) + character(len=10) , pointer :: spp_var_list(:) real(kind=kind_phys), pointer :: spp_prt_list(:) real(kind=kind_phys), pointer :: spp_stddev_cutoff(:) @@ -3110,6 +3113,8 @@ subroutine coupling_create (Coupling, IM, Model) Coupling%spp_wts_gwd = clear_val allocate (Coupling%spp_wts_rad (IM,Model%levs)) Coupling%spp_wts_rad = clear_val + allocate (Coupling%spp_wts_cu_deep (IM,Model%levs)) + Coupling%spp_wts_cu_deep = clear_val endif !--- needed for Thompson's aerosol option @@ -3757,6 +3762,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & integer :: iseed_ca = 1 integer :: nspinup = 1 logical :: do_ca = .false. + logical :: ca_advect = .false. logical :: ca_sgs = .false. logical :: ca_global = .false. logical :: ca_smooth = .false. @@ -3807,6 +3813,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & integer :: spp_mp = 0 integer :: spp_rad = 0 integer :: spp_gwd = 0 + integer :: spp_cu_deep = 0 logical :: do_spp = .false. integer :: ichoice = 0 !< flag for closure of C3/GF deep convection @@ -3979,7 +3986,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & h0facu, h0facs, & !--- cellular automata nca, ncells, nlives, nca_g, ncells_g, nlives_g, nfracseed, & - nseed, nseed_g, nthresh, do_ca, & + nseed, nseed_g, nthresh, do_ca, ca_advect, & ca_sgs, ca_global,iseed_ca,ca_smooth, & nspinup,ca_amplitude,nsmooth,ca_closure,ca_entr,ca_trigger, & !--- IAU @@ -4998,6 +5005,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%nseed_g = nseed_g Model%ca_global = ca_global Model%do_ca = do_ca + Model%ca_advect = ca_advect Model%ca_sgs = ca_sgs Model%iseed_ca = iseed_ca Model%ca_smooth = ca_smooth @@ -6760,6 +6768,7 @@ subroutine control_print(Model) print *, ' ca_global : ', Model%ca_global print *, ' ca_sgs : ', Model%ca_sgs print *, ' do_ca : ', Model%do_ca + print *, ' ca_advect : ', Model%ca_advect print *, ' iseed_ca : ', Model%iseed_ca print *, ' ca_smooth : ', Model%ca_smooth print *, ' nspinup : ', Model%nspinup diff --git a/scm/src/GFS_typedefs.meta b/scm/src/GFS_typedefs.meta index 20095ea4..54220241 100644 --- a/scm/src/GFS_typedefs.meta +++ b/scm/src/GFS_typedefs.meta @@ -2952,6 +2952,14 @@ type = real kind = kind_phys active = (do_stochastically_perturbed_parameterizations) +[spp_wts_cu_deep] + standard_name = spp_weights_for_cu_deep_scheme + long_name = spp weights for cu deep scheme + units = 1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + active = (do_stochastically_perturbed_parameterizations) [sfc_wts] standard_name = surface_stochastic_weights_from_coupled_process long_name = weights for stochastic surface physics perturbation @@ -5712,6 +5720,12 @@ units = flag dimensions = () type = logical +[ca_advect] + standard_name = flag_for_cellular_automata_advection + long_name = cellular automata main switch + units = flag + dimensions = () + type = logical [ca_sgs] standard_name = flag_for_sgs_cellular_automata long_name = switch for sgs ca @@ -5867,7 +5881,7 @@ units = none dimensions = (number_of_perturbed_spp_schemes) type = character - kind = len=3 + kind = len=10 active = (do_stochastically_perturbed_parameterizations) [spp_pbl] standard_name = control_for_pbl_spp_perturbations @@ -5899,6 +5913,12 @@ units = count dimensions = () type = integer +[spp_cu_deep] + standard_name = control_for_deep_convection_spp_perturbations + long_name = control for deep convection spp perturbations + units = count + dimensions = () + type = integer [ntrac] standard_name = number_of_tracers long_name = number of tracers