Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
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
Loading