Skip to content

Commit

Permalink
Merge pull request #192 from grantfirl/rrtmg-cloud-overlap-updates_gjf
Browse files Browse the repository at this point in the history
Update for Mike Iacono's RRTMG cloud overlap code
  • Loading branch information
grantfirl authored Oct 1, 2020
2 parents ac96cb7 + 91939ec commit 5fc8e1b
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 11 deletions.
2 changes: 1 addition & 1 deletion ccpp/framework
51 changes: 46 additions & 5 deletions scm/src/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -615,8 +615,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 @@ -1622,6 +1635,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 @@ -2035,7 +2049,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 @@ -2872,8 +2886,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 @@ -3606,6 +3632,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 @@ -4676,6 +4703,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 @@ -5984,6 +6012,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 @@ -6578,6 +6610,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 @@ -6990,6 +7025,9 @@ subroutine interstitial_phys_reset (Interstitial, Model)

end subroutine interstitial_phys_reset

! DH* 20200901: this routine is no longer used by CCPP's GFS_debug.F90. When new variables are
! added to the GFS_interstitial_type, it is best to add the variable to both interstitial_print
! below and to GFS_interstitialtoscreen in ccpp/physics/physics/GFS_debug.F90
subroutine interstitial_print(Interstitial, Model, mpirank, omprank, blkno)
!
implicit none
Expand Down Expand Up @@ -7040,6 +7078,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
20 changes: 16 additions & 4 deletions scm/src/GFS_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -2504,14 +2504,20 @@
units = flag
dimensions = ()
type = integer
[iovr]
standard_name = flag_for_cloud_overlap_method_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
standard_name = flag_for_cloud_overlap_method_for_shortwave_radiation
long_name = sw: max-random overlap clouds
units = flag
dimensions = ()
type = integer
[iovr_lw]
standard_name = flag_for_max_random_overlap_clouds_for_longwave_radiation
standard_name = flag_for_cloud_overlap_method_for_longwave_radiation
long_name = lw: max-random overlap clouds
units = flag
dimensions = ()
Expand Down Expand Up @@ -6927,6 +6933,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 @@ -9574,7 +9587,7 @@
active = (flag_for_rrtmgp_radiation_scheme)
[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 @@ -9607,7 +9620,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 Down

0 comments on commit 5fc8e1b

Please sign in to comment.