From f9678fa7d114a41ac970008d12cf6e6f1f6d79a4 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Tue, 17 Nov 2020 18:31:53 +0000 Subject: [PATCH 01/12] Updated physics. Added infrastructure to FV3 to handle new GP capabilities. Thompson MP, LW scattering, Use of LW-jacobian to update surface tendencies. --- ccpp/physics | 2 +- ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml | 104 ++++++++++++++++++++++++ gfsphysics/GFS_layer/GFS_typedefs.F90 | 51 +++++++----- gfsphysics/GFS_layer/GFS_typedefs.meta | 14 +++- 4 files changed, 145 insertions(+), 26 deletions(-) create mode 100644 ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml diff --git a/ccpp/physics b/ccpp/physics index 8ef88ca46..e0643105f 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 8ef88ca46c11535fc7984d39ec38d1582f9db5ff +Subproject commit e0643105f0c540ff268ccd4b317b9a9c31c3893a diff --git a/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml b/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml new file mode 100644 index 000000000..2d4ac468e --- /dev/null +++ b/ccpp/suites/suite_FV3_GSD_v0_RRTMGP.xml @@ -0,0 +1,104 @@ + + + + + + + GFS_time_vary_pre + GFS_rrtmgp_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + sgscloud_radpre + GFS_rrtmgp_pre + GFS_rrtmgp_thompsonmp_pre + GFS_rrtmgp_cloud_overlap_pre + 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 + sgscloud_radpost + GFS_rrtmgp_lw_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + sfc_diff + GFS_surface_loop_control_part1 + sfc_nst_pre + sfc_nst + sfc_nst_post + lsm_ruc + lsm_ruc_sfc_sice_pre + sfc_sice + lsm_ruc_sfc_sice_post + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + mynnedmf_wrapper + GFS_GWD_generic_pre + cires_ugwp + cires_ugwp_post + GFS_GWD_generic_post + rayleigh_damp + GFS_suite_stateout_update + ozphys_2015 + h2ophys + get_phi_fv3 + GFS_suite_interstitial_3 + GFS_DCNV_generic_pre + cu_gf_driver_pre + cu_gf_driver + GFS_DCNV_generic_post + GFS_SCNV_generic_pre + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + mp_thompson_pre + mp_thompson + mp_thompson_post + GFS_MP_generic_post + cu_gf_driver_post + maximum_hourly_diagnostics + + + + + GFS_stochastics + phys_tend + + + + diff --git a/gfsphysics/GFS_layer/GFS_typedefs.F90 b/gfsphysics/GFS_layer/GFS_typedefs.F90 index 5e5fa3fb2..38a3a9999 100644 --- a/gfsphysics/GFS_layer/GFS_typedefs.F90 +++ b/gfsphysics/GFS_layer/GFS_typedefs.F90 @@ -711,6 +711,7 @@ 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 :: doGP_lwscat !< If true, include scattering in longwave cloud-optics, only compatible w/ GP cloud-optics #endif !--- microphysical switch integer :: ncld !< choice of cloud scheme @@ -2119,10 +2120,10 @@ module GFS_typedefs type(ty_gas_optics_rrtmgp) :: sw_gas_props !< RRTMGP DDT type(ty_cloud_optics) :: lw_cloud_props !< RRTMGP DDT type(ty_cloud_optics) :: sw_cloud_props !< RRTMGP DDT - type(ty_optical_props_1scl) :: lw_optical_props_cloudsByBand !< RRTMGP DDT - type(ty_optical_props_1scl) :: lw_optical_props_clouds !< RRTMGP DDT - type(ty_optical_props_1scl) :: lw_optical_props_precipByBand !< RRTMGP DDT - type(ty_optical_props_1scl) :: lw_optical_props_precip !< RRTMGP DDT + type(ty_optical_props_2str) :: lw_optical_props_cloudsByBand !< RRTMGP DDT + type(ty_optical_props_2str) :: lw_optical_props_clouds !< RRTMGP DDT + type(ty_optical_props_2str) :: lw_optical_props_precipByBand !< RRTMGP DDT + type(ty_optical_props_2str) :: lw_optical_props_precip !< RRTMGP DDT type(ty_optical_props_1scl) :: lw_optical_props_clrsky !< RRTMGP DDT type(ty_optical_props_1scl) :: lw_optical_props_aerosol !< RRTMGP DDT type(ty_optical_props_2str) :: sw_optical_props_cloudsByBand !< RRTMGP DDT @@ -3071,25 +3072,26 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & logical :: swhtr = .true. !< flag to output sw heating rate (Radtend%swhc) ! RRTMGP #ifdef CCPP - logical :: do_RRTMGP = .false. !< Use RRTMGP? - character(len=128) :: active_gases = '' !< Character list of active gases used in RRTMGP - integer :: nGases = 0 !< Number of active gases - character(len=128) :: rrtmgp_root = '' !< Directory of rte+rrtmgp source code - character(len=128) :: lw_file_gas = '' !< RRTMGP K-distribution file, coefficients to compute optics for gaseous atmosphere - character(len=128) :: lw_file_clouds = '' !< RRTMGP file containing coefficients used to compute clouds optical properties - integer :: rrtmgp_nBandsLW = 16 !< Number of RRTMGP LW bands. - integer :: rrtmgp_nGptsLW = 256 !< Number of RRTMGP LW spectral points. - character(len=128) :: sw_file_gas = '' !< RRTMGP K-distribution file, coefficients to compute optics for gaseous atmosphere - character(len=128) :: sw_file_clouds = '' !< RRTMGP file containing coefficients used to compute clouds optical properties - integer :: rrtmgp_nBandsSW = 14 !< Number of RRTMGP SW bands. - integer :: rrtmgp_nGptsSW = 224 !< Number of RRTMGP SW spectral points. + logical :: do_RRTMGP = .false. !< Use RRTMGP? + character(len=128) :: active_gases = '' !< Character list of active gases used in RRTMGP + integer :: nGases = 0 !< Number of active gases + character(len=128) :: rrtmgp_root = '' !< Directory of rte+rrtmgp source code + character(len=128) :: lw_file_gas = '' !< RRTMGP K-distribution file, coefficients to compute optics for gaseous atmosphere + character(len=128) :: lw_file_clouds = '' !< RRTMGP file containing coefficients used to compute clouds optical properties + integer :: rrtmgp_nBandsLW = 16 !< Number of RRTMGP LW bands. + integer :: rrtmgp_nGptsLW = 256 !< Number of RRTMGP LW spectral points. + character(len=128) :: sw_file_gas = '' !< RRTMGP K-distribution file, coefficients to compute optics for gaseous atmosphere + character(len=128) :: sw_file_clouds = '' !< RRTMGP file containing coefficients used to compute clouds optical properties + integer :: rrtmgp_nBandsSW = 14 !< Number of RRTMGP SW bands. + integer :: rrtmgp_nGptsSW = 224 !< Number of RRTMGP SW spectral points. logical :: doG_cldoptics = .false. !< Use legacy RRTMG cloud-optics? logical :: doGP_cldoptics_PADE = .false. !< Use RRTMGP cloud-optics: PADE approximation? logical :: doGP_cldoptics_LUT = .false. !< Use RRTMGP cloud-optics: LUTs? - integer :: rrtmgp_nrghice = 0 !< Number of ice-roughness categories - 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. + integer :: rrtmgp_nrghice = 0 !< Number of ice-roughness categories + 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 :: doGP_lwscat = .false. !< If true, include scattering in longwave cloud-optics, only compatible w/ GP cloud-optics #endif !--- Z-C microphysical parameters integer :: ncld = 1 !< choice of cloud scheme @@ -3469,7 +3471,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, & + use_LW_jacobian, doGP_lwscat, & #endif ! IN CCN forcing iccn, & @@ -3846,11 +3848,17 @@ 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%doGP_lwscat = doGP_lwscat ! RRTMGP incompatible with levr /= levs if (Model%do_RRTMGP .and. Model%levr /= Model%levs) then write(0,*) "Logic error, RRTMGP only works with levr = levs" stop end if + ! RRTMGP LW scattering calculation not supported w/ RRTMG cloud-optics + if (Model%doGP_lwscat .and. Model%doG_cldoptics) then + write(0,*) "Logic error, RRTMGP Longwave cloud-scattering not supported with RRTMG cloud-optics." + stop + end if ! The CCPP versions of the RRTMG lw/sw schemes are configured ! such that lw and sw heating rate are output, i.e. they rely @@ -5048,6 +5056,7 @@ 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 *, ' doGP_lwscat : ', Model%doGP_lwscat endif #endif print *, ' ' diff --git a/gfsphysics/GFS_layer/GFS_typedefs.meta b/gfsphysics/GFS_layer/GFS_typedefs.meta index ed0f84b69..f3ad221b8 100644 --- a/gfsphysics/GFS_layer/GFS_typedefs.meta +++ b/gfsphysics/GFS_layer/GFS_typedefs.meta @@ -2719,6 +2719,12 @@ units = flag dimensions = () type = logical +[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 + units = flag + dimensions = () + type = logical [rrtmgp_nrghice] standard_name = number_of_rrtmgp_ice_roughness long_name = number of ice-roughness categories in RRTMGP calculation (Model%rrtmgp_nrghice) @@ -10177,25 +10183,25 @@ long_name = Fortran DDT containing RRTMGP optical properties units = DDT dimensions = () - type = ty_optical_props_1scl + type = ty_optical_props_2str [lw_optical_props_clouds] standard_name = longwave_optical_properties_for_cloudy_atmosphere long_name = Fortran DDT containing RRTMGP optical properties units = DDT dimensions = () - type = ty_optical_props_1scl + type = ty_optical_props_2str [lw_optical_props_precip] standard_name = longwave_optical_properties_for_precipitation long_name = Fortran DDT containing RRTMGP optical properties units = DDT dimensions = () - type = ty_optical_props_1scl + type = ty_optical_props_2str [lw_optical_props_cloudsByBand] standard_name = longwave_optical_properties_for_cloudy_atmosphere_by_band long_name = Fortran DDT containing RRTMGP optical properties units = DDT dimensions = () - type = ty_optical_props_1scl + type = ty_optical_props_2str [lw_optical_props_precipByBand] standard_name = longwave_optical_properties_for_precipitation_by_band long_name = Fortran DDT containing RRTMGP optical properties From 20072d1c062861b167ec42d6bfb3342ebffd4ee5 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Tue, 17 Nov 2020 19:11:07 +0000 Subject: [PATCH 02/12] Some small changes to work with physics improvements to RRTMGP. --- ccpp/config/ccpp_prebuild_config.py | 1 + ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml | 1 + ccpp/suites/suite_FV3_GFS_v16beta_RRTMGP.xml | 1 + 3 files changed, 3 insertions(+) diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py index 6d8693e62..5e36255bc 100755 --- a/ccpp/config/ccpp_prebuild_config.py +++ b/ccpp/config/ccpp_prebuild_config.py @@ -198,6 +198,7 @@ 'ccpp/physics/physics/rrtmgp_lw_cloud_sampling.F90', 'ccpp/physics/physics/rrtmgp_sw_cloud_sampling.F90', 'ccpp/physics/physics/GFS_cloud_diagnostics.F90', + 'ccpp/physics/physics/GFS_rrtmgp_thompsonmp_pre.F90', 'ccpp/physics/physics/GFS_rrtmgp_gfdlmp_pre.F90', 'ccpp/physics/physics/GFS_rrtmgp_zhaocarr_pre.F90', 'ccpp/physics/physics/GFS_rrtmgp_sw_post.F90' diff --git a/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml b/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml index 244345a95..983b7b2e7 100644 --- a/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GFS_v15p2_RRTMGP.xml @@ -20,6 +20,7 @@ GFS_suite_interstitial_rad_reset GFS_rrtmgp_pre GFS_rrtmgp_gfdlmp_pre + GFS_rrtmgp_cloud_overlap_pre GFS_cloud_diagnostics GFS_rrtmgp_sw_pre rrtmgp_sw_gas_optics diff --git a/ccpp/suites/suite_FV3_GFS_v16beta_RRTMGP.xml b/ccpp/suites/suite_FV3_GFS_v16beta_RRTMGP.xml index d27a3f7d3..fab16d294 100644 --- a/ccpp/suites/suite_FV3_GFS_v16beta_RRTMGP.xml +++ b/ccpp/suites/suite_FV3_GFS_v16beta_RRTMGP.xml @@ -20,6 +20,7 @@ GFS_suite_interstitial_rad_reset GFS_rrtmgp_pre GFS_rrtmgp_gfdlmp_pre + GFS_rrtmgp_cloud_overlap_pre GFS_cloud_diagnostics GFS_rrtmgp_sw_pre rrtmgp_sw_gas_optics From d32af817fc279fb9e4f3df19f0f07fc2d52c0f01 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Wed, 18 Nov 2020 21:31:07 +0000 Subject: [PATCH 03/12] RRTMGP working with Thompson MP. --- ccpp/config/ccpp_prebuild_config.py | 1 + ccpp/physics | 2 +- gfsphysics/GFS_layer/GFS_typedefs.meta | 22 ++++++++++++++++++++-- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py index 5e36255bc..e63ae7a75 100755 --- a/ccpp/config/ccpp_prebuild_config.py +++ b/ccpp/config/ccpp_prebuild_config.py @@ -201,6 +201,7 @@ 'ccpp/physics/physics/GFS_rrtmgp_thompsonmp_pre.F90', 'ccpp/physics/physics/GFS_rrtmgp_gfdlmp_pre.F90', 'ccpp/physics/physics/GFS_rrtmgp_zhaocarr_pre.F90', + 'ccpp/physics/physics/GFS_rrtmgp_cloud_overlap_pre.F90', 'ccpp/physics/physics/GFS_rrtmgp_sw_post.F90' ] diff --git a/ccpp/physics b/ccpp/physics index e0643105f..f81a19436 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit e0643105f0c540ff268ccd4b317b9a9c31c3893a +Subproject commit f81a1943629cb6158dd8f514e4ab330ed5ecf578 diff --git a/gfsphysics/GFS_layer/GFS_typedefs.meta b/gfsphysics/GFS_layer/GFS_typedefs.meta index f3ad221b8..9e662bf84 100644 --- a/gfsphysics/GFS_layer/GFS_typedefs.meta +++ b/gfsphysics/GFS_layer/GFS_typedefs.meta @@ -9821,6 +9821,24 @@ dimensions = (horizontal_loop_extent,vertical_dimension) type = real kind = kind_phys +[qs_lay] + standard_name = saturation_vapor_pressure + long_name = saturation vapor pressure + units = Pa + dimensions = (horizontal_dimension,vertical_dimension) + type = real + kind = kind_phys + optional = F + active = (flag_for_rrtmgp_radiation_scheme) +[q_lay] + standard_name = water_vapor_mixing_ratio + long_name = water vaport mixing ratio + units = kg/kg + dimensions = (horizontal_dimension,vertical_dimension) + type = real + kind = kind_phys + optional = F + active = (flag_for_rrtmgp_radiation_scheme) [p_lay] standard_name = air_pressure_at_layer_for_RRTMGP_in_hPa long_name = air pressure layer @@ -10183,7 +10201,7 @@ long_name = Fortran DDT containing RRTMGP optical properties units = DDT dimensions = () - type = ty_optical_props_2str + type = ty_optical_props_1scl [lw_optical_props_clouds] standard_name = longwave_optical_properties_for_cloudy_atmosphere long_name = Fortran DDT containing RRTMGP optical properties @@ -10207,7 +10225,7 @@ long_name = Fortran DDT containing RRTMGP optical properties units = DDT dimensions = () - type = ty_optical_props_1scl + type = ty_optical_props_2str [lw_optical_props_aerosol] standard_name = longwave_optical_properties_for_aerosols long_name = Fortran DDT containing RRTMGP optical properties From 33e351af93b3e9a765d55db282916ab0b3984acc Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Wed, 18 Nov 2020 21:32:30 +0000 Subject: [PATCH 04/12] Updated .gitmodules. --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index d253f6966..4c4621ece 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,5 +8,5 @@ branch = master [submodule "ccpp/physics"] path = ccpp/physics - url = https://github.com/NCAR/ccpp-physics - branch = master + url = https://github.com/dustinswales/ccpp-physics + branch = master-ncar-addThompsonMP From ca165bb839e52fb794a99d540c5bffe1642c502a Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Tue, 8 Dec 2020 21:57:20 +0000 Subject: [PATCH 05/12] Updated physics. New interstitials. --- ccpp/config/ccpp_prebuild_config.py | 12 --------- ccpp/physics | 2 +- gfsphysics/GFS_layer/GFS_typedefs.F90 | 20 ++++++++------- gfsphysics/GFS_layer/GFS_typedefs.meta | 35 +++++++++++--------------- 4 files changed, 26 insertions(+), 43 deletions(-) diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py index e63ae7a75..0c6ae70bc 100755 --- a/ccpp/config/ccpp_prebuild_config.py +++ b/ccpp/config/ccpp_prebuild_config.py @@ -296,12 +296,6 @@ 'rime_factor', ], }, - 'rrtmgp_lw_rte' : { - 'rrtmgp_lw_rte_run' : [ - 'RRTMGP_jacobian_of_lw_flux_profile_upward', - 'RRTMGP_jacobian_of_lw_flux_profile_downward', - ], - }, 'rrtmgp_sw_rte' : { 'rrtmgp_sw_rte_run' : [ 'components_of_surface_downward_shortwave_fluxes', @@ -318,12 +312,6 @@ 'tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step', ], }, - 'GFS_suite_interstitial_2' : { - 'GFS_suite_interstitial_2_run' : [ - 'RRTMGP_jacobian_of_lw_flux_profile_upward', - 'RRTMGP_lw_flux_profile_upward_allsky', - ], - }, #'subroutine_name_1' : 'all', #'subroutine_name_2' : 'none', #'subroutine_name_2' : [ 'var1', 'var3'], diff --git a/ccpp/physics b/ccpp/physics index f81a19436..250de74fc 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit f81a1943629cb6158dd8f514e4ab330ed5ecf578 +Subproject commit 250de74fce42c6ecda654f4d47508d9ffa3c5335 diff --git a/gfsphysics/GFS_layer/GFS_typedefs.F90 b/gfsphysics/GFS_layer/GFS_typedefs.F90 index 38a3a9999..0fe34da4c 100644 --- a/gfsphysics/GFS_layer/GFS_typedefs.F90 +++ b/gfsphysics/GFS_layer/GFS_typedefs.F90 @@ -437,7 +437,8 @@ module GFS_typedefs !< difference of dnfxc & upfxc from GFS_radtend_type%sfcfsw real (kind=kind_phys), pointer :: sfcdlw(:) => null() !< total sky sfc downward lw flux ( w/m**2 ) !< GFS_radtend_type%sfclsw%dnfxc - + real (kind=kind_phys), pointer :: sfculw(:) => null() !< total sky sfc upward lw flux ( w/m**2 ) + real (kind=kind_phys), pointer :: sfculw_jac(:) => null() !< Jacobian of total sky sfc upward lw flux ( w/m**2/K ) !--- incoming quantities real (kind=kind_phys), pointer :: dusfcin_cpl(:) => null() !< aoi_fld%dusfcin(item,lan) real (kind=kind_phys), pointer :: dvsfcin_cpl(:) => null() !< aoi_fld%dvsfcin(item,lan) @@ -2068,7 +2069,6 @@ module GFS_typedefs ! RRTMGP integer :: ipsdlw0 !< integer :: ipsdsw0 !< - real (kind=kind_phys), pointer :: sktp1r(:) => null() !< real (kind=kind_phys), pointer :: p_lay(:,:) => null() !< real (kind=kind_phys), pointer :: p_lev(:,:) => null() !< real (kind=kind_phys), pointer :: t_lev(:,:) => null() !< @@ -2702,10 +2702,14 @@ subroutine coupling_create (Coupling, IM, Model) allocate (Coupling%sfcdsw (IM)) allocate (Coupling%sfcnsw (IM)) allocate (Coupling%sfcdlw (IM)) + allocate (Coupling%sfculw (IM)) + allocate (Coupling%sfculw_jac (IM)) Coupling%sfcdsw = clear_val Coupling%sfcnsw = clear_val Coupling%sfcdlw = clear_val + Coupling%sfculw = clear_val + Coupling%sfculw_jac = clear_val if (Model%cplflx .or. Model%do_sppt .or. Model%cplchm .or. Model%ca_global) then allocate (Coupling%rain_cpl (IM)) @@ -6602,10 +6606,6 @@ subroutine interstitial_create (Interstitial, IM, Model) allocate (Interstitial%zt1d (IM)) ! RRTMGP - allocate (Interstitial%fluxlwDOWN_jac (IM, Model%levs+1)) - allocate (Interstitial%fluxlwUP_jac (IM, Model%levs+1)) - allocate (Interstitial%sktp1r (IM)) - allocate (Interstitial%fluxlwUP_allsky (IM, Model%levs+1)) if (Model%do_RRTMGP) then allocate (Interstitial%tracer (IM, Model%levs,Model%ntrac)) allocate (Interstitial%tv_lay (IM, Model%levs)) @@ -6621,6 +6621,7 @@ subroutine interstitial_create (Interstitial, IM, Model) allocate (Interstitial%precip_overlap_param (IM, Model%levs)) allocate (Interstitial%fluxlwDOWN_allsky (IM, Model%levs+1)) allocate (Interstitial%fluxlwUP_clrsky (IM, Model%levs+1)) + allocate (Interstitial%fluxlwUP_allsky (IM, Model%levs+1)) allocate (Interstitial%fluxlwDOWN_clrsky (IM, Model%levs+1)) allocate (Interstitial%fluxswUP_allsky (IM, Model%levs+1)) allocate (Interstitial%fluxswDOWN_allsky (IM, Model%levs+1)) @@ -7009,8 +7010,9 @@ subroutine interstitial_rad_reset (Interstitial, Model) Interstitial%cwm = clear_val end if end if - + if (Model%do_RRTMGP) then + Interstitial%fluxlwUP_allsky = clear_val Interstitial%tracer = clear_val Interstitial%tv_lay = clear_val Interstitial%relhum = clear_val @@ -7232,7 +7234,7 @@ subroutine interstitial_phys_reset (Interstitial, Model) Interstitial%tseal = clear_val Interstitial%tsfc_ice = huge Interstitial%tsfc_land = huge - Interstitial%tsfc_ocean = huge + Interstitial%tsfc_ocean = huge Interstitial%tsurf = clear_val Interstitial%tsurf_ice = huge Interstitial%tsurf_land = huge @@ -7619,7 +7621,7 @@ subroutine interstitial_print(Interstitial, Model, mpirank, omprank, blkno) write (0,*) 'sum(Interstitial%tsfa ) = ', sum(Interstitial%tsfa ) write (0,*) 'sum(Interstitial%tsfc_ice ) = ', sum(Interstitial%tsfc_ice ) write (0,*) 'sum(Interstitial%tsfc_land ) = ', sum(Interstitial%tsfc_land ) - write (0,*) 'sum(Interstitial%tsfc_ocean ) = ', sum(Interstitial%tsfc_ocean ) + write (0,*) 'sum(Interstitial%tsfc_ocean ) = ', sum(Interstitial%tsfc_ocean ) write (0,*) 'sum(Interstitial%tsfg ) = ', sum(Interstitial%tsfg ) write (0,*) 'sum(Interstitial%tsurf ) = ', sum(Interstitial%tsurf ) write (0,*) 'sum(Interstitial%tsurf_ice ) = ', sum(Interstitial%tsurf_ice ) diff --git a/gfsphysics/GFS_layer/GFS_typedefs.meta b/gfsphysics/GFS_layer/GFS_typedefs.meta index 9e662bf84..bcd4c6edc 100644 --- a/gfsphysics/GFS_layer/GFS_typedefs.meta +++ b/gfsphysics/GFS_layer/GFS_typedefs.meta @@ -1627,6 +1627,20 @@ dimensions = (horizontal_loop_extent) type = real kind = kind_phys +[sfculw] + standard_name = surface_upwelling_longwave_flux_on_radiation_time_step + long_name = total sky sfc upward lw flux + units = W m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys +[sfculw_jac] + standard_name = RRTMGP_jacobian_of_lw_flux_upward_at_surface + long_name = RRTMGP Jacobian upward longwave flux at surface + units = W m-2 K-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys [rain_cpl] standard_name = lwe_thickness_of_precipitation_amount_for_coupling long_name = total rain precipitation @@ -9977,27 +9991,6 @@ type = real kind = kind_phys active = (flag_for_rrtmgp_radiation_scheme) -[sktp1r] - standard_name = surface_skin_temperature_at_previous_time_step - long_name = surface skin temperature at previous time step - units = K - dimensions = (horizontal_loop_extent) - type = real - kind = kind_phys -[fluxlwUP_jac] - standard_name = RRTMGP_jacobian_of_lw_flux_profile_upward - long_name = RRTMGP Jacobian upward longwave flux profile - units = W m-2 K-1 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) - type = real - kind = kind_phys -[fluxlwDOWN_jac] - standard_name = RRTMGP_jacobian_of_lw_flux_profile_downward - long_name = RRTMGP Jacobian downward of longwave flux profile - units = W m-2 K-1 - dimensions = (horizontal_loop_extent,vertical_dimension_plus_one) - type = real - kind = kind_phys [fluxswUP_allsky] standard_name = RRTMGP_sw_flux_profile_upward_allsky long_name = RRTMGP upward shortwave all-sky flux profile From d82ed0a26f236e9386f61d330b7bf9cff5e83cfc Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Tue, 8 Dec 2020 22:12:34 +0000 Subject: [PATCH 06/12] Synced with NCAR/master --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 250de74fc..fdbd9d9c1 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 250de74fce42c6ecda654f4d47508d9ffa3c5335 +Subproject commit fdbd9d9c19f2f6a00fee419f0651f62887097ad6 From ac4e13f8877b7b25edeeb35be614b112bca12bb3 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Wed, 16 Dec 2020 15:35:43 +0000 Subject: [PATCH 07/12] Updated ccpp-physics --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index fdbd9d9c1..9a5cadc91 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit fdbd9d9c19f2f6a00fee419f0651f62887097ad6 +Subproject commit 9a5cadc917e3dd8b27b80a732554a77d7e53d2f8 From 85dbf30471216d71a67dc641a0e36480cff39801 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Wed, 16 Dec 2020 15:54:24 +0000 Subject: [PATCH 08/12] Updated physics submodule. --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 9a5cadc91..ea5e44fcc 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 9a5cadc917e3dd8b27b80a732554a77d7e53d2f8 +Subproject commit ea5e44fcc691c9a5fedcb96f13e0ca85259c7844 From 8046bfd9b2815988f84909336e27770871719ef8 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Wed, 16 Dec 2020 21:29:30 +0000 Subject: [PATCH 09/12] Cleanup --- gfsphysics/GFS_layer/GFS_typedefs.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gfsphysics/GFS_layer/GFS_typedefs.F90 b/gfsphysics/GFS_layer/GFS_typedefs.F90 index a9f70b68f..08af63eb0 100644 --- a/gfsphysics/GFS_layer/GFS_typedefs.F90 +++ b/gfsphysics/GFS_layer/GFS_typedefs.F90 @@ -7075,7 +7075,7 @@ subroutine interstitial_rad_reset (Interstitial, Model) Interstitial%cwm = clear_val end if end if - + if (Model%do_RRTMGP) then Interstitial%fluxlwUP_allsky = clear_val Interstitial%tracer = clear_val @@ -7299,7 +7299,7 @@ subroutine interstitial_phys_reset (Interstitial, Model) Interstitial%tseal = clear_val Interstitial%tsfc_ice = huge Interstitial%tsfc_land = huge - Interstitial%tsfc_ocean = huge + Interstitial%tsfc_ocean = huge Interstitial%tsurf = clear_val Interstitial%tsurf_ice = huge Interstitial%tsurf_land = huge @@ -7687,7 +7687,7 @@ subroutine interstitial_print(Interstitial, Model, mpirank, omprank, blkno) write (0,*) 'sum(Interstitial%tsfa ) = ', sum(Interstitial%tsfa ) write (0,*) 'sum(Interstitial%tsfc_ice ) = ', sum(Interstitial%tsfc_ice ) write (0,*) 'sum(Interstitial%tsfc_land ) = ', sum(Interstitial%tsfc_land ) - write (0,*) 'sum(Interstitial%tsfc_ocean ) = ', sum(Interstitial%tsfc_ocean ) + write (0,*) 'sum(Interstitial%tsfc_ocean ) = ', sum(Interstitial%tsfc_ocean ) write (0,*) 'sum(Interstitial%tsfg ) = ', sum(Interstitial%tsfg ) write (0,*) 'sum(Interstitial%tsurf ) = ', sum(Interstitial%tsurf ) write (0,*) 'sum(Interstitial%tsurf_ice ) = ', sum(Interstitial%tsurf_ice ) From b42dea6379374535a7b8ccfa5c5a550b95c074f3 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Wed, 16 Dec 2020 21:40:25 +0000 Subject: [PATCH 10/12] Update physics --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index ea5e44fcc..37313e512 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit ea5e44fcc691c9a5fedcb96f13e0ca85259c7844 +Subproject commit 37313e512087fc47f51bf12375e724c80fa3c18c From 412024eb8974e47e788dbfeaa90046846d4b0304 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Thu, 17 Dec 2020 16:41:27 +0000 Subject: [PATCH 11/12] Updated physics submodule pointer. --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 4c4621ece..d253f6966 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,5 +8,5 @@ branch = master [submodule "ccpp/physics"] path = ccpp/physics - url = https://github.com/dustinswales/ccpp-physics - branch = master-ncar-addThompsonMP + url = https://github.com/NCAR/ccpp-physics + branch = master From fe505c8fd4e6709bca14a2d273fd5343768f48ab Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Thu, 17 Dec 2020 16:43:17 +0000 Subject: [PATCH 12/12] Updated physics submodule hash. --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 37313e512..d1be22de9 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 37313e512087fc47f51bf12375e724c80fa3c18c +Subproject commit d1be22de95ecd7519bacc08e335325f69806e7f1