From fbad8390f585744c716ac5167927c629aae6bebd Mon Sep 17 00:00:00 2001 From: "Haiqin.Li" Date: Wed, 20 Sep 2023 02:19:49 +0000 Subject: [PATCH 1/3] "GF radar reflectivity, dust bug fix, C3 updates, more fluxes output" --- .gitmodules | 4 +-- ccpp/data/GFS_typedefs.F90 | 13 ++++++++ ccpp/data/GFS_typedefs.meta | 23 +++++++++++++ ccpp/driver/GFS_diagnostics.F90 | 44 +++++++++++++++++++++++++ ccpp/physics | 2 +- ccpp/suites/suite_FV3_GFS_v17_p8_c3.xml | 2 ++ 6 files changed, 85 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 22c723ac1..ea2b6ed85 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/haiqinli/ccpp-physics + branch = ufs/dev-radar [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 171591a53..96ccb8c28 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -1501,6 +1501,9 @@ module GFS_typedefs integer :: ncnvwind !< the index of surface wind enhancement due to convection for MYNN SFC and RAS CNV in phy f2d !-- nml variables for RRFS-SD + real(kind=kind_phys) :: dust_drylimit_factor !< factor for drylimit parameterization in fengsha + real(kind=kind_phys) :: dust_moist_correction !< factor to tune volumetric soil moisture + integer :: dust_moist_opt !< dust moisture option 1:fecan 2:shao real(kind=kind_phys) :: dust_alpha !< alpha parameter for fengsha dust scheme real(kind=kind_phys) :: dust_gamma !< gamma parameter for fengsha dust scheme real(kind=kind_phys) :: wetdep_ls_alpha !< alpha parameter for wet deposition @@ -3829,9 +3832,12 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & integer :: ichoice_s = 3 !< flag for closure of C3/GF shallow convection !-- chem nml variables for RRFS-SD + real(kind=kind_phys) :: dust_drylimit_factor = 1.0 + real(kind=kind_phys) :: dust_moist_correction = 1.0 real(kind=kind_phys) :: dust_alpha = 0. real(kind=kind_phys) :: dust_gamma = 0. real(kind=kind_phys) :: wetdep_ls_alpha = 0. + integer :: dust_moist_opt = 1 ! fecan :1 else shao integer :: seas_opt = 2 integer :: dust_opt = 5 integer :: drydep_opt = 1 @@ -3995,6 +4001,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- aerosol scavenging factors ('name:value' string array) fscav_aero, & !--- RRFS-SD namelist + dust_drylimit_factor, dust_moist_correction, dust_moist_opt, & dust_alpha, dust_gamma, wetdep_ls_alpha, & seas_opt, dust_opt, drydep_opt, coarsepm_settling, & wetdep_ls_opt, smoke_forecast, aero_ind_fdb, aero_dir_fdb, & @@ -4214,6 +4221,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- RRFS-SD Model%rrfs_sd = rrfs_sd + Model%dust_drylimit_factor = dust_drylimit_factor + Model%dust_moist_correction = dust_moist_correction + Model%dust_moist_opt = dust_moist_opt Model%dust_alpha = dust_alpha Model%dust_gamma = dust_gamma Model%wetdep_ls_alpha = wetdep_ls_alpha @@ -6314,6 +6324,9 @@ subroutine control_print(Model) if(model%rrfs_sd) then print *, ' ' print *, 'smoke parameters' + print *, 'dust_drylimit_factor: ',Model%dust_drylimit_factor + print *, 'dust_moist_correction: ',Model%dust_moist_correction + print *, 'dust_moist_opt : ',Model%dust_moist_opt print *, 'dust_alpha : ',Model%dust_alpha print *, 'dust_gamma : ',Model%dust_gamma print *, 'wetdep_ls_alpha : ',Model%wetdep_ls_alpha diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index a8ce4f016..a36802ede 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -6462,6 +6462,29 @@ type = real kind = kind_phys active = (do_smoke_coupling) +[dust_moist_correction] + standard_name = dust_moist_correction_fengsha_dust_scheme + long_name = moisture correction term for fengsha dust emission + units = none + dimensions = () + type = real + kind = kind_phys + active = (do_smoke_coupling) +[dust_drylimit_factor] + standard_name = dust_drylimit_factor_fengsha_dust_scheme + long_name = moisture correction term for drylimit in fengsha dust emission + units = none + dimensions = () + type = real + kind = kind_phys + active = (do_smoke_coupling) +[dust_moist_opt] + standard_name = control_for_dust_soil_moisture_option + long_name = smoke dust moisture parameterization 1 - fecan 2 - shao + units = index + dimensions = () + type = integer + active = (do_smoke_coupling) [dust_alpha] standard_name = alpha_fengsha_dust_scheme long_name = alpha paramter for fengsha dust scheme diff --git a/ccpp/driver/GFS_diagnostics.F90 b/ccpp/driver/GFS_diagnostics.F90 index 0974fdc8d..4fc2e109a 100644 --- a/ccpp/driver/GFS_diagnostics.F90 +++ b/ccpp/driver/GFS_diagnostics.F90 @@ -4061,6 +4061,50 @@ subroutine GFS_externaldiag_populate (ExtDiag, Model, Statein, Stateout, Sfcprop ExtDiag(idx)%data(nb)%var2 => sfcprop(nb)%wetness(:) enddo + idx = idx + 1 + ExtDiag(idx)%axes = 2 + ExtDiag(idx)%name = 'nirbmdi' + ExtDiag(idx)%desc = 'sfc nir beam sw downward flux' + ExtDiag(idx)%unit = 'W/m**2' + ExtDiag(idx)%mod_name = 'gfs_sfc' + allocate (ExtDiag(idx)%data(nblks)) + do nb = 1,nblks + ExtDiag(idx)%data(nb)%var2 => Coupling(nb)%nirbmdi(:) + enddo + + idx = idx + 1 + ExtDiag(idx)%axes = 2 + ExtDiag(idx)%name = 'nirdfdi' + ExtDiag(idx)%desc = 'sfc nir diff sw downward flux' + ExtDiag(idx)%unit = 'W/m**2' + ExtDiag(idx)%mod_name = 'gfs_sfc' + allocate (ExtDiag(idx)%data(nblks)) + do nb = 1,nblks + ExtDiag(idx)%data(nb)%var2 => Coupling(nb)%nirdfdi(:) + enddo + + idx = idx + 1 + ExtDiag(idx)%axes = 2 + ExtDiag(idx)%name = 'visbmdi' + ExtDiag(idx)%desc = 'sfc uv+vis beam sw downward flux' + ExtDiag(idx)%unit = 'W/m**2' + ExtDiag(idx)%mod_name = 'gfs_sfc' + allocate (ExtDiag(idx)%data(nblks)) + do nb = 1,nblks + ExtDiag(idx)%data(nb)%var2 => Coupling(nb)%visbmdi(:) + enddo + + idx = idx + 1 + ExtDiag(idx)%axes = 2 + ExtDiag(idx)%name = 'visdfdi' + ExtDiag(idx)%desc = ' sfc uv+vis diff sw downward flux' + ExtDiag(idx)%unit = 'W/m**2' + ExtDiag(idx)%mod_name = 'gfs_sfc' + allocate (ExtDiag(idx)%data(nblks)) + do nb = 1,nblks + ExtDiag(idx)%data(nb)%var2 => Coupling(nb)%visdfdi(:) + enddo + if (Model%rdlai) then idx = idx + 1 ExtDiag(idx)%axes = 2 diff --git a/ccpp/physics b/ccpp/physics index 31a99de05..ab84c01a1 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 31a99de05048187b61a2ea8381417b8dbd8db7e0 +Subproject commit ab84c01a110bbf13490fcf3243effe06cb26608d diff --git a/ccpp/suites/suite_FV3_GFS_v17_p8_c3.xml b/ccpp/suites/suite_FV3_GFS_v17_p8_c3.xml index a79f37f7f..d93060d5a 100644 --- a/ccpp/suites/suite_FV3_GFS_v17_p8_c3.xml +++ b/ccpp/suites/suite_FV3_GFS_v17_p8_c3.xml @@ -13,6 +13,7 @@ GFS_suite_interstitial_rad_reset + sgscloud_radpre GFS_rrtmg_pre GFS_radiation_surface rad_sw_pre @@ -20,6 +21,7 @@ rrtmg_sw_post rrtmg_lw_pre rrtmg_lw + sgscloud_radpost rrtmg_lw_post GFS_rrtmg_post From b42dbfb2778f30a0e4e8a6174482c896b7c5a1e2 Mon Sep 17 00:00:00 2001 From: "Haiqin.Li" Date: Thu, 28 Sep 2023 20:36:52 +0000 Subject: [PATCH 2/3] "point to ccpp-phyiscs updates" --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index ab84c01a1..7a8f6934f 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit ab84c01a110bbf13490fcf3243effe06cb26608d +Subproject commit 7a8f6934f40390de915f4d8828d2119da9f99956 From 783630b587098a50c5719d48b545b09138014cc7 Mon Sep 17 00:00:00 2001 From: "Haiqin.Li" Date: Fri, 29 Sep 2023 02:50:56 +0000 Subject: [PATCH 3/3] "point to the dimension fix of smc for dust emission" --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 7a8f6934f..ab4d5f120 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 7a8f6934f40390de915f4d8828d2119da9f99956 +Subproject commit ab4d5f1206d5bb8a7550682612a84bf77e0bdbdc