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