Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@
branch = main
[submodule "ccpp/physics"]
path = ccpp/physics
url = https://github.com/ufs-community/ccpp-physics
branch = ufs/dev
#url = https://github.com/ufs-community/ccpp-physics
#branch = ufs/dev
url = https://github.com/grantfirl/ccpp-physics
branch = NCAR_sync_20251112
[submodule "upp"]
path = upp
url = https://github.com/NOAA-EMC/UPP
Expand Down
76 changes: 15 additions & 61 deletions ccpp/data/CCPP_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ module CCPP_typedefs
use GFS_typedefs, only: clear_val, LTP

! 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 module_radsw_parameters, only: profsw_type, cmpfsw_type
use module_radlw_parameters, only: proflw_type
use GFS_typedefs, only: GFS_control_type

implicit none
Expand All @@ -21,17 +21,11 @@ module CCPP_typedefs

! To ensure that these values match what's in the physics, array
! sizes are compared in the auto-generated physics caps in debug mode
! from module_radiation_aerosols
integer, parameter :: NF_AESW = 3
integer, parameter :: NF_AELW = 3
integer, parameter :: NSPC = 5
integer, parameter :: NSPC1 = NSPC + 1
! from module_radiation_clouds
integer, parameter :: NF_CLDS = 9
! from module_radiation_gases
integer, parameter :: NF_VGAS = 10
! from module_radiation_surface
integer, parameter :: NF_ALBD = 4

