From df7028b249afd4232a21a4b571ff97c9b4a8cc81 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Sun, 9 May 2021 23:52:17 +0000 Subject: [PATCH 01/33] Added more safeguards against out-of-bounds temperature to GP inputs. Limit Jacobian Flux adjustment to below 100hPa. --- ccpp/data/GFS_typedefs.F90 | 6 ++++++ ccpp/data/GFS_typedefs.meta | 7 +++++++ ccpp/physics | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index 9aa3ec524..84fb88301 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -693,6 +693,7 @@ module GFS_typedefs logical :: doGP_lwscat !< If true, include scattering in longwave cloud-optics, only compatible w/ GP cloud-optics real(kind_phys) :: minGPpres !< Minimum pressure allowed in RRTMGP. real(kind_phys) :: minGPtemp !< Minimum temperature allowed in RRTMGP. + real(kind_phys) :: maxGPtemp !< Maximum temperature allowed in RRTMGP. !--- microphysical switch integer :: ncld !< choice of cloud scheme @@ -3811,6 +3812,11 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & write(0,*) "Logic error, RRTMGP spectral dimensions (bands/gpts) need to be provided." stop endif + else + if (Model%use_LW_jacobian) then + write(0,*) "Logic error, RRTMGP LW Jacobian adjustment cannot be used with RRTMG radiation." + Model%use_LW_jacobian = .false. + endif endif ! The CCPP versions of the RRTMG lw/sw schemes are configured diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index cb7def297..531a615bd 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -2879,6 +2879,13 @@ dimensions = () type = real kind = kind_phys +[maxGPtemp] + standard_name = maximum_temperature_in_RRTMGP + long_name = maximum temperature allowed in RRTMGP + units = K + dimensions = () + type = real + kind = kind_phys [ncld] standard_name = number_of_hydrometeors long_name = choice of cloud scheme / number of hydrometeors diff --git a/ccpp/physics b/ccpp/physics index 6237270d1..6961b1054 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 6237270d1a8fe79b22cedd364d9e5429e141bbef +Subproject commit 6961b10546035b55021132e62ce139333eed9cc0 From 971dd900a6f062da7500639f2e0731cd8de3809a Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Tue, 11 May 2021 18:41:03 +0000 Subject: [PATCH 02/33] Updated physics. --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 6961b1054..6ebe85ef4 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 6961b10546035b55021132e62ce139333eed9cc0 +Subproject commit 6ebe85ef4a4d51a8e8bf7921e8079d395f90d89a From 86c3050320b75e47212b9819dc421f58c629e8ab Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Tue, 11 May 2021 19:47:45 +0000 Subject: [PATCH 03/33] Add vetical decay to impact of flux adjustment above threshold. --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 6ebe85ef4..230d479e5 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 6ebe85ef4a4d51a8e8bf7921e8079d395f90d89a +Subproject commit 230d479e58cb380de9d24e8b67778db468250ba3 From 0c60b67bcfb6ba4674ba9c32e529c5b47ddbb519 Mon Sep 17 00:00:00 2001 From: ericaligo-NOAA <48365233+ericaligo-NOAA@users.noreply.github.com> Date: Wed, 19 May 2021 10:16:28 -0400 Subject: [PATCH 04/33] Update .gitmodules --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index afe6f27dd..a8e2277c9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,5 +8,5 @@ branch = main [submodule "ccpp/physics"] path = ccpp/physics - url = https://github.com/NCAR/ccpp-physics - branch = main + url = https://github.com/ericaligo-NOAA/ccpp-physics.git + branch = feature/diag From 0c108a7c7ee97b1f3edb8424057f1673efbd8e63 Mon Sep 17 00:00:00 2001 From: Eric Aligo Date: Mon, 24 May 2021 14:19:52 +0000 Subject: [PATCH 05/33] include upstream changes --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 144d07927..1fd62ea05 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 144d07927b02b8601b10bde0db6494157f6cb719 +Subproject commit 1fd62ea05ebfd18d2e6875271be856670cfed08f From dca609d89c850ac8e32b057a27d752e0343b0054 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Mon, 24 May 2021 16:57:47 +0000 Subject: [PATCH 06/33] Added logistic function to damp the LW flux adjustment with height --- ccpp/data/GFS_typedefs.F90 | 16 +++++++++++++++- ccpp/data/GFS_typedefs.meta | 20 ++++++++++++++++++++ ccpp/physics | 2 +- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index 84fb88301..ee3a90f39 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -690,6 +690,9 @@ module GFS_typedefs logical :: do_GPsw_Glw !< If set to true use rrtmgp for SW calculation, rrtmg for LW. character(len=128) :: active_gases_array(100) !< character array for each trace gas name logical :: use_LW_jacobian !< If true, use Jacobian of LW to update radiation tendency. + logical :: damp_LW_fluxadj !< If true, damp the LW flux adjustment using the Jacobian w/ height with logistic function + real(kind_phys) :: lfnc_k_grad !< Logistic function growth rate + real(kind_phys) :: lfnc_p0 !< Logistic functions (sigmoid) midpoint logical :: doGP_lwscat !< If true, include scattering in longwave cloud-optics, only compatible w/ GP cloud-optics real(kind_phys) :: minGPpres !< Minimum pressure allowed in RRTMGP. real(kind_phys) :: minGPtemp !< Minimum temperature allowed in RRTMGP. @@ -3053,6 +3056,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & integer :: rrtmgp_nGauss_ang = 1 !< Number of angles used in Gaussian quadrature logical :: do_GPsw_Glw = .false. logical :: use_LW_jacobian = .false. !< Use Jacobian of LW to update LW radiation tendencies. + logical :: damp_LW_fluxadj = .false. !< Damp LW Jacobian flux adjustment with height. + real(kind=kind_phys) :: lfnc_k_grad = -999 !< + real(kind=kind_phys) :: lfnc_p0 = -999 !< logical :: doGP_lwscat = .false. !< If true, include scattering in longwave cloud-optics, only compatible w/ GP cloud-optics !--- Z-C microphysical parameters integer :: ncld = 1 !< choice of cloud scheme @@ -3435,7 +3441,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & sw_file_gas, sw_file_clouds, rrtmgp_nBandsSW, rrtmgp_nGptsSW,& doG_cldoptics, doGP_cldoptics_PADE, doGP_cldoptics_LUT, & rrtmgp_nrghice, rrtmgp_nGauss_ang, do_GPsw_Glw, & - use_LW_jacobian, doGP_lwscat, & + use_LW_jacobian, doGP_lwscat, damp_LW_fluxadj, lfnc_k_grad, & + lfnc_p0, & ! IN CCN forcing iccn, & !--- microphysical parameterizations @@ -3791,6 +3798,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%doGP_cldoptics_PADE = doGP_cldoptics_PADE Model%doGP_cldoptics_LUT = doGP_cldoptics_LUT Model%use_LW_jacobian = use_LW_jacobian + Model%damp_LW_fluxadj = damp_LW_fluxadj + Model%lfnc_k_grad = lfnc_k_grad + Model%lfnc_p0 = lfnc_p0 Model%doGP_lwscat = doGP_lwscat if (Model%do_RRTMGP) then ! RRTMGP incompatible with levr /= levs @@ -3816,6 +3826,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & if (Model%use_LW_jacobian) then write(0,*) "Logic error, RRTMGP LW Jacobian adjustment cannot be used with RRTMG radiation." Model%use_LW_jacobian = .false. + Model%damp_LW_fluxadj = .false. endif endif @@ -4982,6 +4993,9 @@ subroutine control_print(Model) print *, ' doGP_cldoptics_PADE: ', Model%doGP_cldoptics_PADE print *, ' doGP_cldoptics_LUT : ', Model%doGP_cldoptics_LUT print *, ' use_LW_jacobian : ', Model%use_LW_jacobian + print *, ' damp_LW_fluxadj : ', Model%damp_LW_fluxadj + print *, ' lfnc_k_grad : ', Model%lfnc_k_grad + print *, ' lfnc_p0 : ', Model%lfnc_p0 print *, ' doGP_lwscat : ', Model%doGP_lwscat endif print *, ' ' diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index 531a615bd..9e27c0eec 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -2835,6 +2835,26 @@ units = flag dimensions = () type = logical +[damp_LW_fluxadj] + standard_name = flag_to_damp_RRTMGP_LW_jacobian_flux_adjustment + long_name = logical flag to control RRTMGP LW calculation + units = flag + dimensions = () + type = logical +[lfnc_k_grad] + standard_name = steepness_of_flux_damping + long_name = steepness of logistic function for damping the LW flux adjustment + units = none + dimensions = () + type = real + kind = kind_phys +[lfnc_p0] + standard_name = midpoint_used_for_flux_damping + long_name = midpoint for damping the LW flux adjustment + units = Pa + dimensions = () + type = real + kind = kind_phys [doGP_lwscat] standard_name = flag_to_include_longwave_scattering_in_cloud_optics long_name = logical flag to control the addition of LW scattering in RRTMGP diff --git a/ccpp/physics b/ccpp/physics index 230d479e5..5f7d6970b 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 230d479e58cb380de9d24e8b67778db468250ba3 +Subproject commit 5f7d6970b7d420601dc86c2db91d953feebe1a7b From fe933e9e2e45d93022a99dd2c71e38e90995a49c Mon Sep 17 00:00:00 2001 From: Eric Aligo Date: Mon, 24 May 2021 17:12:24 +0000 Subject: [PATCH 07/33] add 3D diagnostics from Thompson --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 1fd62ea05..e9bdebdf6 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 1fd62ea05ebfd18d2e6875271be856670cfed08f +Subproject commit e9bdebdf6ae4bb0bae6ddeb0b0487de59fda01eb From c323a06f5c0a408c84910a36f79eb8344382825f Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Mon, 24 May 2021 17:39:30 +0000 Subject: [PATCH 08/33] Reorganized RRTMGP aerosol optics. --- ccpp/config/ccpp_prebuild_config.py | 3 +-- ccpp/physics | 2 +- ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml | 3 +-- ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml | 3 +-- ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml | 3 +-- ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml | 3 +-- 6 files changed, 6 insertions(+), 11 deletions(-) diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py index 048d461d0..4e58f8fc9 100755 --- a/ccpp/config/ccpp_prebuild_config.py +++ b/ccpp/config/ccpp_prebuild_config.py @@ -191,10 +191,9 @@ 'ccpp/physics/physics/rrtmgp_lw_cloud_optics.F90', 'ccpp/physics/physics/rrtmgp_sw_gas_optics.F90', 'ccpp/physics/physics/rrtmgp_sw_cloud_optics.F90', - 'ccpp/physics/physics/rrtmgp_sw_aerosol_optics.F90', + 'ccpp/physics/physics/GFS_rrtmgp_aerosol_optics.F90', 'ccpp/physics/physics/rrtmgp_lw_rte.F90', 'ccpp/physics/physics/rrtmgp_sw_rte.F90', - 'ccpp/physics/physics/rrtmgp_lw_aerosol_optics.F90', 'ccpp/physics/physics/GFS_rrtmgp_setup.F90', 'ccpp/physics/physics/GFS_rrtmgp_pre.F90', 'ccpp/physics/physics/rrtmgp_lw_pre.F90', diff --git a/ccpp/physics b/ccpp/physics index 5f7d6970b..2f6e70814 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 5f7d6970b7d420601dc86c2db91d953feebe1a7b +Subproject commit 2f6e70814fdaae4ba33b00c7d5c7ec421a8e69e8 diff --git a/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml b/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml index 29d4e4561..5885769b0 100644 --- a/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml @@ -17,17 +17,16 @@ GFS_rrtmgp_pre GFS_rrtmgp_thompsonmp_pre GFS_rrtmgp_cloud_overlap_pre + GFS_rrtmgp_aerosol_optics GFS_cloud_diagnostics GFS_rrtmgp_sw_pre rrtmgp_sw_gas_optics - rrtmgp_sw_aerosol_optics rrtmgp_sw_cloud_optics rrtmgp_sw_cloud_sampling rrtmgp_sw_rte GFS_rrtmgp_sw_post rrtmgp_lw_pre rrtmgp_lw_gas_optics - rrtmgp_lw_aerosol_optics rrtmgp_lw_cloud_optics rrtmgp_lw_cloud_sampling rrtmgp_lw_rte diff --git a/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml b/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml index 983b7b2e7..99d61f3f9 100644 --- a/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml @@ -21,17 +21,16 @@ GFS_rrtmgp_pre GFS_rrtmgp_gfdlmp_pre GFS_rrtmgp_cloud_overlap_pre + GFS_rrtmgp_aerosol_optics GFS_cloud_diagnostics GFS_rrtmgp_sw_pre rrtmgp_sw_gas_optics - rrtmgp_sw_aerosol_optics rrtmgp_sw_cloud_optics rrtmgp_sw_cloud_sampling rrtmgp_sw_rte GFS_rrtmgp_sw_post rrtmgp_lw_pre rrtmgp_lw_gas_optics - rrtmgp_lw_aerosol_optics rrtmgp_lw_cloud_optics rrtmgp_lw_cloud_sampling rrtmgp_lw_rte diff --git a/ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml b/ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml index 92d040f6b..796c8167b 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml @@ -21,17 +21,16 @@ GFS_rrtmgp_pre GFS_rrtmgp_gfdlmp_pre GFS_rrtmgp_cloud_overlap_pre + GFS_rrtmgp_aerosol_optics GFS_cloud_diagnostics GFS_rrtmgp_sw_pre rrtmgp_sw_gas_optics - rrtmgp_sw_aerosol_optics rrtmgp_sw_cloud_optics rrtmgp_sw_cloud_sampling rrtmgp_sw_rte GFS_rrtmgp_sw_post rrtmgp_lw_pre rrtmgp_lw_gas_optics - rrtmgp_lw_aerosol_optics rrtmgp_lw_cloud_optics rrtmgp_lw_cloud_sampling rrtmgp_lw_rte diff --git a/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml b/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml index 76f22cfed..b1b536957 100644 --- a/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml @@ -17,17 +17,16 @@ GFS_rrtmgp_pre GFS_rrtmgp_thompsonmp_pre GFS_rrtmgp_cloud_overlap_pre + GFS_rrtmgp_aerosol_optics GFS_cloud_diagnostics GFS_rrtmgp_sw_pre rrtmgp_sw_gas_optics - rrtmgp_sw_aerosol_optics rrtmgp_sw_cloud_optics rrtmgp_sw_cloud_sampling rrtmgp_sw_rte GFS_rrtmgp_sw_post rrtmgp_lw_pre rrtmgp_lw_gas_optics - rrtmgp_lw_aerosol_optics rrtmgp_lw_cloud_optics rrtmgp_lw_cloud_sampling rrtmgp_lw_rte From 4c3d5a24b3939daa067871c2b069bd4532341a15 Mon Sep 17 00:00:00 2001 From: Eric Aligo Date: Tue, 25 May 2021 13:35:25 +0000 Subject: [PATCH 09/33] fixed bugs in aux,naux and vts --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index e9bdebdf6..3932db1b3 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit e9bdebdf6ae4bb0bae6ddeb0b0487de59fda01eb +Subproject commit 3932db1b37fd04f86bc8552b13f999298e2e919a From 338f6ad0a7b4e604d557b8546520de9e7d40845c Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Tue, 25 May 2021 16:49:34 +0000 Subject: [PATCH 10/33] Reverted previous changes to ccpp-physics --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 2f6e70814..7bc877dd5 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 2f6e70814fdaae4ba33b00c7d5c7ec421a8e69e8 +Subproject commit 7bc877dd5e69cf0f171b1267cf0776fa33d6fb48 From ebf76e35c8e9ae652e499474c0daa8c28c405d4f Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Tue, 25 May 2021 16:52:58 +0000 Subject: [PATCH 11/33] Revert "Reorganized RRTMGP aerosol optics." This reverts commit c323a06f5c0a408c84910a36f79eb8344382825f. --- ccpp/config/ccpp_prebuild_config.py | 3 ++- ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml | 3 ++- ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml | 3 ++- ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml | 3 ++- ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py index 4e58f8fc9..048d461d0 100755 --- a/ccpp/config/ccpp_prebuild_config.py +++ b/ccpp/config/ccpp_prebuild_config.py @@ -191,9 +191,10 @@ 'ccpp/physics/physics/rrtmgp_lw_cloud_optics.F90', 'ccpp/physics/physics/rrtmgp_sw_gas_optics.F90', 'ccpp/physics/physics/rrtmgp_sw_cloud_optics.F90', - 'ccpp/physics/physics/GFS_rrtmgp_aerosol_optics.F90', + 'ccpp/physics/physics/rrtmgp_sw_aerosol_optics.F90', 'ccpp/physics/physics/rrtmgp_lw_rte.F90', 'ccpp/physics/physics/rrtmgp_sw_rte.F90', + 'ccpp/physics/physics/rrtmgp_lw_aerosol_optics.F90', 'ccpp/physics/physics/GFS_rrtmgp_setup.F90', 'ccpp/physics/physics/GFS_rrtmgp_pre.F90', 'ccpp/physics/physics/rrtmgp_lw_pre.F90', diff --git a/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml b/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml index 5885769b0..29d4e4561 100644 --- a/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml @@ -17,16 +17,17 @@ GFS_rrtmgp_pre GFS_rrtmgp_thompsonmp_pre GFS_rrtmgp_cloud_overlap_pre - GFS_rrtmgp_aerosol_optics GFS_cloud_diagnostics GFS_rrtmgp_sw_pre rrtmgp_sw_gas_optics + rrtmgp_sw_aerosol_optics rrtmgp_sw_cloud_optics rrtmgp_sw_cloud_sampling rrtmgp_sw_rte GFS_rrtmgp_sw_post rrtmgp_lw_pre rrtmgp_lw_gas_optics + rrtmgp_lw_aerosol_optics rrtmgp_lw_cloud_optics rrtmgp_lw_cloud_sampling rrtmgp_lw_rte diff --git a/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml b/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml index 99d61f3f9..983b7b2e7 100644 --- a/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml @@ -21,16 +21,17 @@ GFS_rrtmgp_pre GFS_rrtmgp_gfdlmp_pre GFS_rrtmgp_cloud_overlap_pre - GFS_rrtmgp_aerosol_optics GFS_cloud_diagnostics GFS_rrtmgp_sw_pre rrtmgp_sw_gas_optics + rrtmgp_sw_aerosol_optics rrtmgp_sw_cloud_optics rrtmgp_sw_cloud_sampling rrtmgp_sw_rte GFS_rrtmgp_sw_post rrtmgp_lw_pre rrtmgp_lw_gas_optics + rrtmgp_lw_aerosol_optics rrtmgp_lw_cloud_optics rrtmgp_lw_cloud_sampling rrtmgp_lw_rte diff --git a/ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml b/ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml index 796c8167b..92d040f6b 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_RRTMGP.xml @@ -21,16 +21,17 @@ GFS_rrtmgp_pre GFS_rrtmgp_gfdlmp_pre GFS_rrtmgp_cloud_overlap_pre - GFS_rrtmgp_aerosol_optics GFS_cloud_diagnostics GFS_rrtmgp_sw_pre rrtmgp_sw_gas_optics + rrtmgp_sw_aerosol_optics rrtmgp_sw_cloud_optics rrtmgp_sw_cloud_sampling rrtmgp_sw_rte GFS_rrtmgp_sw_post rrtmgp_lw_pre rrtmgp_lw_gas_optics + rrtmgp_lw_aerosol_optics rrtmgp_lw_cloud_optics rrtmgp_lw_cloud_sampling rrtmgp_lw_rte diff --git a/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml b/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml index b1b536957..76f22cfed 100644 --- a/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml @@ -17,16 +17,17 @@ GFS_rrtmgp_pre GFS_rrtmgp_thompsonmp_pre GFS_rrtmgp_cloud_overlap_pre - GFS_rrtmgp_aerosol_optics GFS_cloud_diagnostics GFS_rrtmgp_sw_pre rrtmgp_sw_gas_optics + rrtmgp_sw_aerosol_optics rrtmgp_sw_cloud_optics rrtmgp_sw_cloud_sampling rrtmgp_sw_rte GFS_rrtmgp_sw_post rrtmgp_lw_pre rrtmgp_lw_gas_optics + rrtmgp_lw_aerosol_optics rrtmgp_lw_cloud_optics rrtmgp_lw_cloud_sampling rrtmgp_lw_rte From 5fca81b4d2ceedbb0934e51614996568b7cda5cd Mon Sep 17 00:00:00 2001 From: Eric Aligo Date: Tue, 25 May 2021 17:56:11 +0000 Subject: [PATCH 12/33] fix comma bug and add cond/evap --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 3932db1b3..36b648798 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 3932db1b37fd04f86bc8552b13f999298e2e919a +Subproject commit 36b6487983d45ac68b6401c4401a02214c369b16 From 58d269cfcebc6587a1c4091d44bea127ed31b0fa Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Tue, 25 May 2021 20:05:49 +0000 Subject: [PATCH 13/33] Bug fix. Add transition to HR adjustment. --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 7bc877dd5..eb7837d7f 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 7bc877dd5e69cf0f171b1267cf0776fa33d6fb48 +Subproject commit eb7837d7f32e83fb6a151dbae50172bda5fd83db From 2a465182bac694eaea0787a9a3bd729564ea3aae Mon Sep 17 00:00:00 2001 From: Eric Aligo Date: Thu, 27 May 2021 14:00:07 +0000 Subject: [PATCH 14/33] push temp tendency diagnostics --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 36b648798..6762adbcf 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 36b6487983d45ac68b6401c4401a02214c369b16 +Subproject commit 6762adbcf2fafed1590624256e7410c225636e8c From 3fbb0ab5b4d6dac8ab0ad5629cbc4a72f801fed9 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Thu, 27 May 2021 15:32:00 +0000 Subject: [PATCH 15/33] Omission from previous revert. --- ccpp/data/GFS_typedefs.F90 | 12 ++++++------ ccpp/data/GFS_typedefs.meta | 12 ++++++------ ccpp/physics | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index ee3a90f39..edee33d89 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -691,8 +691,8 @@ module GFS_typedefs character(len=128) :: active_gases_array(100) !< character array for each trace gas name logical :: use_LW_jacobian !< If true, use Jacobian of LW to update radiation tendency. logical :: damp_LW_fluxadj !< If true, damp the LW flux adjustment using the Jacobian w/ height with logistic function - real(kind_phys) :: lfnc_k_grad !< Logistic function growth rate - real(kind_phys) :: lfnc_p0 !< Logistic functions (sigmoid) midpoint + real(kind_phys) :: lfnc_k !< Logistic function transition depth (Pa) + real(kind_phys) :: lfnc_p0 !< Logistic function transition level (Pa) logical :: doGP_lwscat !< If true, include scattering in longwave cloud-optics, only compatible w/ GP cloud-optics real(kind_phys) :: minGPpres !< Minimum pressure allowed in RRTMGP. real(kind_phys) :: minGPtemp !< Minimum temperature allowed in RRTMGP. @@ -3057,7 +3057,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & logical :: do_GPsw_Glw = .false. logical :: use_LW_jacobian = .false. !< Use Jacobian of LW to update LW radiation tendencies. logical :: damp_LW_fluxadj = .false. !< Damp LW Jacobian flux adjustment with height. - real(kind=kind_phys) :: lfnc_k_grad = -999 !< + real(kind=kind_phys) :: lfnc_k = -999 !< real(kind=kind_phys) :: lfnc_p0 = -999 !< logical :: doGP_lwscat = .false. !< If true, include scattering in longwave cloud-optics, only compatible w/ GP cloud-optics !--- Z-C microphysical parameters @@ -3441,7 +3441,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & sw_file_gas, sw_file_clouds, rrtmgp_nBandsSW, rrtmgp_nGptsSW,& doG_cldoptics, doGP_cldoptics_PADE, doGP_cldoptics_LUT, & rrtmgp_nrghice, rrtmgp_nGauss_ang, do_GPsw_Glw, & - use_LW_jacobian, doGP_lwscat, damp_LW_fluxadj, lfnc_k_grad, & + use_LW_jacobian, doGP_lwscat, damp_LW_fluxadj, lfnc_k, & lfnc_p0, & ! IN CCN forcing iccn, & @@ -3799,7 +3799,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%doGP_cldoptics_LUT = doGP_cldoptics_LUT Model%use_LW_jacobian = use_LW_jacobian Model%damp_LW_fluxadj = damp_LW_fluxadj - Model%lfnc_k_grad = lfnc_k_grad + Model%lfnc_k = 1. / lfnc_k Model%lfnc_p0 = lfnc_p0 Model%doGP_lwscat = doGP_lwscat if (Model%do_RRTMGP) then @@ -4994,7 +4994,7 @@ subroutine control_print(Model) print *, ' doGP_cldoptics_LUT : ', Model%doGP_cldoptics_LUT print *, ' use_LW_jacobian : ', Model%use_LW_jacobian print *, ' damp_LW_fluxadj : ', Model%damp_LW_fluxadj - print *, ' lfnc_k_grad : ', Model%lfnc_k_grad + print *, ' lfnc_k : ', Model%lfnc_k print *, ' lfnc_p0 : ', Model%lfnc_p0 print *, ' doGP_lwscat : ', Model%doGP_lwscat endif diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index 9e27c0eec..b3de3e929 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -2841,16 +2841,16 @@ units = flag dimensions = () type = logical -[lfnc_k_grad] - standard_name = steepness_of_flux_damping - long_name = steepness of logistic function for damping the LW flux adjustment - units = none +[lfnc_k] + standard_name = transition_pressure_length_scale_for_flux_damping + long_name = depth of transition layer in logistic function for LW flux adjustment damping + units = Pa dimensions = () type = real kind = kind_phys [lfnc_p0] - standard_name = midpoint_used_for_flux_damping - long_name = midpoint for damping the LW flux adjustment + standard_name = transition_pressure_for_flux_damping + long_name = transition pressure for LW flux adjustment damping units = Pa dimensions = () type = real diff --git a/ccpp/physics b/ccpp/physics index eb7837d7f..6a0e904ea 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit eb7837d7f32e83fb6a151dbae50172bda5fd83db +Subproject commit 6a0e904eadd35bd201e9848f68d025a3b8b7db51 From 295c53c18969866d3a578ee58fa8ad7ab35f700e Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Thu, 27 May 2021 17:03:52 +0000 Subject: [PATCH 16/33] Cleanup for PR review --- 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 edee33d89..3c5787b78 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -3799,7 +3799,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%doGP_cldoptics_LUT = doGP_cldoptics_LUT Model%use_LW_jacobian = use_LW_jacobian Model%damp_LW_fluxadj = damp_LW_fluxadj - Model%lfnc_k = 1. / lfnc_k + Model%lfnc_k = lfnc_k Model%lfnc_p0 = lfnc_p0 Model%doGP_lwscat = doGP_lwscat if (Model%do_RRTMGP) then diff --git a/ccpp/physics b/ccpp/physics index 6a0e904ea..41782f117 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 6a0e904eadd35bd201e9848f68d025a3b8b7db51 +Subproject commit 41782f1170b332a8c5e0c9324c83df48fb6df1b2 From cf707b2af1dcd86d1b36f709676d87bc74ff9dda Mon Sep 17 00:00:00 2001 From: Eric Aligo Date: Fri, 28 May 2021 23:29:11 +0000 Subject: [PATCH 17/33] additional thompson diagnostics added, increased max aux file number to 60 --- 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 b937c3ede..cea1c9c36 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -47,7 +47,7 @@ module GFS_typedefs ! If these are changed to >99, need to adjust formatting string in GFS_diagnostics.F90 (and names in diag_tables) integer, parameter :: naux2dmax = 20 !< maximum number of auxiliary 2d arrays in output (for debugging) - integer, parameter :: naux3dmax = 20 !< maximum number of auxiliary 3d arrays in output (for debugging) + integer, parameter :: naux3dmax = 60 !< maximum number of auxiliary 3d arrays in output (for debugging) !> \section arg_table_GFS_typedefs !! \htmlinclude GFS_typedefs.html diff --git a/ccpp/physics b/ccpp/physics index 6762adbcf..bed383fe6 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 6762adbcf2fafed1590624256e7410c225636e8c +Subproject commit bed383fe6b65ef564c539f82c21c0e76e27a4f64 From cfeb0f02a2fd39ce6a35528a776e0699eb9c7d78 Mon Sep 17 00:00:00 2001 From: Eric Aligo Date: Fri, 28 May 2021 23:41:02 +0000 Subject: [PATCH 18/33] fix bug with some diagnostics --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index bed383fe6..094e7dbc9 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit bed383fe6b65ef564c539f82c21c0e76e27a4f64 +Subproject commit 094e7dbc9442f9502a9a7210472539bec24e74e6 From 28e9e467282fe670394e1a6eff3fd1b0394f3434 Mon Sep 17 00:00:00 2001 From: Eric Aligo Date: Fri, 4 Jun 2021 23:55:07 +0000 Subject: [PATCH 19/33] merge with develop --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 094e7dbc9..67c9e4bb0 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 094e7dbc9442f9502a9a7210472539bec24e74e6 +Subproject commit 67c9e4bb0059c030b762f08b8445928132d8c219 From 1dc9c159ca12dac6a6c084cc92ed5e4e2c7eeace Mon Sep 17 00:00:00 2001 From: Eric Aligo Date: Tue, 15 Jun 2021 20:06:53 +0000 Subject: [PATCH 20/33] merge sub cycling with diagnostics --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 67c9e4bb0..682a4e353 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 67c9e4bb0059c030b762f08b8445928132d8c219 +Subproject commit 682a4e3533a8c3c7083f6a8ba3d4f68dd85dc0d0 From 41e61e70f17122af345d0948e2fe34b53e671ed2 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Tue, 22 Jun 2021 08:34:16 -0600 Subject: [PATCH 21/33] Update Thompson extended diagnostics code --- .gitmodules | 4 ++-- ccpp/data/GFS_typedefs.F90 | 33 +++++++++++++++++++++++++++++++-- ccpp/data/GFS_typedefs.meta | 12 ++++++++++++ ccpp/driver/GFS_diagnostics.F90 | 24 ++++++++++++++++++++++++ ccpp/physics | 2 +- 5 files changed, 70 insertions(+), 5 deletions(-) diff --git a/.gitmodules b/.gitmodules index a8e2277c9..8bf81f6c6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,5 +8,5 @@ branch = main [submodule "ccpp/physics"] path = ccpp/physics - url = https://github.com/ericaligo-NOAA/ccpp-physics.git - branch = feature/diag + url = https://github.com/climbfuji/ccpp-physics + branch = thompson_ext_diag_dom diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index a3d66c51a..5c6d238d6 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -47,7 +47,7 @@ module GFS_typedefs ! If these are changed to >99, need to adjust formatting string in GFS_diagnostics.F90 (and names in diag_tables) integer, parameter :: naux2dmax = 20 !< maximum number of auxiliary 2d arrays in output (for debugging) - integer, parameter :: naux3dmax = 60 !< maximum number of auxiliary 3d arrays in output (for debugging) + integer, parameter :: naux3dmax = 20 !< maximum number of auxiliary 3d arrays in output (for debugging) !> \section arg_table_GFS_typedefs !! \htmlinclude GFS_typedefs.html @@ -785,6 +785,8 @@ module GFS_typedefs logical :: lradar !< flag for radar reflectivity real(kind=kind_phys) :: nsradar_reset !< seconds between resetting radar reflectivity calculation real(kind=kind_phys) :: ttendlim !< temperature tendency limiter per time step in K/s + logical :: ext_diag_thompson !< flag for extended diagnostic output from Thompson + integer, parameter :: thompson_ext_ndiag3d=45 !< number of 3d arrays for extended diagnostic output from Thompson !--- GFDL microphysical paramters logical :: lgfdlmprad !< flag for GFDL mp scheme and radiation consistency @@ -1706,6 +1708,9 @@ module GFS_typedefs real (kind=kind_phys), pointer :: aecm (:,:) => null() !< instantaneous aerosol column mass densities for !< pm2.5, black carbon, organic carbon, sulfate, dust, sea salt ( g/m**2 ) + ! Extended output diagnostics for Thompson MP + real (kind=kind_phys), pointer :: thompson_ext_diag3d (:,:,:) => null() ! extended diagnostic 3d output arrays from Thompson MP + ! Auxiliary output arrays for debugging real (kind=kind_phys), pointer :: aux2d(:,:) => null() !< auxiliary 2d arrays in output (for debugging) real (kind=kind_phys), pointer :: aux3d(:,:,:)=> null() !< auxiliary 2d arrays in output (for debugging) @@ -3154,6 +3159,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & logical :: lradar = .false. !< flag for radar reflectivity real(kind=kind_phys) :: nsradar_reset = -999.0 !< seconds between resetting radar reflectivity calculation, set to <0 for every time step real(kind=kind_phys) :: ttendlim = -999.0 !< temperature tendency limiter, set to <0 to deactivate + logical :: ext_diag_thompson = .false. !< flag for extended diagnostic output from Thompson !--- GFDL microphysical parameters logical :: lgfdlmprad = .false. !< flag for GFDLMP radiation interaction @@ -3502,7 +3508,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & mg_ncnst, mg_ninst, mg_ngnst, sed_supersat, do_sb_physics, & mg_alf, mg_qcmin, mg_do_ice_gmao, mg_do_liq_liu, & ltaerosol, lradar, nsradar_reset, lrefres, ttendlim, & - lgfdlmprad, & + ext_diag_thompson, lgfdlmprad, & !--- max hourly avg_max_length, & !--- land/surface model control @@ -3929,6 +3935,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%lradar = lradar Model%nsradar_reset = nsradar_reset Model%ttendlim = ttendlim + Model%ext_diag_thompson= ext_diag_thompson + !--- F-A MP parameters Model%rhgrd = rhgrd Model%spec_adv = spec_adv @@ -4794,6 +4802,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & if (Model%me == Model%master) print *,' Using Thompson double moment microphysics', & ' ltaerosol = ',Model%ltaerosol, & ' ttendlim =',Model%ttendlim, & + ' ext_diag_thompson =',Model%ext_diag_thompson, & ' effr_in =',Model%effr_in, & ' lradar =',Model%lradar, & ' nsradar_reset =',Model%nsradar_reset, & @@ -5103,6 +5112,7 @@ subroutine control_print(Model) print *, ' nsradar_reset : ', Model%nsradar_reset print *, ' lrefres : ', Model%lrefres print *, ' ttendlim : ', Model%ttendlim + print *, ' ext_diag_thompson : ', Model%ext_diag_thompson print *, ' ' endif if (Model%imp_physics == Model%imp_physics_mg) then @@ -5976,6 +5986,12 @@ subroutine diag_create (Diag, IM, Model) Diag%exch_m = clear_val endif + ! Extended diagnostics for Thompson MP + if (Model%ext_diag_thompson) then + allocate (Diag%thompson_ext_diag3d(IM,Model%levs,Model%thompson_ext_ndiag3d)) + Diag%thompson_ext_diag3d = clear_val + endif + ! Auxiliary arrays in output for debugging if (Model%naux2d>0) then allocate (Diag%aux2d(IM,Model%naux2d)) @@ -6249,6 +6265,19 @@ subroutine diag_phys_zero (Diag, Model, linit, iauwindow_center) Diag%totgrp = zero endif + ! Extended diagnostics for Thompson MP + if (Model%ext_diag_thompson) then + Diag%thompson_ext_diag3d = clear_val + endif + + ! Auxiliary arrays in output for debugging + if (Model%naux2d>0) then + Diag%aux2d = clear_val + endif + if (Model%naux3d>0) then + Diag%aux3d = clear_val + endif + end subroutine diag_phys_zero !----------------------- diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index f1a316646..e49bb77a4 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -3426,6 +3426,18 @@ dimensions = () type = real kind = kind_phys +[ext_diag_thompson] + standard_name = flag_for_extended_diagnostic_output_from_thompson_microphysics + long_name = flag for extended diagnostic output from thompson microphysics + units = flag + dimensions = () + type = logical +[thompson_ext_ndiag3d] + standard_name = number_of_3d_arrays_for_extended_diagnostic_output_from_thompson_microphysics + long_name = number of 3d arrays for extended diagnostic output from thompson microphysics + units = count + dimensions = () + type = integer [lgfdlmprad] standard_name = flag_for_GFDL_microphysics_radiation_interaction long_name = flag for GFDL microphysics-radiation interaction diff --git a/ccpp/driver/GFS_diagnostics.F90 b/ccpp/driver/GFS_diagnostics.F90 index 11506a067..329321d32 100644 --- a/ccpp/driver/GFS_diagnostics.F90 +++ b/ccpp/driver/GFS_diagnostics.F90 @@ -3665,6 +3665,30 @@ subroutine GFS_externaldiag_populate (ExtDiag, Model, Statein, Stateout, Sfcprop enddo endif + ! Extended diagnostics from Thompson MP + thompson_extended_diagnostics: if (Model%ext_diag_thompson) then + do num=1,Model%thompson_ext_ndiag3d + idx = idx + 1 + ExtDiag(idx)%axes = 3 + select case (num) + !case (0) + ! ... + case default + write (xtra,'(I2.2)') num + ExtDiag(idx)%name = 'thompson_ext_diag3d_' // trim(extra) + ExtDiag(idx)%name = 'Thompson extended diagnostics array ' // trim(extra) + end select + ExtDiag(idx)%unit = 'unknown' + ExtDiag(idx)%mod_name = 'gfs_phys' + ExtDiag(idx)%intpl_method = 'bilinear' + ExtDiag(idx)%time_avg = .false. + allocate (ExtDiag(idx)%data(nblks)) + do nb = 1,nblks + ExtDiag(idx)%data(nb)%var3 => IntDiag(nb)%thompson_ext_diag3d(:,:,num) + enddo + enddo + end if thompson_extended_diagnostics + !! Cloud effective radii from Microphysics !if (Model%imp_physics == Model%imp_physics_thompson .or. Model%imp_physics == Model%imp_physics_wsm6 .or. Model%imp_physics == Model%imp_physics_fer_hires) then ! idx = idx + 1 diff --git a/ccpp/physics b/ccpp/physics index 682a4e353..0e3bb76df 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 682a4e3533a8c3c7083f6a8ba3d4f68dd85dc0d0 +Subproject commit 0e3bb76df4c61d947e4227b4c230510589cb6cac From 67cc084f0c2832733f54ae45dd4b35dff428ba17 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Tue, 22 Jun 2021 14:03:42 -0600 Subject: [PATCH 22/33] Bugfixes for updated Thompson diagnostics code --- ccpp/data/GFS_typedefs.F90 | 2 +- ccpp/data/GFS_typedefs.meta | 10 +++++++++- ccpp/driver/GFS_diagnostics.F90 | 10 ++++++---- ccpp/physics | 2 +- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index 5c6d238d6..dff178d63 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -786,7 +786,7 @@ module GFS_typedefs real(kind=kind_phys) :: nsradar_reset !< seconds between resetting radar reflectivity calculation real(kind=kind_phys) :: ttendlim !< temperature tendency limiter per time step in K/s logical :: ext_diag_thompson !< flag for extended diagnostic output from Thompson - integer, parameter :: thompson_ext_ndiag3d=45 !< number of 3d arrays for extended diagnostic output from Thompson + integer :: thompson_ext_ndiag3d=45 !< number of 3d arrays for extended diagnostic output from Thompson !--- GFDL microphysical paramters logical :: lgfdlmprad !< flag for GFDL mp scheme and radiation consistency diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index e49bb77a4..ab5e7347e 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -3433,7 +3433,7 @@ dimensions = () type = logical [thompson_ext_ndiag3d] - standard_name = number_of_3d_arrays_for_extended_diagnostic_output_from_thompson_microphysics + standard_name = number_of_3d_diagnostic_output_arrays_from_thompson_microphysics long_name = number of 3d arrays for extended diagnostic output from thompson microphysics units = count dimensions = () @@ -7512,6 +7512,14 @@ type = real kind = kind_phys active = (diag_ugwp_flag) +[thompson_ext_diag3d] + standard_name = extended_diagnostics_output_from_thompson_microphysics + long_name = set of 3d arrays for extended diagnostics output from thompson microphysics + units = none + dimensions = (horizontal_loop_extent,vertical_dimension,number_of_3d_diagnostic_output_arrays_from_thompson_microphysics) + type = real + kind = kind_phys + active = (flag_for_extended_diagnostic_output_from_thompson_microphysics) [aux2d] standard_name = auxiliary_2d_arrays long_name = auxiliary 2d arrays to output (for debugging) diff --git a/ccpp/driver/GFS_diagnostics.F90 b/ccpp/driver/GFS_diagnostics.F90 index 329321d32..b21be94bb 100644 --- a/ccpp/driver/GFS_diagnostics.F90 +++ b/ccpp/driver/GFS_diagnostics.F90 @@ -3671,14 +3671,16 @@ subroutine GFS_externaldiag_populate (ExtDiag, Model, Statein, Stateout, Sfcprop idx = idx + 1 ExtDiag(idx)%axes = 3 select case (num) - !case (0) + ! This is the place to add specific names, descriptions, + ! and units if so desired + !case (1) ! ... case default write (xtra,'(I2.2)') num - ExtDiag(idx)%name = 'thompson_ext_diag3d_' // trim(extra) - ExtDiag(idx)%name = 'Thompson extended diagnostics array ' // trim(extra) + ExtDiag(idx)%name = 'thompson_diag3d_' // trim(xtra) + ExtDiag(idx)%desc = 'Thompson extended diagnostics array ' // trim(xtra) + ExtDiag(idx)%unit = 'unknown' end select - ExtDiag(idx)%unit = 'unknown' ExtDiag(idx)%mod_name = 'gfs_phys' ExtDiag(idx)%intpl_method = 'bilinear' ExtDiag(idx)%time_avg = .false. diff --git a/ccpp/physics b/ccpp/physics index 0e3bb76df..ed4a9de4f 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 0e3bb76df4c61d947e4227b4c230510589cb6cac +Subproject commit ed4a9de4f428db0caa5c03cd44fd63dc3e22cbcb From bb99d0bc44a76495e9144a20436617b450ca2e52 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Tue, 22 Jun 2021 15:51:33 -0600 Subject: [PATCH 23/33] Update submodule pointerr for ccpp-physics --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 1f4a8eb8d..4e39a44fa 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 1f4a8eb8d48d81ae82cc299b8b089b0e10ab8159 +Subproject commit 4e39a44fa7913c04aaad705714a8e34f11c3bded From fa3eccd076ddec9567ef10fb84a71ce278a000c4 Mon Sep 17 00:00:00 2001 From: Eric Aligo Date: Wed, 23 Jun 2021 14:23:39 +0000 Subject: [PATCH 24/33] Fix bugs in diagnostics and dimension of aux3d array in meta file --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 682a4e353..2a61a8ded 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 682a4e3533a8c3c7083f6a8ba3d4f68dd85dc0d0 +Subproject commit 2a61a8ded1567a7ef4024e4b888bc56c05f27795 From ae66139a14f56ed90dd0cea32df70462b9e11889 Mon Sep 17 00:00:00 2001 From: Eric Aligo Date: Wed, 23 Jun 2021 14:56:54 +0000 Subject: [PATCH 25/33] update ccpp/physics --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 2a61a8ded..96f17f565 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 2a61a8ded1567a7ef4024e4b888bc56c05f27795 +Subproject commit 96f17f565b73d9e87f3b27be9256e66fdd779adb From b7abc43df85aee2f2e7c30ec867ebfdc4afc814e Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Wed, 23 Jun 2021 14:31:40 -0600 Subject: [PATCH 26/33] Adjust number of 3d diag arrays for Thompson MP, remove reset of aux2d/aux3d/Thompson diag fields from GFS_typedefs.F90 --- ccpp/data/GFS_typedefs.F90 | 15 +-------------- ccpp/physics | 2 +- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index 6fe5e2caa..5af755177 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -786,7 +786,7 @@ module GFS_typedefs real(kind=kind_phys) :: nsradar_reset !< seconds between resetting radar reflectivity calculation real(kind=kind_phys) :: ttendlim !< temperature tendency limiter per time step in K/s logical :: ext_diag_thompson !< flag for extended diagnostic output from Thompson - integer :: thompson_ext_ndiag3d=45 !< number of 3d arrays for extended diagnostic output from Thompson + integer :: thompson_ext_ndiag3d=40 !< number of 3d arrays for extended diagnostic output from Thompson !--- GFDL microphysical paramters logical :: lgfdlmprad !< flag for GFDL mp scheme and radiation consistency @@ -6268,19 +6268,6 @@ subroutine diag_phys_zero (Diag, Model, linit, iauwindow_center) Diag%totgrp = zero endif - ! Extended diagnostics for Thompson MP - if (Model%ext_diag_thompson) then - Diag%thompson_ext_diag3d = clear_val - endif - - ! Auxiliary arrays in output for debugging - if (Model%naux2d>0) then - Diag%aux2d = clear_val - endif - if (Model%naux3d>0) then - Diag%aux3d = clear_val - endif - end subroutine diag_phys_zero !----------------------- diff --git a/ccpp/physics b/ccpp/physics index 4e39a44fa..7eba0956d 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 4e39a44fa7913c04aaad705714a8e34f11c3bded +Subproject commit 7eba0956d8cec959aa25c3bc95d061014307dea3 From d41dbc5edf9f5a114a777e8f8acfa6e844e8ba36 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Wed, 23 Jun 2021 15:38:55 -0600 Subject: [PATCH 27/33] Use separate flag for resetting extended diagnostics for Thompson MP, rename reset flag for max hourly fields --- ccpp/data/GFS_typedefs.F90 | 11 ++++++++--- ccpp/data/GFS_typedefs.meta | 8 +++++++- ccpp/physics | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index 5af755177..0604cdb80 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -1950,7 +1950,8 @@ module GFS_typedefs real (kind=kind_phys), pointer :: rb_ice(:) => null() !< real (kind=kind_phys), pointer :: rb_land(:) => null() !< real (kind=kind_phys), pointer :: rb_water(:) => null() !< - logical :: reset !< + logical :: max_hourly_reset !< + logical :: ext_diag_thompson_reset !< real (kind=kind_phys), pointer :: rhc(:,:) => null() !< real (kind=kind_phys), pointer :: rho1(:) => null() !< real (kind=kind_phys), pointer :: runoff(:) => null() !< @@ -7457,7 +7458,10 @@ subroutine interstitial_phys_reset (Interstitial, Model) end if ! ! Set flag for resetting maximum hourly output fields - Interstitial%reset = mod(Model%kdt-1, nint(Model%avg_max_length/Model%dtp)) == 0 + Interstitial%max_hourly_reset = mod(Model%kdt-1, nint(Model%avg_max_length/Model%dtp)) == 0 + ! Use same logic in UFS to reset Thompson extended diagnostics + Interstitial%ext_diag_thompson_reset = Interstitial%max_hourly_reset + ! ! Set flag for resetting radar reflectivity calculation if (Model%nsradar_reset<0) then Interstitial%radar_reset = .true. @@ -7664,7 +7668,8 @@ subroutine interstitial_print(Interstitial, Model, mpirank, omprank, blkno) write (0,*) 'sum(Interstitial%rb_ice ) = ', sum(Interstitial%rb_ice ) write (0,*) 'sum(Interstitial%rb_land ) = ', sum(Interstitial%rb_land ) write (0,*) 'sum(Interstitial%rb_water ) = ', sum(Interstitial%rb_water ) - write (0,*) 'Interstitial%reset = ', Interstitial%reset + write (0,*) 'Interstitial%max_hourly_reset = ', Interstitial%max_hourly_reset + write (0,*) 'Interstitial%ext_diag_thompson_reset = ', Interstitial%ext_diag_thompson_reset write (0,*) 'sum(Interstitial%rhc ) = ', sum(Interstitial%rhc ) write (0,*) 'sum(Interstitial%runoff ) = ', sum(Interstitial%runoff ) write (0,*) 'sum(Interstitial%save_q ) = ', sum(Interstitial%save_q ) diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index aba12599b..33a28ee83 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -9441,12 +9441,18 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys -[reset] +[max_hourly_reset] standard_name = flag_reset_maximum_hourly_fields long_name = flag for resetting maximum hourly fields units = flag dimensions = () type = logical +[ext_diag_thompson_reset] + standard_name = flag_reset_extended_diagnostics_output_arrays_from_thompson_microphysics + long_name = flag for resetting extended diagnostics output arrays from thompson microphysics + units = flag + dimensions = () + type = logical [rhc] standard_name = critical_relative_humidity long_name = critical relative humidity diff --git a/ccpp/physics b/ccpp/physics index 7eba0956d..1c69f7686 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 7eba0956d8cec959aa25c3bc95d061014307dea3 +Subproject commit 1c69f76869a990cb014c52272b0d9bad5426413d From 4189feb9ca8568d4a9c3a0dd6857b0dafde16ce7 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Wed, 23 Jun 2021 17:26:37 -0600 Subject: [PATCH 28/33] 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 1c69f7686..55398eab5 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 1c69f76869a990cb014c52272b0d9bad5426413d +Subproject commit 55398eab58a1d5ae63dc5ce3da39a6c175848ced From 048df7f80f637b4a3f57ab733656135d89e0c069 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Thu, 1 Jul 2021 11:02:20 -0600 Subject: [PATCH 29/33] 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 8ddbb3650..28650fbd7 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 8ddbb36504de0cfd560be3cfc055e21183269eac +Subproject commit 28650fbd76e01858a81889be2436d06b8ec8d5a3 From 6d5bab8c6bf42556754d82148a37b2e7391326fa Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 2 Jul 2021 12:06:12 -0600 Subject: [PATCH 30/33] Comment out extended diagnostics vts1, txri, txrc --- 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 e6575c520..4726f64a5 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -786,7 +786,7 @@ module GFS_typedefs real(kind=kind_phys) :: nsradar_reset !< seconds between resetting radar reflectivity calculation real(kind=kind_phys) :: ttendlim !< temperature tendency limiter per time step in K/s logical :: ext_diag_thompson !< flag for extended diagnostic output from Thompson - integer :: thompson_ext_ndiag3d=40 !< number of 3d arrays for extended diagnostic output from Thompson + integer :: thompson_ext_ndiag3d=37 !< number of 3d arrays for extended diagnostic output from Thompson !--- GFDL microphysical paramters logical :: lgfdlmprad !< flag for GFDL mp scheme and radiation consistency diff --git a/ccpp/physics b/ccpp/physics index 28650fbd7..5c0ea2da1 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 28650fbd76e01858a81889be2436d06b8ec8d5a3 +Subproject commit 5c0ea2da1f431674916e3679df977a687a823f2e From 3a5f3065f57e0a8779da204791b1af82b3f96256 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 2 Jul 2021 16:37:58 -0600 Subject: [PATCH 31/33] Add missing calls to GFS_radiation_surface to several suite definition files --- ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml | 1 + ccpp/suites/suite_FV3_GFS_v16_coupled_noahmp.xml | 1 + ccpp/suites/suite_FV3_GFS_v16_coupled_nsstNoahmp.xml | 1 + ccpp/suites/suite_FV3_RRFS_v1alpha.xml | 1 + 4 files changed, 4 insertions(+) diff --git a/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml b/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml index 29d4e4561..7848e25fa 100644 --- a/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_RRTMGP.xml @@ -15,6 +15,7 @@ GFS_suite_interstitial_rad_reset sgscloud_radpre GFS_rrtmgp_pre + GFS_radiation_surface GFS_rrtmgp_thompsonmp_pre GFS_rrtmgp_cloud_overlap_pre GFS_cloud_diagnostics diff --git a/ccpp/suites/suite_FV3_GFS_v16_coupled_noahmp.xml b/ccpp/suites/suite_FV3_GFS_v16_coupled_noahmp.xml index 3eab5b6f6..2b8d3b595 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_coupled_noahmp.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_coupled_noahmp.xml @@ -19,6 +19,7 @@ GFS_suite_interstitial_rad_reset GFS_rrtmg_pre + GFS_radiation_surface rrtmg_sw_pre rrtmg_sw rrtmg_sw_post diff --git a/ccpp/suites/suite_FV3_GFS_v16_coupled_nsstNoahmp.xml b/ccpp/suites/suite_FV3_GFS_v16_coupled_nsstNoahmp.xml index b917ec5f2..bdd124307 100644 --- a/ccpp/suites/suite_FV3_GFS_v16_coupled_nsstNoahmp.xml +++ b/ccpp/suites/suite_FV3_GFS_v16_coupled_nsstNoahmp.xml @@ -19,6 +19,7 @@ GFS_suite_interstitial_rad_reset GFS_rrtmg_pre + GFS_radiation_surface rrtmg_sw_pre rrtmg_sw rrtmg_sw_post diff --git a/ccpp/suites/suite_FV3_RRFS_v1alpha.xml b/ccpp/suites/suite_FV3_RRFS_v1alpha.xml index 33aaa6ece..ad982a5b0 100644 --- a/ccpp/suites/suite_FV3_RRFS_v1alpha.xml +++ b/ccpp/suites/suite_FV3_RRFS_v1alpha.xml @@ -15,6 +15,7 @@ GFS_suite_interstitial_rad_reset sgscloud_radpre GFS_rrtmg_pre + GFS_radiation_surface rrtmg_sw_pre rrtmg_sw rrtmg_sw_post From b22eb7ee15b326769c2d9e55baca91845085aa4d Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Fri, 2 Jul 2021 17:41:54 -0600 Subject: [PATCH 32/33] 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 3542434d6..f38d9a16f 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 3542434d620b9edbd3535cac8eb95c0a19fec56b +Subproject commit f38d9a16f171561a726dd7421bc3e2404466e0f8 From f7f3897d1065245b490983d321bf03dc9ed0b905 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Sun, 11 Jul 2021 20:36:58 -0600 Subject: [PATCH 33/33] Revert change to .gitmodules and update submodule pointer for ccpp-physics --- .gitmodules | 4 ++-- ccpp/physics | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 8bf81f6c6..afe6f27dd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,5 +8,5 @@ branch = main [submodule "ccpp/physics"] path = ccpp/physics - url = https://github.com/climbfuji/ccpp-physics - branch = thompson_ext_diag_dom + url = https://github.com/NCAR/ccpp-physics + branch = main diff --git a/ccpp/physics b/ccpp/physics index f38d9a16f..275b14c62 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit f38d9a16f171561a726dd7421bc3e2404466e0f8 +Subproject commit 275b14c6216ec2052b85d0857b5ada36744e1f7b