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
25 changes: 18 additions & 7 deletions physics/GFS_radiation_surface.F90
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ subroutine GFS_radiation_surface_init (me, sfcalb, ialb, iems, errmsg, errflg)
iemsflg= iems ! surface emissivity control flag

if ( me == 0 ) then
print *,' In GFS_radiation_surface_init, before calling sfc_init'
print *,' ialb=',ialb,' iems=',iems
print *,'In GFS_radiation_surface_init, before calling sfc_init'
print *,'ialb=',ialb,' iems=',iems
end if

! Call surface initialization routine
Expand All @@ -60,7 +60,8 @@ subroutine GFS_radiation_surface_run ( &
vtype, xlat, xlon, slmsk, lndp_type, n_var_lndp, sfc_alb_pert, &
lndp_var_list, lndp_prt_list, landfrac, snowd, sncovr, &
sncovr_ice, fice, zorl, hprime, tsfg, tsfa, tisfc, coszen, &
min_seaice, alvsf, alnsf, alvwf, alnwf, facsf, facwf, &
min_seaice, min_lakeice, lakefrac, &
alvsf, alnsf, alvwf, alnwf, facsf, facwf, &
semis_lnd, semis_ice, snoalb, &
albdvis_lnd, albdnir_lnd, albivis_lnd, albinir_lnd, &
albdvis_ice, albdnir_ice, albivis_ice, albinir_ice, &
Expand All @@ -75,11 +76,12 @@ subroutine GFS_radiation_surface_run ( &
integer, intent(in) :: im
logical, intent(in) :: frac_grid, lslwr, lsswr
integer, intent(in) :: lsm, lsm_noahmp, lsm_ruc, lndp_type, n_var_lndp
real(kind=kind_phys), intent(in) :: min_seaice
real(kind=kind_phys), intent(in) :: min_seaice, min_lakeice

real(kind=kind_phys), dimension(:), intent(in) :: xlat, xlon, vtype, slmsk, &
sfc_alb_pert, lndp_prt_list, &
landfrac, snowd, sncovr, &
landfrac, lakefrac, &
snowd, sncovr, &
sncovr_ice, fice, zorl, &
hprime, tsfg, tsfa, tisfc, &
coszen, alvsf, alnsf, alvwf, &
Expand All @@ -99,6 +101,7 @@ subroutine GFS_radiation_surface_run ( &
! Local variables
integer :: i
real(kind=kind_phys) :: lndp_alb
real(kind=kind_phys) :: cimin
real(kind=kind_phys), dimension(im) :: fracl, fraci, fraco
logical, dimension(im) :: icy

Expand All @@ -109,6 +112,14 @@ subroutine GFS_radiation_surface_run ( &
! Intialize intent(out) variables
sfcalb = 0.0

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is good. However, I can't see the full code here. Is fraco open water fraction? If so, fracl+fraco+fraci=1 right?

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for checking. You are correct, fracl+fraco+fraci=1 for the fractional mask case. Not that in the git diff view, you can expand the sections that are hidden by clicking on the arrows in the blue boxes between the line numbers on the left. I'll merge this into my branch/PR.

do i=1,im
if (lakefrac(i) > f_zero) then
cimin = min_lakeice
else
cimin = min_seaice
endif
enddo

! Return immediately if neither shortwave nor longwave radiation are called
if (.not. lsswr .and. .not. lslwr) return

Expand All @@ -123,7 +134,7 @@ subroutine GFS_radiation_surface_run ( &
else
fracl(i) = f_zero
fraco(i) = f_one
if(fice(i) < min_seaice) then
if(fice(i) < cimin) then
fraci(i) = f_zero
icy(i) = .false.
else
Expand All @@ -137,7 +148,7 @@ subroutine GFS_radiation_surface_run ( &
do i=1,im
fracl(i) = landfrac(i)
fraco(i) = max(f_zero, f_one - fracl(i))
if(fice(i) < min_seaice) then
if(fice(i) < cimin) then
fraci(i) = f_zero
icy(i) = .false.
else
Expand Down
18 changes: 18 additions & 0 deletions physics/GFS_radiation_surface.meta
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,24 @@
kind = kind_phys
intent = in
optional = F
[min_lakeice]
standard_name = lake_ice_minimum
long_name = minimum lake ice value
units = frac
dimensions = ()
type = real
kind = kind_phys
intent = in
optional = F
[lakefrac]
standard_name = lake_area_fraction
long_name = fraction of horizontal grid area occupied by lake
units = frac
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = in
optional = F
[alvsf]
standard_name = mean_vis_albedo_with_strong_cosz_dependency
long_name = mean vis albedo with strong cosz dependency
Expand Down