@@ -242,27 +242,27 @@ subroutine SurfaceAlbedo(bounds, &
242242 ! Cosine solar zenith angle for next time step
243243
244244 deg2rad = SHR_CONST_PI/ 180._r8
245- do g = bounds% begg,bounds% endg
246- coszen_gcell(g) = shr_orb_cosz (nextsw_cday, grc_pp% lat(g), grc_pp% lon(g), declinp1)
245+ if (.not. use_finetop_rad) then
246+ do g = bounds% begg,bounds% endg
247+ coszen_gcell(g) = shr_orb_cosz (nextsw_cday, grc_pp% lat(g), grc_pp% lon(g), declinp1)
248+ cosinc_gcell(g) = coszen_gcell(g)
249+ end do
250+ else
251+ do g = bounds% begg,bounds% endg
252+ coszen_gcell(g) = shr_orb_cosz (nextsw_cday, grc_pp% lat(g), grc_pp% lon(g), declinp1)
253+ sza = acos (coszen_gcell(g)) ! solar zenith angle
254+ saa = shr_orb_azimuth(nextsw_cday, grc_pp% lat(g), grc_pp% lon(g), declinp1, sza) ! solar azimuth angle
255+
256+ slope_rad = grc_pp% slope_deg(g) * deg2rad
257+ aspect_rad = grc_pp% aspect_deg(g) * deg2rad
258+
259+ cosinc_gcell(g) = cos (slope_rad) * coszen_gcell(g) + sin (slope_rad) * sin (sza) * cos (aspect_rad - saa)
260+ cosinc_gcell(g) = max (- 1._r8 , min (cosinc_gcell(g), 1._r8 ))
261+
262+ if (cosinc_gcell(g) <= 0._r8 ) cosinc_gcell(g) = 0.1_r8 ! although direct solar radiation is zero, we need to calculate diffuse albedo in this case
263+ end do
264+ endif
247265
248- if (use_finetop_rad) then
249- ! solar zenith angle
250- sza = acos (coszen_gcell(g))
251- ! solar azimuth angle
252- saa = shr_orb_azimuth(nextsw_cday, grc_pp% lat(g), grc_pp% lon(g), declinp1, sza)
253-
254- slope_rad = grc_pp% slope_deg(g) * deg2rad
255- aspect_rad = grc_pp% aspect_deg(g) * deg2rad
256-
257- cosinc_gcell(g) = cos (slope_rad) * coszen_gcell(g) + sin (slope_rad) * sin (sza) * cos (aspect_rad - saa)
258- cosinc_gcell(g) = max (- 1._r8 , min (cosinc_gcell(g), 1._r8 ))
259- ! write(iulog,*) 'cosinc_gcell',cosinc_gcell(g)
260- ! write(iulog,*) 'coszen_gcell',coszen_gcell(g)
261- if (cosinc_gcell(g) <= 0._r8 ) cosinc_gcell(g) = 0.1_r8 ! although direct solar radiation is zero, we need to calculate diffuse albedo in this case
262- else
263- cosinc_gcell(g) = coszen_gcell(g)
264- endif
265- end do
266266 do c = bounds% begc,bounds% endc
267267 g = col_pp% gridcell(c)
268268 coszen_col(c) = coszen_gcell(g)
0 commit comments