From d6f918b30d05441b2c7434e59aab4fd5aec4407d Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Tue, 24 Oct 2023 22:13:19 +0000 Subject: [PATCH 1/5] Updates to CCPP physics convection schemes --- .gitmodules | 3 ++- ccpp/data/GFS_typedefs.F90 | 19 +++++++++++++++++-- ccpp/data/GFS_typedefs.meta | 21 +++++++++++++++++++++ ccpp/physics | 2 +- 4 files changed, 41 insertions(+), 4 deletions(-) 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 bfb6af571..93f9eb052 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -1193,6 +1193,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 @@ -3613,6 +3616,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 @@ -3925,8 +3932,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, & @@ -4707,6 +4714,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & 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.' @@ -6689,6 +6699,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 4f3a757b8..73dc64a41 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -5239,6 +5239,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 1db569112..2fc4a6404 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 1db569112ed60a0074028fccf7e09d3b47ce9f92 +Subproject commit 2fc4a64040e36f150af41890270112b1abc3200d From eec54cad35186400b242ece49bcee2ca1f0ce061 Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Wed, 25 Oct 2023 21:31:56 +0000 Subject: [PATCH 2/5] updated ccpp submodule pointers --- ccpp/data/GFS_typedefs.F90 | 2 +- ccpp/physics | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index 93f9eb052..10f6e5a47 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -3060,7 +3060,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 @@ -4709,6 +4708,7 @@ 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 diff --git a/ccpp/physics b/ccpp/physics index 2fc4a6404..12b400a21 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 2fc4a64040e36f150af41890270112b1abc3200d +Subproject commit 12b400a210854d33e64fd6d211482d9f8ab7add5 From c67b6dd68e3932946d95a69a1263d0679874af8f Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Thu, 26 Oct 2023 21:11:44 +0000 Subject: [PATCH 3/5] update ccpp/physics submodule pointer --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 12b400a21..e861277c1 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 12b400a210854d33e64fd6d211482d9f8ab7add5 +Subproject commit e861277c1ffe8fdcb1b026240f98077bb7a91473 From 16cddc00e0720d6394d8a7b710125cabc8a751a7 Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Fri, 3 Nov 2023 19:12:58 +0000 Subject: [PATCH 4/5] update submodule pointer to ccpp/physics --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index e861277c1..2fe755914 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit e861277c1ffe8fdcb1b026240f98077bb7a91473 +Subproject commit 2fe755914b8db23a86fb8e7b53aff9d91d8ffe59 From 7faecb0ed7ebbe9d903077ab41b93e618e4a3224 Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Wed, 8 Nov 2023 02:33:34 +0000 Subject: [PATCH 5/5] update ccpp submodule pointer --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 2fe755914..1eeba9e0f 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 2fe755914b8db23a86fb8e7b53aff9d91d8ffe59 +Subproject commit 1eeba9e0f74d607d6e75f65427b7089a023a9c5d