From df7028b249afd4232a21a4b571ff97c9b4a8cc81 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Sun, 9 May 2021 23:52:17 +0000 Subject: [PATCH 01/10] 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/10] 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/10] 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 dca609d89c850ac8e32b057a27d752e0343b0054 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Mon, 24 May 2021 16:57:47 +0000 Subject: [PATCH 04/10] 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 c323a06f5c0a408c84910a36f79eb8344382825f Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Mon, 24 May 2021 17:39:30 +0000 Subject: [PATCH 05/10] 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 338f6ad0a7b4e604d557b8546520de9e7d40845c Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Tue, 25 May 2021 16:49:34 +0000 Subject: [PATCH 06/10] 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 07/10] 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 58d269cfcebc6587a1c4091d44bea127ed31b0fa Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Tue, 25 May 2021 20:05:49 +0000 Subject: [PATCH 08/10] 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 3fbb0ab5b4d6dac8ab0ad5629cbc4a72f801fed9 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Thu, 27 May 2021 15:32:00 +0000 Subject: [PATCH 09/10] 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 10/10] 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