diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py
index 124fe3b81..22964965c 100755
--- a/ccpp/config/ccpp_prebuild_config.py
+++ b/ccpp/config/ccpp_prebuild_config.py
@@ -158,9 +158,9 @@
'ccpp/physics/physics/CONV/Grell_Freitas/cu_gf_driver_pre.F90',
'ccpp/physics/physics/CONV/Grell_Freitas/cu_gf_driver.F90',
'ccpp/physics/physics/CONV/Grell_Freitas/cu_gf_driver_post.F90',
- 'ccpp/physics/physics/CONV/C3/cu_c3_driver_pre.F90',
- 'ccpp/physics/physics/CONV/C3/cu_c3_driver.F90',
- 'ccpp/physics/physics/CONV/C3/cu_c3_driver_post.F90',
+ 'ccpp/physics/physics/CONV/C3/CCPP/cu_c3_driver_pre.F90',
+ 'ccpp/physics/physics/CONV/C3/CCPP/cu_c3_driver_ccpp.F90',
+ 'ccpp/physics/physics/CONV/C3/CCPP/cu_c3_driver_post.F90',
'ccpp/physics/physics/CONV/RAS/rascnv.F90',
'ccpp/physics/physics/GWD/cires_ugwp.F90',
'ccpp/physics/physics/GWD/cires_ugwp_post.F90',
diff --git a/ccpp/physics b/ccpp/physics
index ef0211a7d..0e7927989 160000
--- a/ccpp/physics
+++ b/ccpp/physics
@@ -1 +1 @@
-Subproject commit ef0211a7dfb3d3b0bd5bde33defa4dce4abedc1c
+Subproject commit 0e7927989af86a9e2ea8180cc2d0585eb679b4c8
diff --git a/ccpp/suites/suite_SCM_GFS_v17_p8_c3.xml b/ccpp/suites/suite_SCM_GFS_v17_p8_c3.xml
index 3b6acd053..ab75d0658 100644
--- a/ccpp/suites/suite_SCM_GFS_v17_p8_c3.xml
+++ b/ccpp/suites/suite_SCM_GFS_v17_p8_c3.xml
@@ -65,7 +65,7 @@
get_phi_fv3
GFS_suite_interstitial_3
cu_c3_driver_pre
- cu_c3_driver
+ cu_c3_driver_ccpp
GFS_DCNV_generic_post
GFS_SCNV_generic_post
GFS_suite_interstitial_4
diff --git a/ccpp/suites/suite_SCM_GFS_v17_p8_c3_ps.xml b/ccpp/suites/suite_SCM_GFS_v17_p8_c3_ps.xml
index aadf5790e..14bcf36f4 100644
--- a/ccpp/suites/suite_SCM_GFS_v17_p8_c3_ps.xml
+++ b/ccpp/suites/suite_SCM_GFS_v17_p8_c3_ps.xml
@@ -46,7 +46,7 @@
get_phi_fv3
GFS_suite_interstitial_3
cu_c3_driver_pre
- cu_c3_driver
+ cu_c3_driver_ccpp
GFS_DCNV_generic_post
GFS_SCNV_generic_post
GFS_suite_interstitial_4
diff --git a/scm/src/CCPP_typedefs.F90 b/scm/src/CCPP_typedefs.F90
index a960f62ce..5d6d1a6ea 100644
--- a/scm/src/CCPP_typedefs.F90
+++ b/scm/src/CCPP_typedefs.F90
@@ -101,6 +101,8 @@ module CCPP_typedefs
real (kind=kind_phys), pointer :: dusfcg(:) => null() !<
real (kind=kind_phys), pointer :: dusfc1(:) => null() !<
real (kind=kind_phys), pointer :: dvdftra(:,:,:) => null() !<
+ real (kind=kind_phys), pointer :: ten_t_pbl(:,:) => null() !<
+ real (kind=kind_phys), pointer :: ten_q_pbl(:,:) => null() !<
real (kind=kind_phys), pointer :: dvdt(:,:) => null() !<
real (kind=kind_phys), pointer :: dvsfcg(:) => null() !<
real (kind=kind_phys), pointer :: dvsfc1(:) => null() !<
@@ -484,6 +486,8 @@ subroutine gfs_interstitial_create (Interstitial, ixs, ixe, Model)
allocate (Interstitial%dusfcg (ixs:ixe))
allocate (Interstitial%dusfc1 (ixs:ixe))
allocate (Interstitial%dvdt (ixs:ixe,Model%levs))
+ allocate (Interstitial%ten_t_pbl (ixs:ixe,Model%levs))
+ allocate (Interstitial%ten_q_pbl (ixs:ixe,Model%levs))
allocate (Interstitial%dvsfcg (ixs:ixe))
allocate (Interstitial%dvsfc1 (ixs:ixe))
allocate (Interstitial%dvdftra (ixs:ixe,Model%levs,Interstitial%nvdiff))
@@ -643,12 +647,13 @@ subroutine gfs_interstitial_create (Interstitial, ixs, ixe, Model)
allocate (Interstitial%ztmax_land (ixs:ixe))
allocate (Interstitial%ztmax_water (ixs:ixe))
+ allocate (Interstitial%tv_lay (ixs:ixe, Model%levs))
+ allocate (Interstitial%relhum (ixs:ixe, Model%levs))
+ allocate (Interstitial%qs_lay (ixs:ixe, Model%levs))
+
! RRTMGP
if (Model%do_RRTMGP) then
allocate (Interstitial%tracer (ixs:ixe, Model%levs,Model%ntrac))
- allocate (Interstitial%tv_lay (ixs:ixe, Model%levs))
- allocate (Interstitial%relhum (ixs:ixe, Model%levs))
- allocate (Interstitial%qs_lay (ixs:ixe, Model%levs))
allocate (Interstitial%q_lay (ixs:ixe, Model%levs))
allocate (Interstitial%deltaZ (ixs:ixe, Model%levs))
allocate (Interstitial%deltaZc (ixs:ixe, Model%levs))
@@ -845,6 +850,8 @@ subroutine gfs_interstitial_destroy (Interstitial, Model)
deallocate (Interstitial%dvsfcg)
deallocate (Interstitial%dvsfc1)
deallocate (Interstitial%dvdftra)
+ deallocate (Interstitial%ten_t_pbl)
+ deallocate (Interstitial%ten_q_pbl)
deallocate (Interstitial%dzlyr)
deallocate (Interstitial%elvmax)
deallocate (Interstitial%ep1d)
@@ -1001,12 +1008,13 @@ subroutine gfs_interstitial_destroy (Interstitial, Model)
deallocate (Interstitial%ztmax_land)
deallocate (Interstitial%ztmax_water)
+ deallocate (Interstitial%tv_lay)
+ deallocate (Interstitial%relhum)
+ deallocate (Interstitial%qs_lay)
+
! RRTMGP
if (Model%do_RRTMGP) then
deallocate (Interstitial%tracer)
- deallocate (Interstitial%tv_lay)
- deallocate (Interstitial%relhum)
- deallocate (Interstitial%qs_lay)
deallocate (Interstitial%q_lay)
deallocate (Interstitial%deltaZ)
deallocate (Interstitial%deltaZc)
@@ -1391,6 +1399,8 @@ subroutine gfs_interstitial_reset (Interstitial, Model)
Interstitial%dvsfcg = clear_val
Interstitial%dvsfc1 = clear_val
Interstitial%dvdftra = clear_val
+ Interstitial%ten_t_pbl = clear_val
+ Interstitial%ten_q_pbl = clear_val
Interstitial%dzlyr = clear_val
Interstitial%elvmax = clear_val
Interstitial%ep1d = clear_val
@@ -1558,12 +1568,13 @@ subroutine gfs_interstitial_reset (Interstitial, Model)
Interstitial%ztmax_land = clear_val
Interstitial%ztmax_water = clear_val
+ Interstitial%tv_lay = clear_val
+ Interstitial%relhum = clear_val
+ Interstitial%qs_lay = clear_val
+
! RRTMGP
if (Model%do_RRTMGP) then
Interstitial%tracer = clear_val
- Interstitial%tv_lay = clear_val
- Interstitial%relhum = clear_val
- Interstitial%qs_lay = clear_val
Interstitial%q_lay = clear_val
Interstitial%deltaZ = clear_val
Interstitial%deltaZc = clear_val
diff --git a/scm/src/CCPP_typedefs.meta b/scm/src/CCPP_typedefs.meta
index 7eb7a8d4a..9a2086bf0 100644
--- a/scm/src/CCPP_typedefs.meta
+++ b/scm/src/CCPP_typedefs.meta
@@ -663,6 +663,20 @@
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
+[ten_t_pbl]
+ standard_name = tendency_of_air_temperature_due_to_PBL
+ long_name = tendency of air temperature calculated by the PBL scheme
+ units = K s-1
+ dimensions = (horizontal_dimension,vertical_layer_dimension)
+ type = real
+ kind = kind_phys
+[ten_q_pbl]
+ standard_name = tendency_of_specific_humidity_concentration_due_to_PBL
+ long_name = tendency of tracer concentration calculated by one physics scheme
+ units = kg kg-1 s-1
+ dimensions = (horizontal_dimension,vertical_layer_dimension)
+ type = real
+ kind = kind_phys
[dvdftra]
standard_name = tendency_of_vertically_diffused_tracer_concentration
long_name = tendency of the tracers due to vertical diffusion in PBL scheme
@@ -1991,8 +2005,8 @@
units = kg kg-1 s-1
dimensions = (horizontal_dimension,vertical_layer_dimension)
type = real
- kind = kind_phys
- active = (index_of_hail_mixing_ratio_in_tracer_concentration_array > 0)
+ kind = kind_phys
+ active = (index_of_hail_mixing_ratio_in_tracer_concentration_array > 0)
[ten_q(:,:,index_of_cloud_condensation_nuclei_number_concentration_in_tracer_concentration_array)]
standard_name = tendency_of_cloud_condensation_nuclei_number_concentration
long_name = number concentration of cloud condensation nuclei tendency
@@ -2522,7 +2536,6 @@
dimensions = (horizontal_dimension,vertical_layer_dimension)
type = real
kind = kind_phys
- active = (flag_for_rrtmgp_radiation_scheme)
[q_lay]
standard_name = water_vapor_mixing_ratio
long_name = water vaport mixing ratio
@@ -2570,7 +2583,6 @@
dimensions = (horizontal_dimension,vertical_layer_dimension)
type = real
kind = kind_phys
- active = (flag_for_rrtmgp_radiation_scheme)
[relhum]
standard_name = relative_humidity
long_name = layer relative humidity
@@ -2578,7 +2590,6 @@
dimensions = (horizontal_dimension,vertical_layer_dimension)
type = real
kind = kind_phys
- active = (flag_for_rrtmgp_radiation_scheme)
[deltaZ]
standard_name = layer_thickness
long_name = layer_thickness
diff --git a/scm/src/GFS_typedefs.meta b/scm/src/GFS_typedefs.meta
index 3bc33084c..b4859707c 100644
--- a/scm/src/GFS_typedefs.meta
+++ b/scm/src/GFS_typedefs.meta
@@ -3379,7 +3379,7 @@
kind = kind_phys
active = (flag_for_chemistry_coupling)
[qci_conv]
- standard_name = convective_cloud_condesate_after_rainout
+ standard_name = convective_cloud_condensate_after_rainout
long_name = convective cloud condesate after rainout
units = kg kg-1
dimensions = (horizontal_dimension,vertical_layer_dimension)
@@ -3942,7 +3942,7 @@
long_name = initial date with different size and ordering
units = none
dimensions = (4)
- type = integer
+ type = integer
[tend_opt_swrad]
standard_name = control_for_application_method_of_shortwave_radiation_tendencies
long_name = control for application method of shortwave radiation tendencies
@@ -6769,19 +6769,19 @@
dimensions = ()
type = integer
[index_of_process_dcnv]
- standard_name = index_of_deep_convection_process_process_in_cumulative_change_index
+ standard_name = index_of_deep_convection_process_in_cumulative_change_index
long_name = index of deep convection process in second dimension of array cumulative change index
units = index
dimensions = ()
type = integer
[index_of_process_scnv]
- standard_name = index_of_shallow_convection_process_process_in_cumulative_change_index
+ standard_name = index_of_shallow_convection_process_in_cumulative_change_index
long_name = index of shallow convection process in second dimension of array cumulative change index
units = index
dimensions = ()
type = integer
[index_of_process_mp]
- standard_name = index_of_microphysics_process_process_in_cumulative_change_index
+ standard_name = index_of_microphysics_process_in_cumulative_change_index
long_name = index of microphysics transport process in second dimension of array cumulative change index
units = index
dimensions = ()
@@ -6890,7 +6890,7 @@
type = integer
[index_of_y_wind]
standard_name = index_of_y_wind_in_cumulative_change_index
- long_name = index of x-wind in first dimension of array cumulative change index
+ long_name = index of y-wind in first dimension of array cumulative change index
units = index
dimensions = ()
type = integer
@@ -8804,7 +8804,7 @@
kind = kind_phys
active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_c3_deep_convection .or. control_for_deep_convection_scheme == identifier_for_new_tiedtke_deep_convection)
[forceq]
- standard_name = tendendy_of_specific_humidity_due_to_nonphysics
+ standard_name = tendency_of_specific_humidity_due_to_nonphysics
long_name = moisture tendency due to dynamics only
units = kg kg-1 s-1
dimensions = (horizontal_dimension,vertical_layer_dimension)
@@ -9028,7 +9028,7 @@
[cap_suppress]
standard_name = radar_derived_convection_suppression
long_name = radar-derived convection suppression
- units = unitless
+ units = none
dimensions = (horizontal_dimension,number_of_radar_derived_temperature_or_convection_suppression_intervals)
type = real
kind = kind_phys