Skip to content

Commit

Permalink
Treat surface albedo exactly as in RRTMG. For SW bands 1-9, use nIR; …
Browse files Browse the repository at this point in the history
…For band 10, use average of nIR and uvVIS; For bands 11-24, use uvVIS.
  • Loading branch information
dustinswales committed Dec 16, 2019
1 parent e105f48 commit 1526e7d
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions physics/rrtmgp_sw_rte.F90
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ subroutine rrtmgp_sw_rte_run(doSWrad, nCol, nLev, nDay, idxday, coszen, p_lay, t
fluxSW_up_allsky, fluxSW_up_clrsky, fluxSW_dn_allsky, fluxSW_dn_clrsky, fluxSW_dn_dir_allsky
real(kind_phys), dimension(ncol,NLev) :: vmrTemp
logical :: l_ClrSky_HR=.false., l_AllSky_HR_byband=.false., l_scmpsw=.false., top_at_1
integer :: iGas,iSFC,iTOA
integer :: iGas,iSFC,iTOA,iBand
type(ty_optical_props_2str) :: &
sw_optical_props_clouds_daylit, & ! RRTMGP DDT: longwave cloud radiative properties
sw_optical_props_clrsky_daylit, & ! RRTMGP DDT: longwave clear-sky radiative properties
Expand Down Expand Up @@ -160,9 +160,21 @@ subroutine rrtmgp_sw_rte_run(doSWrad, nCol, nLev, nDay, idxday, coszen, p_lay, t
flux_clrsky%bnd_flux_up => fluxSW_up_clrsky
flux_clrsky%bnd_flux_dn => fluxSW_dn_clrsky

! In RRTMG, the near-IR and uv-visible surface albedos are averaged.
sfc_alb_dir = 0.5_kind_phys*(sfc_alb_nir_dir(:,idxday(1:nday)) + sfc_alb_uvvis_dir(:,idxday(1:nday)))
sfc_alb_dif = 0.5_kind_phys*(sfc_alb_nir_dif(:,idxday(1:nday)) + sfc_alb_uvvis_dif(:,idxday(1:nday)))
! *Note* Legacy RRTMG code. May need to revisit
do iBand=1,sw_gas_props%get_nband()
if (iBand .lt. 10) then
sfc_alb_dir(iBand,:) = sfc_alb_nir_dir(iBand,idxday(1:nday))
sfc_alb_dif(iBand,:) = sfc_alb_nir_dif(iBand,idxday(1:nday))
endif
if (iBand .eq. 10) then
sfc_alb_dir(iBand,:) = 0.5_kind_phys*(sfc_alb_nir_dir(iBand,idxday(1:nday)) + sfc_alb_uvvis_dir(iBand,idxday(1:nday)))
sfc_alb_dif(iBand,:) = 0.5_kind_phys*(sfc_alb_nir_dif(iBand,idxday(1:nday)) + sfc_alb_uvvis_dif(iBand,idxday(1:nday)))
endif
if (iBand .gt. 10) then
sfc_alb_dir(iBand,:) = sfc_alb_uvvis_dir(iBand,idxday(1:nday))
sfc_alb_dif(iBand,:) = sfc_alb_uvvis_dif(iBand,idxday(1:nday))
endif
enddo

! Compute clear-sky fluxes (if requested)
! Clear-sky fluxes (gas+aerosol)
Expand Down

0 comments on commit 1526e7d

Please sign in to comment.