diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py
index 2d848c1eb..e178f473e 100755
--- a/ccpp/config/ccpp_prebuild_config.py
+++ b/ccpp/config/ccpp_prebuild_config.py
@@ -22,11 +22,6 @@
'physics/physics/h2o_def.f',
'physics/physics/ozne_def.f',
'physics/physics/radiation_surface.f',
- 'physics/physics/rte-rrtmgp/rrtmgp/mo_gas_optics_rrtmgp.F90',
- 'physics/physics/rte-rrtmgp/rrtmgp/mo_gas_concentrations.F90',
- 'physics/physics/rte-rrtmgp/rte/mo_optical_props.F90',
- 'physics/physics/rte-rrtmgp/extensions/cloud_optics/mo_cloud_optics.F90',
- 'physics/physics/rte-rrtmgp/rte/mo_source_functions.F90',
'data/CCPP_typedefs.F90',
'data/GFS_typedefs.F90',
'data/CCPP_data.F90',
@@ -68,27 +63,6 @@
'GFS_stateout_type' : 'GFS_Data(cdata%blk_no)%Stateout',
'GFS_typedefs' : '',
},
- 'mo_gas_concentrations' : {
- 'ty_gas_concs' : '',
- 'mo_gas_concentrations' : '',
- },
- 'mo_gas_optics_rrtmgp' : {
- 'ty_gas_optics_rrtmgp' : '',
- 'mo_gas_optics_rrtmgp' : '',
- },
- 'mo_optical_props' : {
- 'ty_optical_props_1scl' : '',
- 'ty_optical_props_2str' : '',
- 'mo_optical_props' : '',
- },
- 'mo_cloud_optics' : {
- 'ty_cloud_optics' : '',
- 'mo_cloud_optics' : '',
- },
- 'mo_source_functions' : {
- 'ty_source_func_lw' : '',
- 'mo_source_functions' : '',
- },
}
# Add all physics scheme files relative to basedir
@@ -218,23 +192,15 @@
'physics/smoke/rrfs_smoke_postpbl.F90',
'physics/smoke/rrfs_smoke_lsdep_wrapper.F90',
# RRTMGP
- 'physics/physics/rrtmgp_lw_gas_optics.F90',
- 'physics/physics/rrtmgp_lw_cloud_optics.F90',
- 'physics/physics/rrtmgp_sw_gas_optics.F90',
- 'physics/physics/rrtmgp_sw_cloud_optics.F90',
'physics/physics/rrtmgp_aerosol_optics.F90',
- 'physics/physics/rrtmgp_lw_rte.F90',
- 'physics/physics/rrtmgp_sw_rte.F90',
+ 'physics/physics/rrtmgp_lw_main.F90',
+ 'physics/physics/rrtmgp_sw_main.F90',
'physics/physics/GFS_rrtmgp_setup.F90',
'physics/physics/GFS_rrtmgp_pre.F90',
- 'physics/physics/rrtmgp_lw_pre.F90',
- 'physics/physics/GFS_rrtmgp_lw_post.F90',
- 'physics/physics/rrtmgp_lw_cloud_sampling.F90',
- 'physics/physics/rrtmgp_sw_cloud_sampling.F90',
'physics/physics/GFS_cloud_diagnostics.F90',
'physics/physics/GFS_rrtmgp_cloud_mp.F90',
'physics/physics/GFS_rrtmgp_cloud_overlap.F90',
- 'physics/physics/GFS_rrtmgp_sw_post.F90'
+ 'physics/physics/GFS_rrtmgp_post.F90'
]
# Default build dir, relative to current working directory,
diff --git a/ccpp/data/CCPP_typedefs.F90 b/ccpp/data/CCPP_typedefs.F90
index faa26f544..1c6e4316f 100644
--- a/ccpp/data/CCPP_typedefs.F90
+++ b/ccpp/data/CCPP_typedefs.F90
@@ -14,11 +14,6 @@ module CCPP_typedefs
! Physics type defininitions needed for interstitial DDTs
use module_radsw_parameters, only: profsw_type, cmpfsw_type, NBDSW
use module_radlw_parameters, only: proflw_type, NBDLW
- use mo_gas_optics_rrtmgp, only: ty_gas_optics_rrtmgp
- use mo_optical_props, only: ty_optical_props_1scl,ty_optical_props_2str
- use mo_cloud_optics, only: ty_cloud_optics
- use mo_gas_concentrations, only: ty_gas_concs
- use mo_source_functions, only: ty_source_func_lw
use GFS_typedefs, only: GFS_control_type
implicit none
@@ -400,7 +395,7 @@ module CCPP_typedefs
real (kind=kind_phys), pointer :: fluxswDOWN_allsky(:,:) => null() !< RRTMGP downward shortwave all-sky flux profile
real (kind=kind_phys), pointer :: fluxswUP_clrsky(:,:) => null() !< RRTMGP upward shortwave clr-sky flux profile
real (kind=kind_phys), pointer :: fluxswDOWN_clrsky(:,:) => null() !< RRTMGP downward shortwave clr-sky flux profile
- real (kind=kind_phys), pointer :: sfc_emiss_byband(:,:) => null() !<
+ real (kind=kind_phys), pointer :: sfc_emiss_byband(:,:) => null() !<
real (kind=kind_phys), pointer :: sec_diff_byband(:,:) => null() !<
real (kind=kind_phys), pointer :: sfc_alb_nir_dir(:,:) => null() !<
real (kind=kind_phys), pointer :: sfc_alb_nir_dif(:,:) => null() !<
@@ -410,26 +405,12 @@ module CCPP_typedefs
real (kind=kind_phys), pointer :: toa_src_sw(:,:) => null() !<
type(proflw_type), pointer :: flxprf_lw(:,:) => null() !< DDT containing RRTMGP longwave fluxes
type(profsw_type), pointer :: flxprf_sw(:,:) => null() !< DDT containing RRTMGP shortwave fluxes
- 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_2str) :: lw_optical_props_cnvcloudsByBand !< RRTMGP DDT
- type(ty_optical_props_2str) :: lw_optical_props_cnvclouds !< RRTMGP DDT
- type(ty_optical_props_2str) :: lw_optical_props_MYNNcloudsByBand !< 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
- type(ty_optical_props_2str) :: sw_optical_props_clouds !< RRTMGP DDT
- type(ty_optical_props_2str) :: sw_optical_props_precipByBand !< RRTMGP DDT
- type(ty_optical_props_2str) :: sw_optical_props_precip !< RRTMGP DDT
- type(ty_optical_props_2str) :: sw_optical_props_clrsky !< RRTMGP DDT
- type(ty_optical_props_2str) :: sw_optical_props_aerosol !< RRTMGP DDT
- type(ty_optical_props_2str) :: sw_optical_props_cnvcloudsByBand !< RRTMGP DDT
- type(ty_optical_props_2str) :: sw_optical_props_cnvclouds !< RRTMGP DDT
- type(ty_optical_props_2str) :: sw_optical_props_MYNNcloudsByBand !< RRTMGP DDT
- type(ty_gas_concs) :: gas_concentrations !< RRTMGP DDT
- type(ty_source_func_lw) :: sources !< RRTMGP DDT
+ real (kind=kind_phys), pointer :: vmr_o2(:,:) => null() !<
+ real (kind=kind_phys), pointer :: vmr_h2o(:,:) => null() !<
+ real (kind=kind_phys), pointer :: vmr_o3(:,:) => null() !<
+ real (kind=kind_phys), pointer :: vmr_ch4(:,:) => null() !<
+ real (kind=kind_phys), pointer :: vmr_n2o(:,:) => null() !<
+ real (kind=kind_phys), pointer :: vmr_co2(:,:) => null() !<
!-- GSL drag suite
real (kind=kind_phys), pointer :: varss(:) => null() !<
@@ -808,104 +789,13 @@ subroutine gfs_interstitial_create (Interstitial, IM, Model)
allocate (Interstitial%sfc_alb_uvvis_dif (Model%rrtmgp_nBandsSW,IM))
allocate (Interstitial%toa_src_sw (IM,Model%rrtmgp_nGptsSW))
allocate (Interstitial%toa_src_lw (IM,Model%rrtmgp_nGptsLW))
- !
- ! gas_concentrations (ty_gas_concs)
- !
- Interstitial%gas_concentrations%ncol = IM
- Interstitial%gas_concentrations%nlay = Model%levs
- allocate(Interstitial%gas_concentrations%gas_name(Model%nGases))
- allocate(Interstitial%gas_concentrations%concs(Model%nGases))
- do iGas=1,Model%nGases
- allocate(Interstitial%gas_concentrations%concs(iGas)%conc(IM, Model%levs))
- enddo
- !
- ! lw_optical_props_clrsky (ty_optical_props_1scl)
- !
- allocate(Interstitial%lw_optical_props_clrsky%tau( IM, Model%levs, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%lw_optical_props_clrsky%band2gpt (2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_clrsky%band_lims_wvn(2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_clrsky%gpt2band( Model%rrtmgp_nGptsLW ))
- !
- ! lw_optical_props_aerosol (ty_optical_props_1scl)
- !
- allocate(Interstitial%lw_optical_props_aerosol%tau( IM, Model%levs, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_aerosol%band2gpt (2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_aerosol%band_lims_wvn(2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_aerosol%gpt2band( Model%rrtmgp_nBandsLW ))
- !
- ! lw_optical_props_cloudsByBand (ty_optical_props_2str)
- !
- allocate(Interstitial%lw_optical_props_cloudsByBand%tau(IM, Model%levs, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_cloudsByBand%ssa(IM, Model%levs, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_cloudsByBand%g( IM, Model%levs, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_cloudsByBand%band2gpt (2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_cloudsByBand%band_lims_wvn(2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_cloudsByBand%gpt2band( Model%rrtmgp_nBandsLW ))
- !
- ! lw_optical_props_cnvcloudsByBand (ty_optical_props_2str)
- !
- allocate(Interstitial%lw_optical_props_cnvcloudsByBand%tau(IM, Model%levs, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_cnvcloudsByBand%ssa(IM, Model%levs, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_cnvcloudsByBand%g( IM, Model%levs, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_cnvcloudsByBand%band2gpt (2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_cnvcloudsByBand%band_lims_wvn(2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_cnvcloudsByBand%gpt2band( Model%rrtmgp_nBandsLW ))
- !
- ! lw_optical_props_MYNNcloudsByBand (ty_optical_props_2str)
- !
- allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%tau(IM, Model%levs, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%ssa(IM, Model%levs, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%g( IM, Model%levs, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%band2gpt (2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%band_lims_wvn(2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_MYNNcloudsByBand%gpt2band( Model%rrtmgp_nBandsLW ))
- !
- ! lw_optical_props_precipByBand (ty_optical_props_2str)
- !
- allocate(Interstitial%lw_optical_props_precipByBand%tau(IM, Model%levs, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_precipByBand%ssa(IM, Model%levs, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_precipByBand%g( IM, Model%levs, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_precipByBand%band2gpt (2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_precipByBand%band_lims_wvn(2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_precipByBand%gpt2band( Model%rrtmgp_nBandsLW ))
- !
- ! lw_optical_props_clouds (ty_optical_props_2str)
- !
- allocate(Interstitial%lw_optical_props_clouds%tau( IM, Model%levs, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%lw_optical_props_clouds%ssa( IM, Model%levs, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%lw_optical_props_clouds%g( IM, Model%levs, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%lw_optical_props_clouds%band2gpt (2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_clouds%band_lims_wvn(2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_clouds%gpt2band( Model%rrtmgp_nGptsLW ))
- !
- ! lw_optical_props_cnvclouds (ty_optical_props_2str)
- !
- allocate(Interstitial%lw_optical_props_cnvclouds%tau( IM, Model%levs, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%lw_optical_props_cnvclouds%ssa( IM, Model%levs, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%lw_optical_props_cnvclouds%g( IM, Model%levs, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%lw_optical_props_cnvclouds%band2gpt (2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_cnvclouds%band_lims_wvn(2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_cnvclouds%gpt2band( Model%rrtmgp_nGptsLW ))
- !
- ! lw_optical_props_precip (ty_optical_props_2str)
- !
- allocate(Interstitial%lw_optical_props_precip%tau( IM, Model%levs, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%lw_optical_props_precip%ssa( IM, Model%levs, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%lw_optical_props_precip%g( IM, Model%levs, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%lw_optical_props_precip%band2gpt (2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_precip%band_lims_wvn(2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%lw_optical_props_precip%gpt2band( Model%rrtmgp_nGptsLW ))
- !
- ! sources (ty_source_func_lw)
- !
- allocate(Interstitial%sources%sfc_source( IM, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%sources%lay_source( IM, Model%levs, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%sources%lev_source_inc( IM, Model%levs, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%sources%lev_source_dec( IM, Model%levs, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%sources%sfc_source_Jac( IM, Model%rrtmgp_nGptsLW ))
- allocate(Interstitial%sources%band2gpt ( 2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%sources%band_lims_wvn ( 2, Model%rrtmgp_nBandsLW ))
- allocate(Interstitial%sources%gpt2band( Model%rrtmgp_nGptsLW ))
+ allocate (Interstitial%vmr_o2 (IM, Model%levs))
+ allocate (Interstitial%vmr_h2o (IM, Model%levs))
+ allocate (Interstitial%vmr_o3 (IM, Model%levs))
+ allocate (Interstitial%vmr_ch4 (IM, Model%levs))
+ allocate (Interstitial%vmr_n2o (IM, Model%levs))
+ allocate (Interstitial%vmr_co2 (IM, Model%levs))
+
end if
! UGWP common
@@ -1302,45 +1192,20 @@ subroutine gfs_interstitial_rad_reset (Interstitial, Model)
Interstitial%sfc_alb_uvvis_dif = clear_val
Interstitial%toa_src_sw = clear_val
Interstitial%toa_src_lw = clear_val
- do iGas=1,Model%nGases
- Interstitial%gas_concentrations%concs(iGas)%conc = clear_val
- end do
- Interstitial%lw_optical_props_clrsky%tau = clear_val
- Interstitial%lw_optical_props_aerosol%tau = clear_val
- Interstitial%lw_optical_props_clouds%tau = clear_val
- Interstitial%lw_optical_props_clouds%ssa = clear_val
- Interstitial%lw_optical_props_clouds%g = clear_val
- Interstitial%lw_optical_props_precip%tau = clear_val
- Interstitial%lw_optical_props_precip%ssa = clear_val
- Interstitial%lw_optical_props_precip%g = clear_val
- Interstitial%lw_optical_props_cloudsByBand%tau = clear_val
- Interstitial%lw_optical_props_cloudsByBand%ssa = clear_val
- Interstitial%lw_optical_props_cloudsByBand%g = clear_val
- Interstitial%lw_optical_props_precipByBand%tau = clear_val
- Interstitial%lw_optical_props_precipByBand%ssa = clear_val
- Interstitial%lw_optical_props_precipByBand%g = clear_val
- Interstitial%lw_optical_props_cnvcloudsByBand%tau = clear_val
- Interstitial%lw_optical_props_cnvcloudsByBand%ssa = clear_val
- Interstitial%lw_optical_props_cnvcloudsByBand%g = clear_val
- Interstitial%lw_optical_props_MYNNcloudsByBand%tau = clear_val
- Interstitial%lw_optical_props_MYNNcloudsByBand%ssa = clear_val
- Interstitial%lw_optical_props_MYNNcloudsByBand%g = clear_val
- Interstitial%lw_optical_props_cnvclouds%tau = clear_val
- Interstitial%lw_optical_props_cnvclouds%ssa = clear_val
- Interstitial%lw_optical_props_cnvclouds%g = clear_val
- Interstitial%sources%sfc_source = clear_val
- Interstitial%sources%lay_source = clear_val
- Interstitial%sources%lev_source_inc = clear_val
- Interstitial%sources%lev_source_dec = clear_val
- Interstitial%sources%sfc_source_Jac = clear_val
- Interstitial%flxprf_lw%upfxc = clear_val
- Interstitial%flxprf_lw%dnfxc = clear_val
- Interstitial%flxprf_lw%upfx0 = clear_val
- Interstitial%flxprf_lw%dnfx0 = clear_val
- Interstitial%flxprf_sw%upfxc = clear_val
- Interstitial%flxprf_sw%dnfxc = clear_val
- Interstitial%flxprf_sw%upfx0 = clear_val
- Interstitial%flxprf_sw%dnfx0 = clear_val
+ Interstitial%vmr_o2 = clear_val
+ Interstitial%vmr_h2o = clear_val
+ Interstitial%vmr_o3 = clear_val
+ Interstitial%vmr_ch4 = clear_val
+ Interstitial%vmr_n2o = clear_val
+ Interstitial%vmr_co2 = clear_val
+ Interstitial%flxprf_lw%upfxc = clear_val
+ Interstitial%flxprf_lw%dnfxc = clear_val
+ Interstitial%flxprf_lw%upfx0 = clear_val
+ Interstitial%flxprf_lw%dnfx0 = clear_val
+ Interstitial%flxprf_sw%upfxc = clear_val
+ Interstitial%flxprf_sw%dnfxc = clear_val
+ Interstitial%flxprf_sw%upfx0 = clear_val
+ Interstitial%flxprf_sw%dnfx0 = clear_val
end if
!
end subroutine gfs_interstitial_rad_reset
diff --git a/ccpp/data/CCPP_typedefs.meta b/ccpp/data/CCPP_typedefs.meta
index 40955a8ad..c5e7fb5be 100644
--- a/ccpp/data/CCPP_typedefs.meta
+++ b/ccpp/data/CCPP_typedefs.meta
@@ -2755,145 +2755,53 @@
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
-[sw_optical_props_clrsky]
- standard_name = shortwave_optical_properties_for_clear_sky
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_2str
- active = (flag_for_rrtmgp_radiation_scheme)
-[sw_optical_props_cloudsByBand]
- standard_name = shortwave_optical_properties_for_cloudy_atmosphere_by_band
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_2str
- active = (flag_for_rrtmgp_radiation_scheme)
-[sw_optical_props_cnvcloudsByBand]
- standard_name = shortwave_optical_properties_for_convective_cloudy_atmosphere_by_band
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_2str
-[sw_optical_props_MYNNcloudsByBand]
- standard_name = shortwave_optical_properties_for_MYNN_EDMF_PBL_cloudy_atmosphere_by_band
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_2str
- active = (flag_for_rrtmgp_radiation_scheme)
-[sw_optical_props_cnvclouds]
- standard_name = shortwave_optical_properties_for_convective_cloudy_atmosphere
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_2str
- active = (flag_for_rrtmgp_radiation_scheme)
- active = (flag_for_rrtmgp_radiation_scheme)
-[sw_optical_props_precipByBand]
- standard_name = shortwave_optical_properties_for_precipitation_by_band
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_2str
- active = (flag_for_rrtmgp_radiation_scheme)
-[sw_optical_props_precip]
- standard_name = shortwave_optical_properties_for_precipitation
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_2str
- active = (flag_for_rrtmgp_radiation_scheme)
-[sw_optical_props_clouds]
- standard_name = shortwave_optical_properties_for_cloudy_atmosphere
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_2str
- active = (flag_for_rrtmgp_radiation_scheme)
-[sw_optical_props_aerosol]
- standard_name = shortwave_optical_properties_for_aerosols
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_2str
- active = (flag_for_rrtmgp_radiation_scheme)
-[gas_concentrations]
- standard_name = Gas_concentrations_for_RRTMGP_suite
- long_name = DDT containing gas concentrations for RRTMGP radiation scheme
- units = DDT
- dimensions = ()
- type = ty_gas_concs
- active = (flag_for_rrtmgp_radiation_scheme)
-[sources]
- standard_name = longwave_source_function
- long_name = Fortran DDT containing RRTMGP source functions
- units = DDT
- dimensions = ()
- type = ty_source_func_lw
- active = (flag_for_rrtmgp_radiation_scheme)
-[lw_optical_props_clrsky]
- standard_name = longwave_optical_properties_for_clear_sky
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_1scl
- active = (flag_for_rrtmgp_radiation_scheme)
-[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_2str
- active = (flag_for_rrtmgp_radiation_scheme)
-[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_2str
- active = (flag_for_rrtmgp_radiation_scheme)
-[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_2str
+[vmr_o2]
+ standard_name = volume_mixing_ratio_for_o2
+ long_name = molar mixing ratio of o2 in with respect to dry air
+ units = 1
+ dimensions = (horizontal_loop_extent,vertical_layer_dimension)
+ type = real
+ kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
-[lw_optical_props_cnvcloudsByBand]
- standard_name = longwave_optical_properties_for_convective_cloudy_atmosphere_by_band
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_2str
+[vmr_h2o]
+ standard_name = volume_mixing_ratio_for_h2o
+ long_name = molar mixing ratio of h2o in with respect to dry air
+ units = 1
+ dimensions = (horizontal_loop_extent,vertical_layer_dimension)
+ type = real
+ kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
-[lw_optical_props_MYNNcloudsByBand]
- standard_name = longwave_optical_properties_for_MYNN_EDMF_PBL_cloudy_atmosphere_by_band
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_2str
+[vmr_o3]
+ standard_name = volume_mixing_ratio_for_o3
+ long_name = molar mixing ratio of o3 in with respect to dry air
+ units = 1
+ dimensions = (horizontal_loop_extent,vertical_layer_dimension)
+ type = real
+ kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
-[lw_optical_props_cnvclouds]
- standard_name = longwave_optical_properties_for_convective_cloudy_atmosphere
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_2str
+[vmr_ch4]
+ standard_name = volume_mixing_ratio_for_ch4
+ long_name = molar mixing ratio of ch4 in with respect to dry air
+ units = 1
+ dimensions = (horizontal_loop_extent,vertical_layer_dimension)
+ type = real
+ kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
-[lw_optical_props_precipByBand]
- standard_name = longwave_optical_properties_for_precipitation_by_band
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_2str
+[vmr_n2o]
+ standard_name = volume_mixing_ratio_for_n2o
+ long_name = molar mixing ratio of n2o in with respect to dry air
+ units = 1
+ dimensions = (horizontal_loop_extent,vertical_layer_dimension)
+ type = real
+ kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
-[lw_optical_props_aerosol]
- standard_name = longwave_optical_properties_for_aerosols
- long_name = Fortran DDT containing RRTMGP optical properties
- units = DDT
- dimensions = ()
- type = ty_optical_props_1scl
+[vmr_co2]
+ standard_name = volume_mixing_ratio_for_co2
+ long_name = molar mixing ratio of co2 in with respect to dry air
+ units = 1
+ dimensions = (horizontal_loop_extent,vertical_layer_dimension)
+ type = real
+ kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[sfc_emiss_byband]
standard_name = surface_emissivity_in_each_RRTMGP_LW_band
diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90
index 48f28f826..38df00ddc 100644
--- a/ccpp/data/GFS_typedefs.F90
+++ b/ccpp/data/GFS_typedefs.F90
@@ -815,9 +815,11 @@ module GFS_typedefs
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
- logical :: doGP_sgs_cnv !< If true, include explicit SubGridScale convective cloud in RRTMGP
- logical :: doGP_sgs_mynn !< If true, include explicit SubGridScale MYNN-EDMF cloud in RRTMGP
- logical :: doGP_smearclds !< If true, include implicit SubGridScale clouds in RRTMGP
+ logical :: doGP_sgs_cnv !< If true, include SubGridScale convective cloud in RRTMGP
+ logical :: doGP_sgs_mynn !< If true, include SubGridScale MYNN-EDMF cloud in RRTMGP
+ integer :: rrtmgp_lw_phys_blksz !< Number of columns to pass to RRTMGP LW per block.
+ integer :: rrtmgp_sw_phys_blksz !< Number of columns to pass to RRTMGP SW per block.
+ logical :: doGP_smearclds !< If true, include implicit SubGridScale clouds in RRTMGP
real(kind_phys) :: minGPpres !< Minimum pressure allowed in RRTMGP.
real(kind_phys) :: maxGPpres !< Maximum pressure allowed in RRTMGP.
real(kind_phys) :: minGPtemp !< Minimum temperature allowed in RRTMGP.
@@ -3099,6 +3101,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
logical :: doGP_lwscat = .false. !< If true, include scattering in longwave cloud-optics, only compatible w/ GP cloud-optics
logical :: doGP_sgs_cnv = .false. !< If true, include SubGridScale convective cloud in RRTMGP
logical :: doGP_sgs_mynn = .false. !< If true, include SubGridScale MYNN-EDMF cloud in RRTMGP
+ integer :: rrtmgp_lw_phys_blksz= 1 !< Number of columns for RRTMGP LW scheme to process at each instance.
+ integer :: rrtmgp_sw_phys_blksz= 1 !< Number of columns for RRTMGP SW scheme to process at each instance.
logical :: doGP_smearclds = .true. !< If true, include implicit SubGridScale clouds in RRTMGP
!--- Z-C microphysical parameters
integer :: imp_physics = 99 !< choice of cloud scheme
@@ -3561,6 +3565,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
rrtmgp_nrghice, rrtmgp_nGauss_ang, do_GPsw_Glw, &
use_LW_jacobian, doGP_lwscat, damp_LW_fluxadj, lfnc_k, &
lfnc_p0, iovr_convcld, doGP_sgs_cnv, doGP_sgs_mynn, &
+ rrtmgp_lw_phys_blksz, rrtmgp_sw_phys_blksz, &
! IN CCN forcing
iccn, mraerosol, &
!--- microphysical parameterizations
@@ -4048,6 +4053,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
Model%doGP_lwscat = doGP_lwscat
Model%doGP_sgs_cnv = doGP_sgs_cnv
Model%doGP_sgs_mynn = doGP_sgs_mynn
+ Model%rrtmgp_lw_phys_blksz = rrtmgp_lw_phys_blksz
+ Model%rrtmgp_sw_phys_blksz = rrtmgp_sw_phys_blksz
if (Model%do_RRTMGP) then
! RRTMGP incompatible with levr /= levs
if (Model%levr /= Model%levs) then
@@ -5957,6 +5964,8 @@ subroutine control_print(Model)
print *, ' doGP_sgs_mynn : ', Model%doGP_sgs_cnv
print *, ' doGP_smearclds : ', Model%doGP_smearclds
print *, ' iovr_convcld : ', Model%iovr_convcld
+ print *, ' rrtmgp_sw_phys_blksz : ', Model%rrtmgp_sw_phys_blksz
+ print *, ' rrtmgp_lw_phys_blksz : ', Model%rrtmgp_lw_phys_blksz
endif
print *, ' '
print *, 'microphysical switch'
diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta
index cf4ea93b4..439d37cc8 100644
--- a/ccpp/data/GFS_typedefs.meta
+++ b/ccpp/data/GFS_typedefs.meta
@@ -3542,6 +3542,18 @@
units = flag
dimensions = ()
type = logical
+[rrtmgp_lw_phys_blksz]
+ standard_name = number_of_columns_per_RRTMGP_LW_block
+ long_name = number of columns to process at a time by RRTMGP LW scheme
+ units = count
+ dimensions = ()
+ type = integer
+[rrtmgp_sw_phys_blksz]
+ standard_name = number_of_columns_per_RRTMGP_SW_block
+ long_name = number of columns to process at a time by RRTMGP SW scheme
+ units = count
+ dimensions = ()
+ type = integer
[doGP_smearclds]
standard_name = flag_for_implicit_sgs_cloud_in_RRTMGP
long_name = logical flag to impicit SGS cloud in RRTMGP
diff --git a/ccpp/physics b/ccpp/physics
index 14b56d46b..fb0a90fc5 160000
--- a/ccpp/physics
+++ b/ccpp/physics
@@ -1 +1 @@
-Subproject commit 14b56d46b5738f6b56cb7a8af17b360e0e5a5d43
+Subproject commit fb0a90fc54cc9ce9e31e085953ed9971c4282e25
diff --git a/ccpp/suites/suite_FV3_GFS_v17_p8_rrtmgp.xml b/ccpp/suites/suite_FV3_GFS_v17_p8_rrtmgp.xml
index 8b87043f4..3b3acef6d 100644
--- a/ccpp/suites/suite_FV3_GFS_v17_p8_rrtmgp.xml
+++ b/ccpp/suites/suite_FV3_GFS_v17_p8_rrtmgp.xml
@@ -18,19 +18,10 @@
GFS_rrtmgp_cloud_mp
GFS_rrtmgp_cloud_overlap
GFS_cloud_diagnostics
- rad_sw_pre
rrtmgp_aerosol_optics
- rrtmgp_sw_gas_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_cloud_optics
- rrtmgp_lw_cloud_sampling
- rrtmgp_lw_rte
- GFS_rrtmgp_lw_post
+ rrtmgp_sw_main
+ rrtmgp_lw_main
+ GFS_rrtmgp_post
diff --git a/ccpp/suites/suite_FV3_RAP_RRTMGP.xml b/ccpp/suites/suite_FV3_RAP_RRTMGP.xml
deleted file mode 100644
index 9377033cc..000000000
--- a/ccpp/suites/suite_FV3_RAP_RRTMGP.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
-
-
-
-
- GFS_time_vary_pre
- GFS_rrtmgp_setup
- GFS_rad_time_vary
- GFS_phys_time_vary
-
-
-
-
- GFS_suite_interstitial_rad_reset
- GFS_rrtmgp_pre
- GFS_radiation_surface
- GFS_rrtmgp_cloud_mp
- GFS_rrtmgp_cloud_overlap
- GFS_cloud_diagnostics
- rad_sw_pre
- rrtmgp_aerosol_optics
- rrtmgp_sw_gas_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_cloud_optics
- rrtmgp_lw_cloud_sampling
- rrtmgp_lw_rte
- 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
-
-
-
- mynnsfc_wrapper
- GFS_surface_loop_control_part1
- sfc_nst_pre
- sfc_nst
- sfc_nst_post
- lsm_ruc
- GFS_surface_loop_control_part2
-
-
-
- GFS_surface_composites_post
- sfc_diag
- sfc_diag_post
- GFS_surface_generic_post
- mynnedmf_wrapper
- GFS_GWD_generic_pre
- drag_suite
- GFS_GWD_generic_post
- 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
- phys_tend
-
-
-
-
- GFS_stochastics
-
-
-
-