! GFS_interstitial_type !< fields required to replace interstitial code in GFS_{physics,radiation}_driver.F90 in CCPP
public GFS_interstitial_type
Expand Down Expand Up @@ -147,7 +141,6 @@ module CCPP_typedefs
real (kind=kind_phys), pointer :: fm10_ice(:) => null() !<
real (kind=kind_phys), pointer :: fm10_land(:) => null() !<
real (kind=kind_phys), pointer :: fm10_water(:) => null() !<
real (kind=kind_phys) :: frain !<
real (kind=kind_phys), pointer :: frland(:) => null() !<
real (kind=kind_phys), pointer :: fscav(:) => null() !<
real (kind=kind_phys), pointer :: fswtr(:) => null() !<
Expand Down Expand Up @@ -184,7 +177,6 @@ module CCPP_typedefs
logical, pointer :: icy(:) => null() !<
logical, pointer :: lake(:) => null() !<
logical, pointer :: ocean(:) => null() !<
integer :: ipr !<
integer, pointer :: islmsk(:) => null() !<
integer, pointer :: islmsk_cice(:) => null() !<
integer :: itc !<
Expand All @@ -197,27 +189,17 @@ module CCPP_typedefs
integer, pointer :: kpbl(:) => null() !<
integer :: kt !<
integer, pointer :: ktop(:) => null() !<
integer :: latidxprnt !<
integer :: levi !<
integer :: lmk !<
integer :: lmp !<
integer, pointer :: mbota(:,:) => null() !<
logical :: mg3_as_mg2 !<
integer, pointer :: mtopa(:,:) => null() !<
integer :: nbdlw !<
integer :: nbdsw !<
real (kind=kind_phys), pointer :: ncgl(:,:) => null() !<
real (kind=kind_phys), pointer :: ncpr(:,:) => null() !<
real (kind=kind_phys), pointer :: ncps(:,:) => null() !<
integer :: ncstrac !<
integer :: nday !<
integer :: nf_aelw !<
integer :: nf_aesw !<
integer :: nf_albd !<
integer :: nn !<
integer :: nsamftrac !<
integer :: nscav !<
integer :: nspc1 !<
integer :: ntcwx !<
integer :: ntiwx !<
integer :: ntrwx !<
Expand All @@ -229,8 +211,6 @@ module CCPP_typedefs
real (kind=kind_phys), pointer :: olyr(:,:) => null() !<
logical , pointer :: otspt(:,:) => null() !<
logical , pointer :: otsptflag(:) => null() !<
integer :: oz_coeffp5 !<
logical :: phys_hydrostatic !<
real (kind=kind_phys), pointer :: plvl(:,:) => null() !<
real (kind=kind_phys), pointer :: plyr(:,:) => null() !<
real (kind=kind_phys), pointer :: prcpmp(:) => null() !<
Expand Down Expand Up @@ -272,7 +252,6 @@ module CCPP_typedefs
real (kind=kind_phys), pointer :: sigmaf(:) => null() !<
real (kind=kind_phys), pointer :: sigmafrac(:,:) => null() !<
real (kind=kind_phys), pointer :: sigmatot(:,:) => null() !<
logical :: skip_macro !<
real (kind=kind_phys), pointer :: snowc(:) => null() !<
real (kind=kind_phys), pointer :: snohf(:) => null() !<
real (kind=kind_phys), pointer :: snowmp(:) => null() !<
Expand Down Expand Up @@ -357,21 +336,21 @@ module CCPP_typedefs
real (kind=kind_phys), pointer :: qs_lay(:,:) => null() !<
real (kind=kind_phys), pointer :: q_lay(:,:) => null() !<
real (kind=kind_phys), pointer :: deltaZ(:,:) => null() !<
real (kind=kind_phys), pointer :: deltaZc(:,:) => null() !<
real (kind=kind_phys), pointer :: deltaP(:,:) => null() !<
real (kind=kind_phys), pointer :: deltaZc(:,:) => null() !<
real (kind=kind_phys), pointer :: deltaP(:,:) => null() !<
real (kind=kind_phys), pointer :: cloud_overlap_param(:,:) => null() !< Cloud overlap parameter
real (kind=kind_phys), pointer :: cnv_cloud_overlap_param(:,:) => null() !< Convective cloud overlap parameter
real (kind=kind_phys), pointer :: precip_overlap_param(:,:) => null() !< Precipitation overlap parameter
real (kind=kind_phys), pointer :: tracer(:,:,:) => null() !<
real (kind=kind_phys), pointer :: aerosolslw(:,:,:,:) => null() !< Aerosol radiative properties in each LW band.
real (kind=kind_phys), pointer :: aerosolssw(:,:,:,:) => null() !< Aerosol radiative properties in each SW band.
real (kind=kind_phys), pointer :: precip_frac(:,:) => null() !< Precipitation fraction
real (kind=kind_phys), pointer :: cld_cnv_frac(:,:) => null() !< SGS convective cloud fraction
real (kind=kind_phys), pointer :: cld_cnv_frac(:,:) => null() !< SGS convective cloud fraction
real (kind=kind_phys), pointer :: cld_cnv_lwp(:,:) => null() !< SGS convective cloud liquid water path
real (kind=kind_phys), pointer :: cld_cnv_reliq(:,:) => null() !< SGS convective cloud liquid effective radius
real (kind=kind_phys), pointer :: cld_cnv_iwp(:,:) => null() !< SGS convective cloud ice water path
real (kind=kind_phys), pointer :: cld_cnv_reice(:,:) => null() !< SGS convective cloud ice effecive radius
real (kind=kind_phys), pointer :: cld_pbl_lwp(:,:) => null() !< SGS PBL cloud liquid water path
real (kind=kind_phys), pointer :: cld_pbl_lwp(:,:) => null() !< SGS PBL cloud liquid water path
real (kind=kind_phys), pointer :: cld_pbl_reliq(:,:) => null() !< SGS PBL cloud liquid effective radius
real (kind=kind_phys), pointer :: cld_pbl_iwp(:,:) => null() !< SGS PBL cloud ice water path
real (kind=kind_phys), pointer :: cld_pbl_reice(:,:) => null() !< SGS PBL cloud ice effecive radius
Expand All @@ -383,7 +362,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() !<
Expand Down Expand Up @@ -524,7 +503,7 @@ subroutine gfs_interstitial_create (Interstitial, ixs, ixe, Model)
allocate (Interstitial%adjvisbmu (ixs:ixe))
allocate (Interstitial%adjvisdfu (ixs:ixe))
allocate (Interstitial%adjvisdfd (ixs:ixe))
allocate (Interstitial%aerodp (ixs:ixe,NSPC1))
allocate (Interstitial%aerodp (ixs:ixe,Model%NSPC1))
allocate (Interstitial%alb1d (ixs:ixe))
if (.not. Model%do_RRTMGP) then
! RRTMGP uses its own cloud_overlap_param
Expand Down Expand Up @@ -592,8 +571,8 @@ subroutine gfs_interstitial_create (Interstitial, ixs, ixe, Model)
allocate (Interstitial%ecan (ixs:ixe))
allocate (Interstitial%etran (ixs:ixe))
allocate (Interstitial%edir (ixs:ixe))
allocate (Interstitial%faerlw (ixs:ixe,Model%levr+LTP,NBDLW,NF_AELW))
allocate (Interstitial%faersw (ixs:ixe,Model%levr+LTP,NBDSW,NF_AESW))
allocate (Interstitial%faerlw (ixs:ixe,Model%levr+LTP,Model%NBDLW,Model%NF_AELW))
allocate (Interstitial%faersw (ixs:ixe,Model%levr+LTP,Model%NBDSW,Model%NF_AESW))
allocate (Interstitial%ffhh_ice (ixs:ixe))
allocate (Interstitial%ffhh_land (ixs:ixe))
allocate (Interstitial%ffhh_water (ixs:ixe))
Expand Down Expand Up @@ -682,7 +661,7 @@ subroutine gfs_interstitial_create (Interstitial, ixs, ixe, Model)
allocate (Interstitial%save_v (ixs:ixe,Model%levs))
allocate (Interstitial%sbsno (ixs:ixe))
allocate (Interstitial%scmpsw (ixs:ixe))
allocate (Interstitial%sfcalb (ixs:ixe,NF_ALBD))
allocate (Interstitial%sfcalb (ixs:ixe,Model%NF_ALBD))
allocate (Interstitial%sigma (ixs:ixe))
allocate (Interstitial%sigmaf (ixs:ixe))
allocate (Interstitial%sigmafrac (ixs:ixe,Model%levs))
Expand Down Expand Up @@ -753,8 +732,8 @@ subroutine gfs_interstitial_create (Interstitial, ixs, ixe, Model)
allocate (Interstitial%fluxswDOWN_allsky (ixs:ixe, Model%levs+1))
allocate (Interstitial%fluxswUP_clrsky (ixs:ixe, Model%levs+1))
allocate (Interstitial%fluxswDOWN_clrsky (ixs:ixe, Model%levs+1))
allocate (Interstitial%aerosolslw (ixs:ixe, Model%levs, Model%rrtmgp_nBandsLW, NF_AELW))
allocate (Interstitial%aerosolssw (ixs:ixe, Model%levs, Model%rrtmgp_nBandsSW, NF_AESW))
allocate (Interstitial%aerosolslw (ixs:ixe, Model%levs, Model%rrtmgp_nBandsLW, Model%NF_AELW))
allocate (Interstitial%aerosolssw (ixs:ixe, Model%levs, Model%rrtmgp_nBandsSW, Model%NF_AESW))
allocate (Interstitial%precip_frac (ixs:ixe, Model%levs))
allocate (Interstitial%cld_cnv_frac (ixs:ixe, Model%levs))
allocate (Interstitial%cnv_cloud_overlap_param(ixs:ixe, Model%levs))
Expand Down Expand Up @@ -846,32 +825,7 @@ subroutine gfs_interstitial_create (Interstitial, ixs, ixe, Model)
allocate (Interstitial%t2mmp (ixs:ixe))
allocate (Interstitial%q2mp (ixs:ixe))
end if
!
! Set components that do not change
Interstitial%frain = Model%dtf/Model%dtp
Interstitial%ipr = min(ixe-ixs+1,10)
Interstitial%latidxprnt = 1
Interstitial%levi = Model%levs+1
Interstitial%lmk = Model%levr+LTP
Interstitial%lmp = Model%levr+1+LTP
Interstitial%nbdlw = NBDLW
Interstitial%nbdsw = NBDSW
Interstitial%nf_aelw = NF_AELW
Interstitial%nf_aesw = NF_AESW
Interstitial%nf_albd = NF_ALBD
Interstitial%nspc1 = NSPC1
if (Model%oz_phys .or. Model%oz_phys_2015) then
Interstitial%oz_coeffp5 = Model%oz_coeff+5
else
Interstitial%oz_coeffp5 = 5
endif
!
Interstitial%skip_macro = .false.
! The value phys_hydrostatic from dynamics does not match the
! hardcoded value for calling GFDL MP in GFS_physics_driver.F90,
! which is set to .true.
Interstitial%phys_hydrostatic = .true.
!

