SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE URBAN_SOLAR_ABS(HBEM, HROAD_DIR, HWALL_OPT, & 00003 PDIR_SW, PSCA_SW, PZENITH, PAZIM, & 00004 PBLD, PGARDEN, PROAD_DIR, PROAD, PFRAC_GR, & 00005 PWALL_O_HOR, PCAN_HW_RATIO, & 00006 PALB_ROOF, & 00007 PALB_ROAD, PSVF_ROAD, PALB_WALL, PSVF_WALL, & 00008 PALB_GARDEN, PSVF_GARDEN, & 00009 PALB_GREENROOF, & 00010 PASNOW_ROOF, PASNOW_ROAD, & 00011 PDN_ROOF, PDF_ROOF, PDN_ROAD, PDF_ROAD, & 00012 PGR, PABS_WIN, PSHGC, PSHGC_SH, PALB_WIN, & 00013 PABS_SW_ROOF, PABS_SW_ROAD, & 00014 PABS_SW_WALL_A, PABS_SW_WALL_B, & 00015 PABS_SW_GARDEN, PABS_SW_GREENROOF, & 00016 PABS_SW_SNOW_ROOF, PABS_SW_SNOW_ROAD, & 00017 PREC_SW_ROAD, PREC_SW_SNOW_ROAD, & 00018 PREC_SW_WALL_A, PREC_SW_WALL_B, & 00019 PREC_SW_GARDEN, & 00020 PDIR_ALB_TOWN, PSCA_ALB_TOWN, & 00021 PSW_RAD_GARDEN, PABS_SW_WIN, PREC_SW_WIN, & 00022 PTRAN_WIN, & 00023 PREF_SW_GRND, PREF_SW_FAC, PTR_SW_WIN, & 00024 PE_SHADING, OSHAD_DAY, & 00025 OSHADE ) 00026 ! ########################################################################## 00027 ! 00028 !!**** *URBAN_SOLAR_ABS* 00029 !! 00030 !! PURPOSE 00031 !! ------- 00032 ! 00033 ! Computes the solar radiation flux absorbed by roofs, roads and walls. 00034 ! The absorption by roofs is trivial. 00035 ! 00036 ! 00037 !!** METHOD 00038 ! ------ 00039 ! 00040 ! 00041 ! computation of input solar radiation on each surface 00042 ! **************************************************** 00043 ! 00044 ! direct fluxes: 00045 ! ------------- 00046 ! 00047 ! dir_Rg_road (Wm-2) = S * 2*theta0/pi 00048 ! - S *2/tan(zen) * h/W /pi * (1-cos(theta0)) 00049 ! 00050 ! dir_Rg_wall (Wm-2) = S / tan(zen) /pi * (1-cos(theta0)) 00051 ! + S * W/h * (1/2 -theta0/pi) 00052 ! 00053 ! where zen is the zenithal angle, from horizon 00054 ! h/W is the aspect ratio of the canyon 00055 ! S is the direct solar radiation flux on a horizontal surface 00056 ! 00057 ! theta0 = arcsin(min(W/h * tan(zen),1)) 00058 ! 00059 ! The surfaces will keep (1-a) times these fluxes, and reflect the 00060 ! remaining 00061 ! 00062 ! scattered fluxes: 00063 ! ---------------- 00064 ! 00065 ! sca_Rg_road = sca_Rg * SVF_road 00066 ! 00067 ! sca_Rg_wall = sca_Rg * SVF_wall 00068 ! 00069 ! 00070 ! solar flux and isotropic reflections : 00071 ! ------------------------------------ 00072 ! 00073 ! after 0 reflection, the absorbed part of the flux is: 00074 ! 00075 ! ARg_r(0) = (1-a_r) (sca_Rg_road + dir_Rg_road) 00076 ! 00077 ! ARg_w(0) = (1-a_w) (sca_Rg_wall + dir_Rg_wall) 00078 ! 00079 ! and the reflected parts are 00080 ! 00081 ! RRg_r(0) = a_r (sca_Rg_road + dir_Rg_road) 00082 ! 00083 ! RRg_w(0) = a_w (sca_Rg_wall + dir_Rg_wall) 00084 ! 00085 ! after n reflection: 00086 ! 00087 ! ARg_r(n) = ARg_r(n-1) + RRg_w(n-1) * (1- SVF_r)(1-a_r) 00088 ! 00089 ! ARg_w(n) = ARg_w(n-1) + RRg_r(n-1) * SVF_w (1-a_w) 00090 ! + RRg_w(n-1) * (1-2*SVF_w)(1-a_w) 00091 ! 00092 ! RRg_r(n) = (1- SVF_r) a_r RRg_w(n-1) 00093 ! 00094 ! RRg_w(n) = SVF_w a_w RRg_r(n-1) 00095 ! +(1-2SVF_w) a_w RRg_w(n-1) 00096 ! 00097 ! 00098 ! i.e. 00099 ! n-1 00100 ! ARg_r(n) = ARg_r(0) + (1- SVF_r)(1-a_r) SUM RRg_w(k) 00101 ! k=0 00102 ! 00103 ! n-1 00104 ! ARg_w(n) = ARg_w(0) + SVF_w (1-a_w) SUM RRg_r(k) 00105 ! k=0 00106 ! n-1 00107 ! + (1-2*SVF_w)(1-a_w) SUM RRg_w(k) 00108 ! k=0 00109 ! 00110 ! with 00111 ! 00112 ! n n-1 00113 ! SUM RRg_r(k) = (1- SVF_r) a_r SUM RRg_w(k) + RRg_r(0) 00114 ! k=0 k=0 00115 ! 00116 ! n n-1 00117 ! SUM RRg_w(k) = SVF_w a_w SUM RRg_r(k) 00118 ! k=0 k=0 00119 ! n-1 00120 ! +(1-2*SVF_w) a_w SUM RRg_w(k) + RRg_w(0) 00121 ! k=0 00122 ! 00123 ! 00124 ! Then 00125 ! 00126 ! n n-1 00127 ! SUM RRg_w(k) = (1-2*SVF_w) a_w SUM RRg_w(k) 00128 ! k=0 k=0 00129 ! n-2 00130 ! + (1- SVF_r) SVF_w a_w a_r SUM RRg_w(k) 00131 ! k=0 00132 ! 00133 ! + RRg_w(0) + SVF_w a_w RRg_r(0) 00134 ! 00135 ! 00136 ! 00137 ! 00138 ! solving this system, lead after an infinity of reflections/absorptions: 00139 ! 00140 ! inf RRg_w(0) + SVF_w a_w RRg_r(0) 00141 ! SUM RRg_w(k) = ---------------------------------------------------- 00142 ! k=0 1 - (1-2*SVF_w) a_w - (1- SVF_r) SVF_w a_w a_r 00143 ! 00144 ! 00145 ! inf (1- SVF_r) a_r ( a_w SVF_w RRg_r(0) + RRg_w(0) ) 00146 ! SUM RRg_r(k) = ------------------------------------------------------------ + RRg_r(0) 00147 ! k=0 1 - (1-2*SVF_w) a_w - (1- SVF_r) SVF_w a_w a_r 00148 ! 00149 ! 00150 ! ARg_r(n) and ARg_w(n) follow 00151 ! 00152 ! 00153 ! If snow is present, the albedos in all these formulae (and only these, 00154 ! not the final net radiation budget) are modified by the albedo of the 00155 ! snow-covered surface. 00156 ! 00157 ! 00158 ! 00159 !! EXTERNAL 00160 !! -------- 00161 !! 00162 !! 00163 !! IMPLICIT ARGUMENTS 00164 !! ------------------ 00165 !! 00166 !! MODD_CST 00167 !! 00168 !! 00169 !! REFERENCE 00170 !! --------- 00171 !! 00172 !! 00173 !! AUTHOR 00174 !! ------ 00175 !! 00176 !! V. Masson * Meteo-France * 00177 !! 00178 !! MODIFICATIONS 00179 !! ------------- 00180 !! Original 23/01/98 00181 !! 21/11/00 (V. Masson) bug in reflections for roads 00182 !! 12/02 (A. Lemonsu) bug in diagnostic of albedo 00183 !! 12/11 (V. Masson ) adds road direction option 00184 !! 01/12 (V. Masson ) adds 2 different wall direct insulations 00185 !! 04/12 (G. Pigeon) add PTRAN_WIN 00186 !! 09/12 (C. de Munck-A. Lemonsu) add green roofs 00187 !------------------------------------------------------------------------------- 00188 ! 00189 !* 0. DECLARATIONS 00190 ! ------------ 00191 ! 00192 USE MODD_CSTS, ONLY : XPI 00193 USE MODD_BEM_CST, ONLY : XWIN_SW_MAX 00194 USE MODD_SURF_PAR, ONLY : XUNDEF 00195 ! 00196 USE MODI_WINDOW_SHADING 00197 ! 00198 ! 00199 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00200 USE PARKIND1 ,ONLY : JPRB 00201 ! 00202 IMPLICIT NONE 00203 ! 00204 !* 0.1 declarations of arguments 00205 ! 00206 CHARACTER(LEN=3) , INTENT(IN) :: HBEM ! Building Energy model 'DEF' or 'BEM' 00207 CHARACTER(LEN=4), INTENT(IN) :: HROAD_DIR ! road direction option 00208 ! 'UNIF' : classical TEB version, all roads uniformely present 00209 ! 'ORIE' : specified road ORIENTATION (in fact many roads direction 00210 ! possible because there can be many TEB patches) 00211 CHARACTER(LEN=4), INTENT(IN) :: HWALL_OPT ! walls option 00212 ! 'UNIF' : classical TEB version, all walls are identical 00213 ! 'TWO ' : the two opposite walls are different & receive different solar energy 00214 REAL, DIMENSION(:), INTENT(IN) :: PDIR_SW ! incoming direct solar radiation 00215 REAL, DIMENSION(:), INTENT(IN) :: PSCA_SW ! scattered incoming solar rad. 00216 REAL, DIMENSION(:), INTENT(IN) :: PZENITH ! solar zenithal angle 00217 REAL, DIMENSION(:), INTENT(IN) :: PAZIM ! solar azimuthal angle 00218 ! ! (radian from N, clockwise) 00219 REAL, DIMENSION(:), INTENT(IN) :: PBLD ! buildings fraction 00220 REAL, DIMENSION(:), INTENT(IN) :: PGARDEN ! GARDEN area fraction 00221 REAL, DIMENSION(:), INTENT(IN) :: PROAD_DIR ! Road direction 00222 ! (° from N, clockwise) 00223 REAL, DIMENSION(:), INTENT(IN) :: PROAD ! road fraction 00224 REAL, DIMENSION(:), INTENT(IN) :: PFRAC_GR ! green roof fraction 00225 REAL, DIMENSION(:), INTENT(IN) :: PWALL_O_HOR ! wall surf. / hor. surf 00226 REAL, DIMENSION(:), INTENT(IN) :: PCAN_HW_RATIO ! canyon h/W 00227 REAL, DIMENSION(:), INTENT(IN) :: PALB_ROOF ! roof albedo 00228 REAL, DIMENSION(:), INTENT(IN) :: PALB_ROAD ! road albedo 00229 REAL, DIMENSION(:), INTENT(IN) :: PSVF_ROAD ! road sky view factor 00230 REAL, DIMENSION(:), INTENT(IN) :: PALB_WALL ! wall albedo 00231 REAL, DIMENSION(:), INTENT(IN) :: PSVF_WALL ! wall sky view factor 00232 REAL, DIMENSION(:), INTENT(IN) :: PALB_GARDEN ! GARDEN areas albedo 00233 REAL, DIMENSION(:), INTENT(IN) :: PSVF_GARDEN ! GARDEN areas sky view factor 00234 REAL, DIMENSION(:), INTENT(IN) :: PALB_GREENROOF ! green roof albedo 00235 REAL, DIMENSION(:), INTENT(IN) :: PASNOW_ROOF ! roof snow albedo 00236 REAL, DIMENSION(:), INTENT(IN) :: PASNOW_ROAD ! road snow albedo 00237 REAL, DIMENSION(:), INTENT(IN) :: PDN_ROOF ! snow-covered roof fraction 00238 REAL, DIMENSION(:), INTENT(IN) :: PDF_ROOF ! snow-free roof fraction 00239 REAL, DIMENSION(:), INTENT(IN) :: PDN_ROAD ! snow-covered road fraction 00240 REAL, DIMENSION(:), INTENT(IN) :: PDF_ROAD ! snow-free road fraction 00241 ! 00242 REAL, DIMENSION(:), INTENT(IN) :: PGR ! glazing ratio 00243 REAL, DIMENSION(:), INTENT(IN) :: PABS_WIN ! solar absortance of windows 00244 ! 00245 !new arguments for shading 00246 REAL, DIMENSION(:), INTENT(IN) :: PSHGC ! solar transmittance of windows 00247 REAL, DIMENSION(:), INTENT(IN) :: PSHGC_SH ! window + shading solar heat gain coef. 00248 ! 00249 REAL, DIMENSION(:), INTENT(OUT) :: PALB_WIN ! solar reflectance of windows 00250 ! 00251 REAL, DIMENSION(:), INTENT(OUT) :: PABS_SW_ROOF ! solar radiation absorbed 00252 ! ! by snow-free roofs 00253 REAL, DIMENSION(:), INTENT(OUT) :: PABS_SW_ROAD ! solar radiation absorbed 00254 ! ! by snow-free roads 00255 REAL, DIMENSION(:), INTENT(OUT) :: PABS_SW_WALL_A ! solar radiation absorbed 00256 REAL, DIMENSION(:), INTENT(OUT) :: PABS_SW_WALL_B ! solar radiation absorbed 00257 ! ! by walls 00258 REAL, DIMENSION(:), INTENT(OUT) :: PABS_SW_GARDEN ! solar radiation absorbed 00259 ! ! by GARDEN areas 00260 REAL, DIMENSION(:), INTENT(OUT) :: PABS_SW_GREENROOF! solar radiation absorbed by green roofs 00261 REAL, DIMENSION(:), INTENT(OUT) :: PABS_SW_SNOW_ROOF! solar radiation absorbed 00262 ! ! by snow-covered roofs 00263 REAL, DIMENSION(:), INTENT(OUT) :: PABS_SW_SNOW_ROAD! solar radiation absorbed 00264 ! ! by snow-covered roads 00265 REAL, DIMENSION(:), INTENT(OUT) :: PREC_SW_ROAD ! solar radiation received 00266 ! ! by snow-free roads 00267 REAL, DIMENSION(:), INTENT(OUT) :: PREC_SW_WALL_A ! solar radiation received 00268 REAL, DIMENSION(:), INTENT(OUT) :: PREC_SW_WALL_B ! solar radiation received 00269 ! ! by snow-free walls 00270 REAL, DIMENSION(:), INTENT(OUT) :: PREC_SW_GARDEN ! solar radiation received 00271 ! ! by GARDEN areas 00272 REAL, DIMENSION(:), INTENT(OUT) :: PREC_SW_SNOW_ROAD! solar radiation received 00273 ! ! by snow-covered roads 00274 REAL, DIMENSION(:), INTENT(OUT) :: PDIR_ALB_TOWN ! town direct albedo 00275 REAL, DIMENSION(:), INTENT(OUT) :: PSCA_ALB_TOWN ! town diffuse albedo 00276 ! 00277 REAL, DIMENSION(:), INTENT(OUT) :: PSW_RAD_GARDEN ! solar radiation reaching GARDEN areas 00278 REAL, DIMENSION(:), INTENT(OUT) :: PABS_SW_WIN ! solar radiation absorbed by windows 00279 REAL, DIMENSION(:), INTENT(OUT) :: PREC_SW_WIN ! solar radiation received by windows 00280 00281 REAL, DIMENSION(:), INTENT(OUT) :: PREF_SW_GRND ! total solar radiation reflected by ground 00282 REAL, DIMENSION(:), INTENT(OUT) :: PREF_SW_FAC ! total solar radiation reflected by wall 00283 REAL, DIMENSION(:), INTENT(OUT) :: PTR_SW_WIN ! Solar radiation transmitted 00284 ! through glazing [W/m²(bld)] 00285 !new arguments for shading 00286 REAL, DIMENSION(:), INTENT(OUT) :: PE_SHADING ! Energy that is not reflected 00287 ! by the shading, nor transmitted through 00288 ! the bld, nor absorbed by the 00289 ! [W/m²(win)] 00290 LOGICAL, DIMENSION(:),INTENT(INOUT):: OSHAD_DAY ! has shading been necessary this day ? 00291 LOGICAL, DIMENSION(:),INTENT(IN) :: OSHADE ! are building conditions favorable for 00292 ! ! shading (independantly of solar irradiance) ? 00293 REAL, DIMENSION(:), INTENT(IN) :: PTRAN_WIN ! window transmittivity 00294 ! 00295 !* 0.2 declarations of local variables 00296 ! 00297 ! 00298 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZDIR_SW ! direct and diffuse incoming radiation 00299 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZSCA_SW ! with a minimum to compute albedo 00300 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZTANZEN ! tangente of solar zenithal angle 00301 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZTHETA0 ! canyon angle for 00302 ! ! which solar 00303 ! ! radiation 00304 ! ! reaches the road 00305 ! 00306 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZAALB_ROAD ! averaged albedo 00307 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZDIR_SW_ROAD ! direct radiation reaching 00308 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZDIR_SW_WALL_A ! road, wall A, 00309 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZDIR_SW_WALL_B ! wall B, 00310 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZDIR_SW_GARDEN ! GARDEN areas, 00311 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZDIR_SW_WALL ! and on average on 2 walls 00312 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZSCA_SW_ROAD ! diffuse radiation reaching 00313 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZSCA_SW_WALL ! road, wall, 00314 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZSCA_SW_GARDEN ! and GARDEN areas 00315 ! 00316 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_ROOF ! solar radiation 00317 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_ROAD ! absorbed by roofs, 00318 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_WALL_A ! road, wall A, 00319 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_WALL_B ! wall B, 00320 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_WALL ! both walls on average, 00321 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_GARDEN ! GARDEN areas, 00322 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_GREENROOF ! green roof areas, 00323 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_WIN ! window (abs+trans), and snow 00324 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_SNOW_ROOF ! over roof, wall, 00325 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_DIR_SW_SNOW_ROAD ! and GARDEN areas 00326 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_ROOF ! solar radiation 00327 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_ROAD ! absorbed by roofs, 00328 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_WALL ! road, wall, 00329 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_GARDEN ! GARDEN areas, 00330 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_GREENROOF ! green roof areas, 00331 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_WIN ! window (abs+trans), and snow 00332 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_SNOW_ROOF ! over roof and wall, 00333 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_SCA_SW_SNOW_ROAD ! coming from diffuse rad. 00334 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZDW ! difference of radiation 00335 ! ! absorbed by the 2 walls 00336 ! 00337 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZROAD ! 00338 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZROAD_DIR ! Road direction 00339 ! ! (radian from N, clockwise) 00340 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZGARDEN ! 00341 ! 00342 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZREC_DIR_SW_WIN 00343 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZREC_SCA_SW_WIN 00344 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZAALB_WALL 00345 ! 00346 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZTRAN_WIN ! solar transmittivity of windows 00347 REAL, DIMENSION(SIZE(PDIR_SW)) :: ZABS_WIN ! solar transmittivity of windows 00348 LOGICAL, DIMENSION(SIZE(PDIR_SW)) :: G_EFF_SHAD !TRUE if shading should be active considering actual rad 00349 ! 00350 INTEGER :: JJ ! loop index 00351 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00352 !------------------------------------------------------------------------------- 00353 ! 00354 IF (LHOOK) CALL DR_HOOK('URBAN_SOLAR_ABS',0,ZHOOK_HANDLE) 00355 PABS_SW_ROOF (:) = 0. 00356 PABS_SW_ROAD (:) = 0. 00357 PABS_SW_WALL_A (:) = 0. 00358 PABS_SW_WALL_B (:) = 0. 00359 PABS_SW_GARDEN (:) = 0. 00360 PABS_SW_GREENROOF (:) = 0. 00361 PABS_SW_SNOW_ROOF (:) = 0. 00362 PABS_SW_SNOW_ROAD (:) = 0. 00363 PABS_SW_WIN (:) = 0. 00364 PREC_SW_WIN (:) = 0. 00365 ! 00366 PREC_SW_ROAD (:) = 0. 00367 PREC_SW_WALL_A (:) = 0. 00368 PREC_SW_WALL_B (:) = 0. 00369 PREC_SW_GARDEN (:) = 0. 00370 PREC_SW_SNOW_ROAD (:) = 0. 00371 ! 00372 ZDIR_SW = MAX(PDIR_SW,0.) 00373 ZSCA_SW = MAX(PSCA_SW,0.000001) 00374 ! 00375 ZROAD_DIR = PROAD_DIR(:) * XPI/180. 00376 ! 00377 DO JJ=1,SIZE(PROAD) 00378 ! 00379 IF (PROAD(JJ)+PGARDEN(JJ).NE.0.) THEN 00380 ZROAD(JJ) = PROAD(JJ) / (PROAD(JJ)+PGARDEN(JJ)) 00381 ZGARDEN(JJ) = PGARDEN(JJ) / (PROAD(JJ)+PGARDEN(JJ)) 00382 ELSE 00383 ZROAD(JJ)=0. 00384 ZGARDEN(JJ)=0. 00385 ENDIF 00386 ! 00387 !------------------------------------------------------------------------------- 00388 ! 00389 !* 1. SOLAR RADIATIONS FOR ROOFS 00390 ! -------------------------- 00391 ! 00392 ZABS_DIR_SW_ROOF (JJ) = ZDIR_SW(JJ) * (1. - PALB_ROOF (JJ)) 00393 ZABS_DIR_SW_SNOW_ROOF(JJ) = ZDIR_SW(JJ) * (1. - PASNOW_ROOF (JJ)) 00394 ZABS_DIR_SW_GREENROOF(JJ) = ZDIR_SW(JJ) * (1. - PALB_GREENROOF(JJ)) 00395 ZABS_SCA_SW_ROOF (JJ) = ZSCA_SW(JJ) * (1. - PALB_ROOF (JJ)) 00396 ZABS_SCA_SW_SNOW_ROOF(JJ) = ZSCA_SW(JJ) * (1. - PASNOW_ROOF (JJ)) 00397 ZABS_SCA_SW_GREENROOF(JJ) = ZSCA_SW(JJ) * (1. - PALB_GREENROOF(JJ)) 00398 ! 00399 !------------------------------------------------------------------------------- 00400 ! 00401 !* 2. SOLAR RADIATIONS FOR ROADS AND WALLS 00402 ! ------------------------------------ 00403 ! 00404 IF (ABS(0.5*XPI-PZENITH(JJ)) < 1.E-6) THEN 00405 IF(0.5*XPI-PZENITH(JJ) > 0.) ZTANZEN(JJ)=TAN(0.5*XPI-1.E-6) 00406 IF(0.5*XPI-PZENITH(JJ) <= 0.) ZTANZEN(JJ)=TAN(0.5*XPI+1.E-6) 00407 ELSEIF (ABS(PZENITH(JJ)) < 1.E-6) THEN 00408 ZTANZEN(JJ)=SIGN(1.,PZENITH(JJ))*TAN(1.E-6) 00409 ELSE 00410 ZTANZEN(JJ) = TAN(PZENITH(JJ)) 00411 ENDIF 00412 ! 00413 ! 00414 IF (PBLD(JJ) .GT. 0.) THEN 00415 ! 00416 !* 2.1 radiation coefficients 00417 ! ---------------------- 00418 ! 00419 IF (HROAD_DIR=='UNIF') THEN 00420 ZTHETA0(JJ) = ASIN( MIN(ABS( 1./ZTANZEN(JJ))/PCAN_HW_RATIO(JJ), 1. ) ) 00421 ! 00422 !* 2.2 direct solar radiation received by roads and GARDEN areas 00423 ! ------------------------------------------------------- 00424 ! 00425 ZDIR_SW_ROAD (JJ) = ( ZDIR_SW(JJ) * 2. * ZTHETA0(JJ) / XPI & 00426 - ZDIR_SW(JJ) * 2. * ZTANZEN(JJ) / XPI & 00427 * PCAN_HW_RATIO(JJ) * (1.-COS(ZTHETA0(JJ))) ) 00428 ! 00429 ZDIR_SW_GARDEN(JJ) = ( ZDIR_SW(JJ) * 2. * ZTHETA0(JJ) / XPI & 00430 - ZDIR_SW(JJ) * 2. * ZTANZEN(JJ) / XPI & 00431 * PCAN_HW_RATIO(JJ) * (1.-COS(ZTHETA0(JJ))) ) 00432 ELSE 00433 ZDIR_SW_ROAD (JJ) = ZDIR_SW(JJ) * MAX(0., & 00434 1.-PCAN_HW_RATIO(JJ)*ZTANZEN(JJ)*ABS(SIN(PAZIM(JJ)-ZROAD_DIR(JJ))) & 00435 ) 00436 ZDIR_SW_GARDEN(JJ) = ZDIR_SW_ROAD(JJ) 00437 00438 END IF 00439 ! 00440 !* 2.3 direct solar radiation received by walls 00441 ! ---------------------------------------- 00442 ! 00443 ZDIR_SW_WALL(JJ) = (ZDIR_SW(JJ) - (ZDIR_SW_ROAD(JJ)*ZROAD(JJ)+ZDIR_SW_GARDEN(JJ)*ZGARDEN(JJ))) & 00444 * 0.5 / PCAN_HW_RATIO(JJ) 00445 ! 00446 00447 ELSE 00448 ! 00449 ZDIR_SW_ROAD (JJ) = ZDIR_SW(JJ) 00450 ZDIR_SW_GARDEN(JJ) = ZDIR_SW(JJ) 00451 ZDIR_SW_WALL (JJ) = 0. 00452 ! 00453 ENDIF 00454 ! 00455 IF (HROAD_DIR=='UNIF' .OR. HWALL_OPT=='UNIF') THEN 00456 !* if walls are averaged, then 00457 ZDIR_SW_WALL_A(JJ) = ZDIR_SW_WALL(JJ) 00458 ZDIR_SW_WALL_B(JJ) = ZDIR_SW_WALL(JJ) 00459 ELSE 00460 !* if walls are separated, then radiation reaches the wall facing sun 00461 ! Note that wall A is the one facing mostly to the South (depending to 00462 ! road orientation), and wall B in the one facing mostly to the North 00463 ! 00464 ! In case of N-S road, wall A is the West wall (= East-facing wall), 00465 ! and wall B is the East wall (= West-facing wall) 00466 ! In case of E-W road, wall A is the North wall (= South-facing wall), 00467 ! and wall B is the South wall (= North-facing wall) 00468 IF (SIN(PAZIM(JJ)-ZROAD_DIR(JJ))>0.) THEN 00469 ZDIR_SW_WALL_A(JJ) = 2.* ZDIR_SW_WALL(JJ) 00470 ZDIR_SW_WALL_B(JJ) = 0. 00471 ELSE 00472 ZDIR_SW_WALL_A(JJ) = 0. 00473 ZDIR_SW_WALL_B(JJ) = 2.* ZDIR_SW_WALL(JJ) 00474 END IF 00475 END IF 00476 ! 00477 ! 00478 ! 00479 !* 2.4 diffuse solar radiation received by roads and GARDEN areas 00480 ! --------------------------------------------------------- 00481 ! 00482 ZSCA_SW_ROAD (JJ) = ZSCA_SW(JJ) * PSVF_ROAD(JJ) 00483 ! 00484 ZSCA_SW_GARDEN(JJ) = ZSCA_SW(JJ) * PSVF_GARDEN(JJ) 00485 ! 00486 !* 2.5 diffuse solar radiation received by walls 00487 ! ----------------------------------------- 00488 ! 00489 ZSCA_SW_WALL(JJ) = ZSCA_SW(JJ) * PSVF_WALL(JJ) 00490 ! 00491 !* 2.6 total solar radiation received by GARDEN areas 00492 ! --------------------------------------------- 00493 ! 00494 PSW_RAD_GARDEN(JJ) = ZDIR_SW_GARDEN(JJ) + ZSCA_SW_GARDEN(JJ) 00495 ! 00496 !* 2.7 averaged albedos when snow is present 00497 ! ------------------------------------- 00498 ! 00499 ZAALB_ROAD (JJ) = PDF_ROAD (JJ) * PALB_ROAD (JJ) & 00500 + PDN_ROAD (JJ) * PASNOW_ROAD (JJ) 00501 ! 00502 ! 00503 ENDDO 00504 ! 00505 !* 2.7b averaged facade albedo 00506 ! ------------------------------------- 00507 ! 00508 IF (HBEM=='BEM') THEN 00509 ! 00510 ZTRAN_WIN (:) = PTRAN_WIN(:) 00511 ! 00512 G_EFF_SHAD(:) = OSHADE(:) .AND. & 00513 (ZDIR_SW_WALL(:) + ZSCA_SW_WALL(:) > XWIN_SW_MAX) 00514 ! 00515 OSHAD_DAY(:) = G_EFF_SHAD(:) .OR. OSHAD_DAY(:) 00516 ! 00517 CALL WINDOW_SHADING(PSHGC, PSHGC_SH, OSHAD_DAY, PALB_WALL, & 00518 PABS_WIN, ZABS_WIN, PALB_WIN, ZTRAN_WIN ) 00519 ! 00520 ELSE 00521 ! 00522 ZABS_WIN (:) = 0. 00523 PALB_WIN (:) = 0. 00524 ZTRAN_WIN(:) = 0. 00525 ! 00526 ENDIF 00527 ! 00528 ZAALB_WALL(:) = PGR(:) * PALB_WIN(:) + (1.-PGR(:)) * PALB_WALL(:) 00529 ! 00530 !* 2.8 absorption of direct incoming solar radiation 00531 ! --------------------------------------------- 00532 ! 00533 ! 00534 CALL SOLAR_REFLECTIONS(ZDIR_SW_ROAD,ZDIR_SW_WALL, & 00535 ZDIR_SW_GARDEN, & 00536 ZABS_DIR_SW_ROAD, ZABS_DIR_SW_SNOW_ROAD, & 00537 ZABS_DIR_SW_WALL, ZABS_DIR_SW_GARDEN, ZABS_DIR_SW_WIN ) 00538 ! 00539 IF (HROAD_DIR=='UNIF' .OR. HWALL_OPT=='UNIF') THEN 00540 !* if walls are averaged, then 00541 ZABS_DIR_SW_WALL_A = ZABS_DIR_SW_WALL 00542 ZABS_DIR_SW_WALL_B = ZABS_DIR_SW_WALL 00543 ELSE 00544 !* if walls are separated, then radiation reaches the wall facing sun 00545 ! Note that wall A is the one facing mostly to the North (depending to 00546 ! road orientation), and wall B in the one facing mostly to the South. 00547 ZDW = (1.-PALB_WALL(:)) * ZAALB_WALL(:) * (1.-2.*PSVF_WALL(:)) & 00548 / (1.+ZAALB_WALL(:)*(1.-2.*PSVF_WALL(:))) & 00549 * 0.5 * (ZDIR_SW_WALL_A(:)-ZDIR_SW_WALL_B(:)) & 00550 + 0.5 * (1.-PALB_WALL(:)) * (ZDIR_SW_WALL_A-ZDIR_SW_WALL_B) 00551 ZABS_DIR_SW_WALL_A = ZABS_DIR_SW_WALL + ZDW 00552 ZABS_DIR_SW_WALL_B = ZABS_DIR_SW_WALL - ZDW 00553 END IF 00554 ! 00555 !* 2.9 absorption of diffuse incoming solar radiation 00556 ! ---------------------------------------------- 00557 ! 00558 CALL SOLAR_REFLECTIONS(ZSCA_SW_ROAD,ZSCA_SW_WALL, ZSCA_SW_GARDEN, & 00559 ZABS_SCA_SW_ROAD, ZABS_SCA_SW_SNOW_ROAD, & 00560 ZABS_SCA_SW_WALL, ZABS_SCA_SW_GARDEN, ZABS_SCA_SW_WIN ) 00561 ! 00562 ! solar flux reflected for wall and road 00563 ! 00564 PREF_SW_GRND = ZROAD * PALB_ROAD / (1. - PALB_ROAD ) * & 00565 (ZABS_DIR_SW_ROAD + ZABS_SCA_SW_ROAD) & 00566 + ZGARDEN * PALB_GARDEN / (1. - PALB_GARDEN) * & 00567 (ZABS_DIR_SW_GARDEN + ZABS_SCA_SW_GARDEN) 00568 ! 00569 PREF_SW_FAC = (1 - PGR) * PALB_WALL / (1. - PALB_WALL) * & 00570 (ZABS_DIR_SW_WALL + ZABS_SCA_SW_WALL) & 00571 + PGR * PALB_WIN / (1 - PALB_WIN ) * & 00572 (ZABS_DIR_SW_WIN + ZABS_SCA_SW_WIN) 00573 ! 00574 !------------------------------------------------------------------------------- 00575 ! 00576 !* 3. Town albedo 00577 ! ----------- 00578 ! 00579 !* 3.1 direct albedo 00580 ! ------------- 00581 ! 00582 CALL TOWN_ALBEDO(ZDIR_SW,ZABS_DIR_SW_ROOF,ZABS_DIR_SW_SNOW_ROOF, & 00583 ZABS_DIR_SW_ROAD, ZABS_DIR_SW_SNOW_ROAD,ZABS_DIR_SW_WALL, & 00584 ZABS_DIR_SW_GARDEN, ZABS_DIR_SW_GREENROOF, ZABS_DIR_SW_WIN,& 00585 PDIR_ALB_TOWN ) 00586 ! 00587 !* 3.2 direct albedo 00588 ! ------------- 00589 ! 00590 CALL TOWN_ALBEDO(ZSCA_SW,ZABS_SCA_SW_ROOF,ZABS_SCA_SW_SNOW_ROOF, & 00591 ZABS_SCA_SW_ROAD, ZABS_SCA_SW_SNOW_ROAD,ZABS_SCA_SW_WALL, & 00592 ZABS_SCA_SW_GARDEN, ZABS_SCA_SW_GREENROOF, ZABS_SCA_SW_WIN,& 00593 PSCA_ALB_TOWN ) 00594 ! 00595 !------------------------------------------------------------------------------- 00596 ! 00597 !* 4. Trivial cases 00598 ! ------------- 00599 ! 00600 WHERE(PDIR_SW(:)==0.) 00601 ZABS_DIR_SW_ROOF (:) = 0. 00602 ZABS_DIR_SW_ROAD (:) = 0. 00603 ZABS_DIR_SW_WALL_A (:) = 0. 00604 ZABS_DIR_SW_WALL_B (:) = 0. 00605 ZABS_DIR_SW_GARDEN (:) = 0. 00606 ZABS_DIR_SW_GREENROOF (:) = 0. 00607 ZABS_DIR_SW_WIN (:) = 0. 00608 ZABS_DIR_SW_SNOW_ROOF (:) = 0. 00609 ZABS_DIR_SW_SNOW_ROAD (:) = 0. 00610 END WHERE 00611 ! 00612 WHERE(PSCA_SW(:)==0.) 00613 ZABS_SCA_SW_ROOF (:) = 0. 00614 ZABS_SCA_SW_ROAD (:) = 0. 00615 ZABS_SCA_SW_WALL (:) = 0. 00616 ZABS_SCA_SW_GARDEN (:) = 0. 00617 ZABS_SCA_SW_GREENROOF (:) = 0. 00618 ZABS_SCA_SW_WIN (:) = 0. 00619 ZABS_SCA_SW_SNOW_ROOF (:) = 0. 00620 ZABS_SCA_SW_SNOW_ROAD (:) = 0. 00621 END WHERE 00622 ! 00623 WHERE (PDIR_ALB_TOWN==XUNDEF) PDIR_ALB_TOWN = PSCA_ALB_TOWN 00624 ! 00625 !------------------------------------------------------------------------------- 00626 ! 00627 DO JJ=1,SIZE(PROAD) 00628 ! 00629 !* 5. Total solar radiation absorbed by each surface 00630 ! ---------------------------------------------- 00631 ! 00632 ! solar radiation absorbed by roofs 00633 ! 00634 PABS_SW_ROOF (JJ) = ZABS_DIR_SW_ROOF (JJ) + ZABS_SCA_SW_ROOF (JJ) 00635 ! 00636 ! solar radiation absorbed by roads 00637 ! 00638 PABS_SW_ROAD (JJ) = ZABS_DIR_SW_ROAD (JJ) + ZABS_SCA_SW_ROAD (JJ) 00639 ! 00640 ! solar radiation absorbed by GARDEN areas 00641 ! 00642 PABS_SW_GARDEN (JJ) = ZABS_DIR_SW_GARDEN (JJ) + ZABS_SCA_SW_GARDEN (JJ) 00643 ! 00644 ! solar radiation absorbed by GREENROOF areas 00645 ! 00646 PABS_SW_GREENROOF(JJ) = ZABS_DIR_SW_GREENROOF(JJ) + ZABS_SCA_SW_GREENROOF(JJ) 00647 ! 00648 ! solar radiation absorbed by walls 00649 ! 00650 PABS_SW_WALL_A (JJ) = ZABS_DIR_SW_WALL_A (JJ) + ZABS_SCA_SW_WALL (JJ) 00651 PABS_SW_WALL_B (JJ) = ZABS_DIR_SW_WALL_B (JJ) + ZABS_SCA_SW_WALL (JJ) 00652 ! 00653 ! solar radiation absorbed (but not transmitted) by windows 00654 ! 00655 ZREC_DIR_SW_WIN(JJ) = ZABS_DIR_SW_WIN(JJ) / (1.-PALB_WIN(JJ)) 00656 ZREC_SCA_SW_WIN(JJ) = ZABS_SCA_SW_WIN(JJ) / (1.-PALB_WIN(JJ)) 00657 ! 00658 PABS_SW_WIN (JJ) = (ZREC_DIR_SW_WIN (JJ) + ZREC_SCA_SW_WIN (JJ)) * ZABS_WIN(JJ) 00659 ! 00660 ! 00661 ! solar radiation absorbed by snow on roofs 00662 ! 00663 PABS_SW_SNOW_ROOF (JJ) = ZABS_DIR_SW_SNOW_ROOF (JJ) + ZABS_SCA_SW_SNOW_ROOF (JJ) 00664 ! 00665 ! solar radiation absorbed by snow on roads 00666 ! 00667 PABS_SW_SNOW_ROAD (JJ) = ZABS_DIR_SW_SNOW_ROAD (JJ) + ZABS_SCA_SW_SNOW_ROAD (JJ) 00668 ! 00669 !------------------------------------------------------------------------------- 00670 ! 00671 !* 6. total solar radiation received by roads and GARDEN areas 00672 ! ------------------------------------------------------- 00673 ! 00674 PREC_SW_ROAD (JJ) = PABS_SW_ROAD (JJ)/(1.-PALB_ROAD (JJ)) 00675 ! 00676 PREC_SW_SNOW_ROAD (JJ) = PABS_SW_SNOW_ROAD (JJ)/(1.-PASNOW_ROAD (JJ)) 00677 ! 00678 PREC_SW_WALL_A (JJ) = PABS_SW_WALL_A (JJ)/(1.-PALB_WALL (JJ)) 00679 PREC_SW_WALL_B (JJ) = PABS_SW_WALL_B (JJ)/(1.-PALB_WALL (JJ)) 00680 ! 00681 PREC_SW_WIN (JJ) = ZREC_DIR_SW_WIN(JJ) + ZREC_SCA_SW_WIN(JJ) 00682 ! 00683 PREC_SW_GARDEN (JJ) = PABS_SW_GARDEN (JJ)/(1.-PALB_GARDEN (JJ)) 00684 ! 00685 !------------------------------------------------------------------------------- 00686 ! 00687 !* 7. total solar radiation transmitted inside building 00688 !* and energy not ref., nor absorbed, nor transmitted 00689 ! -------------------------------------------------- 00690 ! 00691 PTR_SW_WIN(JJ) = PREC_SW_WIN(JJ) * ZTRAN_WIN(JJ) 00692 ! [W/m2(bld)] 00693 PE_SHADING(JJ) = PREC_SW_WIN(JJ) * (1. - PALB_WIN(JJ) - ZABS_WIN(JJ) - ZTRAN_WIN(JJ)) 00694 ! [W/m2(win)] 00695 00696 ENDDO 00697 ! 00698 !------------------------------------------------------------------------------- 00699 ! 00700 IF (LHOOK) CALL DR_HOOK('URBAN_SOLAR_ABS',1,ZHOOK_HANDLE) 00701 CONTAINS 00702 ! 00703 !------------------------------------------------------------------------------- 00704 SUBROUTINE SOLAR_REFLECTIONS(ZSW_ROAD,ZSW_WALL,ZSW_GARDEN, & 00705 ZABS_SW_ROAD,ZABS_SW_SNOW_ROAD, & 00706 ZABS_SW_WALL, & 00707 ZABS_SW_GARDEN, ZABS_SW_WIN ) 00708 ! 00709 REAL, DIMENSION(:), INTENT(IN) :: ZSW_ROAD ! solar radiation received by road, 00710 REAL, DIMENSION(:), INTENT(IN) :: ZSW_WALL ! wall, and GARDEN areas 00711 REAL, DIMENSION(:), INTENT(IN) :: ZSW_GARDEN ! before reflection 00712 REAL, DIMENSION(:), INTENT(OUT):: ZABS_SW_ROAD ! solar radiation absorbed by 00713 REAL, DIMENSION(:), INTENT(OUT):: ZABS_SW_SNOW_ROAD ! solar radiation absorbed by 00714 REAL, DIMENSION(:), INTENT(OUT):: ZABS_SW_WALL ! road, snow over road, and wall 00715 REAL, DIMENSION(:), INTENT(OUT):: ZABS_SW_GARDEN ! solar radiation absorbed by garden 00716 REAL, DIMENSION(:), INTENT(OUT):: ZABS_SW_WIN ! solar radiation absorbed by window 00717 ! 00718 REAL, DIMENSION(SIZE(ZSW_ROAD)) :: ZREF0_SW_ROAD ! first solar reflection 00719 REAL, DIMENSION(SIZE(ZSW_ROAD)) :: ZREF0_SW_WALL ! against road, wall 00720 REAL, DIMENSION(SIZE(ZSW_ROAD)) :: ZREF0_SW_GARDEN ! and GARDEN areas 00721 REAL, DIMENSION(SIZE(ZSW_ROAD)) :: ZSREF_SW_ROAD ! sum of all reflections 00722 REAL, DIMENSION(SIZE(ZSW_ROAD)) :: ZSREF_SW_WALL ! against road, wall, 00723 REAL, DIMENSION(SIZE(ZSW_ROAD)) :: ZSREF_SW_GARDEN ! and GARDEN areas 00724 ! 00725 REAL, DIMENSION(SIZE(ZSW_ROAD)) :: ZWORK1, ZWORK2, ZDENOM 00726 INTEGER :: JJ 00727 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00728 ! 00729 IF (LHOOK) CALL DR_HOOK('SOLAR_REFLECTIONS',0,ZHOOK_HANDLE) 00730 ! 00731 DO JJ=1,SIZE(ZSW_ROAD) 00732 !* A. first solar radiation reflection 00733 ! -------------------------------- 00734 ! 00735 ZREF0_SW_ROAD(JJ) = ZAALB_ROAD(JJ) * ZSW_ROAD(JJ) 00736 ! 00737 ZREF0_SW_GARDEN(JJ) = PALB_GARDEN(JJ) * ZSW_GARDEN(JJ) 00738 ! 00739 ZREF0_SW_WALL(JJ) = ZAALB_WALL(JJ) * ZSW_WALL(JJ) 00740 ! 00741 !* B. sum of solar radiation reflected 00742 ! -------------------------------- 00743 ! 00744 00745 ZDENOM(JJ) = 1. - (1.-2.*PSVF_WALL(JJ)) * PALB_WALL(JJ) & 00746 - (1. - PSVF_ROAD(JJ))* & 00747 PSVF_WALL(JJ)*PALB_WALL(JJ)*ZAALB_ROAD(JJ)*ZROAD(JJ) & 00748 - (1. - PSVF_GARDEN(JJ))* & 00749 PSVF_WALL(JJ)*PALB_WALL(JJ)*PALB_GARDEN(JJ)*ZGARDEN(JJ) 00750 00751 ZWORK1(JJ) = PSVF_WALL(JJ) * PALB_WALL(JJ) * ZROAD(JJ) 00752 ZWORK2(JJ) = PSVF_WALL(JJ) * PALB_WALL(JJ) * ZGARDEN(JJ) 00753 ! 00754 ! 00755 ZSREF_SW_WALL(JJ) = ( ZREF0_SW_WALL(JJ) & 00756 + ZWORK1(JJ) *ZREF0_SW_ROAD(JJ) & 00757 + ZWORK2(JJ) *ZREF0_SW_GARDEN(JJ)) & 00758 / ZDENOM(JJ) 00759 00760 ZSREF_SW_ROAD(JJ) = ( (1.- PSVF_ROAD(JJ) ) * ZAALB_ROAD(JJ) & 00761 * ZREF0_SW_WALL(JJ) & 00762 +(1.- PSVF_ROAD(JJ) ) * ZAALB_ROAD(JJ) & 00763 * ZWORK1(JJ) & 00764 * ZREF0_SW_ROAD(JJ) & 00765 +(1.- PSVF_ROAD(JJ) ) * ZAALB_ROAD(JJ) & 00766 * ZWORK2(JJ) & 00767 * ZREF0_SW_GARDEN(JJ) )& 00768 / ZDENOM(JJ) & 00769 + ZREF0_SW_ROAD(JJ) 00770 00771 ZSREF_SW_GARDEN(JJ) = ( (1.- PSVF_GARDEN(JJ)) * PALB_GARDEN(JJ) & 00772 * ZREF0_SW_WALL(JJ) & 00773 +(1.- PSVF_GARDEN(JJ)) * PALB_GARDEN(JJ) & 00774 * ZWORK1(JJ) & 00775 * ZREF0_SW_ROAD(JJ) & 00776 +(1.- PSVF_GARDEN(JJ)) * PALB_GARDEN(JJ) & 00777 * ZWORK2(JJ) & 00778 * ZREF0_SW_GARDEN(JJ) )& 00779 / ZDENOM(JJ) & 00780 + ZREF0_SW_GARDEN(JJ) 00781 ! 00782 ! 00783 !* C. total solar radiation received by roads and GARDEN areas 00784 ! ------------------------------------------------------- 00785 ! 00786 ZABS_SW_ROAD(JJ) = (1.-PALB_ROAD(JJ) ) & 00787 * ( ZSW_ROAD(JJ) & 00788 + ZSREF_SW_WALL(JJ) * (1.- PSVF_ROAD(JJ) ) ) 00789 ! 00790 ZABS_SW_SNOW_ROAD(JJ) = (1.-PASNOW_ROAD(JJ) ) & 00791 * ( ZSW_ROAD(JJ) & 00792 + ZSREF_SW_WALL(JJ) * (1.- PSVF_ROAD(JJ) ) ) 00793 ! 00794 ZABS_SW_GARDEN(JJ) = (1.-PALB_GARDEN(JJ)) & 00795 * ( ZSW_GARDEN(JJ) & 00796 + ZSREF_SW_WALL(JJ) * (1.- PSVF_GARDEN(JJ)) ) 00797 ! 00798 ! 00799 !* D. total solar radiation received by walls 00800 ! --------------------------------------- 00801 ! 00802 ZABS_SW_WALL(JJ) = (1.-PALB_WALL(JJ)) & 00803 * ( ZSW_WALL(JJ) & 00804 + ZSREF_SW_ROAD(JJ) * PSVF_WALL(JJ)*ZROAD(JJ) & 00805 + ZSREF_SW_GARDEN(JJ) * PSVF_WALL(JJ)*ZGARDEN(JJ) & 00806 + ZSREF_SW_WALL(JJ) * (1.-2.*PSVF_WALL(JJ)) ) 00807 ! 00808 ZABS_SW_WIN (JJ) = (1.-PALB_WIN (JJ)) & 00809 * ( ZSW_WALL(JJ) & 00810 + ZSREF_SW_ROAD(JJ) * PSVF_WALL(JJ)*ZROAD(JJ) & 00811 + ZSREF_SW_GARDEN(JJ) * PSVF_WALL(JJ)*ZGARDEN(JJ) & 00812 + ZSREF_SW_WALL(JJ) * (1.-2.*PSVF_WALL(JJ)) ) 00813 ! 00814 ENDDO 00815 ! 00816 IF (LHOOK) CALL DR_HOOK('SOLAR_REFLECTIONS',1,ZHOOK_HANDLE) 00817 ! 00818 END SUBROUTINE SOLAR_REFLECTIONS 00819 ! 00820 !------------------------------------------------------------------------------- 00821 ! 00822 SUBROUTINE TOWN_ALBEDO(ZSW,ZABS_SW_ROOF,ZABS_SW_SNOW_ROOF, & 00823 ZABS_SW_ROAD, ZABS_SW_SNOW_ROAD,ZABS_SW_WALL, & 00824 ZABS_SW_GARDEN, ZABS_SW_GREENROOF, ZABS_SW_WIN,& 00825 ZALBEDO ) 00826 ! 00827 REAL, DIMENSION(:), INTENT(IN) :: ZSW ! incoming solar radiation 00828 REAL, DIMENSION(:), INTENT(IN) :: ZABS_SW_ROOF ! solar radiation absorbed by roofs 00829 REAL, DIMENSION(:), INTENT(IN) :: ZABS_SW_ROAD ! solar radiation absorbed by roads 00830 REAL, DIMENSION(:), INTENT(IN) :: ZABS_SW_WALL ! solar radiation absorbed by walls 00831 REAL, DIMENSION(:), INTENT(IN) :: ZABS_SW_WIN ! solar radiation absorbed & transmitted by windows 00832 REAL, DIMENSION(:), INTENT(IN) :: ZABS_SW_GARDEN ! solar radiation absorbed by GARDEN areas 00833 REAL, DIMENSION(:), INTENT(IN) :: ZABS_SW_GREENROOF ! solar radiation absorbed by green roof areas 00834 REAL, DIMENSION(:), INTENT(IN) :: ZABS_SW_SNOW_ROOF ! solar radiation absorbed by roof snow 00835 REAL, DIMENSION(:), INTENT(IN) :: ZABS_SW_SNOW_ROAD ! solar radiation absorbed by road snow 00836 REAL, DIMENSION(:), INTENT(OUT):: ZALBEDO ! town averaged albedo 00837 00838 REAL, DIMENSION(SIZE(ZSW)) :: ZSW_UP ! outgoing solar radiation 00839 INTEGER :: JJ 00840 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00841 00842 IF (LHOOK) CALL DR_HOOK('TOWN_ALBEDO',0,ZHOOK_HANDLE) 00843 DO JJ=1,SIZE(ZSW) 00844 00845 ZSW_UP(JJ) = ZSW(JJ) & 00846 - ( PBLD(JJ) *(1.-PFRAC_GR(JJ))*PDF_ROOF(JJ) *ZABS_SW_ROOF(JJ) & 00847 +PBLD(JJ) *(1.-PFRAC_GR(JJ))*PDN_ROOF(JJ) *ZABS_SW_SNOW_ROOF(JJ)& 00848 +PBLD(JJ) * PFRAC_GR(JJ) *ZABS_SW_GREENROOF(JJ)& 00849 +PROAD(JJ) *PDF_ROAD(JJ) *ZABS_SW_ROAD (JJ) & 00850 +PROAD(JJ) *PDN_ROAD(JJ) *ZABS_SW_SNOW_ROAD(JJ)& 00851 +PGARDEN(JJ) *ZABS_SW_GARDEN(JJ) & 00852 +PWALL_O_HOR(JJ) *(1.-PGR(JJ)) *ZABS_SW_WALL(JJ) & 00853 +PWALL_O_HOR(JJ) * PGR(JJ) *ZABS_SW_WIN (JJ) ) 00854 ! 00855 IF (ZSW(JJ)>0.) THEN 00856 ZALBEDO(JJ) = ZSW_UP(JJ) / ZSW(JJ) 00857 ELSE 00858 ZALBEDO(JJ) = XUNDEF 00859 END IF 00860 ! 00861 ENDDO 00862 IF (LHOOK) CALL DR_HOOK('TOWN_ALBEDO',1,ZHOOK_HANDLE) 00863 ! 00864 END SUBROUTINE TOWN_ALBEDO 00865 ! 00866 !------------------------------------------------------------------------------- 00867 ! 00868 END SUBROUTINE URBAN_SOLAR_ABS