SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/urban_fluxes.F90
Go to the documentation of this file.
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