diff --git a/.gitmodules b/.gitmodules index 22c723ac1..9b8e1c4e4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,7 +8,8 @@ branch = main [submodule "ccpp/physics"] path = ccpp/physics - url = https://github.com/ufs-community/ccpp-physics + #url = https://github.com/ufs-community/ccpp-physics + url = https://github.com/lisa-bengtsson/ccpp-physics branch = ufs/dev [submodule "upp"] path = upp diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index dd9505128..3289d24bd 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -1192,6 +1192,9 @@ module GFS_typedefs integer :: seed0 !< random seed for radiation real(kind=kind_phys) :: rbcr !< Critical Richardson Number in the PBL scheme + real(kind=kind_phys) :: betascu !< Tuning parameter for prog. closure shallow clouds + real(kind=kind_phys) :: betamcu !< Tuning parameter for prog. closure midlevel clouds + real(kind=kind_phys) :: betadcu !< Tuning parameter for prog. closure deep clouds !--- MYNN parameters/switches logical :: do_mynnedmf @@ -3072,7 +3075,6 @@ subroutine coupling_create (Coupling, IM, Model) Coupling%psurfi_cpl = clear_val endif - !--prognostic closure - moisture coupling if(Model%progsigma)then allocate(Coupling%dqdt_qmicro (IM,Model%levs)) Coupling%dqdt_qmicro = clear_val @@ -3627,6 +3629,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & real(kind=kind_phys) :: var_ric = 1.0 real(kind=kind_phys) :: coef_ric_l = 0.16 real(kind=kind_phys) :: coef_ric_s = 0.25 + !Prognostic convective closure + real(kind=kind_phys) :: betascu = 8.0 !< Tuning parameter for prog. closure shallow clouds + real(kind=kind_phys) :: betamcu = 1.0 !< Tuning parameter for prog. closure midlevel clouds + real(kind=kind_phys) :: betadcu = 2.0 !< Tuning parameter for prog. closure deep clouds ! *DH logical :: do_myjsfc = .false. !< flag for MYJ surface layer scheme logical :: do_myjpbl = .false. !< flag for MYJ PBL scheme @@ -3945,8 +3951,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & do_ugwp_v1, do_ugwp_v1_orog_only, do_ugwp_v1_w_gsldrag, & ugwp_seq_update, var_ric, coef_ric_l, coef_ric_s, hurr_pbl, & do_myjsfc, do_myjpbl, & - hwrf_samfdeep, hwrf_samfshal,progsigma, & - h2o_phys, pdfcld, shcnvcw, redrag, hybedmf, satmedmf, & + hwrf_samfdeep, hwrf_samfshal,progsigma,betascu,betamcu, & + betadcu,h2o_phys, pdfcld, shcnvcw, redrag, hybedmf, satmedmf,& shinhong, do_ysu, dspheat, lheatstrg, lseaspray, cnvcld, & random_clds, shal_cnv, imfshalcnv, imfdeepcnv, isatmedmf, & do_deep, jcap, & @@ -4726,11 +4732,15 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%hwrf_samfdeep = hwrf_samfdeep Model%hwrf_samfshal = hwrf_samfshal + !--prognostic closure - moisture coupling if ((progsigma .and. imfdeepcnv/=2) .and. (progsigma .and. imfdeepcnv/=5)) then write(*,*) 'Logic error: progsigma requires imfdeepcnv=2 or 5' stop end if Model%progsigma = progsigma + Model%betascu = betascu + Model%betamcu = betamcu + Model%betadcu = betadcu if (oz_phys .and. oz_phys_2015) then write(*,*) 'Logic error: can only use one ozone physics option (oz_phys or oz_phys_2015), not both. Exiting.' @@ -6732,6 +6742,11 @@ subroutine control_print(Model) print *, ' do_spp : ', Model%do_spp print *, ' n_var_spp : ', Model%n_var_spp print *, ' ' + print *, 'convection' + print *, 'betascu : ', Model%betascu + print *, 'betamcu : ', Model%betamcu + print *, 'betadcu : ', Model%betadcu + print *, ' ' print *, 'cellular automata' print *, ' nca : ', Model%nca print *, ' ncells : ', Model%ncells diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index d1c05af58..d028a5834 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -5299,6 +5299,27 @@ units = flag dimensions = () type = logical +[betascu] + standard_name = tuning_param_for_shallow_cu + long_name = tuning param for shallow cu in case prognostic closure is used + units = none + dimensions = () + type = real + kind = kind_phys +[betamcu] + standard_name = tuning_param_for_midlevel_cu + long_name = tuning param for midlevel cu in case prognostic closure is used + units = none + dimensions = () + type = real + kind = kind_phys +[betadcu] + standard_name = tuning_param_for_deep_cu + long_name = tuning param for deep cu in case prognostic closure is used + units = none + dimensions = () + type = real + kind = kind_phys [isatmedmf] standard_name = choice_of_scale_aware_TKE_moist_EDMF_PBL long_name = choice of scale-aware TKE moist EDMF PBL scheme diff --git a/ccpp/physics b/ccpp/physics index c751a5a6e..1eeba9e0f 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit c751a5a6e1a5ae1f3f79e667a86e8dee0e62879f +Subproject commit 1eeba9e0f74d607d6e75f65427b7089a023a9c5d