Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
48 changes: 43 additions & 5 deletions scm/src/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -614,8 +614,21 @@ module GFS_typedefs
integer :: iems !< use fixed value of 1.0
integer :: iaer !< default aerosol effect in sw only
integer :: icliq_sw !< sw optical property for liquid clouds
integer :: iovr_sw !< sw: max-random overlap clouds
integer :: iovr_lw !< lw: max-random overlap clouds
integer :: iovr_sw !< sw: cloud overlap method for radiation
!< 0 => use random overlap
!< 1 => use maximum-random overlap
!< 2 => use maximum overlap
!< 3 => use decorrelation length overlap (NOAA/Hou)
!< 4 => use exponential overlap (AER)
!< 5 => use exponential-random overlap (AER)
integer :: iovr_lw !< lw: cloud overlap method for radiation
!< 0 => use random overlap
!< 1 => use maximum-random overlap
!< 2 => use maximum overlap
!< 3 => use decorrelation length overlap (NOAA/Hou)
!< 4 => use exponential overlap (AER)
!< 5 => use exponential-random overlap (AER)
integer :: iovr !< max-random overlap clouds for sw & lw (maximum of both)
integer :: ictm !< ictm=0 => use data at initial cond time, if not
!< available; use latest; no extrapolation.
!< ictm=1 => use data at the forecast time, if not
Expand Down Expand Up @@ -1619,6 +1632,7 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: adjvisdfd(:) => null() !<
real (kind=kind_phys), pointer :: aerodp(:,:) => null() !<
real (kind=kind_phys), pointer :: alb1d(:) => null() !<
real (kind=kind_phys), pointer :: alpha(:,:) => null() !<
real (kind=kind_phys), pointer :: bexp1d(:) => null() !<
real (kind=kind_phys), pointer :: canopy_save(:) => null() !<
real (kind=kind_phys), pointer :: cd(:) => null() !<
Expand Down Expand Up @@ -2030,7 +2044,7 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: ocss(:) => null() !<
real (kind=kind_phys), pointer :: oa4ss(:,:) => null() !<
real (kind=kind_phys), pointer :: clxss(:,:) => null() !<

