diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py
index c57fd56b2..a96b067ac 100755
--- a/ccpp/config/ccpp_prebuild_config.py
+++ b/ccpp/config/ccpp_prebuild_config.py
@@ -20,8 +20,8 @@
'physics/physics/radsw_param.f',
'physics/physics/radlw_param.f',
'physics/physics/h2o_def.f',
- 'physics/physics/ozne_def.f',
'physics/physics/radiation_surface.f',
+ 'physics/physics/module_ozphys.F90',
'data/CCPP_typedefs.F90',
'data/GFS_typedefs.F90',
'data/CCPP_data.F90',
@@ -41,6 +41,10 @@
'module_radlw_parameters' : {
'module_radlw_parameters' : '',
},
+ 'module_ozphys' : {
+ 'module_ozphys' : '',
+ 'ty_ozphys' : '',
+ },
'CCPP_typedefs' : {
'GFS_interstitial_type' : 'GFS_Interstitial(cdata%thrd_no)',
'GFDL_interstitial_type' : 'GFDL_interstitial',
@@ -105,6 +109,7 @@
'physics/physics/GFS_surface_loop_control_part1.F90',
'physics/physics/GFS_surface_loop_control_part2.F90',
'physics/physics/GFS_time_vary_pre.fv3.F90',
+ 'physics/physics/GFS_physics_post.F90',
'physics/physics/cires_ugwp.F90',
'physics/physics/cires_ugwp_post.F90',
'physics/physics/unified_ugwp.F90',
@@ -162,11 +167,8 @@
'physics/physics/mp_thompson_pre.F90',
'physics/physics/mp_thompson.F90',
'physics/physics/mp_thompson_post.F90',
- 'physics/physics/mp_nssl.F90' ,
- 'physics/physics/ozphys.f',
- 'physics/physics/ozphys_2015.f',
+ 'physics/physics/mp_nssl.F90',
'physics/physics/zhaocarr_precpd.f',
- 'physics/physics/phys_tend.F90',
'physics/physics/radlw_main.F90',
'physics/physics/radsw_main.F90',
'physics/physics/rascnv.F90',
diff --git a/ccpp/data/CCPP_typedefs.F90 b/ccpp/data/CCPP_typedefs.F90
index ed27c5e37..63b7f102b 100644
--- a/ccpp/data/CCPP_typedefs.F90
+++ b/ccpp/data/CCPP_typedefs.F90
@@ -8,7 +8,6 @@ module CCPP_typedefs
use machine, only: kind_grid, kind_dyn, kind_phys
! Constants/dimensions needed for interstitial DDTs
- use ozne_def, only: oz_coeff
use GFS_typedefs, only: clear_val, LTP
! Physics type defininitions needed for interstitial DDTs
@@ -881,7 +880,7 @@ subroutine gfs_interstitial_create (Interstitial, IM, Model)
Interstitial%nf_albd = NF_ALBD
Interstitial%nspc1 = NSPC1
if (Model%oz_phys .or. Model%oz_phys_2015) then
- Interstitial%oz_coeffp5 = oz_coeff+5
+ Interstitial%oz_coeffp5 = Model%oz_coeff+5
else
Interstitial%oz_coeffp5 = 5
endif
diff --git a/ccpp/data/CCPP_typedefs.meta b/ccpp/data/CCPP_typedefs.meta
index 3fd32d7c9..3ecb69be7 100644
--- a/ccpp/data/CCPP_typedefs.meta
+++ b/ccpp/data/CCPP_typedefs.meta
@@ -3187,7 +3187,7 @@
name = CCPP_typedefs
type = module
relative_path = ../physics/physics
- dependencies = machine.F,ozne_def.f,radlw_param.f,radsw_param.f
+ dependencies = machine.F,radlw_param.f,radsw_param.f
dependencies = rte-rrtmgp/rrtmgp/mo_gas_optics_rrtmgp.F90,rte-rrtmgp/rte/mo_optical_props.F90
dependencies = rte-rrtmgp/extensions/cloud_optics/mo_cloud_optics.F90
dependencies = rte-rrtmgp/rrtmgp/mo_gas_concentrations.F90,rte-rrtmgp/rte/mo_rte_config.F90
diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90
index bfb6af571..9f4d717f6 100644
--- a/ccpp/data/GFS_typedefs.F90
+++ b/ccpp/data/GFS_typedefs.F90
@@ -9,12 +9,12 @@ module GFS_typedefs
con_csol, con_epsqs, con_rocp, con_rog, &
con_omega, con_rerth, con_psat, karman, rainmin,&
con_c, con_plnk, con_boltz, con_solr_2008, &
- con_solr_2002, con_thgni
+ con_solr_2002, con_thgni, con_1ovg
use module_radsw_parameters, only: topfsw_type, sfcfsw_type
use module_radlw_parameters, only: topflw_type, sfcflw_type
- use ozne_def, only: levozp, oz_coeff
use h2o_def, only: levh2o, h2o_coeff
+ use module_ozphys, only: ty_ozphys
implicit none
@@ -1113,8 +1113,6 @@ module GFS_typedefs
logical :: shocaftcnv !< flag for SHOC
logical :: shoc_cld !< flag for clouds
logical :: uni_cld !< flag for clouds in grrad
- logical :: oz_phys !< flag for old (2006) ozone physics
- logical :: oz_phys_2015 !< flag for new (2015) ozone physics
logical :: h2o_phys !< flag for stratosphere h2o
logical :: pdfcld !< flag for pdfcld
logical :: shcnvcw !< flag for shallow convective cloud
@@ -1567,6 +1565,13 @@ module GFS_typedefs
!--- lightning threat and diagsnostics
logical :: lightning_threat !< report lightning threat indices
+!--- NRL Ozone physics
+ logical :: oz_phys !< Flag for old (2006) ozone physics
+ logical :: oz_phys_2015 !< Flag for new (2015) ozone physics
+ type(ty_ozphys) :: ozphys !< DDT with data needed by ozone physics
+ integer :: levozp !< Number of vertical layers in ozone forcing data
+ integer :: oz_coeff !< Number of coefficients in ozone forcing data
+
contains
procedure :: init => control_initialize
procedure :: init_chemistry => control_chemistry_initialize
@@ -1790,7 +1795,7 @@ module GFS_typedefs
!--- In/Out (???) (physics only)
real (kind=kind_phys), pointer :: swhc (:,:) => null() !< clear sky sw heating rates ( k/s )
real (kind=kind_phys), pointer :: lwhc (:,:) => null() !< clear sky lw heating rates ( k/s )
- real (kind=kind_phys), pointer :: lwhd (:,:,:) => null() !< idea sky lw heating rates ( k/s )
+ real (kind=kind_phys), pointer :: lwhd (:,:,:) => null() !< idea sky lw heating rates ( k/s ) !DJS2023 THIS IS NOT USED. IT IS REFERENCED, BUT NEVER SET?
contains
procedure :: create => radtend_create !< allocate array data
@@ -2098,6 +2103,12 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: ltg2_max(:) => null() !
real (kind=kind_phys), pointer :: ltg3_max(:) => null() !
+ !--- NRL Ozone physics diagnostics
+ real (kind=kind_phys), pointer :: do3_dt_prd(:,:) => null()
+ real (kind=kind_phys), pointer :: do3_dt_ozmx(:,:) => null()
+ real (kind=kind_phys), pointer :: do3_dt_temp(:,:) => null()
+ real (kind=kind_phys), pointer :: do3_dt_ohoz(:,:) => null()
+
contains
procedure :: create => diag_create
procedure :: rad_zero => diag_rad_zero
@@ -3549,8 +3560,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
logical :: do_shoc = .false. !< flag for SHOC
logical :: shocaftcnv = .false. !< flag for SHOC
logical :: shoc_cld = .false. !< flag for SHOC in grrad
- logical :: oz_phys = .true. !< flag for old (2006) ozone physics
- logical :: oz_phys_2015 = .false. !< flag for new (2015) ozone physics
logical :: h2o_phys = .false. !< flag for stratosphere h2o
logical :: pdfcld = .false. !< flag for pdfcld
logical :: shcnvcw = .false. !< flag for shallow convective cloud
@@ -3833,6 +3842,12 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
!-- Lightning threat index
logical :: lightning_threat = .false.
+!--- NRL Ozone physics
+ logical :: oz_phys = .false. !< Flag for old (2006) ozone physics
+ logical :: oz_phys_2015 = .true. !< Flag for new (2015) ozone physics
+ integer :: kozpl = 28 !< File identifier for ozone forcing data
+ integer :: kozc = 48 !< File identifier for ozone climotology data
+
!--- aerosol scavenging factors
integer, parameter :: max_scav_factors = 183
character(len=40) :: fscav_aero(max_scav_factors)
@@ -4007,6 +4022,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
character(len=20) :: namestr
character(len=44) :: descstr
+!--- NRL ozone physics
+ character(len=128) :: err_message
+
! dtend selection: default is to match all variables:
dtend_select(1)='*'
do ipat=2,pat_count
@@ -5391,29 +5409,23 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
ENDIF !}
- ! To ensure that these values match what's in the physics,
- ! array sizes are compared during model init in GFS_phys_time_vary_init()
- !
- ! from module ozinterp
- if (Model%ntoz>0) then
- if (Model%oz_phys) then
- levozp = 80
- oz_coeff = 4
- else if (Model%oz_phys_2015) then
- levozp = 53
- oz_coeff = 6
- else
- write(*,*) 'Logic error, ntoz>0 but no ozone physics selected'
- stop
- end if
+ !--- NRL ozone physics
+ if (Model%ntoz > 0) then
+ ! Load data for ozone physics into DDT ozphys
+ err_message = Model%ozphys%load_o3prog('global_o3prdlos.f77',kozpl)
+ Model%levozp = Model%ozphys%nlev
+ Model%oz_coeff = Model%ozphys%ncf
+
+ if (Model%me == Model%master) then
+ write(*,*) 'Reading in o3data from global_o3prdlos.f77 '
+ write(*,*) ' oz_coeff = ', Model%ozphys%ncf
+ write(*,*) ' latsozp = ', Model%ozphys%nlat
+ write(*,*) ' levozp = ', Model%ozphys%nlev
+ write(*,*) ' timeoz = ', Model%ozphys%ntime
+ endif
else
- if (Model%oz_phys .or. Model%oz_phys_2015) then
- write(*,*) 'Logic error, ozone physics are selected, but ntoz<=0'
- stop
- else
- levozp = 1
- oz_coeff = 1
- end if
+ !--- Climatological ozone
+ err_message = Model%ozphys%load_o3clim('global_o3prdlos.f77',kozc)
end if
!--- quantities to be used to derive phy_f*d totals
@@ -6941,10 +6953,10 @@ subroutine tbd_create (Tbd, IM, Model)
endif
!--- ozone and stratosphere h2o needs
- allocate (Tbd%ozpl (IM,levozp,oz_coeff))
+ allocate (Tbd%ozpl (IM,Model%levozp,Model%oz_coeff))
allocate (Tbd%h2opl (IM,levh2o,h2o_coeff))
- Tbd%ozpl = clear_val
Tbd%h2opl = clear_val
+ Tbd%ozpl = clear_val
!--- ccn and in needs
! DH* allocate only for MG? *DH
@@ -7559,6 +7571,12 @@ subroutine diag_create (Diag, IM, Model)
allocate (Diag%dwn_mf (IM,Model%levs))
allocate (Diag%det_mf (IM,Model%levs))
endif
+ if (Model%oz_phys_2015) then
+ allocate(Diag%do3_dt_prd( IM, Model%levs))
+ allocate(Diag%do3_dt_ozmx(IM, Model%levs))
+ allocate(Diag%do3_dt_temp(IM, Model%levs))
+ allocate(Diag%do3_dt_ohoz(IM, Model%levs))
+ endif
endif
! UGWP
@@ -7897,6 +7915,12 @@ subroutine diag_phys_zero (Diag, Model, linit, iauwindow_center)
Diag%dwn_mf = zero
Diag%det_mf = zero
endif
+ if (Model%oz_phys_2015) then
+ Diag%do3_dt_prd = zero
+ Diag%do3_dt_ozmx = zero
+ Diag%do3_dt_temp = zero
+ Diag%do3_dt_ohoz = zero
+ endif
endif
!
diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta
index 4f3a757b8..e31731735 100644
--- a/ccpp/data/GFS_typedefs.meta
+++ b/ccpp/data/GFS_typedefs.meta
@@ -5053,6 +5053,12 @@
units = flag
dimensions = ()
type = logical
+[ozphys]
+ standard_name = dataset_for_ozone_physics
+ long_name = dataset for NRL ozone physics
+ units = mixed
+ dimensions = ()
+ type = ty_ozphys
[h2o_phys]
standard_name = flag_for_stratospheric_water_vapor_physics
long_name = flag for stratospheric water vapor physics
@@ -6651,6 +6657,18 @@
units = flag
dimensions = ()
type = logical
+[levozp]
+ standard_name = vertical_dimension_of_ozone_forcing_data
+ long_name = number of vertical layers in ozone forcing data
+ units = count
+ dimensions = ()
+ type = integer
+[oz_coeff]
+ standard_name = number_of_coefficients_in_ozone_data
+ long_name = number of coefficients in ozone forcing data
+ units = count
+ dimensions = ()
+ type = integer
[ipt]
standard_name = index_of_horizontal_gridpoint_for_debug_output
long_name = horizontal index for point used for diagnostic printout
@@ -7410,7 +7428,7 @@
standard_name = ozone_forcing
long_name = ozone forcing data
units = mixed
- dimensions = (horizontal_loop_extent,vertical_dimension_of_ozone_forcing_data,number_of_coefficients_in_ozone_forcing_data)
+ dimensions = (horizontal_loop_extent,vertical_dimension_of_ozone_forcing_data,number_of_coefficients_in_ozone_data)
type = real
kind = kind_phys
[h2opl]
@@ -8856,6 +8874,38 @@
type = real
kind = kind_phys
active = (flag_for_tracer_diagnostics_3D)
+[do3_dt_prd]
+ standard_name = ozone_tendency_due_to_production_and_loss_rate
+ long_name = ozone tendency due to production and loss rate
+ units = kg kg-1 s-1
+ dimensions = (horizontal_loop_extent,vertical_layer_dimension)
+ type = real
+ kind = kind_phys
+ active = (flag_for_tracer_diagnostics_3D .and. flag_for_nrl_2015_ozone_scheme)
+[do3_dt_ozmx]
+ standard_name = ozone_tendency_due_to_ozone_mixing_ratio
+ long_name = ozone tendency due to ozone mixing ratio
+ units = kg kg-1 s-1
+ dimensions = (horizontal_loop_extent,vertical_layer_dimension)
+ type = real
+ kind = kind_phys
+ active = (flag_for_tracer_diagnostics_3D .and. flag_for_nrl_2015_ozone_scheme)
+[do3_dt_temp]
+ standard_name = ozone_tendency_due_to_temperature
+ long_name = ozone tendency due to temperature
+ units = kg kg-1 s-1
+ dimensions = (horizontal_loop_extent,vertical_layer_dimension)
+ type = real
+ kind = kind_phys
+ active = (flag_for_tracer_diagnostics_3D .and. flag_for_nrl_2015_ozone_scheme)
+[do3_dt_ohoz]
+ standard_name = ozone_tendency_due_to_overhead_ozone_column
+ long_name = ozone tendency due to overhead ozone column
+ units = kg kg-1 s-1
+ dimensions = (horizontal_loop_extent,vertical_layer_dimension)
+ type = real
+ kind = kind_phys
+ active = (flag_for_tracer_diagnostics_3D .and. flag_for_nrl_2015_ozone_scheme)
[refl_10cm]
standard_name = radar_reflectivity_10cm
long_name = instantaneous refl_10cm
@@ -9616,7 +9666,7 @@
type = module
relative_path = ../physics/physics
dependencies = machine.F,physcons.F90,radlw_param.f,radsw_param.f
- dependencies = GFDL_parse_tracers.F90,h2o_def.f,ozne_def.f
+ dependencies = GFDL_parse_tracers.F90,h2o_def.f,module_ozphys.F90
[ccpp-arg-table]
name = GFS_typedefs
@@ -9784,6 +9834,13 @@
dimensions = ()
type = real
kind = kind_phys
+[con_1ovg]
+ standard_name = one_divided_by_the_gravitational_acceleration
+ long_name = inverse of gravitational acceleration
+ units = s2 m-1
+ dimensions = ()
+ type = real
+ kind = kind_phys
[con_hvap]
standard_name = latent_heat_of_vaporization_of_water_at_0C
long_name = latent heat of evaporation/sublimation
diff --git a/ccpp/framework b/ccpp/framework
index 1b6352fb2..219f2e9c8 160000
--- a/ccpp/framework
+++ b/ccpp/framework
@@ -1 +1 @@
-Subproject commit 1b6352fb24f053b738bde72eed0ddf0b60ec7c0f
+Subproject commit 219f2e9c88b7b774becac2bd1453696e105af1c4
diff --git a/ccpp/physics b/ccpp/physics
index 1db569112..3855dccfe 160000
--- a/ccpp/physics
+++ b/ccpp/physics
@@ -1 +1 @@
-Subproject commit 1db569112ed60a0074028fccf7e09d3b47ce9f92
+Subproject commit 3855dccfe68750b7681adc32de2c6cf2abe689d9
diff --git a/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_lam3km.xml b/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_lam3km.xml
index 3bca27630..7886743e3 100644
--- a/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_lam3km.xml
+++ b/ccpp/suites/suite_FV3_GFS_v15_thompson_mynn_lam3km.xml
@@ -60,7 +60,6 @@
cires_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -71,7 +70,7 @@
mp_thompson_post
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v15p2.xml b/ccpp/suites/suite_FV3_GFS_v15p2.xml
index e87305c66..7b2eaac1b 100644
--- a/ccpp/suites/suite_FV3_GFS_v15p2.xml
+++ b/ccpp/suites/suite_FV3_GFS_v15p2.xml
@@ -66,7 +66,6 @@
cires_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -82,7 +81,7 @@
gfdl_cloud_microphys
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v16.xml b/ccpp/suites/suite_FV3_GFS_v16.xml
index 122b937e1..e6ae5483f 100644
--- a/ccpp/suites/suite_FV3_GFS_v16.xml
+++ b/ccpp/suites/suite_FV3_GFS_v16.xml
@@ -66,7 +66,6 @@
cires_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -82,7 +81,7 @@
gfdl_cloud_microphys
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v16_csawmg.xml b/ccpp/suites/suite_FV3_GFS_v16_csawmg.xml
index 8c32e3d76..3c41ef08d 100644
--- a/ccpp/suites/suite_FV3_GFS_v16_csawmg.xml
+++ b/ccpp/suites/suite_FV3_GFS_v16_csawmg.xml
@@ -61,7 +61,6 @@
cires_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -82,7 +81,7 @@
cs_conv_aw_adj
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v16_flake.xml b/ccpp/suites/suite_FV3_GFS_v16_flake.xml
index 12c48225f..a99756c30 100644
--- a/ccpp/suites/suite_FV3_GFS_v16_flake.xml
+++ b/ccpp/suites/suite_FV3_GFS_v16_flake.xml
@@ -67,7 +67,6 @@
cires_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -83,7 +82,7 @@
gfdl_cloud_microphys
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v16_fv3wam.xml b/ccpp/suites/suite_FV3_GFS_v16_fv3wam.xml
index d8cafbbd0..e540edc52 100644
--- a/ccpp/suites/suite_FV3_GFS_v16_fv3wam.xml
+++ b/ccpp/suites/suite_FV3_GFS_v16_fv3wam.xml
@@ -59,7 +59,6 @@
cires_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -80,7 +79,7 @@
GFS_stochastics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v16_ras.xml b/ccpp/suites/suite_FV3_GFS_v16_ras.xml
index be4aa4a13..31e1d29f3 100644
--- a/ccpp/suites/suite_FV3_GFS_v16_ras.xml
+++ b/ccpp/suites/suite_FV3_GFS_v16_ras.xml
@@ -66,7 +66,6 @@
cires_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -82,7 +81,7 @@
gfdl_cloud_microphys
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v17_coupled_p8.xml b/ccpp/suites/suite_FV3_GFS_v17_coupled_p8.xml
index 4a2cb64fc..00675097a 100644
--- a/ccpp/suites/suite_FV3_GFS_v17_coupled_p8.xml
+++ b/ccpp/suites/suite_FV3_GFS_v17_coupled_p8.xml
@@ -62,7 +62,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -89,7 +88,7 @@
GFS_stochastics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v17_coupled_p8_c3.xml b/ccpp/suites/suite_FV3_GFS_v17_coupled_p8_c3.xml
index f0a8d7d92..7daa7495a 100644
--- a/ccpp/suites/suite_FV3_GFS_v17_coupled_p8_c3.xml
+++ b/ccpp/suites/suite_FV3_GFS_v17_coupled_p8_c3.xml
@@ -62,7 +62,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -90,7 +89,7 @@
GFS_stochastics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v17_coupled_p8_sfcocn.xml b/ccpp/suites/suite_FV3_GFS_v17_coupled_p8_sfcocn.xml
index b68abf3f2..b137ed9a8 100644
--- a/ccpp/suites/suite_FV3_GFS_v17_coupled_p8_sfcocn.xml
+++ b/ccpp/suites/suite_FV3_GFS_v17_coupled_p8_sfcocn.xml
@@ -60,7 +60,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -87,7 +86,7 @@
GFS_stochastics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v17_coupled_p8_ugwpv1.xml b/ccpp/suites/suite_FV3_GFS_v17_coupled_p8_ugwpv1.xml
index e9cdb1c40..5b316a735 100644
--- a/ccpp/suites/suite_FV3_GFS_v17_coupled_p8_ugwpv1.xml
+++ b/ccpp/suites/suite_FV3_GFS_v17_coupled_p8_ugwpv1.xml
@@ -62,7 +62,6 @@
ugwpv1_gsldrag_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -89,7 +88,7 @@
GFS_stochastics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v17_p8.xml b/ccpp/suites/suite_FV3_GFS_v17_p8.xml
index c4b295a6d..37ce4d90c 100644
--- a/ccpp/suites/suite_FV3_GFS_v17_p8.xml
+++ b/ccpp/suites/suite_FV3_GFS_v17_p8.xml
@@ -61,7 +61,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -88,7 +87,7 @@
GFS_stochastics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v17_p8_c3.xml b/ccpp/suites/suite_FV3_GFS_v17_p8_c3.xml
index d93060d5a..dd79992ce 100644
--- a/ccpp/suites/suite_FV3_GFS_v17_p8_c3.xml
+++ b/ccpp/suites/suite_FV3_GFS_v17_p8_c3.xml
@@ -63,7 +63,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -91,7 +90,7 @@
GFS_stochastics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v17_p8_mynn.xml b/ccpp/suites/suite_FV3_GFS_v17_p8_mynn.xml
index f77c71cc5..a5b2b3291 100644
--- a/ccpp/suites/suite_FV3_GFS_v17_p8_mynn.xml
+++ b/ccpp/suites/suite_FV3_GFS_v17_p8_mynn.xml
@@ -64,7 +64,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -91,7 +90,7 @@
GFS_stochastics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v17_p8_rrtmgp.xml b/ccpp/suites/suite_FV3_GFS_v17_p8_rrtmgp.xml
index 3b3acef6d..57aa71179 100644
--- a/ccpp/suites/suite_FV3_GFS_v17_p8_rrtmgp.xml
+++ b/ccpp/suites/suite_FV3_GFS_v17_p8_rrtmgp.xml
@@ -61,7 +61,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -88,7 +87,7 @@
GFS_stochastics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_GFS_v17_p8_ugwpv1.xml b/ccpp/suites/suite_FV3_GFS_v17_p8_ugwpv1.xml
index fef14b176..0d001fc45 100644
--- a/ccpp/suites/suite_FV3_GFS_v17_p8_ugwpv1.xml
+++ b/ccpp/suites/suite_FV3_GFS_v17_p8_ugwpv1.xml
@@ -61,7 +61,6 @@
ugwpv1_gsldrag_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -88,7 +87,7 @@
GFS_stochastics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_HAFS_v1_gfdlmp_tedmf.xml b/ccpp/suites/suite_FV3_HAFS_v1_gfdlmp_tedmf.xml
index 3dc3c8d54..e6673d7a6 100644
--- a/ccpp/suites/suite_FV3_HAFS_v1_gfdlmp_tedmf.xml
+++ b/ccpp/suites/suite_FV3_HAFS_v1_gfdlmp_tedmf.xml
@@ -66,7 +66,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -82,7 +81,7 @@
gfdl_cloud_microphys
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_HAFS_v1_gfdlmp_tedmf_nonsst.xml b/ccpp/suites/suite_FV3_HAFS_v1_gfdlmp_tedmf_nonsst.xml
index 254df77e0..de25bd871 100644
--- a/ccpp/suites/suite_FV3_HAFS_v1_gfdlmp_tedmf_nonsst.xml
+++ b/ccpp/suites/suite_FV3_HAFS_v1_gfdlmp_tedmf_nonsst.xml
@@ -64,7 +64,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -80,7 +79,7 @@
gfdl_cloud_microphys
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_HAFS_v1_thompson_tedmf_gfdlsf.xml b/ccpp/suites/suite_FV3_HAFS_v1_thompson_tedmf_gfdlsf.xml
index a5db1110b..7231ed9ac 100644
--- a/ccpp/suites/suite_FV3_HAFS_v1_thompson_tedmf_gfdlsf.xml
+++ b/ccpp/suites/suite_FV3_HAFS_v1_thompson_tedmf_gfdlsf.xml
@@ -61,7 +61,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -79,7 +78,7 @@
mp_thompson_post
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_HRRR.xml b/ccpp/suites/suite_FV3_HRRR.xml
index 6ac35db14..56360ab5d 100644
--- a/ccpp/suites/suite_FV3_HRRR.xml
+++ b/ccpp/suites/suite_FV3_HRRR.xml
@@ -59,7 +59,6 @@
drag_suite
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -70,7 +69,7 @@
mp_thompson_post
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_HRRR_c3.xml b/ccpp/suites/suite_FV3_HRRR_c3.xml
index fe4feedc7..95a426de8 100644
--- a/ccpp/suites/suite_FV3_HRRR_c3.xml
+++ b/ccpp/suites/suite_FV3_HRRR_c3.xml
@@ -59,7 +59,6 @@
drag_suite
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -76,7 +75,7 @@
GFS_MP_generic_post
cu_c3_driver_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_HRRR_gf.xml b/ccpp/suites/suite_FV3_HRRR_gf.xml
index 7e594e621..8694976ac 100644
--- a/ccpp/suites/suite_FV3_HRRR_gf.xml
+++ b/ccpp/suites/suite_FV3_HRRR_gf.xml
@@ -59,7 +59,6 @@
drag_suite
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -76,7 +75,7 @@
GFS_MP_generic_post
cu_gf_driver_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_RAP.xml b/ccpp/suites/suite_FV3_RAP.xml
index f03c1a1e8..a24476213 100644
--- a/ccpp/suites/suite_FV3_RAP.xml
+++ b/ccpp/suites/suite_FV3_RAP.xml
@@ -59,7 +59,6 @@
drag_suite
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -78,7 +77,7 @@
GFS_MP_generic_post
cu_gf_driver_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_RAP_cires_ugwp.xml b/ccpp/suites/suite_FV3_RAP_cires_ugwp.xml
index 3530d16ef..6f16d0ea4 100644
--- a/ccpp/suites/suite_FV3_RAP_cires_ugwp.xml
+++ b/ccpp/suites/suite_FV3_RAP_cires_ugwp.xml
@@ -60,7 +60,6 @@
cires_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -79,7 +78,7 @@
GFS_MP_generic_post
cu_gf_driver_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_RAP_clm_lake.xml b/ccpp/suites/suite_FV3_RAP_clm_lake.xml
index 9a28a6421..2bc178eae 100644
--- a/ccpp/suites/suite_FV3_RAP_clm_lake.xml
+++ b/ccpp/suites/suite_FV3_RAP_clm_lake.xml
@@ -60,7 +60,6 @@
drag_suite
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -79,7 +78,7 @@
GFS_MP_generic_post
cu_gf_driver_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_RAP_flake.xml b/ccpp/suites/suite_FV3_RAP_flake.xml
index be66bbaa0..c60c4324b 100644
--- a/ccpp/suites/suite_FV3_RAP_flake.xml
+++ b/ccpp/suites/suite_FV3_RAP_flake.xml
@@ -60,7 +60,6 @@
drag_suite
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -79,7 +78,7 @@
GFS_MP_generic_post
cu_gf_driver_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_RAP_noah.xml b/ccpp/suites/suite_FV3_RAP_noah.xml
index f5ce01c87..6fd994f3c 100644
--- a/ccpp/suites/suite_FV3_RAP_noah.xml
+++ b/ccpp/suites/suite_FV3_RAP_noah.xml
@@ -60,7 +60,6 @@
drag_suite
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -79,7 +78,7 @@
GFS_MP_generic_post
cu_gf_driver_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_RAP_noah_sfcdiff_cires_ugwp.xml b/ccpp/suites/suite_FV3_RAP_noah_sfcdiff_cires_ugwp.xml
index b0bf553bb..a07dd850b 100644
--- a/ccpp/suites/suite_FV3_RAP_noah_sfcdiff_cires_ugwp.xml
+++ b/ccpp/suites/suite_FV3_RAP_noah_sfcdiff_cires_ugwp.xml
@@ -61,7 +61,6 @@
cires_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -80,7 +79,7 @@
GFS_MP_generic_post
cu_gf_driver_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_RAP_sfcdiff.xml b/ccpp/suites/suite_FV3_RAP_sfcdiff.xml
index 0793433c6..8a960e02e 100644
--- a/ccpp/suites/suite_FV3_RAP_sfcdiff.xml
+++ b/ccpp/suites/suite_FV3_RAP_sfcdiff.xml
@@ -59,7 +59,6 @@
drag_suite
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -78,7 +77,7 @@
GFS_MP_generic_post
cu_gf_driver_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_RAP_unified_ugwp.xml b/ccpp/suites/suite_FV3_RAP_unified_ugwp.xml
index 0b04d9622..efca314bb 100644
--- a/ccpp/suites/suite_FV3_RAP_unified_ugwp.xml
+++ b/ccpp/suites/suite_FV3_RAP_unified_ugwp.xml
@@ -60,7 +60,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -79,7 +78,7 @@
GFS_MP_generic_post
cu_gf_driver_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_RRFS_v1beta.xml b/ccpp/suites/suite_FV3_RRFS_v1beta.xml
index 97228c0a6..42ee00565 100644
--- a/ccpp/suites/suite_FV3_RRFS_v1beta.xml
+++ b/ccpp/suites/suite_FV3_RRFS_v1beta.xml
@@ -61,7 +61,6 @@
cires_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -72,7 +71,7 @@
mp_thompson_post
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_RRFS_v1nssl.xml b/ccpp/suites/suite_FV3_RRFS_v1nssl.xml
index d2a2ae911..05b1edb79 100644
--- a/ccpp/suites/suite_FV3_RRFS_v1nssl.xml
+++ b/ccpp/suites/suite_FV3_RRFS_v1nssl.xml
@@ -61,14 +61,13 @@
cires_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_MP_generic_pre
mp_nssl
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites/suite_FV3_WoFS_v0.xml b/ccpp/suites/suite_FV3_WoFS_v0.xml
index 1a34ba1a1..5641af472 100644
--- a/ccpp/suites/suite_FV3_WoFS_v0.xml
+++ b/ccpp/suites/suite_FV3_WoFS_v0.xml
@@ -61,14 +61,13 @@
cires_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_MP_generic_pre
mp_nssl
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post