From 2fa13cc6634949be3340c792bbe3a1b4207793d2 Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Fri, 24 Mar 2023 01:39:24 +0000 Subject: [PATCH 1/8] Make passing of PBL q tendency more general (not dependent on specific PBL scheme) for prog closure --- .gitmodules | 4 ++-- ccpp/data/GFS_typedefs.F90 | 38 +++++++++++++++++++---------------- ccpp/data/GFS_typedefs.meta | 40 ++++++++++++++++++++----------------- ccpp/physics | 2 +- 4 files changed, 46 insertions(+), 38 deletions(-) diff --git a/.gitmodules b/.gitmodules index 22c723ac1..1ab5e4a56 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,8 +8,8 @@ branch = main [submodule "ccpp/physics"] path = ccpp/physics - url = https://github.com/ufs-community/ccpp-physics - branch = ufs/dev + url = https://github.com/lisa-bengtsson/ccpp-physics + branch = progc_HR2 [submodule "upp"] path = upp url = https://github.com/NOAA-EMC/UPP diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index d950e39e6..045a45deb 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -577,7 +577,6 @@ module GFS_typedefs real (kind=kind_phys), pointer :: pfl_lsan(:,:) => null() !< instantaneous 3D flux of liquid nonconvective precipitation (kg m-2 s-1) !-- prognostic updraft area fraction coupling in convection - real (kind=kind_phys), pointer :: tmf (:,:) => null() !< tmf to be passed from turublence scheme to convection real (kind=kind_phys), pointer :: dqdt_qmicro(:,:) => null() !< instantanious microphysics tendency to be passed from MP to convection !--- instantaneous total moisture tendency for smoke coupling: @@ -1063,6 +1062,7 @@ module GFS_typedefs integer :: imfshalcnv_samf = 2 !< flag for SAMF scale- & aerosol-aware mass-flux shallow convection scheme integer :: imfshalcnv_gf = 3 !< flag for scale- & aerosol-aware Grell-Freitas scheme (GSD) integer :: imfshalcnv_ntiedtke = 4 !< flag for new Tiedtke scheme (CAPS) + integer :: imfshalcnv_unified = 5 !< flag for the unified convection scheme logical :: hwrf_samfdeep !< flag for HWRF SAMF deepcnv scheme (HWRF) logical :: progsigma !< flag for prognostic area fraction in samf ddepcnv scheme (GFS) integer :: imfdeepcnv !< flag for mass-flux deep convection scheme @@ -1076,6 +1076,7 @@ module GFS_typedefs integer :: imfdeepcnv_samf = 2 !< flag for SAMF scale- & aerosol-aware mass-flux deep convection scheme integer :: imfdeepcnv_gf = 3 !< flag for scale- & aerosol-aware Grell-Freitas scheme (GSD) integer :: imfdeepcnv_ntiedtke = 4 !< flag for new Tiedtke scheme (CAPS) + integer :: imfdeepcnv_unified = 5 !< flag for the unified convection scheme logical :: hwrf_samfshal !< flag for HWRF SAMF shalcnv scheme (HWRF) integer :: isatmedmf !< flag for scale-aware TKE-based moist edmf scheme !< 0: initial version of satmedmf (Nov. 2018) @@ -2510,7 +2511,7 @@ subroutine sfcprop_create (Sfcprop, IM, Model) Sfcprop%cqs2 = clear_val Sfcprop%lh = clear_val end if - if (Model%imfdeepcnv == Model%imfdeepcnv_gf) then + if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_unified) then allocate (Sfcprop%conv_act(IM)) allocate (Sfcprop%conv_act_m(IM)) Sfcprop%conv_act = zero @@ -2797,8 +2798,6 @@ subroutine coupling_create (Coupling, IM, Model) !--prognostic closure - moisture coupling if(Model%progsigma)then allocate(Coupling%dqdt_qmicro (IM,Model%levs)) - allocate(Coupling%tmf (IM,Model%levs)) - Coupling%tmf = clear_val Coupling%dqdt_qmicro = clear_val endif @@ -2887,7 +2886,7 @@ subroutine coupling_create (Coupling, IM, Model) Coupling%dqdti = clear_val endif - if (Model%imfdeepcnv == Model%imfdeepcnv_gf) then + if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_unified) then allocate (Coupling%qci_conv (IM,Model%levs)) Coupling%qci_conv = clear_val endif @@ -3316,7 +3315,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & logical :: hwrf_samfdeep = .false. !< flag for HWRF SAMF deepcnv scheme logical :: hwrf_samfshal = .false. !< flag for HWRF SAMF shalcnv scheme - logical :: progsigma = .false. !< flag for prognostic updraft area fraction closure in saSAS + logical :: progsigma = .false. !< flag for prognostic updraft area fraction closure in saSAS or Unified conv. logical :: do_mynnedmf = .false. !< flag for MYNN-EDMF logical :: do_mynnsfclay = .false. !< flag for MYNN Surface Layer Scheme ! DH* TODO - move to MYNN namelist section @@ -3793,17 +3792,17 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & write(*,*) 'NO FLAG: pbl is generic' endif - if(imfshalcnv == Model%imfshalcnv_gf) then + if(imfshalcnv == Model%imfshalcnv_gf .or. imfshalcnv == Model%imfshalcnv_unified) then if(me==master) & - write(*,*) 'FLAG: imfshalcnv_gf so scnv not generic' + write(*,*) 'FLAG: imfshalcnv_gf or imfshalcnv_unified so scnv not generic' Model%flag_for_scnv_generic_tend=.false. elseif(me==master) then write(*,*) 'NO FLAG: scnv is generic' endif - if(imfdeepcnv == Model%imfdeepcnv_gf) then + if(imfdeepcnv == Model%imfdeepcnv_gf .or. imfdeepcnv == Model%imfdeepcnv_unified) then if(me==master) & - write(*,*) 'FLAG: imfdeepcnv_gf so dcnv not generic' + write(*,*) 'FLAG: imfdeepcnv_gf or imfdeepcnv_unified so dcnv not generic' Model%flag_for_dcnv_generic_tend=.false. elseif(me==master) then write(*,*) 'NO FLAG: dcnv is generic' @@ -4358,8 +4357,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%hwrf_samfdeep = hwrf_samfdeep Model%hwrf_samfshal = hwrf_samfshal - if (progsigma .and. imfdeepcnv/=2) then - write(*,*) 'Logic error: progsigma requires imfdeepcnv=2' + 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 @@ -5283,6 +5282,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & print *,' Grell-Freitas scale & aerosol-aware mass-flux deep conv scheme' elseif(Model%imfdeepcnv == Model%imfdeepcnv_ntiedtke) then print *,' New Tiedtke cumulus scheme' + elseif(Model%imfdeepcnv == Model%imfdeepcnv_unified) then + print *,' New unified cumulus convection scheme' endif endif else @@ -5326,6 +5327,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & print *,' Grell-Freitas scale- & aerosol-aware mass-flux shallow conv scheme (2013)' elseif (Model%imfshalcnv == Model%imfshalcnv_ntiedtke) then print *,' New Tiedtke cumulus scheme' + elseif (Model%imfshalcnv == Model%imfshalcnv_unified) then + print *,' New unified cumulus scheme' else print *,' unknown mass-flux scheme in use - defaulting to no shallow convection' Model%imfshalcnv = -1 @@ -5572,7 +5575,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & endif if(Model%ras .or. Model%cscnv) Model%cnvcld = .false. - if(Model%do_shoc .or. Model%pdfcld .or. Model%do_mynnedmf .or. Model%imfdeepcnv == Model%imfdeepcnv_gf) Model%cnvcld = .false. + if(Model%do_shoc .or. Model%pdfcld .or. Model%do_mynnedmf .or. Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_unified) Model%cnvcld = .false. if(Model%cnvcld) Model%ncnvcld3d = 1 !--- get cnvwind index in phy_f2d; last entry in phy_f2d array @@ -5637,7 +5640,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%lmfshal = (Model%shal_cnv .and. Model%imfshalcnv > 0) Model%lmfdeep2 = (Model%imfdeepcnv == Model%imfdeepcnv_samf & .or. Model%imfdeepcnv == Model%imfdeepcnv_gf & - .or. Model%imfdeepcnv == Model%imfdeepcnv_ntiedtke) + .or. Model%imfdeepcnv == Model%imfdeepcnv_ntiedtke & + .or. Model%imfdeepcnv == Model%imfdeepcnv_unified) !--- END CODE FROM GLOOPR !--- BEGIN CODE FROM GLOOPB @@ -6557,7 +6561,7 @@ subroutine tbd_create (Tbd, IM, Model) allocate (Tbd%hpbl (IM)) Tbd%hpbl = clear_val - if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_ntiedtke .or. Model%imfdeepcnv == Model%imfdeepcnv_samf .or. Model%imfshalcnv == Model%imfshalcnv_samf) then + if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_ntiedtke .or. Model%imfdeepcnv == Model%imfdeepcnv_samf .or. Model%imfshalcnv == Model%imfshalcnv_samf .or. Model%imfdeepcnv == Model%imfdeepcnv_unified .or. Model%imfshalcnv == Model%imfshalcnv_unified) then allocate(Tbd%prevsq(IM, Model%levs)) Tbd%prevsq = clear_val endif @@ -6567,7 +6571,7 @@ subroutine tbd_create (Tbd, IM, Model) Tbd%ud_mf = zero endif - if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_ntiedtke) then + if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_ntiedtke .or. Model%imfdeepcnv == Model%imfdeepcnv_unified) then allocate(Tbd%forcet(IM, Model%levs)) allocate(Tbd%forceq(IM, Model%levs)) allocate(Tbd%forcet(IM, Model%levs)) @@ -6577,7 +6581,7 @@ subroutine tbd_create (Tbd, IM, Model) Tbd%prevst = clear_val end if - if (Model%imfdeepcnv == Model%imfdeepcnv_gf) then + if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_unified) then allocate(Tbd%cactiv(IM)) allocate(Tbd%cactiv_m(IM)) allocate(Tbd%aod_gf(IM)) diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index f6a426c43..0046da553 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -957,7 +957,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection) [conv_act_m] standard_name = consecutive_calls_for_grell_freitas_mid_level_convection long_name = Memory counter for GF midlevel @@ -965,7 +965,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection) [hice] standard_name = sea_ice_thickness long_name = sea ice thickness @@ -2377,14 +2377,6 @@ type = real kind = kind_phys active = (flag_for_surface_flux_coupling) -[tmf] - standard_name = instantaneous_tendency_of_specific_humidity_due_to_PBL - long_name = instantaneous_tendency_of_specific_humidity_due_to_PBL - units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - active = (do_prognostic_updraft_area_fraction) [dqdt_qmicro] standard_name = instantaneous_tendency_of_specific_humidity_due_to_microphysics long_name = instantaneous_tendency_of_specific_humidity_due_to_microphysics @@ -2655,7 +2647,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection) [pfi_lsan] standard_name = ice_flux_due_to_large_scale_precipitation long_name = instantaneous 3D flux of ice from nonconvective precipitation @@ -4702,6 +4694,12 @@ units = flag dimensions = () type = integer +[imfshalcnv_unified] + standard_name = identifier_for_unified_shallow_convection + long_name = flag for Unified shallow convection scheme + units = flag + dimensions = () + type = integer [imfshalcnv_ntiedtke] standard_name = identifier_for_new_tiedtke_shallow_convection long_name = flag for new Tiedtke shallow convection scheme @@ -4732,6 +4730,12 @@ units = flag dimensions = () type = integer +[imfdeepcnv_unified] + standard_name = identifier_for_unified_deep_convection + long_name = flag for Unified deep convection scheme + units = flag + dimensions = () + type = integer [imfdeepcnv_ntiedtke] standard_name = identifier_for_new_tiedtke_deep_convection long_name = flag for new Tiedtke deep convection scheme @@ -6864,7 +6868,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection) [imap] standard_name = map_of_block_column_number_to_global_i_index long_name = map of local index ix to global index i for this block @@ -7088,7 +7092,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) [forceq] standard_name = tendendy_of_specific_humidity_due_to_nonphysics long_name = moisture tendency due to dynamics only @@ -7096,7 +7100,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) [prevst] standard_name = air_temperature_on_previous_timestep long_name = temperature from previous time step @@ -7104,7 +7108,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) [prevsq] standard_name = specific_humidity_on_previous_timestep long_name = moisture from previous time step @@ -7112,21 +7116,21 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection .or. control_for_deep_convection_scheme == identifer_for_scale_aware_mass_flux_deep_convection .or. control_for_shallow_convection_scheme == identifier_for_scale_aware_mass_flux_shallow_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection .or. control_for_deep_convection_scheme == identifer_for_scale_aware_mass_flux_deep_convection .or. control_for_shallow_convection_scheme == identifier_for_scale_aware_mass_flux_shallow_convection) [cactiv] standard_name = counter_for_grell_freitas_convection long_name = convective activity memory units = none dimensions = (horizontal_loop_extent) type = integer - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection) [cactiv_m] standard_name = counter_for_grell_freitas_mid_level_convection long_name = mid-level convective activity memory units = none dimensions = (horizontal_loop_extent) type = integer - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection) [CLDFRA_BL] standard_name = subgrid_scale_cloud_area_fraction_in_atmosphere_layer long_name = subgrid cloud fraction from PBL scheme diff --git a/ccpp/physics b/ccpp/physics index 630d37494..be146a8eb 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 630d37494a9e32690131b0af0ea367886581ecba +Subproject commit be146a8ebc073412b1e0364ad6225dbdef2f26fe From c8bf68298b28b823faaf1f88e1fd6cece733ff6d Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Fri, 24 Mar 2023 02:02:31 +0000 Subject: [PATCH 2/8] Remove blank space --- ccpp/data/GFS_typedefs.F90 | 35 ++++++++++++++--------------------- ccpp/data/GFS_typedefs.meta | 32 ++++++++++---------------------- 2 files changed, 24 insertions(+), 43 deletions(-) diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index 045a45deb..94ce00012 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -1062,7 +1062,6 @@ module GFS_typedefs integer :: imfshalcnv_samf = 2 !< flag for SAMF scale- & aerosol-aware mass-flux shallow convection scheme integer :: imfshalcnv_gf = 3 !< flag for scale- & aerosol-aware Grell-Freitas scheme (GSD) integer :: imfshalcnv_ntiedtke = 4 !< flag for new Tiedtke scheme (CAPS) - integer :: imfshalcnv_unified = 5 !< flag for the unified convection scheme logical :: hwrf_samfdeep !< flag for HWRF SAMF deepcnv scheme (HWRF) logical :: progsigma !< flag for prognostic area fraction in samf ddepcnv scheme (GFS) integer :: imfdeepcnv !< flag for mass-flux deep convection scheme @@ -1076,7 +1075,6 @@ module GFS_typedefs integer :: imfdeepcnv_samf = 2 !< flag for SAMF scale- & aerosol-aware mass-flux deep convection scheme integer :: imfdeepcnv_gf = 3 !< flag for scale- & aerosol-aware Grell-Freitas scheme (GSD) integer :: imfdeepcnv_ntiedtke = 4 !< flag for new Tiedtke scheme (CAPS) - integer :: imfdeepcnv_unified = 5 !< flag for the unified convection scheme logical :: hwrf_samfshal !< flag for HWRF SAMF shalcnv scheme (HWRF) integer :: isatmedmf !< flag for scale-aware TKE-based moist edmf scheme !< 0: initial version of satmedmf (Nov. 2018) @@ -2511,7 +2509,7 @@ subroutine sfcprop_create (Sfcprop, IM, Model) Sfcprop%cqs2 = clear_val Sfcprop%lh = clear_val end if - if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_unified) then + if (Model%imfdeepcnv == Model%imfdeepcnv_gf) then allocate (Sfcprop%conv_act(IM)) allocate (Sfcprop%conv_act_m(IM)) Sfcprop%conv_act = zero @@ -2886,7 +2884,7 @@ subroutine coupling_create (Coupling, IM, Model) Coupling%dqdti = clear_val endif - if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_unified) then + if (Model%imfdeepcnv == Model%imfdeepcnv_gf) then allocate (Coupling%qci_conv (IM,Model%levs)) Coupling%qci_conv = clear_val endif @@ -3315,7 +3313,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & logical :: hwrf_samfdeep = .false. !< flag for HWRF SAMF deepcnv scheme logical :: hwrf_samfshal = .false. !< flag for HWRF SAMF shalcnv scheme - logical :: progsigma = .false. !< flag for prognostic updraft area fraction closure in saSAS or Unified conv. + logical :: progsigma = .false. !< flag for prognostic updraft area fraction closure in saSAS logical :: do_mynnedmf = .false. !< flag for MYNN-EDMF logical :: do_mynnsfclay = .false. !< flag for MYNN Surface Layer Scheme ! DH* TODO - move to MYNN namelist section @@ -3792,17 +3790,17 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & write(*,*) 'NO FLAG: pbl is generic' endif - if(imfshalcnv == Model%imfshalcnv_gf .or. imfshalcnv == Model%imfshalcnv_unified) then + if(imfshalcnv == Model%imfshalcnv_gf) then if(me==master) & - write(*,*) 'FLAG: imfshalcnv_gf or imfshalcnv_unified so scnv not generic' + write(*,*) 'FLAG: imfshalcnv_gf so scnv not generic' Model%flag_for_scnv_generic_tend=.false. elseif(me==master) then write(*,*) 'NO FLAG: scnv is generic' endif - if(imfdeepcnv == Model%imfdeepcnv_gf .or. imfdeepcnv == Model%imfdeepcnv_unified) then + if(imfdeepcnv == Model%imfdeepcnv_gf) then if(me==master) & - write(*,*) 'FLAG: imfdeepcnv_gf or imfdeepcnv_unified so dcnv not generic' + write(*,*) 'FLAG: imfdeepcnv_gf so dcnv not generic' Model%flag_for_dcnv_generic_tend=.false. elseif(me==master) then write(*,*) 'NO FLAG: dcnv is generic' @@ -4357,8 +4355,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%hwrf_samfdeep = hwrf_samfdeep Model%hwrf_samfshal = hwrf_samfshal - if ((progsigma .and. imfdeepcnv/=2) .and. (progsigma .and. imfdeepcnv/=5)) then - write(*,*) 'Logic error: progsigma requires imfdeepcnv=2 or 5' + if (progsigma .and. imfdeepcnv/=2) then + write(*,*) 'Logic error: progsigma requires imfdeepcnv=2' stop end if Model%progsigma = progsigma @@ -5282,8 +5280,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & print *,' Grell-Freitas scale & aerosol-aware mass-flux deep conv scheme' elseif(Model%imfdeepcnv == Model%imfdeepcnv_ntiedtke) then print *,' New Tiedtke cumulus scheme' - elseif(Model%imfdeepcnv == Model%imfdeepcnv_unified) then - print *,' New unified cumulus convection scheme' endif endif else @@ -5327,8 +5323,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & print *,' Grell-Freitas scale- & aerosol-aware mass-flux shallow conv scheme (2013)' elseif (Model%imfshalcnv == Model%imfshalcnv_ntiedtke) then print *,' New Tiedtke cumulus scheme' - elseif (Model%imfshalcnv == Model%imfshalcnv_unified) then - print *,' New unified cumulus scheme' else print *,' unknown mass-flux scheme in use - defaulting to no shallow convection' Model%imfshalcnv = -1 @@ -5575,7 +5569,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & endif if(Model%ras .or. Model%cscnv) Model%cnvcld = .false. - if(Model%do_shoc .or. Model%pdfcld .or. Model%do_mynnedmf .or. Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_unified) Model%cnvcld = .false. + if(Model%do_shoc .or. Model%pdfcld .or. Model%do_mynnedmf .or. Model%imfdeepcnv == Model%imfdeepcnv_gf) Model%cnvcld = .false. if(Model%cnvcld) Model%ncnvcld3d = 1 !--- get cnvwind index in phy_f2d; last entry in phy_f2d array @@ -5640,8 +5634,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%lmfshal = (Model%shal_cnv .and. Model%imfshalcnv > 0) Model%lmfdeep2 = (Model%imfdeepcnv == Model%imfdeepcnv_samf & .or. Model%imfdeepcnv == Model%imfdeepcnv_gf & - .or. Model%imfdeepcnv == Model%imfdeepcnv_ntiedtke & - .or. Model%imfdeepcnv == Model%imfdeepcnv_unified) + .or. Model%imfdeepcnv == Model%imfdeepcnv_ntiedtke) !--- END CODE FROM GLOOPR !--- BEGIN CODE FROM GLOOPB @@ -6561,7 +6554,7 @@ subroutine tbd_create (Tbd, IM, Model) allocate (Tbd%hpbl (IM)) Tbd%hpbl = clear_val - if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_ntiedtke .or. Model%imfdeepcnv == Model%imfdeepcnv_samf .or. Model%imfshalcnv == Model%imfshalcnv_samf .or. Model%imfdeepcnv == Model%imfdeepcnv_unified .or. Model%imfshalcnv == Model%imfshalcnv_unified) then + if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_ntiedtke .or. Model%imfdeepcnv == Model%imfdeepcnv_samf .or. Model%imfshalcnv == Model%imfshalcnv_samf) then allocate(Tbd%prevsq(IM, Model%levs)) Tbd%prevsq = clear_val endif @@ -6571,7 +6564,7 @@ subroutine tbd_create (Tbd, IM, Model) Tbd%ud_mf = zero endif - if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_ntiedtke .or. Model%imfdeepcnv == Model%imfdeepcnv_unified) then + if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_ntiedtke) then allocate(Tbd%forcet(IM, Model%levs)) allocate(Tbd%forceq(IM, Model%levs)) allocate(Tbd%forcet(IM, Model%levs)) @@ -6581,7 +6574,7 @@ subroutine tbd_create (Tbd, IM, Model) Tbd%prevst = clear_val end if - if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_unified) then + if (Model%imfdeepcnv == Model%imfdeepcnv_gf) then allocate(Tbd%cactiv(IM)) allocate(Tbd%cactiv_m(IM)) allocate(Tbd%aod_gf(IM)) diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index 0046da553..8048c5da4 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -957,7 +957,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) [conv_act_m] standard_name = consecutive_calls_for_grell_freitas_mid_level_convection long_name = Memory counter for GF midlevel @@ -965,7 +965,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) [hice] standard_name = sea_ice_thickness long_name = sea ice thickness @@ -2647,7 +2647,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) [pfi_lsan] standard_name = ice_flux_due_to_large_scale_precipitation long_name = instantaneous 3D flux of ice from nonconvective precipitation @@ -4694,12 +4694,6 @@ units = flag dimensions = () type = integer -[imfshalcnv_unified] - standard_name = identifier_for_unified_shallow_convection - long_name = flag for Unified shallow convection scheme - units = flag - dimensions = () - type = integer [imfshalcnv_ntiedtke] standard_name = identifier_for_new_tiedtke_shallow_convection long_name = flag for new Tiedtke shallow convection scheme @@ -4730,12 +4724,6 @@ units = flag dimensions = () type = integer -[imfdeepcnv_unified] - standard_name = identifier_for_unified_deep_convection - long_name = flag for Unified deep convection scheme - units = flag - dimensions = () - type = integer [imfdeepcnv_ntiedtke] standard_name = identifier_for_new_tiedtke_deep_convection long_name = flag for new Tiedtke deep convection scheme @@ -6868,7 +6856,7 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) [imap] standard_name = map_of_block_column_number_to_global_i_index long_name = map of local index ix to global index i for this block @@ -7092,7 +7080,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) [forceq] standard_name = tendendy_of_specific_humidity_due_to_nonphysics long_name = moisture tendency due to dynamics only @@ -7100,7 +7088,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) [prevst] standard_name = air_temperature_on_previous_timestep long_name = temperature from previous time step @@ -7108,7 +7096,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection) [prevsq] standard_name = specific_humidity_on_previous_timestep long_name = moisture from previous time step @@ -7116,21 +7104,21 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection .or. control_for_deep_convection_scheme == identifer_for_scale_aware_mass_flux_deep_convection .or. control_for_shallow_convection_scheme == identifier_for_scale_aware_mass_flux_shallow_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection .or. control_for_deep_convection_scheme == identifer_for_scale_aware_mass_flux_deep_convection .or. control_for_shallow_convection_scheme == identifier_for_scale_aware_mass_flux_shallow_convection) [cactiv] standard_name = counter_for_grell_freitas_convection long_name = convective activity memory units = none dimensions = (horizontal_loop_extent) type = integer - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) [cactiv_m] standard_name = counter_for_grell_freitas_mid_level_convection long_name = mid-level convective activity memory units = none dimensions = (horizontal_loop_extent) type = integer - active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_unified_deep_convection) + active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection) [CLDFRA_BL] standard_name = subgrid_scale_cloud_area_fraction_in_atmosphere_layer long_name = subgrid cloud fraction from PBL scheme From a55d9aac53574185ef0882df9ee6056c55458093 Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Fri, 24 Mar 2023 02:08:25 +0000 Subject: [PATCH 3/8] merge upstream ufs/dev ccpp --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index be146a8eb..1553636f5 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit be146a8ebc073412b1e0364ad6225dbdef2f26fe +Subproject commit 1553636f544d2125493002d2c685b948a8ce64fd From fd64ddcfa1a24f4907c9117817f6458ab90d1d0c Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Mon, 3 Apr 2023 01:53:01 +0000 Subject: [PATCH 4/8] update submodule pointer for ccpp/physics --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 1553636f5..aa7088ecf 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 1553636f544d2125493002d2c685b948a8ce64fd +Subproject commit aa7088ecfdb4fc3ac713c60857271300d958da29 From f07534574ecce01af9b641e2a069ca1a00634b0c Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Wed, 5 Apr 2023 18:59:48 +0000 Subject: [PATCH 5/8] update submodule pointer for ccpp/physics merging in gravity wave drag bugfix --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index aa7088ecf..94eaf512c 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit aa7088ecfdb4fc3ac713c60857271300d958da29 +Subproject commit 94eaf512c7e1850c9f080dae7d9ff0f8c035d192 From 8efc4cfdaee8d505c25b27ff0a87e5a45e4e3653 Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Thu, 6 Apr 2023 13:52:38 +0000 Subject: [PATCH 6/8] Update .gitmodules --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 1ab5e4a56..22c723ac1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,8 +8,8 @@ branch = main [submodule "ccpp/physics"] path = ccpp/physics - url = https://github.com/lisa-bengtsson/ccpp-physics - branch = progc_HR2 + url = https://github.com/ufs-community/ccpp-physics + branch = ufs/dev [submodule "upp"] path = upp url = https://github.com/NOAA-EMC/UPP From fdb243f75b42556bbe79f401732619fad3d02215 Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Thu, 6 Apr 2023 16:38:48 +0000 Subject: [PATCH 7/8] update ccpp submodule pointer --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 94eaf512c..03acf7335 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 94eaf512c7e1850c9f080dae7d9ff0f8c035d192 +Subproject commit 03acf7335ee2966c6d7c83ffa35ec9a5fa7f6d20 From 6f318d9f0c991ecade9e441353fe9c1fd53a3eab Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Thu, 6 Apr 2023 16:54:17 +0000 Subject: [PATCH 8/8] update submodule pointer to ccpp/physics again --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 03acf7335..57c444f65 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 03acf7335ee2966c6d7c83ffa35ec9a5fa7f6d20 +Subproject commit 57c444f6535bf34cbe8e75a52a74ea3bec2f8f50