SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE URBAN_FLUXES(HIMPLICIT_WIND, OCANOPY, PT_CANYON, & 00003 PPEW_A_COEF, PPEW_B_COEF, & 00004 PEXNS, PRHOA, PVMOD, & 00005 PH_TRAFFIC, PLE_TRAFFIC, PH_INDUSTRY, PLE_INDUSTRY, & 00006 PBLD, PROAD, PWALL_O_HOR, PFRAC_GR, & 00007 PABS_SW_ROOF, PABS_LW_ROOF, & 00008 PABS_SW_WALL_A, PABS_LW_WALL_A, & 00009 PABS_SW_WALL_B, PABS_LW_WALL_B, & 00010 PABS_SW_ROAD, PABS_LW_ROAD, & 00011 PAC_WALL, PCD, & 00012 PDF_ROOF, PDN_ROOF, PDF_ROAD, PDN_ROAD, & 00013 PRNSNOW_ROOF, PHSNOW_ROOF, PLESNOW_ROOF, PGSNOW_ROOF, & 00014 PRNSNOW_ROAD, PHSNOW_ROAD, PLESNOW_ROAD, PGSNOW_ROAD, & 00015 PMELT_ROOF, PDQS_ROOF, & 00016 PMELT_ROAD, PDQS_ROAD, & 00017 PDQS_WALL_A, PDQS_WALL_B, & 00018 PFLX_BLD_ROOF, PFLX_BLD_WALL_A, PFLX_BLD_WALL_B, & 00019 PFLX_BLD_FLOOR, & 00020 PFLX_BLD_MASS, PE_SHADING, HBEM, PGR, PT_WIN1, PH_WASTE, & 00021 PLE_WASTE, PF_WASTE_CAN, PABS_SW_WIN, PABS_LW_WIN, PQIN, & 00022 PN_FLOOR, PLEW_ROOF, PLEW_ROAD, & 00023 PRN_GREENROOF, PH_GREENROOF, PLE_GREENROOF, & 00024 PGFLUX_GREENROOF, & 00025 PH_ROOF, PH_ROAD, PH_WALL_A, PH_WALL_B, & 00026 PRN_ROOF, PLE_ROOF, & 00027 PGFLUX_ROOF, PRN_ROAD, PLE_ROAD, PGFLUX_ROAD, & 00028 PRN_WALL_A, PLE_WALL_A, PGFLUX_WALL_A, & 00029 PRN_WALL_B, PLE_WALL_B, PGFLUX_WALL_B, & 00030 PRN_STRLROOF, PH_STRLROOF, PLE_STRLROOF, & 00031 PGFLUX_STRLROOF, & 00032 PRN_BLT, PH_BLT, PLE_BLT, & 00033 PGFLUX_BLT, PMELT_BLT, PQF_BLD, PFLX_BLD, PDQS_BLT, & 00034 PQF_TOWN, PUSTAR_TOWN, PHVAC_COOL, PHVAC_HEAT ) 00035 ! ########################################################################## 00036 ! 00037 !!**** *URBAN_FLUXES* computes fluxes on urbanized surfaces 00038 !! 00039 !! PURPOSE 00040 !! ------- 00041 ! 00042 ! 00043 !!** METHOD 00044 ! ------ 00045 ! 00046 ! 00047 ! 00048 ! 00049 !! EXTERNAL 00050 !! -------- 00051 !! 00052 !! 00053 !! IMPLICIT ARGUMENTS 00054 !! ------------------ 00055 !! 00056 !! MODD_CST 00057 !! 00058 !! 00059 !! REFERENCE 00060 !! --------- 00061 !! 00062 !! 00063 !! AUTHOR 00064 !! ------ 00065 !! 00066 !! V. Masson * Meteo-France * 00067 !! 00068 !! MODIFICATIONS 00069 !! ------------- 00070 !! Original 23/01/98 00071 !! 12/02 (A. Lemonsu) modifications of emissivity and Tstown 00072 !! 07/07 (P. LeMoigne) expression of latent heat fluxes as 00073 !! functions of w'theta' instead of w'T' 00074 !! 17/10 (G. Pigeon) computation of anthropogenic heat due 00075 !! to domestic heating 00076 !! Modified 09/2012 : B. Decharme New wind implicitation 00077 !------------------------------------------------------------------------------- 00078 ! 00079 !* 0. DECLARATIONS 00080 ! ------------ 00081 ! 00082 USE MODD_SURF_PAR, ONLY : XUNDEF 00083 USE MODD_CSTS, ONLY : XCPD 00084 ! 00085 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00086 USE PARKIND1 ,ONLY : JPRB 00087 ! 00088 IMPLICIT NONE 00089 ! 00090 !* 0.1 declarations of arguments 00091 ! 00092 ! 00093 CHARACTER(LEN=*), INTENT(IN) :: HIMPLICIT_WIND ! wind implicitation option 00094 ! ! 'OLD' = direct 00095 ! ! 'NEW' = Taylor serie, order 1 00096 LOGICAL, INTENT(IN) :: OCANOPY ! is canopy active ? 00097 REAL, DIMENSION(:), INTENT(IN) :: PT_CANYON ! canyon air temperature 00098 00099 REAL, DIMENSION(:), INTENT(IN) :: PPEW_A_COEF ! implicit coefficients 00100 REAL, DIMENSION(:), INTENT(IN) :: PPEW_B_COEF ! for wind coupling 00101 REAL, DIMENSION(:), INTENT(IN) :: PEXNS ! surface exner function 00102 00103 REAL, DIMENSION(:), INTENT(IN) :: PRHOA ! air density 00104 ! at the lowest level 00105 REAL, DIMENSION(:), INTENT(IN) :: PVMOD ! module of the horizontal wind 00106 REAL, DIMENSION(:), INTENT(IN) :: PH_TRAFFIC ! anthropogenic sensible 00107 ! ! heat fluxes due to traffic 00108 REAL, DIMENSION(:), INTENT(IN) :: PLE_TRAFFIC ! anthropogenic latent 00109 ! ! heat fluxes due to traffic 00110 REAL, DIMENSION(:), INTENT(IN) :: PH_INDUSTRY ! anthropogenic sensible 00111 ! ! heat fluxes due to factories 00112 REAL, DIMENSION(:), INTENT(IN) :: PLE_INDUSTRY ! anthropogenic latent 00113 ! ! heat fluxes due to factories 00114 REAL, DIMENSION(:), INTENT(IN) :: PBLD ! fraction of buildings 00115 REAL, DIMENSION(:), INTENT(IN) :: PROAD ! fraction of roads 00116 REAL, DIMENSION(:), INTENT(IN) :: PWALL_O_HOR ! wall Surf. / (bld+road+green) Surf. 00117 REAL, DIMENSION(:), INTENT(IN) :: PFRAC_GR ! Fraction of green roofs 00118 ! 00119 REAL, DIMENSION(:), INTENT(IN) :: PABS_SW_ROOF ! absorbed SW rad. by roof 00120 REAL, DIMENSION(:), INTENT(IN) :: PABS_LW_ROOF ! absorbed LW rad. by roof 00121 REAL, DIMENSION(:), INTENT(IN) :: PABS_SW_WALL_A! absorbed SW rad. by wall A 00122 REAL, DIMENSION(:), INTENT(IN) :: PABS_LW_WALL_A! absorbed LW rad. by wall A 00123 REAL, DIMENSION(:), INTENT(IN) :: PABS_SW_WALL_B! absorbed SW rad. by wall B 00124 REAL, DIMENSION(:), INTENT(IN) :: PABS_LW_WALL_B! absorbed LW rad. by wall B 00125 REAL, DIMENSION(:), INTENT(IN) :: PABS_SW_ROAD ! absorbed SW rad. by road 00126 REAL, DIMENSION(:), INTENT(IN) :: PABS_LW_ROAD ! absorbed LW rad. by road 00127 ! 00128 REAL, DIMENSION(:), INTENT(IN) :: PAC_WALL ! surface conductance 00129 ! ! for heat transfer 00130 ! ! between wall and canyon 00131 REAL, DIMENSION(:), INTENT(IN) :: PCD ! drag coefficient 00132 REAL, DIMENSION(:), INTENT(IN) :: PDF_ROOF ! snow-free roof fraction 00133 REAL, DIMENSION(:), INTENT(IN) :: PDN_ROOF ! snow-covered roof fraction 00134 REAL, DIMENSION(:), INTENT(IN) :: PDF_ROAD ! snow-free road fraction 00135 REAL, DIMENSION(:), INTENT(IN) :: PDN_ROAD ! snow-covered road fraction 00136 ! 00137 REAL, DIMENSION(:), INTENT(IN) :: PRNSNOW_ROOF ! net radiation over snow 00138 REAL, DIMENSION(:), INTENT(IN) :: PHSNOW_ROOF ! sensible heat flux over snow 00139 REAL, DIMENSION(:), INTENT(IN) :: PLESNOW_ROOF ! latent heat flux over snow 00140 REAL, DIMENSION(:), INTENT(IN) :: PGSNOW_ROOF ! flux under the snow 00141 REAL, DIMENSION(:), INTENT(IN) :: PRNSNOW_ROAD ! net radiation over snow 00142 REAL, DIMENSION(:), INTENT(IN) :: PHSNOW_ROAD ! sensible heat flux over snow 00143 REAL, DIMENSION(:), INTENT(IN) :: PLESNOW_ROAD ! latent heat flux over snow 00144 REAL, DIMENSION(:), INTENT(IN) :: PGSNOW_ROAD ! flux under the snow 00145 ! 00146 REAL, DIMENSION(:), INTENT(IN) :: PMELT_ROOF ! snow melting on roof 00147 REAL, DIMENSION(:), INTENT(IN) :: PDQS_ROOF ! storage inside roofs 00148 REAL, DIMENSION(:), INTENT(IN) :: PMELT_ROAD ! snow melting on road 00149 REAL, DIMENSION(:), INTENT(IN) :: PDQS_ROAD ! storage inside roads 00150 REAL, DIMENSION(:), INTENT(IN) :: PDQS_WALL_A ! storage inside walls 00151 REAL, DIMENSION(:), INTENT(IN) :: PDQS_WALL_B ! storage inside walls 00152 REAL, DIMENSION(:), INTENT(IN) :: PFLX_BLD_ROOF! heat flx from bld to roof 00153 REAL, DIMENSION(:), INTENT(IN) :: PFLX_BLD_WALL_A! heat flx from bld to wall A 00154 REAL, DIMENSION(:), INTENT(IN) :: PFLX_BLD_WALL_B! heat flx from bld to wall B 00155 REAL, DIMENSION(:), INTENT(IN) :: PFLX_BLD_FLOOR! heat flx from bld to floor 00156 REAL, DIMENSION(:), INTENT(IN) :: PFLX_BLD_MASS! heat flx from bld to mass 00157 REAL, DIMENSION(:), INTENT(IN) :: PE_SHADING ! energy not ref., nor absorbed, nor 00158 !trans. by glazing [W 00159 !m-2(win)] 00160 CHARACTER(LEN=3), INTENT(IN) :: HBEM ! Building Energy model 'DEF' or 'BEM' 00161 ! 00162 REAL, DIMENSION(:), INTENT(IN) :: PGR ! glazing ratio 00163 REAL, DIMENSION(:), INTENT(IN) :: PT_WIN1 ! Outdoor window temperature [K] 00164 REAL, DIMENSION(:), INTENT(IN) :: PH_WASTE ! sensible waste heat released by HVAC systems [W m-2(urb)] 00165 REAL, DIMENSION(:), INTENT(IN) :: PLE_WASTE ! latent waste heat released by HVAC systems [W m-2(urb)] 00166 REAL, DIMENSION(:), INTENT(IN) :: PF_WASTE_CAN ! fraction of waste heat released into the canyon 00167 REAL, DIMENSION(:), INTENT(IN) :: PABS_SW_WIN ! absorbed SW radiation by windows [W m-2] 00168 REAL, DIMENSION(:), INTENT(IN) :: PABS_LW_WIN ! absorbed LW radiation by windows [W m-2] 00169 REAL, DIMENSION(:), INTENT(IN) :: PQIN ! Internal heat gains [W m-2(floor)] 00170 REAL, DIMENSION(:), INTENT(IN) :: PN_FLOOR ! Number of Building floors [-] 00171 ! 00172 REAL, DIMENSION(:), INTENT(IN) :: PLEW_ROOF ! latent heat flux over snow-free roof 00173 REAL, DIMENSION(:), INTENT(IN) :: PLEW_ROAD ! latent heat flux of snow-free road 00174 ! 00175 REAL, DIMENSION(:), INTENT(IN) :: PRN_GREENROOF ! net radiation of green roofs 00176 REAL, DIMENSION(:), INTENT(IN) :: PH_GREENROOF ! sensible heat flux of green roofs 00177 REAL, DIMENSION(:), INTENT(IN) :: PLE_GREENROOF ! latent heat flux of green roofs 00178 REAL, DIMENSION(:), INTENT(IN) :: PGFLUX_GREENROOF ! heat storage flux of green roofs 00179 ! 00180 REAL, DIMENSION(:), INTENT(INOUT) :: PH_ROOF ! sensible heat flux over roof 00181 REAL, DIMENSION(:), INTENT(INOUT) :: PH_ROAD ! sensible heat flux from snow free road 00182 ! to air (in) and from all road to air (out) 00183 REAL, DIMENSION(:), INTENT(INOUT) :: PH_WALL_A ! sensible heat flux wall to 00184 ! air (in) and facade to air (out) 00185 REAL, DIMENSION(:), INTENT(INOUT) :: PH_WALL_B ! sensible heat flux wall to 00186 ! air (in) and facade to air (out) 00187 ! 00188 REAL, DIMENSION(:), INTENT(OUT) :: PRN_ROOF ! net radiation over roof 00189 REAL, DIMENSION(:), INTENT(OUT) :: PLE_ROOF ! latent heat flux over roof 00190 REAL, DIMENSION(:), INTENT(OUT) :: PGFLUX_ROOF ! flux through the roof 00191 REAL, DIMENSION(:), INTENT(OUT) :: PRN_ROAD ! net radiation over road 00192 REAL, DIMENSION(:), INTENT(OUT) :: PLE_ROAD ! latent heat flux over road 00193 00194 REAL, DIMENSION(:), INTENT(OUT) :: PGFLUX_ROAD ! flux through the road 00195 REAL, DIMENSION(:), INTENT(OUT) :: PRN_WALL_A ! net radiation over wall 00196 REAL, DIMENSION(:), INTENT(OUT) :: PLE_WALL_A ! latent heat flux over wall 00197 REAL, DIMENSION(:), INTENT(OUT) :: PGFLUX_WALL_A! flux through the wall 00198 REAL, DIMENSION(:), INTENT(OUT) :: PRN_WALL_B ! net radiation over wall 00199 REAL, DIMENSION(:), INTENT(OUT) :: PLE_WALL_B ! latent heat flux over wall 00200 REAL, DIMENSION(:), INTENT(OUT) :: PGFLUX_WALL_B! flux through the wall 00201 ! 00202 REAL, DIMENSION(:), INTENT(OUT) :: PRN_STRLROOF ! net radiation of structural roof 00203 REAL, DIMENSION(:), INTENT(OUT) :: PH_STRLROOF ! sensible heat flux of structural roof 00204 REAL, DIMENSION(:), INTENT(OUT) :: PLE_STRLROOF ! latent heat flux of structural roof 00205 REAL, DIMENSION(:), INTENT(OUT) :: PGFLUX_STRLROOF ! heat storage flux of structural roof 00206 ! 00207 REAL, DIMENSION(:), INTENT(OUT) :: PRN_BLT ! net radiation over built covers 00208 REAL, DIMENSION(:), INTENT(OUT) :: PH_BLT ! sensible heat flux over built covers 00209 REAL, DIMENSION(:), INTENT(OUT) :: PLE_BLT ! latent heat flux over built covers 00210 REAL, DIMENSION(:), INTENT(OUT) :: PGFLUX_BLT ! flux through the built covers 00211 REAL, DIMENSION(:), INTENT(OUT) :: PMELT_BLT ! snow melting for town 00212 ! 00213 REAL, DIMENSION(:), INTENT(OUT) :: PQF_BLD ! anthropogenic heat due to domestic heating [W m-2(bld)] 00214 REAL, DIMENSION(:), INTENT(OUT) :: PFLX_BLD ! heat flx from bld to its structure [W m-2(bld)] 00215 REAL, DIMENSION(:), INTENT(OUT) :: PDQS_BLT ! storage inside urban materials 00216 REAL, DIMENSION(:), INTENT(OUT) :: PQF_TOWN ! total anthropogenic heat [W m-2(urb)] 00217 REAL, DIMENSION(:), INTENT(OUT) :: PUSTAR_TOWN ! friction velocity over town 00218 ! 00219 REAL, DIMENSION(:), INTENT(IN) :: PHVAC_COOL ! Energy consumption of the cooling system 00220 ! [W m-2(bld)] 00221 REAL, DIMENSION(:), INTENT(IN) :: PHVAC_HEAT ! Energy consumption of the heating system 00222 ! [W m-2(bld)] 00223 ! 00224 !* 0.2 declarations of local variables 00225 ! 00226 REAL, DIMENSION(SIZE(PRHOA)) :: ZH_ROOF_SNOWFREE 00227 REAL, DIMENSION(SIZE(PRHOA)) :: ZRN_ROOF_SNOWFREE 00228 REAL, DIMENSION(SIZE(PRHOA)) :: ZUSTAR2 ! square of friction velocity (m2/s2) 00229 REAL, DIMENSION(SIZE(PRHOA)) :: ZVMOD ! Wind 00230 ! 00231 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00232 ! 00233 !------------------------------------------------------------------------------- 00234 IF (LHOOK) CALL DR_HOOK('URBAN_FLUXES',0,ZHOOK_HANDLE) 00235 ! 00236 !* 1. Fluxes at snow-free roofs 00237 ! ------------------------- 00238 ! 00239 ! net radiation 00240 ! 00241 ! 00242 ZRN_ROOF_SNOWFREE(:) = PABS_SW_ROOF(:) + PABS_LW_ROOF(:) 00243 ! 00244 ! sensible heat flux 00245 ! 00246 ZH_ROOF_SNOWFREE(:) = PH_ROOF(:) 00247 ! 00248 !------------------------------------------------------------------------------- 00249 ! 00250 !* 2. Fluxes at snow-free roads 00251 ! ------------------------- 00252 ! 00253 ! net radiation 00254 ! 00255 PRN_ROAD(:) = PABS_SW_ROAD(:) + PABS_LW_ROAD(:) 00256 ! 00257 !------------------------------------------------------------------------------- 00258 ! 00259 !* 3. Fluxes at walls 00260 ! --------------- 00261 ! 00262 ! net radiation 00263 ! 00264 PRN_WALL_A(:) = (PABS_SW_WALL_A(:) + PABS_LW_WALL_A(:)) * (1.-PGR(:)) & 00265 + (PABS_SW_WIN (:) + PABS_LW_WIN (:)) * PGR(:) 00266 PRN_WALL_B(:) = (PABS_SW_WALL_B(:) + PABS_LW_WALL_B(:)) * (1.-PGR(:)) & 00267 + (PABS_SW_WIN (:) + PABS_LW_WIN (:)) * PGR(:) 00268 ! 00269 ! heat flux into the ground 00270 ! 00271 PGFLUX_WALL_A(:) = PRN_WALL_A(:) - PH_WALL_A(:) 00272 PGFLUX_WALL_B(:) = PRN_WALL_B(:) - PH_WALL_B(:) 00273 ! 00274 ! sensible heat flux 00275 ! 00276 !before -> PH_WALL in [W.m-2(wall)] 00277 PH_WALL_A(:) = (1. - PGR(:)) * PH_WALL_A(:) + PGR(:) * & 00278 ( PAC_WALL(:)*XCPD*PRHOA(:)/PEXNS(:) * (PT_WIN1(:)-PT_CANYON(:)) + PE_SHADING(:) ) & 00279 + PF_WASTE_CAN(:) * PH_WASTE(:) / PWALL_O_HOR(:) 00280 PH_WALL_B(:) = (1. - PGR(:)) * PH_WALL_B(:) + PGR(:) * & 00281 ( PAC_WALL(:)*XCPD*PRHOA(:)/PEXNS(:) * (PT_WIN1(:)-PT_CANYON(:)) + PE_SHADING(:) ) & 00282 + PF_WASTE_CAN(:) * PH_WASTE(:) / PWALL_O_HOR(:) 00283 !after PH_WALL in [W.m-2(facade=wall + win)] 00284 PLE_WALL_A(:) = PF_WASTE_CAN(:) * PLE_WASTE(:) / PWALL_O_HOR(:) 00285 PLE_WALL_B(:) = PF_WASTE_CAN(:) * PLE_WASTE(:) / PWALL_O_HOR(:) 00286 ! 00287 !------------------------------------------------------------------------------- 00288 ! 00289 !* 4. Snow-free and snow-covered surfaces averaging 00290 ! --------------------------------------------- 00291 ! 00292 !* 4.1 Roads 00293 ! ----- 00294 ! 00295 ! heat flux into the ground 00296 ! 00297 PGFLUX_ROAD (:) = PDF_ROAD(:) * (PRN_ROAD(:) - PH_ROAD (:) - PLEW_ROAD(:) ) & 00298 + PDN_ROAD(:) * PGSNOW_ROAD(:) 00299 ! 00300 ! net radiation 00301 ! 00302 PRN_ROAD(:) = PRN_ROAD(:) * PDF_ROAD(:) + PRNSNOW_ROAD(:) * PDN_ROAD(:) 00303 ! 00304 ! sensible heat flux 00305 ! total latent heat of evaporation from 00306 ! the road (snow free + snow) 00307 ! 00308 ! sensible heat flux 00309 ! 00310 PH_ROAD (:) = PH_ROAD (:) * PDF_ROAD(:) + PHSNOW_ROAD(:) * PDN_ROAD(:) 00311 ! total latent heat of evaporation from the road (snow free + snow) 00312 ! 00313 PLE_ROAD (:) = PLEW_ROAD(:) * PDF_ROAD(:) + PLESNOW_ROAD(:) * PDN_ROAD(:) 00314 ! 00315 !* 4.2 Roofs 00316 ! ----- 00317 ! 00318 ! heat flux into the ground 00319 ! 00320 PGFLUX_STRLROOF(:) = PDF_ROOF(:) * (ZRN_ROOF_SNOWFREE(:) - ZH_ROOF_SNOWFREE(:) - PLEW_ROOF(:)) & 00321 + PDN_ROOF(:) * PGSNOW_ROOF(:) 00322 PGFLUX_ROOF (:) = (1.-PFRAC_GR(:)) * PGFLUX_STRLROOF(:) + PFRAC_GR(:) * PGFLUX_GREENROOF(:) 00323 ! 00324 ! 00325 ! net radiation 00326 ! 00327 PRN_STRLROOF (:) = ZRN_ROOF_SNOWFREE(:) * PDF_ROOF(:) + PRNSNOW_ROOF(:) * PDN_ROOF(:) 00328 PRN_ROOF (:) = (1.-PFRAC_GR(:)) * PRN_STRLROOF(:) + PFRAC_GR(:) * PRN_GREENROOF(:) 00329 ! 00330 ! sensible heat flux 00331 ! total latent heat of evaporation from 00332 ! the roof (snow free + snow) 00333 ! 00334 ! sensible heat flux 00335 ! 00336 PH_STRLROOF (:) = PH_ROOF(:) * PDF_ROOF(:) + PHSNOW_ROOF(:) * PDN_ROOF(:) 00337 PH_ROOF (:) = (1.-PFRAC_GR(:)) * PH_STRLROOF(:) + PFRAC_GR(:) * PH_GREENROOF(:) & 00338 + (1 - PF_WASTE_CAN(:)) * PH_WASTE(:) / PBLD(:) 00339 ! 00340 ! total latent heat of evaporation from the roof (snow free + snow) 00341 ! 00342 PLE_STRLROOF (:) = PLEW_ROOF(:) * PDF_ROOF(:) + PLESNOW_ROOF(:) * PDN_ROOF(:) 00343 PLE_ROOF (:) = (1.-PFRAC_GR(:)) * PLE_STRLROOF(:) + PFRAC_GR(:) * PLE_GREENROOF(:) & 00344 + (1 - PF_WASTE_CAN(:)) * PLE_WASTE(:)/PBLD(:) 00345 ! 00346 !------------------------------------------------------------------------------- 00347 ! 00348 !* 5. Momentum fluxes 00349 ! --------------- 00350 ! 00351 PUSTAR_TOWN(:) = XUNDEF 00352 ! 00353 IF (.NOT. OCANOPY) THEN 00354 ! 00355 ZUSTAR2(:) = 0.0 00356 ZVMOD (:) = PVMOD(:) 00357 ! 00358 IF(HIMPLICIT_WIND=='OLD')THEN 00359 ! old implicitation 00360 ZUSTAR2(:) = (PCD(:)*PVMOD(:)*PPEW_B_COEF(:))/ & 00361 (1.0-PRHOA(:)*PCD(:)*PVMOD(:)*PPEW_A_COEF(:)) 00362 ELSE 00363 ! new implicitation 00364 ZUSTAR2(:) = (PCD(:)*PVMOD(:)*(2.*PPEW_B_COEF(:)-PVMOD(:)))/ & 00365 (1.0-2.0*PRHOA(:)*PCD(:)*PVMOD(:)*PPEW_A_COEF(:)) 00366 ! 00367 ZVMOD(:) = PRHOA(:)*PPEW_A_COEF(:)*ZUSTAR2(:) + PPEW_B_COEF(:) 00368 ZVMOD(:) = MAX(ZVMOD(:),0.) 00369 ! 00370 WHERE(PPEW_A_COEF(:)/= 0.) 00371 ZUSTAR2(:) = MAX( ( ZVMOD(:) - PPEW_B_COEF(:) ) / (PRHOA(:)*PPEW_A_COEF(:)), 0.) 00372 ENDWHERE 00373 ! 00374 ENDIF 00375 ! 00376 PUSTAR_TOWN(:) = SQRT(ZUSTAR2(:)) 00377 ! 00378 ENDIF 00379 ! 00380 !------------------------------------------------------------------------------- 00381 ! 00382 !* 6. Averaged fluxes 00383 ! --------------- 00384 ! 00385 !* 6.1 Built fraction 00386 ! -------------- 00387 ! 00388 PRN_BLT (:) = ( PBLD(:) * PRN_ROOF(:) & 00389 + PROAD(:) * PRN_ROAD(:) & 00390 + 0.5*PWALL_O_HOR(:) * PRN_WALL_A(:) & 00391 + 0.5*PWALL_O_HOR(:) * PRN_WALL_B(:)) & 00392 / (PROAD(:) + PBLD(:)) 00393 ! 00394 PH_BLT (:) = ( PBLD(:) * PH_ROOF(:) & 00395 + PROAD(:) * PH_ROAD(:) & 00396 + 0.5*PWALL_O_HOR(:) * PH_WALL_A(:) & 00397 + 0.5*PWALL_O_HOR(:) * PH_WALL_B(:)) & 00398 / (PROAD(:) + PBLD(:)) 00399 ! 00400 PLE_BLT (:) = ( PBLD(:) * PLE_ROOF (:) & 00401 + PROAD(:) * PLE_ROAD (:) & 00402 + 0.5*PWALL_O_HOR(:) * PLE_WALL_A (:) & 00403 + 0.5*PWALL_O_HOR(:) * PLE_WALL_B (:)) & 00404 / (PROAD(:) + PBLD(:)) 00405 ! 00406 PGFLUX_BLT (:) = ( PBLD(:) * PGFLUX_ROOF (:) & 00407 + PROAD(:) * PGFLUX_ROAD (:) & 00408 + 0.5*PWALL_O_HOR(:) * PGFLUX_WALL_A (:) & 00409 + 0.5*PWALL_O_HOR(:) * PGFLUX_WALL_B (:)) & 00410 / (PROAD(:) + PBLD(:)) 00411 ! 00412 PMELT_BLT (:) = ( PBLD(:) * PMELT_ROOF(:) * PDN_ROOF(:) & 00413 + PROAD(:) * PMELT_ROAD(:) * PDN_ROAD(:)) & 00414 / (PROAD(:) + PBLD(:)) 00415 ! 00416 PDQS_BLT (:) = ( PBLD(:) * PDQS_ROOF (:) & 00417 + PROAD(:) * PDQS_ROAD (:) & 00418 + 0.5*PWALL_O_HOR(:) * PDQS_WALL_A (:) & 00419 + 0.5*PWALL_O_HOR(:) * PDQS_WALL_B (:) ) & 00420 / (PROAD(:) + PBLD(:)) 00421 ! 00422 IF (HBEM == "DEF") THEN 00423 PQF_BLD(:) = ( ZH_ROOF_SNOWFREE(:) + PLEW_ROOF(:) + & 00424 PDQS_ROOF(:) - ZRN_ROOF_SNOWFREE(:) ) * PDF_ROOF(:) & 00425 + ( PDQS_ROOF(:) - PGSNOW_ROOF (:) ) * PDN_ROOF(:) & 00426 + 0.5*PWALL_O_HOR(:)/PBLD(:) * ( PH_WALL_A(:) + PLE_WALL_A(:) + PDQS_WALL_A(:) - PRN_WALL_A(:) ) & 00427 + 0.5*PWALL_O_HOR(:)/PBLD(:) * ( PH_WALL_B(:) + PLE_WALL_B(:) + PDQS_WALL_B(:) - PRN_WALL_B(:) ) 00428 ELSEIF (HBEM == "BEM") THEN 00429 PQF_BLD(:) = PQIN(:)*PN_FLOOR(:) + PHVAC_COOL(:) + PHVAC_HEAT(:) 00430 PFLX_BLD(:)= PFLX_BLD_ROOF(:) + 0.5*PWALL_O_HOR(:)/PBLD(:)*PFLX_BLD_WALL_A(:) & 00431 + 0.5*PWALL_O_HOR(:)/PBLD(:)*PFLX_BLD_WALL_B(:) & 00432 + PFLX_BLD_FLOOR(:) + PFLX_BLD_MASS(:) 00433 ENDIF 00434 ! 00435 PQF_TOWN(:)= PBLD(:)*PQF_BLD(:) + PH_TRAFFIC(:) + PH_INDUSTRY(:) + PLE_TRAFFIC(:) + PLE_INDUSTRY(:) 00436 ! 00437 !Flux from the building to its structure -> we need to add the component to the 00438 !floor, the mass and the window 00439 ! 00440 ! 00441 IF (LHOOK) CALL DR_HOOK('URBAN_FLUXES',1,ZHOOK_HANDLE) 00442 ! 00443 END SUBROUTINE URBAN_FLUXES