!-- Ferrier-Aligo MP scheme
real (kind=kind_phys), pointer :: f_rain (:,:) => null() !<
real (kind=kind_phys), pointer :: f_ice (:,:) => null() !<
Expand Down Expand Up @@ -2863,8 +2877,20 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
integer :: iems = 0 !< use fixed value of 1.0
integer :: iaer = 1 !< default aerosol effect in sw only
integer :: icliq_sw = 1 !< sw optical property for liquid clouds
integer :: iovr_sw = 1 !< sw: max-random overlap clouds
integer :: iovr_lw = 1 !< lw: max-random overlap clouds
integer :: iovr_sw = 1 !< sw: cloud overlap method for radiation
!< 0 => use random overlap
!< 1 => use maximum-random overlap
!< 2 => use maximum overlap
!< 3 => use decorrelation length overlap (NOAA/Hou)
!< 4 => use exponential overlap (AER)
!< 5 => use exponential-random overlap (AER)
integer :: iovr_lw = 1 !< lw: cloud overlap method for radiation
!< 0 => use random overlap
!< 1 => use maximum-random overlap
!< 2 => use maximum overlap
!< 3 => use decorrelation length overlap (NOAA/Hou)
!< 4 => use exponential overlap (AER)
!< 5 => use exponential-random overlap (AER)
integer :: ictm = 1 !< ictm=0 => use data at initial cond time, if not
!< available; use latest; no extrapolation.
!< ictm=1 => use data at the forecast time, if not
Expand Down Expand Up @@ -3603,6 +3629,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
Model%icliq_sw = icliq_sw
Model%iovr_sw = iovr_sw
Model%iovr_lw = iovr_lw
Model%iovr = max(Model%iovr_sw,Model%iovr_lw)
Model%ictm = ictm
Model%isubc_sw = isubc_sw
Model%isubc_lw = isubc_lw
Expand Down Expand Up @@ -4679,6 +4706,7 @@ subroutine control_print(Model)
print *, ' icliq_sw : ', Model%icliq_sw
print *, ' iovr_sw : ', Model%iovr_sw
print *, ' iovr_lw : ', Model%iovr_lw
print *, ' iovr : ', Model%iovr
print *, ' ictm : ', Model%ictm
print *, ' isubc_sw : ', Model%isubc_sw
print *, ' isubc_lw : ', Model%isubc_lw
Expand Down Expand Up @@ -5982,6 +6010,10 @@ subroutine interstitial_create (Interstitial, IM, Model)
allocate (Interstitial%adjvisdfd (IM))
allocate (Interstitial%aerodp (IM,NSPC1))
allocate (Interstitial%alb1d (IM))
if (.not. Model%do_RRTMGP) then
! RRTMGP uses its own cloud_overlap_param
allocate (Interstitial%alpha (IM,Model%levr+LTP))
end if
allocate (Interstitial%bexp1d (IM))
allocate (Interstitial%cd (IM))
allocate (Interstitial%cd_ice (IM))
Expand Down Expand Up @@ -6576,6 +6608,9 @@ subroutine interstitial_rad_reset (Interstitial, Model)
!
Interstitial%aerodp = clear_val
Interstitial%alb1d = clear_val
if (.not. Model%do_RRTMGP) then
Interstitial%alpha = clear_val
end if
Interstitial%cldsa = clear_val
Interstitial%cldtaulw = clear_val
Interstitial%cldtausw = clear_val
Expand Down Expand Up @@ -7037,6 +7072,9 @@ subroutine interstitial_print(Interstitial, Model, mpirank, omprank, blkno)
write (0,*) 'sum(Interstitial%adjvisdfd ) = ', sum(Interstitial%adjvisdfd )
write (0,*) 'sum(Interstitial%aerodp ) = ', sum(Interstitial%aerodp )
write (0,*) 'sum(Interstitial%alb1d ) = ', sum(Interstitial%alb1d )
if (.not. Model%do_RRTMGP) then
write (0,*) 'sum(Interstitial%alpha ) = ', sum(Interstitial%alpha )
end if
write (0,*) 'sum(Interstitial%bexp1d ) = ', sum(Interstitial%bexp1d )
write (0,*) 'sum(Interstitial%cd ) = ', sum(Interstitial%cd )
write (0,*) 'sum(Interstitial%cd_ice ) = ', sum(Interstitial%cd_ice )
Expand Down
33 changes: 15 additions & 18 deletions scm/src/GFS_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -2320,6 +2320,12 @@
units = flag
dimensions = ()
type = integer
[iovr]
standard_name = flag_for_max_random_overlap_clouds_for_radiation
long_name = max-random overlap clouds
units = flag
dimensions = ()
type = integer
[iovr_sw]
standard_name = flag_for_max_random_overlap_clouds_for_shortwave_radiation
long_name = sw: max-random overlap clouds
Expand Down Expand Up @@ -6598,6 +6604,13 @@
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
[alpha]
standard_name = cloud_overlap_decorrelation_parameter
long_name = cloud overlap decorrelation parameter for RRTMG (but not for RRTMGP)
units = frac
dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation)
type = real
kind = kind_phys
[bexp1d]
standard_name = perturbation_of_soil_type_b_parameter
long_name = perturbation of soil type "b" parameter
Expand Down Expand Up @@ -9146,39 +9159,34 @@
dimensions = (horizontal_dimension,vertical_dimension)
type = real
kind = kind_phys
optional = F
[p_lev]
standard_name = air_pressure_at_interface_for_RRTMGP_in_hPa
long_name = air pressure level
units = hPa
dimensions = (horizontal_dimension,vertical_dimension_plus_one)
type = real
kind = kind_phys
optional = F
[t_lay]
standard_name = air_temperature_at_layer_for_RRTMGP
long_name = air temperature layer
units = K
dimensions = (horizontal_dimension,vertical_dimension)
type = real
kind = kind_phys
optional = F
[t_lev]
standard_name = air_temperature_at_interface_for_RRTMGP
long_name = air temperature layer
units = K
dimensions = (horizontal_dimension,vertical_dimension_plus_one)
type = real
kind = kind_phys
optional = F
[tv_lay]
standard_name = virtual_temperature
long_name = layer virtual temperature
units = K
dimensions = (horizontal_dimension,vertical_dimension)
type = real
kind = kind_phys
optional = F
[relhum]
standard_name = relative_humidity
long_name = layer relative humidity
Expand All @@ -9202,7 +9210,7 @@
kind = kind_phys
[cloud_overlap_param]
standard_name = cloud_overlap_param
long_name = cloud overlap parameter
long_name = cloud overlap parameter for RRTMGP (but not for RRTMG)
units = km
dimensions = (horizontal_dimension,vertical_dimension)
type = real
Expand Down Expand Up @@ -9233,7 +9241,6 @@
dimensions = (horizontal_dimension,vertical_dimension)
type = real
kind = kind_phys
optional = F
[cldtaulw]
standard_name = RRTMGP_cloud_optical_depth_layers_at_10mu_band
long_name = approx 10mu band layer cloud optical depth
Expand All @@ -9248,23 +9255,20 @@
dimensions = (horizontal_dimension,vertical_dimension_plus_one)
type = real
kind = kind_phys
optional = F
[fluxlwDOWN_allsky]
standard_name = RRTMGP_lw_flux_profile_downward_allsky
long_name = RRTMGP downward longwave all-sky flux profile
units = W m-2
dimensions = (horizontal_dimension,vertical_dimension_plus_one)
type = real
kind = kind_phys
optional = F
[fluxlwUP_clrsky]
standard_name = RRTMGP_lw_flux_profile_upward_clrsky
long_name = RRTMGP upward longwave clr-sky flux profile
units = W m-2
dimensions = (horizontal_dimension,vertical_dimension_plus_one)
type = real
kind = kind_phys
optional = F
[fluxlwDOWN_clrsky]
standard_name = RRTMGP_lw_flux_profile_downward_clrsky
long_name = RRTMGP downward longwave clr-sky flux profile
Expand Down Expand Up @@ -9300,53 +9304,46 @@
dimensions = (horizontal_dimension,vertical_dimension_plus_one)
type = real
kind = kind_phys
optional = F
[fluxswDOWN_allsky]
standard_name = RRTMGP_sw_flux_profile_downward_allsky
long_name = RRTMGP downward shortwave all-sky flux profile
units = W m-2
dimensions = (horizontal_dimension,vertical_dimension_plus_one)
type = real
kind = kind_phys
optional = F
[fluxswUP_clrsky]
standard_name = RRTMGP_sw_flux_profile_upward_clrsky
long_name = RRTMGP upward shortwave clr-sky flux profile
units = W m-2
dimensions = (horizontal_dimension,vertical_dimension_plus_one)
type = real
kind = kind_phys
optional = F
[fluxswDOWN_clrsky]
standard_name = RRTMGP_sw_flux_profile_downward_clrsky
long_name = RRTMGP downward shortwave clr-sky flux profile
units = W m-2
dimensions = (horizontal_dimension,vertical_dimension_plus_one)
type = real
kind = kind_phys
optional = F
[flxprf_lw]
standard_name = RRTMGP_lw_fluxes
long_name = lw fluxes total sky / csk and up / down at levels
units = W m-2
dimensions = (horizontal_dimension,vertical_dimension_plus_one)
type = proflw_type
optional = T
[flxprf_sw]
standard_name = RRTMGP_sw_fluxes
long_name = sw fluxes total sky / csk and up / down at levels
units = W m-2
dimensions = (horizontal_dimension,vertical_dimension_plus_one)
type = profsw_type
optional = T
[aerosolslw]
standard_name = RRTMGP_aerosol_optical_properties_for_longwave_bands_01_16
long_name = aerosol optical properties for longwave bands 01-16
units = various
dimensions = (horizontal_dimension,vertical_dimension, number_of_lw_bands_rrtmgp,number_of_aerosol_output_fields_for_longwave_radiation)
type = real
kind = kind_phys
optional = F
[aerosolslw(:,:,:,1)]
standard_name = RRTMGP_aerosol_optical_depth_for_longwave_bands_01_16
long_name = aerosol optical depth for longwave bands 01-16
Expand Down Expand Up @@ -9586,7 +9583,7 @@
dimensions = (number_of_active_gases_used_by_RRTMGP)
type = character
kind = len=128

########################################################################
[ccpp-arg-table]
name = GFS_data_type
Expand Down