! Reset all other variables
call Interstitial%reset (Model)
!
Expand Down Expand Up @@ -1273,7 +1227,7 @@ subroutine gfs_interstitial_setup_tracers(Interstitial, Model)
Interstitial%nvdiff = Interstitial%nvdiff + 1
ENDIF
if (Model%me == Model%master) write(0,*) 'nssl_settings2: nvdiff,ntrac = ', Interstitial%nvdiff, Model%ntrac

elseif (Model%imp_physics == Model%imp_physics_wsm6) then
Interstitial%nvdiff = Model%ntrac -3
if (Model%satmedmf) Interstitial%nvdiff = Interstitial%nvdiff + 1
Expand Down
91 changes: 0 additions & 91 deletions ccpp/data/CCPP_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -939,13 +939,6 @@
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
[frain]
standard_name = dynamics_to_physics_timestep_ratio
long_name = ratio of dynamics timestep to physics timestep
units = none
dimensions = ()
type = real
kind = kind_phys
[frland]
standard_name = land_area_fraction_for_microphysics
long_name = land area fraction used in microphysics schemes
Expand Down Expand Up @@ -1244,12 +1237,6 @@
units = flag
dimensions = (horizontal_dimension)
type = logical
[ipr]
standard_name = horizontal_index_of_printed_column
long_name = horizontal index of printed column
units = index
dimensions = ()
type = integer
[islmsk]
standard_name = sea_land_ice_mask
long_name = sea/land/ice mask (=0/1/2)
Expand Down Expand Up @@ -1322,30 +1309,6 @@
units = index
dimensions = (horizontal_dimension)
type = integer
[latidxprnt]
standard_name = latitude_index_in_debug_printouts
long_name = latitude index in debug printouts
units = index
dimensions = ()
type = integer
[levi]
standard_name = vertical_interface_dimension_interstitial
long_name = vertical interface dimension
units = count
dimensions = ()
type = integer
[lmk]
standard_name = adjusted_vertical_layer_dimension_for_radiation
long_name = adjusted number of vertical layers for radiation
units = count
dimensions = ()
type = integer
[lmp]
standard_name = adjusted_vertical_level_dimension_for_radiation
long_name = adjusted number of vertical levels for radiation
units = count
dimensions = ()
type = integer
[mbota]
standard_name = model_layer_number_at_cloud_base
long_name = vertical indices for low, middle and high cloud bases
Expand All @@ -1364,18 +1327,6 @@
units = index
dimensions = (horizontal_dimension,3)
type = integer
[nbdlw]
standard_name = number_of_aerosol_bands_for_longwave_radiation
long_name = number of aerosol bands for longwave radiation
units = count
dimensions = ()
type = integer
[nbdsw]
standard_name = number_of_aerosol_bands_for_shortwave_radiation
long_name = number of aerosol bands for shortwave radiation
units = count
dimensions = ()
type = integer
[ncgl]
standard_name = local_graupel_number_concentration
long_name = number concentration of graupel local to physics
Expand Down Expand Up @@ -1412,24 +1363,6 @@
units = count
dimensions = ()
type = integer
[nf_aelw]
standard_name = number_of_aerosol_output_fields_for_longwave_radiation
long_name = number of aerosol output fields for longwave radiation
units = count
dimensions = ()
type = integer
[nf_aesw]
standard_name = number_of_aerosol_output_fields_for_shortwave_radiation
long_name = number of aerosol output fields for shortwave radiation
units = count
dimensions = ()
type = integer
[nf_albd]
standard_name = number_of_components_for_surface_albedo
long_name = number of IR/VIS/UV compinents for surface albedo
units = count
dimensions = ()
type = integer
[nn]
standard_name = number_of_tracers_for_convective_transport
long_name = number of tracers for convective transport
Expand All @@ -1448,12 +1381,6 @@
units = count
dimensions = ()
type = integer
[nspc1]
standard_name = number_of_species_for_aerosol_optical_depth
long_name = number of species for output aerosol optical depth plus total
units = count
dimensions = ()
type = integer
[ntcwx]
standard_name = index_for_liquid_cloud_condensate_vertical_diffusion_tracer
long_name = index for liquid cloud condensate in the vertically diffused tracer array
Expand Down Expand Up @@ -1547,18 +1474,6 @@
units = flag
dimensions = (number_of_tracers)
type = logical
[oz_coeffp5]
standard_name = number_of_coefficients_in_ozone_forcing_data_plus_five
long_name = number of coefficients in ozone forcing data plus five
units = index
dimensions = ()
type = integer
[phys_hydrostatic]
standard_name = flag_for_hydrostatic_heating_from_physics
long_name = flag for use of hydrostatic heating in physics
units = flag
dimensions = ()
type = logical
[plvl]
standard_name = air_pressure_at_interface_for_radiation_in_hPa
long_name = air pressure at vertical interface for radiation calculation
Expand Down Expand Up @@ -1933,12 +1848,6 @@
dimensions = (horizontal_dimension,vertical_interface_dimension)
type = real
kind = kind_phys
[skip_macro]
standard_name = flag_skip_macro
long_name = flag to skip cloud macrophysics in Morrison scheme
units = flag
dimensions = ()
type = logical
[snowc]
standard_name = surface_snow_area_fraction
long_name = surface snow area fraction
Expand Down
Loading