6 SUBROUTINE urban_solar_abs(TOP, T, B, DMT, PDIR_SW, PSCA_SW, PZENITH, PAZIM, &
7 PFRAC_PANEL, PALB_PANEL, PALB_GD, PSVF_GD, PALB_GRF, &
8 PDN_RF, PDF_RF, PDN_RD, PDF_RD, PREC_SW_RD, &
9 PREC_SW_SN_RD, PREC_SW_WL_A, PREC_SW_WL_B, &
10 PREC_SW_GD, PREC_SW_RF, PDIR_ALB_TWN, PSCA_ALB_TWN, &
11 PSW_RAD_GD, PREC_SW_WIN, PREF_SW_GRND, PREF_SW_FAC, &
12 PE_SHADING, OSHAD_DAY, OSHADE, OALB_ONLY )
188 USE modi_window_shading
201 TYPE(
teb_t),
INTENT(INOUT) :: T
202 TYPE(
bem_t),
INTENT(INOUT) :: B
205 REAL,
DIMENSION(:),
INTENT(IN) :: PDIR_SW
206 REAL,
DIMENSION(:),
INTENT(IN) :: PSCA_SW
207 REAL,
DIMENSION(:),
INTENT(IN) :: PZENITH
208 REAL,
DIMENSION(:),
INTENT(IN) :: PAZIM
210 REAL,
DIMENSION(:),
INTENT(IN) :: PFRAC_PANEL
211 REAL,
DIMENSION(:),
INTENT(IN) :: PALB_PANEL
212 REAL,
DIMENSION(:),
INTENT(IN) :: PALB_GD
213 REAL,
DIMENSION(:),
INTENT(IN) :: PSVF_GD
214 REAL,
DIMENSION(:),
INTENT(IN) :: PALB_GRF
215 REAL,
DIMENSION(:),
INTENT(IN) :: PDN_RF
216 REAL,
DIMENSION(:),
INTENT(IN) :: PDF_RF
217 REAL,
DIMENSION(:),
INTENT(IN) :: PDN_RD
218 REAL,
DIMENSION(:),
INTENT(IN) :: PDF_RD
221 REAL,
DIMENSION(:),
INTENT(OUT) :: PREC_SW_RD
223 REAL,
DIMENSION(:),
INTENT(OUT) :: PREC_SW_WL_A
224 REAL,
DIMENSION(:),
INTENT(OUT) :: PREC_SW_WL_B
226 REAL,
DIMENSION(:),
INTENT(OUT) :: PREC_SW_GD
228 REAL,
DIMENSION(:),
INTENT(OUT) :: PREC_SW_RF
230 REAL,
DIMENSION(:),
INTENT(OUT) :: PREC_SW_SN_RD
232 REAL,
DIMENSION(:),
INTENT(OUT) :: PDIR_ALB_TWN
233 REAL,
DIMENSION(:),
INTENT(OUT) :: PSCA_ALB_TWN
235 REAL,
DIMENSION(:),
INTENT(OUT) :: PSW_RAD_GD
236 REAL,
DIMENSION(:),
INTENT(OUT) :: PREC_SW_WIN
238 REAL,
DIMENSION(:),
INTENT(OUT) :: PREF_SW_GRND
239 REAL,
DIMENSION(:),
INTENT(OUT) :: PREF_SW_FAC
241 REAL,
DIMENSION(:),
INTENT(OUT) :: PE_SHADING
245 LOGICAL,
DIMENSION(:),
INTENT(INOUT):: OSHAD_DAY
246 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OSHADE
249 LOGICAL,
INTENT(IN),
OPTIONAL :: OALB_ONLY
254 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZDIR_SW
255 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZSCA_SW
256 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZTANZEN
257 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZTHETA0
262 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZAALB_RD
263 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZDIR_SW_RD
264 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZDIR_SW_WL_A
265 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZDIR_SW_WL_B
266 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZDIR_SW_GD
267 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZDIR_SW_WL
268 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZSCA_SW_RD
269 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZSCA_SW_WL
270 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZSCA_SW_GD
272 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_RF
273 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_RD
274 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_WL_A
275 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_WL_B
276 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_WL
277 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_GD
278 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_GRF
279 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_PANEL
280 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_WIN
281 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_SN_RF
282 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_SN_RD
283 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_RF
284 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_RD
285 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_WL
286 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_GD
287 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_GRF
288 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_PANEL
289 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_WIN
290 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_SN_RF
291 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_SN_RD
292 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZDW
295 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZRD
296 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZRD_DIR
298 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZGD
300 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZREC_DIR_SW_WIN
301 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZREC_SCA_SW_WIN
302 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZAALB_WL
304 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZTRAN_WIN
305 REAL,
DIMENSION(SIZE(PDIR_SW)) :: ZABS_WIN
306 LOGICAL,
DIMENSION(SIZE(PDIR_SW)) :: G_EFF_SHAD
310 REAL(KIND=JPRB) :: ZHOOK_HANDLE
313 IF (
lhook)
CALL dr_hook(
'URBAN_SOLAR_ABS',0,zhook_handle)
316 IF (
PRESENT(oalb_only)) galb_only = oalb_only
318 zdir_sw = max(pdir_sw,0.)
319 zsca_sw = max(psca_sw,0.000001)
321 zrd_dir = t%XROAD_DIR(:) *
xpi/180.
323 DO jj=1,
SIZE(t%XROAD)
325 IF (t%XROAD(jj)+t%XGARDEN(jj).NE.0.)
THEN 326 zrd(jj) = t%XROAD(jj) / (t%XROAD(jj)+t%XGARDEN(jj))
327 zgd(jj) = t%XGARDEN(jj) / (t%XROAD(jj)+t%XGARDEN(jj))
340 zabs_dir_sw_panel(jj) = zdir_sw(jj) * (1. - palb_panel(jj))
341 zabs_sca_sw_panel(jj) = zsca_sw(jj) * (1. - palb_panel(jj))
344 zabs_dir_sw_rf(jj) = zdir_sw(jj) * (1. - t%XALB_ROOF (jj)) * (1.-pfrac_panel(jj))
345 zabs_dir_sw_sn_rf(jj) = zdir_sw(jj) * (1. - t%TSNOW_ROOF%ALB(jj)) * (1.-pfrac_panel(jj))
346 zabs_dir_sw_grf(jj) = zdir_sw(jj) * (1. - palb_grf(jj)) * (1.-pfrac_panel(jj))
347 zabs_sca_sw_rf(jj) = zsca_sw(jj) * (1. - t%XALB_ROOF (jj)) * (1.-pfrac_panel(jj))
348 zabs_sca_sw_sn_rf(jj) = zsca_sw(jj) * (1. - t%TSNOW_ROOF%ALB(jj)) * (1.-pfrac_panel(jj))
349 zabs_sca_sw_grf(jj) = zsca_sw(jj) * (1. - palb_grf(jj)) * (1.-pfrac_panel(jj))
356 IF (abs(0.5*
xpi-pzenith(jj)) < 1.e-6)
THEN 357 IF(0.5*
xpi-pzenith(jj) > 0.) ztanzen(jj)=tan(0.5*
xpi-1.e-6)
358 IF(0.5*
xpi-pzenith(jj) <= 0.) ztanzen(jj)=tan(0.5*
xpi+1.e-6)
359 ELSEIF (abs(pzenith(jj)) < 1.e-6)
THEN 360 ztanzen(jj)=sign(1.,pzenith(jj))*tan(1.e-6)
362 ztanzen(jj) = tan(pzenith(jj))
366 IF (t%XBLD(jj) .GT. 0.)
THEN 371 IF (top%CROAD_DIR==
'UNIF')
THEN 372 ztheta0(jj) = asin( min(abs( 1./ztanzen(jj))/t%XCAN_HW_RATIO(jj), 1. ) )
377 zdir_sw_rd(jj) = ( zdir_sw(jj) * 2. * ztheta0(jj) /
xpi &
378 - zdir_sw(jj) * 2. * ztanzen(jj) /
xpi &
379 * t%XCAN_HW_RATIO(jj) * (1.-cos(ztheta0(jj))) )
381 zdir_sw_gd(jj) = ( zdir_sw(jj) * 2. * ztheta0(jj) /
xpi &
382 - zdir_sw(jj) * 2. * ztanzen(jj) /
xpi &
383 * t%XCAN_HW_RATIO(jj) * (1.-cos(ztheta0(jj))) )
385 zdir_sw_rd(jj) = zdir_sw(jj) * &
386 max(0.,1.-t%XCAN_HW_RATIO(jj)*ztanzen(jj)*abs(sin(pazim(jj)-zrd_dir(jj))))
387 zdir_sw_gd(jj) = zdir_sw_rd(jj)
394 zdir_sw_wl(jj) = (zdir_sw(jj) - (zdir_sw_rd(jj)*zrd(jj)+zdir_sw_gd(jj)*zgd(jj))) &
395 * 0.5 / t%XCAN_HW_RATIO(jj)
400 zdir_sw_rd(jj) = zdir_sw(jj)
401 zdir_sw_gd(jj) = zdir_sw(jj)
406 IF (top%CROAD_DIR==
'UNIF' .OR. top%CWALL_OPT==
'UNIF')
THEN 408 zdir_sw_wl_a(jj) = zdir_sw_wl(jj)
409 zdir_sw_wl_b(jj) = zdir_sw_wl(jj)
419 IF (sin(pazim(jj)-zrd_dir(jj))>0.)
THEN 420 zdir_sw_wl_a(jj) = 2.* zdir_sw_wl(jj)
421 zdir_sw_wl_b(jj) = 0.
423 zdir_sw_wl_a(jj) = 0.
424 zdir_sw_wl_b(jj) = 2.* zdir_sw_wl(jj)
433 zsca_sw_rd(jj) = zsca_sw(jj) * t%XSVF_ROAD(jj)
435 zsca_sw_gd(jj) = zsca_sw(jj) * psvf_gd(jj)
440 zsca_sw_wl(jj) = zsca_sw(jj) * t%XSVF_WALL(jj)
445 psw_rad_gd(jj) = zdir_sw_gd(jj) + zsca_sw_gd(jj)
450 zaalb_rd(jj) = pdf_rd(jj) * t%XALB_ROAD (jj) + pdn_rd(jj) * t%TSNOW_ROAD%ALB (jj)
458 IF (top%CBEM==
'BEM')
THEN 460 ztran_win(:) = b%XTRAN_WIN(:)
462 g_eff_shad(:) = oshade(:).AND.(zdir_sw_wl(:) + zsca_sw_wl(:) >
xwin_sw_max)
464 oshad_day(:) = g_eff_shad(:) .OR. oshad_day(:)
466 CALL window_shading(b%XSHGC, b%XSHGC_SH, oshad_day, t%XALB_WALL, &
467 b%XABS_WIN, zabs_win, b%XALB_WIN, ztran_win )
477 zaalb_wl(:) = b%XGR(:) * b%XALB_WIN(:) + (1.-b%XGR(:)) * t%XALB_WALL(:)
484 zabs_dir_sw_sn_rd, zabs_dir_sw_wl, zabs_dir_sw_gd, &
487 IF (top%CROAD_DIR==
'UNIF' .OR. top%CWALL_OPT==
'UNIF')
THEN 489 zabs_dir_sw_wl_a = zabs_dir_sw_wl
490 zabs_dir_sw_wl_b = zabs_dir_sw_wl
495 zdw = (1.-t%XALB_WALL(:)) * zaalb_wl(:) * (1.-2.*t%XSVF_WALL(:)) &
496 / (1.+zaalb_wl(:)*(1.-2.*t%XSVF_WALL(:))) &
497 * 0.5 * (zdir_sw_wl_a(:)-zdir_sw_wl_b(:)) &
498 + 0.5 * (1.-t%XALB_WALL(:)) * (zdir_sw_wl_a-zdir_sw_wl_b)
499 zabs_dir_sw_wl_a = zabs_dir_sw_wl + zdw
500 zabs_dir_sw_wl_b = zabs_dir_sw_wl - zdw
507 zabs_sca_sw_rd, zabs_sca_sw_sn_rd, &
508 zabs_sca_sw_wl, zabs_sca_sw_gd, zabs_sca_sw_win )
512 pref_sw_grnd = zrd * t%XALB_ROAD / (1.-t%XALB_ROAD ) * (zabs_dir_sw_rd + zabs_sca_sw_rd) &
513 + zgd * palb_gd / (1.-palb_gd ) * (zabs_dir_sw_gd + zabs_sca_sw_gd)
515 pref_sw_fac = (1 - b%XGR) * t%XALB_WALL / (1.-t%XALB_WALL) * (zabs_dir_sw_wl + zabs_sca_sw_wl) &
516 + b%XGR * b%XALB_WIN / (1 - b%XALB_WIN) * (zabs_dir_sw_win + zabs_sca_sw_win)
526 CALL town_albedo(zdir_sw,zabs_dir_sw_rf,zabs_dir_sw_sn_rf, &
527 zabs_dir_sw_rd, zabs_dir_sw_sn_rd,zabs_dir_sw_wl, &
528 zabs_dir_sw_gd, zabs_dir_sw_grf, zabs_dir_sw_win, &
529 zabs_dir_sw_panel, pdir_alb_twn )
534 CALL town_albedo(zsca_sw,zabs_sca_sw_rf,zabs_sca_sw_sn_rf, &
535 zabs_sca_sw_rd, zabs_sca_sw_sn_rd,zabs_sca_sw_wl, &
536 zabs_sca_sw_gd, zabs_sca_sw_grf, zabs_sca_sw_win, &
537 zabs_sca_sw_panel, psca_alb_twn )
539 WHERE (pdir_alb_twn==
xundef) pdir_alb_twn = psca_alb_twn
542 IF (
lhook)
CALL dr_hook(
'URBAN_SOLAR_ABS',1,zhook_handle)
550 WHERE(pdir_sw(:)==0.)
551 zabs_dir_sw_rf(:) = 0.
552 zabs_dir_sw_rd(:) = 0.
553 zabs_dir_sw_wl_a(:) = 0.
554 zabs_dir_sw_wl_b(:) = 0.
555 zabs_dir_sw_gd(:) = 0.
556 zabs_dir_sw_grf(:) = 0.
557 zabs_dir_sw_panel(:) = 0.
558 zabs_dir_sw_win(:) = 0.
559 zabs_dir_sw_sn_rf(:) = 0.
560 zabs_dir_sw_sn_rd(:) = 0.
563 WHERE(psca_sw(:)==0.)
564 zabs_sca_sw_rf(:) = 0.
565 zabs_sca_sw_rd(:) = 0.
566 zabs_sca_sw_wl(:) = 0.
567 zabs_sca_sw_gd(:) = 0.
568 zabs_sca_sw_grf(:) = 0.
569 zabs_sca_sw_panel(:) = 0.
570 zabs_sca_sw_win(:) = 0.
571 zabs_sca_sw_sn_rf(:) = 0.
572 zabs_sca_sw_sn_rd(:) = 0.
575 dmt%XABS_SW_ROOF (:) = 0.
576 dmt%XABS_SW_ROAD (:) = 0.
577 dmt%XABS_SW_WALL_A (:) = 0.
578 dmt%XABS_SW_WALL_B (:) = 0.
579 dmt%XABS_SW_GARDEN (:) = 0.
580 dmt%XABS_SW_GREENROOF (:) = 0.
581 dmt%XABS_SW_SNOW_ROOF (:) = 0.
582 dmt%XABS_SW_SNOW_ROAD (:) = 0.
583 IF (top%CBEM==
"BEM")
THEN 584 dmt%XABS_SW_WIN (:) = 0.
592 prec_sw_sn_rd(:) = 0.
598 IF (top%CBEM==
'BEM')
THEN 600 DO jj=1,
SIZE(t%XROAD)
604 zrec_dir_sw_win(jj) = zabs_dir_sw_win(jj) / (1.-b%XALB_WIN(jj))
605 zrec_sca_sw_win(jj) = zabs_sca_sw_win(jj) / (1.-b%XALB_WIN(jj))
607 prec_sw_win(jj) = zrec_dir_sw_win(jj) + zrec_sca_sw_win(jj)
609 dmt%XABS_SW_WIN(jj) = (zrec_dir_sw_win(jj) + zrec_sca_sw_win(jj)) * zabs_win(jj)
611 dmt%XTR_SW_WIN (jj) = prec_sw_win(jj) * ztran_win(jj)
617 DO jj=1,
SIZE(t%XROAD)
624 dmt%XABS_SW_ROOF (jj) = zabs_dir_sw_rf(jj) + zabs_sca_sw_rf(jj)
628 dmt%XABS_SW_ROAD (jj) = zabs_dir_sw_rd(jj) + zabs_sca_sw_rd(jj)
632 dmt%XABS_SW_GARDEN (jj) = zabs_dir_sw_gd(jj) + zabs_sca_sw_gd(jj)
636 dmt%XABS_SW_GREENROOF(jj) = zabs_dir_sw_grf(jj) + zabs_sca_sw_grf(jj)
640 dmt%XABS_SW_WALL_A (jj) = zabs_dir_sw_wl_a(jj) + zabs_sca_sw_wl(jj)
641 dmt%XABS_SW_WALL_B (jj) = zabs_dir_sw_wl_b(jj) + zabs_sca_sw_wl(jj)
646 dmt%XABS_SW_SNOW_ROOF (jj) = zabs_dir_sw_sn_rf(jj) + zabs_sca_sw_sn_rf(jj)
650 dmt%XABS_SW_SNOW_ROAD (jj) = zabs_dir_sw_sn_rd(jj) + zabs_sca_sw_sn_rd(jj)
657 prec_sw_rd(jj) = dmt%XABS_SW_ROAD (jj)/(1.-t%XALB_ROAD (jj))
659 prec_sw_sn_rd(jj) = dmt%XABS_SW_SNOW_ROAD (jj)/(1.-t%TSNOW_ROAD%ALB(jj))
661 prec_sw_wl_a(jj) = dmt%XABS_SW_WALL_A (jj)/(1.-t%XALB_WALL (jj))
662 prec_sw_wl_b(jj) = dmt%XABS_SW_WALL_B (jj)/(1.-t%XALB_WALL (jj))
664 prec_sw_gd(jj) = dmt%XABS_SW_GARDEN (jj)/(1.-palb_gd(jj))
668 prec_sw_rf(jj) = (pdir_sw(jj) + psca_sw(jj)) * (1.-pfrac_panel(jj))
677 pe_shading(jj) = prec_sw_win(jj) * (1. - b%XALB_WIN(jj) - zabs_win(jj) - ztran_win(jj))
682 IF (top%LSOLAR_PANEL)
THEN 684 DO jj=1,
SIZE(t%XROAD)
688 dmt%XABS_SW_PANEL(jj) = zabs_dir_sw_panel(jj) + zabs_sca_sw_panel(jj)
696 IF (
lhook)
CALL dr_hook(
'URBAN_SOLAR_ABS',1,zhook_handle)
701 ZABS_SW_WL, ZABS_SW_GD, ZABS_SW_WIN )
703 REAL,
DIMENSION(:),
INTENT(IN) :: ZSW_RD
704 REAL,
DIMENSION(:),
INTENT(IN) :: ZSW_WL
705 REAL,
DIMENSION(:),
INTENT(IN) :: ZSW_GD
706 REAL,
DIMENSION(:),
INTENT(OUT):: ZABS_SW_RD
707 REAL,
DIMENSION(:),
INTENT(OUT):: ZABS_SW_SN_RD
708 REAL,
DIMENSION(:),
INTENT(OUT):: ZABS_SW_WL
709 REAL,
DIMENSION(:),
INTENT(OUT):: ZABS_SW_GD
710 REAL,
DIMENSION(:),
INTENT(OUT):: ZABS_SW_WIN
712 REAL,
DIMENSION(SIZE(ZSW_RD)) :: ZREF0_SW_RD
713 REAL,
DIMENSION(SIZE(ZSW_RD)) :: ZREF0_SW_WL
714 REAL,
DIMENSION(SIZE(ZSW_RD)) :: ZREF0_SW_GD
715 REAL,
DIMENSION(SIZE(ZSW_RD)) :: ZSREF_SW_RD
716 REAL,
DIMENSION(SIZE(ZSW_RD)) :: ZSREF_SW_WL
717 REAL,
DIMENSION(SIZE(ZSW_RD)) :: ZSREF_SW_GD
719 REAL,
DIMENSION(SIZE(ZSW_RD)) :: ZWORK1, ZWORK2, ZDENOM
721 REAL(KIND=JPRB) :: ZHOOK_HANDLE
723 IF (
lhook)
CALL dr_hook(
'SOLAR_REFLECTIONS',0,zhook_handle)
729 zref0_sw_rd(jj) = zaalb_rd(jj) * zsw_rd(jj)
731 zref0_sw_gd(jj) = palb_gd(jj) * zsw_gd(jj)
733 zref0_sw_wl(jj) = zaalb_wl(jj) * zsw_wl(jj)
739 zdenom(jj) = 1. - (1.-2.*t%XSVF_WALL(jj)) * t%XALB_WALL(jj) - (1. - t%XSVF_ROAD(jj))* &
740 t%XSVF_WALL(jj)*t%XALB_WALL(jj)*zaalb_rd(jj)*zrd(jj) &
741 - (1. - psvf_gd(jj))* &
742 t%XSVF_WALL(jj)*t%XALB_WALL(jj)*palb_gd(jj)*zgd(jj)
744 zwork1(jj) = t%XSVF_WALL(jj) * t%XALB_WALL(jj) * zrd(jj)
745 zwork2(jj) = t%XSVF_WALL(jj) * t%XALB_WALL(jj) * zgd(jj)
748 zsref_sw_wl(jj) = ( zref0_sw_wl(jj) + zwork1(jj) *zref0_sw_rd(jj) &
749 + zwork2(jj) *zref0_sw_gd(jj)) / zdenom(jj)
751 zsref_sw_rd(jj) = ((1.- t%XSVF_ROAD(jj)) * zaalb_rd(jj) * zref0_sw_wl(jj) &
752 +(1.- t%XSVF_ROAD(jj)) * zaalb_rd(jj) * zwork1(jj) * zref0_sw_rd(jj) &
753 +(1.- t%XSVF_ROAD(jj)) * zaalb_rd(jj) * zwork2(jj) * zref0_sw_gd(jj)) &
754 / zdenom(jj) + zref0_sw_rd(jj)
756 zsref_sw_gd(jj) = ((1.- psvf_gd(jj)) * palb_gd(jj) * zref0_sw_wl(jj) &
757 +(1.- psvf_gd(jj)) * palb_gd(jj) * zwork1(jj) * zref0_sw_rd(jj) &
758 +(1.- psvf_gd(jj)) * palb_gd(jj) * zwork2(jj) * zref0_sw_gd(jj) )&
759 / zdenom(jj) + zref0_sw_gd(jj)
764 zabs_sw_rd(jj) = (1.-t%XALB_ROAD(jj)) * (zsw_rd(jj) + zsref_sw_wl(jj) * (1.- t%XSVF_ROAD(jj)))
766 zabs_sw_sn_rd(jj) = (1.-t%TSNOW_ROAD%ALB(jj)) * &
767 (zsw_rd(jj) + zsref_sw_wl(jj) * (1.- t%XSVF_ROAD(jj)))
769 zabs_sw_gd(jj) = (1.-palb_gd(jj)) * (zsw_gd(jj) + zsref_sw_wl(jj) * (1.- psvf_gd(jj)))
775 zabs_sw_wl(jj) = (1.-t%XALB_WALL(jj)) &
777 + zsref_sw_rd(jj) * t%XSVF_WALL(jj)*zrd(jj) &
778 + zsref_sw_gd(jj) * t%XSVF_WALL(jj)*zgd(jj) &
779 + zsref_sw_wl(jj) * (1.-2.*t%XSVF_WALL(jj)) )
781 zabs_sw_win(jj) = (1.-b%XALB_WIN (jj)) &
783 + zsref_sw_rd(jj) * t%XSVF_WALL(jj)*zrd(jj) &
784 + zsref_sw_gd(jj) * t%XSVF_WALL(jj)*zgd(jj) &
785 + zsref_sw_wl(jj) * (1.-2.*t%XSVF_WALL(jj)) )
789 IF (
lhook)
CALL dr_hook(
'SOLAR_REFLECTIONS',1,zhook_handle)
795 SUBROUTINE town_albedo(ZSW,ZABS_SW_RF,ZABS_SW_SN_RF,ZABS_SW_RD,ZABS_SW_SN_RD,&
796 ZABS_SW_WL,ZABS_SW_GD, ZABS_SW_GRF, ZABS_SW_WIN, &
797 ZABS_SW_PANEL, ZALBEDO )
799 REAL,
DIMENSION(:),
INTENT(IN) :: ZSW
800 REAL,
DIMENSION(:),
INTENT(IN) :: ZABS_SW_RF
801 REAL,
DIMENSION(:),
INTENT(IN) :: ZABS_SW_RD
802 REAL,
DIMENSION(:),
INTENT(IN) :: ZABS_SW_WL
803 REAL,
DIMENSION(:),
INTENT(IN) :: ZABS_SW_WIN
804 REAL,
DIMENSION(:),
INTENT(IN) :: ZABS_SW_GD
805 REAL,
DIMENSION(:),
INTENT(IN) :: ZABS_SW_GRF
806 REAL,
DIMENSION(:),
INTENT(IN) :: ZABS_SW_SN_RF
807 REAL,
DIMENSION(:),
INTENT(IN) :: ZABS_SW_SN_RD
808 REAL,
DIMENSION(:),
INTENT(IN) :: ZABS_SW_PANEL
809 REAL,
DIMENSION(:),
INTENT(OUT):: ZALBEDO
811 REAL,
DIMENSION(SIZE(ZSW)) :: ZSW_UP
813 REAL(KIND=JPRB) :: ZHOOK_HANDLE
818 zsw_up(jj) = zsw(jj) &
819 - ( t%XBLD(jj) *(1.-t%XGREENROOF(jj))*pdf_rf(jj) *zabs_sw_rf(jj)&
820 +t%XBLD(jj) *(1.-t%XGREENROOF(jj))*pdn_rf(jj) *zabs_sw_sn_rf(jj)&
821 +t%XBLD(jj) * t%XGREENROOF(jj) *zabs_sw_grf(jj)&
822 +t%XBLD(jj) * pfrac_panel(jj) *zabs_sw_panel(jj)&
823 +t%XROAD(jj) *pdf_rd(jj) *zabs_sw_rd(jj) &
824 +t%XROAD(jj) *pdn_rd(jj) *zabs_sw_sn_rd(jj)&
825 +t%XGARDEN(jj) *zabs_sw_gd(jj) &
826 +t%XWALL_O_HOR(jj) *(1.-b%XGR(jj)) *zabs_sw_wl(jj) &
827 +t%XWALL_O_HOR(jj) * b%XGR(jj) *zabs_sw_win(jj) )
830 zalbedo(jj) = zsw_up(jj) / zsw(jj)
subroutine window_shading(PSHGC, PSHGC_SH, O_SHADE, PALB_WALL, PABS_WIN, PABS_WINSH, PALB_WIN, PTRAN_WIN)
subroutine urban_solar_abs(TOP, T, B, DMT, PDIR_SW, PSCA_SW, PZENITH, PAZIM, PFRAC_PANEL, PALB_PANEL, PALB_GD, PSVF_GD, PALB_GRF, PDN_RF, PDF_RF, PDN_RD, PDF_RD, PREC_SW_RD, PREC_SW_SN_RD, PREC_SW_WL_A, PREC_SW_WL_B, PREC_SW_GD, PREC_SW_RF, PDIR_ALB_TWN, PSCA_ALB_TWN, PSW_RAD_GD, PREC_SW_WIN, PREF_SW_GRND, PREF_SW_FAC, PE_SHADING, OSHAD_DAY, OSHADE, OALB_ONLY)
subroutine town_albedo(ZSW, ZABS_SW_RF, ZABS_SW_SN_RF, ZABS_SW_RD, ZABS_SW_SN_RD, ZABS_SW_WL, ZABS_SW_GD, ZABS_SW_GRF, ZABS_SW_WIN, ZABS_SW_PANEL, ZALBEDO)
subroutine solar_reflections(ZSW_RD, ZSW_WL, ZSW_GD, ZABS_SW_RD, ZABS_SW_SN_RD, ZABS_SW_WL, ZABS_SW_GD, ZABS_SW_WIN)
real, parameter xwin_sw_max