SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/coupling_tebn.F90
Go to the documentation of this file.
00001 !     ###############################################################################
00002 SUBROUTINE COUPLING_TEB_n(HPROGRAM, HCOUPLING,                                             &
00003                PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN, PZENITH, PAZIM,    &
00004                PZREF, PUREF, PZS, PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV,                 &
00005                PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA,                   &
00006                PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                                    &
00007                PTRAD, PDIR_ALB, PSCA_ALB, PEMIS,                                           &
00008                PPEW_A_COEF, PPEW_B_COEF,                                                   &
00009                PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF,                         &
00010                HTEST                                                                       )
00011 !     ###############################################################################
00012 !
00013 !!****  *COUPLING_TEB_n * - Driver for TEB 
00014 !!
00015 !!    PURPOSE
00016 !!    -------
00017 !
00018 !!**  METHOD
00019 !!    ------
00020 !!
00021 !!    REFERENCE
00022 !!    ---------
00023 !!      
00024 !!
00025 !!    AUTHOR
00026 !!    ------
00027 !!     V. Masson 
00028 !!
00029 !!    MODIFICATIONS
00030 !!    -------------
00031 !!      Original    01/2004
00032 !!                  10/2005 (G.Pigeon) transfer of domestic heating
00033 !!      S. Riette   06/2009 Initialisation of XT, XQ, XU and XTKE on canopy levels
00034 !!      S. Riette   01/2010 Use of interpol_sbl to compute 10m wind diagnostic
00035 !!      G. Pigeon   09/2012 CCH_BEM, ROUGH_WALL, ROUGH_ROOF for building conv. coef
00036 !!      G. Pigeon   10/2012 XF_WIN_WIN as arg. of TEB_GARDEN
00037 !!      B. Decharme 09/2012 New wind implicitation
00038 !!      J. Escobar  09/2012 KI not allowed without-interface , replace by KI
00039 !!---------------------------------------------------------------
00040 !
00041 !
00042 USE MODD_CSTS,         ONLY : XRD, XCPD, XP00, XLVTT, XPI, XKARMAN, XG
00043 USE MODD_SURF_PAR,     ONLY : XUNDEF
00044 !
00045 USE MODD_SURF_ATM,     ONLY : CIMPLICIT_WIND
00046 !
00047 USE MODD_TEB_n,        ONLY : CBEM, TTIME,LCANOPY,CZ0H,CROAD_DIR,CWALL_OPT,            &
00048                               XT_CANYON, XQ_CANYON,                                    &
00049                               XT_ROOF, XT_ROAD, XT_WALL_A, XT_WALL_B,                  &
00050                               XWS_ROOF, XWS_ROAD,                                      &
00051                               TSNOW_ROOF, TSNOW_ROAD,                                  &
00052                               XH_TRAFFIC, XLE_TRAFFIC, XH_INDUSTRY, XLE_INDUSTRY,      &
00053                               XZ0_TOWN, XBLD, XGARDEN, XROAD_DIR, XROAD, XGREENROOF,   &
00054                               XBLD_HEIGHT, XWALL_O_HOR, XCAN_HW_RATIO,                 &
00055                               XROAD_O_GRND, XGARDEN_O_GRND, XWALL_O_GRND,              &
00056                               XALB_ROOF, XEMIS_ROOF, XHC_ROOF,XTC_ROOF, XD_ROOF,       &
00057                               XALB_ROAD, XEMIS_ROAD, XHC_ROAD,XTC_ROAD, XD_ROAD,       &
00058                               XALB_WALL, XEMIS_WALL, XHC_WALL,XTC_WALL, XD_WALL,       &
00059                               XSVF_ROAD, XSVF_WALL,                                    &
00060                               XSVF_GARDEN, XWALL_O_BLD,                                &
00061                               XQSAT_ROOF, XQSAT_ROAD, XDELT_ROOF, XDELT_ROAD,          &
00062                               NTEB_PATCH, XTEB_PATCH, CCH_BEM, XROUGH_ROOF, XROUGH_WALL                       
00063 !
00064 USE MODD_BEM_n,        ONLY : XHC_FLOOR, XTC_FLOOR, XD_FLOOR, XTCOOL_TARGET,           &
00065                               XTHEAT_TARGET, XF_WASTE_CAN, XEFF_HEAT, XTI_BLD,         &
00066                               XT_FLOOR, XT_MASS, XQIN, XQIN_FRAD, XSHGC, XSHGC_SH,     &
00067                               XU_WIN, XGR, XINF, CCOOL_COIL, CHEAT_COIL,               &
00068                               XF_WATER_COND, XAUX_MAX, XQIN_FLAT,                      &
00069                               XHR_TARGET, XT_WIN2, XQI_BLD, XV_VENT, XCAP_SYS_HEAT,    &
00070                               XCAP_SYS_RAT, XT_ADP, XM_SYS_RAT, XCOP_RAT, XT_WIN1,     &
00071                               XALB_WIN, XABS_WIN, XT_SIZE_MAX, XT_SIZE_MIN, XUGG_WIN,  &
00072                               LSHADE, CNATVENT, LSHAD_DAY, LNATVENT_NIGHT,             &
00073                               XN_FLOOR, XGLAZ_O_BLD, XMASS_O_BLD, XFLOOR_HW_RATIO,     &
00074                               XF_FLOOR_MASS, XF_FLOOR_WALL, XF_FLOOR_WIN,              &
00075                               XF_FLOOR_ROOF, XF_WALL_FLOOR, XF_WALL_MASS,              &
00076                               XF_WALL_WIN, XF_WIN_FLOOR, XF_WIN_MASS, XF_WIN_WALL,     &
00077                               XF_MASS_FLOOR, XF_MASS_WALL, XF_MASS_WIN, &
00078                               XTRAN_WIN, XF_WIN_WIN
00079                                
00080 USE MODD_CH_TEB_n,     ONLY : CSV, CCH_DRY_DEP, XDEP, NBEQ, NSV_CHSBEG, NSV_CHSEND,    &
00081                               NSV_DSTBEG, NSV_DSTEND, NAEREQ, NDSTEQ, NSLTEQ,          &
00082                               NSV_AERBEG, NSV_AEREND, NSV_SLTBEG, NSV_SLTEND
00083 USE MODD_TEB_CANOPY_n, ONLY : XZ, XU, NLVL, XTKE, XT, XQ,                              &
00084                               XLMO, XLM, XLEPS,XZF, XDZ, XDZF, XP
00085 USE MODD_DIAG_TEB_n,   ONLY : N2M, XZON10M, XMER10M
00086 USE MODD_DIAG_UTCI_TEB_n, ONLY : LUTCI, XUTCI_IN, XUTCI_OUTSUN,          &
00087                                  XUTCI_OUTSHADE, XTRAD_SUN, XTRAD_SHADE
00088 USE MODD_DST_n,        ONLY : XEMISRADIUS_DST, XEMISSIG_DST
00089 USE MODD_SLT_n,        ONLY : XEMISRADIUS_SLT, XEMISSIG_SLT
00090 USE MODD_DST_SURF
00091 USE MODD_SLT_SURF
00092 !
00093 !
00094 USE MODE_DSLT_SURF
00095 USE MODE_THERMOS
00096 USE MODE_SBLS
00097 !
00098 USE MODI_AVERAGE_RAD
00099 USE MODI_SM10
00100 USE MODI_ADD_FORECAST_TO_DATE_SURF
00101 USE MODI_DIAG_INLINE_TEB_n
00102 USE MODI_DIAG_MISC_TEB_n
00103 USE MODI_CH_AER_DEP
00104 USE MODI_CH_DEP_TOWN
00105 USE MODI_DSLT_DEP
00106 USE MODI_TEB_GARDEN
00107 USE MODI_TEB_CANOPY
00108 ! 
00109 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00110 USE PARKIND1  ,ONLY : JPRB
00111 !
00112 USE MODI_ABOR1_SFX
00113 USE MODI_CANOPY_EVOL
00114 USE MODI_CANOPY_GRID_UPDATE
00115 USE MODI_UTCI_TEB
00116 USE MODI_CIRCUMSOLAR_RAD
00117 !
00118 IMPLICIT NONE
00119 !
00120 !*      0.1    declarations of arguments
00121 !
00122  CHARACTER(LEN=6),    INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
00123  CHARACTER(LEN=1),    INTENT(IN)  :: HCOUPLING ! type of coupling
00124                                               ! 'E' : explicit
00125                                               ! 'I' : implicit
00126 INTEGER,             INTENT(IN)  :: KYEAR     ! current year (UTC)
00127 INTEGER,             INTENT(IN)  :: KMONTH    ! current month (UTC)
00128 INTEGER,             INTENT(IN)  :: KDAY      ! current day (UTC)
00129 REAL,                INTENT(IN)  :: PTIME     ! current time since midnight (UTC, s)
00130 INTEGER,             INTENT(IN)  :: KI        ! number of points
00131 INTEGER,             INTENT(IN)  :: KSV       ! number of scalars
00132 INTEGER,             INTENT(IN)  :: KSW       ! number of short-wave spectral bands
00133 REAL, DIMENSION(KI), INTENT(IN)  :: PTSUN     ! solar time                    (s from midnight)
00134 REAL,                INTENT(IN)  :: PTSTEP    ! atmospheric time-step                 (s)
00135 REAL, DIMENSION(KI), INTENT(IN)  :: PZREF     ! height of T,q forcing                 (m)
00136 REAL, DIMENSION(KI), INTENT(IN)  :: PUREF     ! height of wind forcing                (m)
00137 !
00138 REAL, DIMENSION(KI), INTENT(IN)  :: PTA       ! air temperature forcing               (K)
00139 REAL, DIMENSION(KI), INTENT(IN)  :: PQA       ! air humidity forcing                  (kg/m3)
00140 REAL, DIMENSION(KI), INTENT(IN)  :: PRHOA     ! air density                           (kg/m3)
00141 REAL, DIMENSION(KI,KSV),INTENT(IN) :: PSV     ! scalar variables
00142 !                                             ! chemistry:   first char. in HSV: '#'  (molecule/m3)
00143 !                                             !
00144  CHARACTER(LEN=6), DIMENSION(KSV),INTENT(IN):: HSV  ! name of all scalar variables
00145 REAL, DIMENSION(KI), INTENT(IN)  :: PU        ! zonal wind                            (m/s)
00146 REAL, DIMENSION(KI), INTENT(IN)  :: PV        ! meridian wind                         (m/s)
00147 REAL, DIMENSION(KI,KSW),INTENT(IN) :: PDIR_SW ! direct  solar radiation (on horizontal surf.)
00148 !                                             !                                       (W/m2)
00149 REAL, DIMENSION(KI,KSW),INTENT(IN) :: PSCA_SW ! diffuse solar radiation (on horizontal surf.)
00150 !                                             !                                       (W/m2)
00151 REAL, DIMENSION(KSW),INTENT(IN)  :: PSW_BANDS ! mean wavelength of each shortwave band (m)
00152 REAL, DIMENSION(KI), INTENT(IN)  :: PZENITH   ! zenithal angle       (radian from the vertical)
00153 REAL, DIMENSION(KI), INTENT(IN)  :: PAZIM     ! azimuthal angle      (radian from North, clockwise)
00154 REAL, DIMENSION(KI), INTENT(IN)  :: PLW       ! longwave radiation (on horizontal surf.)
00155 !                                             !                                       (W/m2)
00156 REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
00157 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
00158 REAL, DIMENSION(KI), INTENT(IN)  :: PZS       ! atmospheric model orography           (m)
00159 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/m3)
00160 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
00161 REAL, DIMENSION(KI), INTENT(IN)  :: PRAIN     ! liquid precipitation                  (kg/m2/s)
00162 !
00163 !
00164 REAL, DIMENSION(KI), INTENT(OUT) :: PSFTH     ! flux of heat                          (W/m2)
00165 REAL, DIMENSION(KI), INTENT(OUT) :: PSFTQ     ! flux of water vapor                   (kg/m2/s)
00166 REAL, DIMENSION(KI), INTENT(OUT) :: PSFU      ! zonal momentum flux                   (Pa)
00167 REAL, DIMENSION(KI), INTENT(OUT) :: PSFV      ! meridian momentum flux                (Pa)
00168 REAL, DIMENSION(KI), INTENT(OUT) :: PSFCO2    ! flux of CO2                           (kg/m2/s)
00169 REAL, DIMENSION(KI,KSV),INTENT(OUT):: PSFTS   ! flux of scalar var.                   (kg/m2/s)
00170 !
00171 REAL, DIMENSION(KI), INTENT(OUT) :: PTRAD     ! radiative temperature                 (K)
00172 REAL, DIMENSION(KI,KSW),INTENT(OUT):: PDIR_ALB! direct albedo for each spectral band  (-)
00173 REAL, DIMENSION(KI,KSW),INTENT(OUT):: PSCA_ALB! diffuse albedo for each spectral band (-)
00174 REAL, DIMENSION(KI), INTENT(OUT) :: PEMIS     ! emissivity                            (-)
00175 !
00176 REAL, DIMENSION(KI), INTENT(IN) :: PPEW_A_COEF! implicit coefficients
00177 REAL, DIMENSION(KI), INTENT(IN) :: PPEW_B_COEF! needed if HCOUPLING='I'
00178 REAL, DIMENSION(KI), INTENT(IN) :: PPET_A_COEF
00179 REAL, DIMENSION(KI), INTENT(IN) :: PPEQ_A_COEF
00180 REAL, DIMENSION(KI), INTENT(IN) :: PPET_B_COEF
00181 REAL, DIMENSION(KI), INTENT(IN) :: PPEQ_B_COEF
00182  CHARACTER(LEN=2),    INTENT(IN) :: HTEST ! must be equal to 'OK'
00183 !
00184 !
00185 !*      0.2    declarations of local variables
00186 !
00187 INTEGER                     :: JSWB        ! loop counter on shortwave spectral bands
00188 !         
00189 REAL, DIMENSION(KI)  :: ZQA         ! specific humidity                 (kg/kg)
00190 REAL, DIMENSION(KI)  :: ZEXNA       ! Exner function at forcing level
00191 REAL, DIMENSION(KI)  :: ZEXNS       ! Exner function at surface level
00192 REAL, DIMENSION(KI)  :: ZWIND       ! wind
00193 !
00194 ! Ouput Diagnostics:
00195 !
00196 REAL, DIMENSION(KI)  :: ZU_CANYON   ! wind in canyon
00197 REAL, DIMENSION(KI)  :: ZT_CANYON   ! temperature in canyon
00198 REAL, DIMENSION(KI)  :: ZQ_CANYON   ! specific humidity in canyon
00199 REAL, DIMENSION(KI)  :: ZT_CAN      ! temperature in canyon       (evolving in TEB)
00200 REAL, DIMENSION(KI)  :: ZQ_CAN      ! specific humidity in canyon (evolving in TEB)
00201 !
00202 REAL, DIMENSION(KI)  :: ZRN_ROOF    ! net radiation on roof
00203 REAL, DIMENSION(KI)  :: ZH_ROOF     ! sensible heat flux on roof
00204 REAL, DIMENSION(KI)  :: ZLE_ROOF    ! latent heat flux on roof
00205 REAL, DIMENSION(KI)  :: ZLEW_ROOF   ! latent heat flux on snowfree roof
00206 REAL, DIMENSION(KI)  :: ZGFLUX_ROOF ! storage flux in roof
00207 REAL, DIMENSION(KI)  :: ZRUNOFF_ROOF! water runoff from roof
00208 REAL, DIMENSION(KI)  :: ZRN_ROAD    ! net radiation on road
00209 REAL, DIMENSION(KI)  :: ZH_ROAD     ! sensible heat flux on road
00210 REAL, DIMENSION(KI)  :: ZLE_ROAD    ! latent heat flux on road
00211 REAL, DIMENSION(KI)  :: ZLEW_ROAD   ! latent heat flux on snowfree road
00212 REAL, DIMENSION(KI)  :: ZGFLUX_ROAD ! storage flux in road
00213 REAL, DIMENSION(KI)  :: ZRUNOFF_ROAD! water runoff from road
00214 REAL, DIMENSION(KI)  :: ZRN_WALL_A  ! net radiation on walls
00215 REAL, DIMENSION(KI)  :: ZH_WALL_A   ! sensible heat flux on walls
00216 REAL, DIMENSION(KI)  :: ZLE_WALL_A  ! latent heat flux on walls
00217 REAL, DIMENSION(KI)  :: ZGFLUX_WALL_A!storage flux in walls
00218 REAL, DIMENSION(KI)  :: ZRN_WALL_B  ! net radiation on walls
00219 REAL, DIMENSION(KI)  :: ZH_WALL_B   ! sensible heat flux on walls
00220 REAL, DIMENSION(KI)  :: ZLE_WALL_B  ! latent heat flux on walls
00221 REAL, DIMENSION(KI)  :: ZGFLUX_WALL_B!storage flux in walls
00222 REAL, DIMENSION(KI)  :: ZRN_GARDEN  ! net radiation on green areas
00223 REAL, DIMENSION(KI)  :: ZH_GARDEN   ! sensible heat flux on green areas
00224 REAL, DIMENSION(KI)  :: ZLE_GARDEN  ! latent heat flux on green areas
00225 REAL, DIMENSION(KI)  :: ZGFLUX_GARDEN!storage flux in green areas
00226 REAL, DIMENSION(KI)  :: ZRN_GREENROOF! net radiation on green roofs
00227 REAL, DIMENSION(KI)  :: ZH_GREENROOF ! sensible heat flux on green roofs
00228 REAL, DIMENSION(KI)  :: ZLE_GREENROOF! latent heat flux on green roofs
00229 REAL, DIMENSION(KI)  :: ZGFLUX_GREENROOF    ! storage flux in green roofs
00230 REAL, DIMENSION(KI)  :: ZG_GREENROOF_ROOF   ! heat flux between base of greenroof
00231 REAL, DIMENSION(KI)  :: ZRUNOFF_GREENROOF   ! water runoff from green roof
00232 REAL, DIMENSION(KI)  :: ZDRAIN_GREENROOF    ! water drainage from green roof
00233 REAL, DIMENSION(KI)  :: ZRN_STRLROOF        ! net radiation on structural roof
00234 REAL, DIMENSION(KI)  :: ZH_STRLROOF         ! sensible heat flux on structural roof
00235 REAL, DIMENSION(KI)  :: ZLE_STRLROOF        ! latent heat flux on structural roof
00236 REAL, DIMENSION(KI)  :: ZGFLUX_STRLROOF     ! storage flux in structural roof
00237 REAL, DIMENSION(KI)  :: ZRN_BLT     ! net radiation on built surf 
00238 REAL, DIMENSION(KI)  :: ZH_BLT      ! sensible heat flux on built surf 
00239 REAL, DIMENSION(KI)  :: ZLE_BLT     ! latent heat flux on built surf 
00240 REAL, DIMENSION(KI)  :: ZGFLUX_BLT  ! storage flux in built surf 
00241 REAL, DIMENSION(KI)  :: ZRN_GRND    ! net radiation on ground built surf
00242 REAL, DIMENSION(KI)  :: ZH_GRND     ! sensible heat flux on ground built surf
00243 REAL, DIMENSION(KI)  :: ZLE_GRND    ! latent heat flux on ground built surf
00244 REAL, DIMENSION(KI)  :: ZGFLUX_GRND ! storage flux in ground built surf
00245 REAL, DIMENSION(KI)  :: ZRNSNOW_ROOF  ! net radiation over snow
00246 REAL, DIMENSION(KI)  :: ZHSNOW_ROOF   ! sensible heat flux over snow
00247 REAL, DIMENSION(KI)  :: ZLESNOW_ROOF  ! latent heat flux over snow
00248 REAL, DIMENSION(KI)  :: ZGSNOW_ROOF   ! flux under the snow
00249 REAL, DIMENSION(KI)  :: ZMELT_ROOF    ! snow melt
00250 REAL, DIMENSION(KI)  :: ZRNSNOW_ROAD  ! net radiation over snow
00251 REAL, DIMENSION(KI)  :: ZHSNOW_ROAD   ! sensible heat flux over snow
00252 REAL, DIMENSION(KI)  :: ZLESNOW_ROAD  ! latent heat flux over snow
00253 REAL, DIMENSION(KI)  :: ZGSNOW_ROAD   ! flux under the snow
00254 REAL, DIMENSION(KI)  :: ZMELT_ROAD    ! snow melt
00255 !
00256 REAL, DIMENSION(KI)  :: ZTRAD         ! radiative temperature for current patch
00257 REAL, DIMENSION(KI)  :: ZEMIS         ! emissivity for current patch
00258 REAL, DIMENSION(KI,NTEB_PATCH) :: ZTRAD_PATCH ! radiative temperature for each patch
00259 REAL, DIMENSION(KI,NTEB_PATCH) :: ZEMIS_PATCH ! emissivity for each patch
00260 REAL, DIMENSION(KI,KSW,NTEB_PATCH) :: ZDIR_ALB_PATCH ! direct albedo per wavelength and patch
00261 REAL, DIMENSION(KI,KSW,NTEB_PATCH) :: ZSCA_ALB_PATCH ! diffuse albedo per wavelength and patch
00262 !
00263 REAL, DIMENSION(KI)  :: ZRN           ! net radiation over town
00264 REAL, DIMENSION(KI)  :: ZH            ! sensible heat flux over town
00265 REAL, DIMENSION(KI)  :: ZLE           ! latent heat flux over town
00266 REAL, DIMENSION(KI)  :: ZGFLUX        ! flux through the ground
00267 REAL, DIMENSION(KI)  :: ZSFCO2        ! CO2 flux over town
00268 REAL, DIMENSION(KI)  :: ZQF_BLD       ! domestic heating
00269 REAL, DIMENSION(KI)  :: ZFLX_BLD      ! flux from bld
00270 REAL, DIMENSION(KI)  :: ZDQS_TOWN     ! storage inside town materials
00271 REAL, DIMENSION(KI)  :: ZQF_TOWN      ! total anthropogenic heat
00272 REAL, DIMENSION(KI)  :: ZEVAP         ! evaporation (km/m2/s)
00273 REAL, DIMENSION(KI)  :: ZRUNOFF       ! runoff over the ground
00274 REAL, DIMENSION(KI)  :: ZCD           ! drag coefficient
00275 REAL, DIMENSION(KI)  :: ZCDN          ! neutral drag coefficient
00276 REAL, DIMENSION(KI)  :: ZCH           ! heat drag
00277 REAL, DIMENSION(KI)  :: ZRI           ! Richardson number
00278 REAL, DIMENSION(KI)  :: ZUW_GRND      ! momentum flux for ground built surf
00279 REAL, DIMENSION(KI)  :: ZUW_ROOF      ! momentum flux for roofs
00280 REAL, DIMENSION(KI)  :: ZDUWDU_GRND   !
00281 REAL, DIMENSION(KI)  :: ZDUWDU_ROOF   !
00282 REAL, DIMENSION(KI)  :: ZUSTAR        ! friction velocity
00283 REAL, DIMENSION(KI)  :: ZSFU          ! momentum flux for patch (U direction)
00284 REAL, DIMENSION(KI)  :: ZSFV          ! momentum flux for patch (V direction)
00285 REAL, DIMENSION(KI)  :: ZAVG_DIR_ALB  ! direct albedo of town
00286 REAL, DIMENSION(KI)  :: ZAVG_SCA_ALB  ! diffuse albedo of town
00287 REAL, DIMENSION(KI)  :: ZAVG_T_CANYON ! temperature in canyon for town 
00288 REAL, DIMENSION(KI)  :: ZAVG_Q_CANYON ! specific humidity in canyon for town
00289 !
00290 REAL, DIMENSION(KI)  :: ZAVG_CD       ! aggregated drag coefficient
00291 REAL, DIMENSION(KI)  :: ZAVG_CDN      ! aggregated neutral drag coefficient
00292 REAL, DIMENSION(KI)  :: ZAVG_RI       ! aggregated Richardson number
00293 REAL, DIMENSION(KI)  :: ZAVG_CH       ! aggregated Heat transfer coefficient
00294 !
00295 REAL, DIMENSION(KI)  :: ZDIR_ALB      ! direct albedo of town
00296 REAL, DIMENSION(KI)  :: ZSCA_ALB      ! diffuse albedo of town
00297 !
00298 REAL, DIMENSION(KI)  :: ZH_TRAFFIC    ! anthropogenic sensible
00299 !                                            ! heat fluxes due to traffic
00300 REAL, DIMENSION(KI)  :: ZLE_TRAFFIC   ! anthropogenic latent
00301 !                                            ! heat fluxes due to traffic
00302 REAL, DIMENSION(KI)  :: ZRESA_TOWN    ! aerodynamical resistance
00303 REAL, DIMENSION(KI)  :: ZAC_ROAD      ! road aerodynamical conductance
00304 REAL, DIMENSION(KI)  :: ZAC_GARDEN    ! green area aerodynamical conductance
00305 REAL, DIMENSION(KI)  :: ZAC_GRND      ! ground built surf aerodynamical conductance
00306 REAL, DIMENSION(KI)  :: ZAC_GREENROOF ! green roof aerodynamical conductance
00307 REAL, DIMENSION(KI)  :: ZAC_ROAD_WAT  ! road water aerodynamical conductance
00308 REAL, DIMENSION(KI)  :: ZAC_GARDEN_WAT! green area water aerodynamical conductance
00309 REAL, DIMENSION(KI)  :: ZAC_GRND_WAT  ! ground built surf water aerodynamical conductance
00310 REAL, DIMENSION(KI)  :: ZAC_GREENROOF_WAT! green roof water aerodynamical conductance
00311 REAL, DIMENSION(KI,1):: ZESNOW_GARDEN    ! green area snow emissivity
00312 !
00313 REAL                        :: ZBEGIN_TRAFFIC_TIME ! start traffic time (solar time, s)
00314 REAL                        :: ZEND_TRAFFIC_TIME   ! end traffic time   (solar time, s)
00315 REAL, DIMENSION(KI)  :: ZDIR_SW       ! total direct SW
00316 REAL, DIMENSION(KI)  :: ZSCA_SW       ! total diffuse SW
00317 REAL, DIMENSION(KI)  :: ZPEW_A_COEF   ! implicit coefficients
00318 REAL, DIMENSION(KI)  :: ZPEW_B_COEF   ! needed if HCOUPLING='I'
00319 
00320 !***** CANOPY  *****
00321 REAL, DIMENSION(KI)        :: ZSFLUX_U  ! Surface flux u'w' (m2/s2)
00322 REAL, DIMENSION(KI)        :: ZSFLUX_T  ! Surface flux w'T' (mK/s)
00323 REAL, DIMENSION(KI)        :: ZSFLUX_Q  ! Surface flux w'q' (kgm2/s)
00324 REAL, DIMENSION(KI,NLVL)   :: ZFORC_U   ! tendency due to drag force for wind
00325 REAL, DIMENSION(KI,NLVL)   :: ZDFORC_UDU! formal derivative of
00326 !                                              ! tendency due to drag force for wind
00327 REAL, DIMENSION(KI,NLVL)   :: ZFORC_E   ! tendency due to drag force for TKE
00328 REAL, DIMENSION(KI,NLVL)   :: ZDFORC_EDE! formal derivative of
00329 !                                              ! tendency due to drag force for TKE
00330 REAL, DIMENSION(KI,NLVL)   :: ZFORC_T   ! tendency due to drag force for Temp
00331 REAL, DIMENSION(KI,NLVL)   :: ZDFORC_TDT! formal derivative of
00332 !                                              ! tendency due to drag force for Temp
00333 REAL, DIMENSION(KI,NLVL)   :: ZFORC_Q   ! tendency due to drag force for hum
00334 REAL, DIMENSION(KI,NLVL)   :: ZDFORC_QDQ! formal derivative of
00335 !                                              ! tendency due to drag force for hum.
00336 
00337 REAL, DIMENSION(KI)        :: ZAVG_UW_GRND
00338 REAL, DIMENSION(KI)        :: ZAVG_DUWDU_GRND
00339 REAL, DIMENSION(KI)        :: ZAVG_UW_ROOF
00340 REAL, DIMENSION(KI)        :: ZAVG_DUWDU_ROOF
00341 REAL, DIMENSION(KI)        :: ZAVG_H_GRND
00342 REAL, DIMENSION(KI)        :: ZAVG_H_WALL
00343 REAL, DIMENSION(KI)        :: ZAVG_H_ROOF
00344 REAL, DIMENSION(KI)        :: ZAVG_E_GRND
00345 REAL, DIMENSION(KI)        :: ZAVG_E_ROOF
00346 REAL, DIMENSION(KI)        :: ZAVG_AC_GRND
00347 REAL, DIMENSION(KI)        :: ZAVG_AC_GRND_WAT
00348 REAL, DIMENSION(KI)        :: ZAVG_Z0_TOWN
00349 REAL, DIMENSION(KI)        :: ZAVG_RESA_TOWN
00350 REAL, DIMENSION(KI)        :: ZAVG_USTAR        ! town avegared Ustar
00351 REAL, DIMENSION(KI)        :: ZAVG_BLD          ! town averaged building fraction
00352 REAL, DIMENSION(KI)        :: ZAVG_BLD_HEIGHT   ! town averaged building height
00353 REAL, DIMENSION(KI)        :: ZAVG_WALL_O_HOR   ! town averaged Wall/hor ratio
00354 REAL, DIMENSION(KI)        :: ZAVG_CAN_HW_RATIO ! town averaged road aspect ratio
00355 REAL, DIMENSION(KI)        :: ZAVG_H
00356 REAL, DIMENSION(KI)        :: ZAVG_LE
00357 REAL, DIMENSION(KI)        :: ZAVG_RN
00358 REAL, DIMENSION(KI)        :: ZAVG_GFLUX
00359 REAL, DIMENSION(KI)        :: ZAVG_REF_SW_GRND
00360 REAL, DIMENSION(KI)        :: ZAVG_REF_SW_FAC
00361 REAL, DIMENSION(KI)        :: ZAVG_SCA_SW
00362 REAL, DIMENSION(KI)        :: ZAVG_DIR_SW 
00363 REAL, DIMENSION(KI)        :: ZAVG_EMIT_LW_FAC
00364 REAL, DIMENSION(KI)        :: ZAVG_EMIT_LW_GRND
00365 REAL, DIMENSION(KI)        :: ZAVG_T_RAD_IND
00366 REAL, DIMENSION(KI)        :: ZT_LOWCAN  ! temperature at lowest canyon level (K)
00367 REAL, DIMENSION(KI)        :: ZQ_LOWCAN  ! humidity    at lowest canyon level (kg/kg)
00368 REAL, DIMENSION(KI)        :: ZU_LOWCAN  ! wind        at lowest canyon level (m/s)
00369 REAL, DIMENSION(KI)        :: ZZ_LOWCAN  ! height      of lowest canyon level (m)
00370 REAL, DIMENSION(KI)        :: ZPEW_A_COEF_LOWCAN   ! implicit coefficients for wind coupling
00371 REAL, DIMENSION(KI)        :: ZPEW_B_COEF_LOWCAN   ! between first canopy level and road
00372 REAL, DIMENSION(KI)        :: ZTA        ! temperature at canyon level just above roof (K)
00373 REAL, DIMENSION(KI)        :: ZPA        ! pressure    at canyon level just above roof (K)
00374 REAL, DIMENSION(KI)        :: ZUA        ! wind        at canyon level just above roof (m/s)
00375 REAL, DIMENSION(KI)        :: ZUREF      ! height      of canyon level just above roof (m)
00376 REAL, DIMENSION(KI)        :: ZZREF      ! height      of canyon level just above roof (m)
00377 REAL, DIMENSION(KI)        :: ZLAMBDA_F  ! frontal density (-)
00378 REAL, DIMENSION(KI)        :: ZLMO       ! Monin-Obukhov length at canopy height (m)
00379 REAL, DIMENSION(KI,NLVL)   :: ZL         ! Mixing length generic profile at mid levels
00380 !
00381 ! absorbed solar and infra-red radiation by road, wall and roof
00382 !                                                      
00383 REAL, DIMENSION(KI) :: ZABS_SW_ROAD
00384 REAL, DIMENSION(KI) :: ZABS_SW_WALL_A
00385 REAL, DIMENSION(KI) :: ZABS_SW_WALL_B
00386 REAL, DIMENSION(KI) :: ZABS_SW_ROOF
00387 REAL, DIMENSION(KI) :: ZABS_SW_GARDEN
00388 REAL, DIMENSION(KI) :: ZABS_SW_GREENROOF
00389 REAL, DIMENSION(KI) :: ZABS_SW_SNOW_ROAD
00390 REAL, DIMENSION(KI) :: ZABS_SW_SNOW_ROOF
00391 REAL, DIMENSION(KI) :: ZABS_LW_SNOW_ROAD
00392 REAL, DIMENSION(KI) :: ZABS_LW_SNOW_ROOF
00393 REAL, DIMENSION(KI) :: ZABS_LW_ROAD
00394 REAL, DIMENSION(KI) :: ZABS_LW_WALL_A
00395 REAL, DIMENSION(KI) :: ZABS_LW_WALL_B
00396 REAL, DIMENSION(KI) :: ZABS_LW_ROOF
00397 REAL, DIMENSION(KI) :: ZABS_LW_GARDEN 
00398 REAL, DIMENSION(KI) :: ZABS_LW_GREENROOF
00399 !
00400 REAL, DIMENSION(KI)        :: ZU_UTCI ! wind speed for the UTCI calculation (m/s) 
00401 
00402 REAL, DIMENSION(KI)        :: ZALFAU   ! V+(1) = alfa u'w'(1) + beta
00403 REAL, DIMENSION(KI)        :: ZBETAU   ! V+(1) = alfa u'w'(1) + beta
00404 REAL, DIMENSION(KI)        :: ZALFAT   ! Th+(1) = alfa w'th'(1) + beta
00405 REAL, DIMENSION(KI)        :: ZBETAT   ! Th+(1) = alfa w'th'(1) + beta
00406 REAL, DIMENSION(KI)        :: ZALFAQ   ! Q+(1) = alfa w'q'(1) + beta
00407 REAL, DIMENSION(KI)        :: ZBETAQ   ! Q+(1) = alfa w'q'(1) + beta
00408 !***** CANOPY  *****
00409 REAL, DIMENSION(KI)        :: ZWAKE      ! reduction of average wind speed
00410 !                                              ! in canyon due to direction average.
00411 ! new local variables after BEM
00412 !
00413 REAL, DIMENSION(KI) :: ZCAP_SYS
00414 REAL, DIMENSION(KI) :: ZM_SYS
00415 REAL, DIMENSION(KI) :: ZCOP
00416 REAL, DIMENSION(KI) :: ZQ_SYS
00417 REAL, DIMENSION(KI) :: ZT_SYS
00418 REAL, DIMENSION(KI) :: ZTR_SW_WIN
00419 REAL, DIMENSION(KI) :: ZFAN_POWER
00420 REAL, DIMENSION(KI) :: ZABS_SW_WIN
00421 REAL, DIMENSION(KI) :: ZABS_LW_WIN
00422 REAL, DIMENSION(KI) :: ZH_BLD_COOL
00423 REAL, DIMENSION(KI) :: ZT_BLD_COOL
00424 REAL, DIMENSION(KI) :: ZH_BLD_HEAT
00425 REAL, DIMENSION(KI) :: ZLE_BLD_COOL
00426 REAL, DIMENSION(KI) :: ZLE_BLD_HEAT  
00427 REAL, DIMENSION(KI) :: ZH_WASTE
00428 REAL, DIMENSION(KI) :: ZLE_WASTE
00429 REAL, DIMENSION(KI) :: ZHVAC_COOL  
00430 REAL, DIMENSION(KI) :: ZHVAC_HEAT
00431 
00432 !new local variables for UTCI calculation
00433 REAL, DIMENSION(KI) :: ZEMIT_LW_GRND
00434 REAL, DIMENSION(KI) :: ZEMIT_LW_FAC
00435 REAL, DIMENSION(KI) :: ZT_RAD_IND   ! Indoor mean radiant temperature [K]
00436 REAL, DIMENSION(KI) :: ZREF_SW_GRND ! total solar rad reflected from ground
00437 REAL, DIMENSION(KI) :: ZREF_SW_FAC  ! total solar rad reflected from facade
00438 REAL, DIMENSION(KI) :: ZHU_BLD
00439 REAL, DIMENSION(KI) :: ZAVG_TI_BLD
00440 REAL, DIMENSION(KI) :: ZAVG_QI_BLD
00441 REAL, DIMENSION(KI) :: ZF1_o_B
00442 REAL, DIMENSION(KI,SIZE(PDIR_SW,2))  :: ZDIR_SWB ! total direct SW per band
00443 REAL, DIMENSION(KI,SIZE(PSCA_SW,2))  :: ZSCA_SWB ! total diffuse SW per band
00444 !
00445 REAL, DIMENSION(KI)        :: ZCOEF
00446 !
00447 REAL                       :: ZCONVERTFACM0_SLT, ZCONVERTFACM0_DST
00448 REAL                       :: ZCONVERTFACM3_SLT, ZCONVERTFACM3_DST
00449 REAL                       :: ZCONVERTFACM6_SLT, ZCONVERTFACM6_DST
00450 !
00451 INTEGER                           :: JI
00452 INTEGER                           :: JLAYER
00453 INTEGER                           :: JJ
00454 !
00455 ! number of TEB patches
00456 !
00457 INTEGER                    :: JTEB_PATCH ! loop counter
00458 !
00459 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00460 !
00461 !-------------------------------------------------------------------------------------
00462 ! Preliminaries:
00463 !-------------------------------------------------------------------------------------
00464 IF (LHOOK) CALL DR_HOOK('COUPLING_TEB_N',0,ZHOOK_HANDLE)
00465 IF (HTEST/='OK') THEN
00466   CALL ABOR1_SFX('COUPLING_TEBN: FATAL ERROR DURING ARGUMENT TRANSFER')
00467 END IF
00468 
00469 !-------------------------------------------------------------------------------------
00470 !
00471 ! scalar fluxes
00472 !
00473 PSFTS(:,:) = 0.
00474 !
00475 ! broadband radiative fluxes
00476 !
00477 ZDIR_SW(:) = 0.
00478 ZSCA_SW(:) = 0.
00479 DO JSWB=1,KSW
00480   !add directionnal contrib from scattered radiation
00481   CALL CIRCUMSOLAR_RAD(PDIR_SW(:,JSWB), PSCA_SW(:,JSWB), PZENITH, ZF1_o_B)
00482   ZDIR_SWB(:,JSWB) = PDIR_SW(:,JSWB) + PSCA_SW(:,JSWB) * ZF1_o_B
00483   ZSCA_SWB(:,JSWB) = PSCA_SW(:,JSWB) * (1. - ZF1_o_B)
00484   !add directionnal contrib from scattered radiation
00485   DO JJ=1,SIZE(PDIR_SW,1)
00486     ZDIR_SW(JJ) = ZDIR_SW(JJ) + ZDIR_SWB(JJ,JSWB)
00487     ZSCA_SW(JJ) = ZSCA_SW(JJ) + ZSCA_SWB(JJ,JSWB)
00488   ENDDO
00489 END DO
00490 !
00491 DO JJ=1,KI
00492 ! specific humidity (conversion from kg/m3 to kg/kg)
00493 !
00494   ZQA(JJ) = PQA(JJ) / PRHOA(JJ)
00495 !
00496 ! wind
00497 !
00498   ZWIND(JJ) = SQRT(PU(JJ)**2+PV(JJ)**2)
00499 !
00500 ENDDO
00501 ! method of wind coupling
00502 !
00503 IF (HCOUPLING=='I') THEN
00504   ZPEW_A_COEF = PPEW_A_COEF
00505   ZPEW_B_COEF = PPEW_B_COEF
00506 ELSE
00507   ZPEW_A_COEF =  0.
00508   ZPEW_B_COEF =  ZWIND
00509 END IF
00510 !
00511 !
00512 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00513 ! Time evolution
00514 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00515 !
00516 TTIME%TIME = TTIME%TIME + PTSTEP
00517  CALL ADD_FORECAST_TO_DATE_SURF(TTIME%TDATE%YEAR,TTIME%TDATE%MONTH,TTIME%TDATE%DAY,TTIME%TIME)
00518 !
00519 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00520 !  Anthropogenic fluxes (except building heating)
00521 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00522 !
00523 ZBEGIN_TRAFFIC_TIME = 21600.
00524 ZEND_TRAFFIC_TIME   = 64800.
00525 !
00526 WHERE(       PTSUN>ZBEGIN_TRAFFIC_TIME   &
00527       .AND.  PTSUN<ZEND_TRAFFIC_TIME     )
00528   ZH_TRAFFIC  (:) = XH_TRAFFIC   (:)
00529   ZLE_TRAFFIC (:) = XLE_TRAFFIC  (:)
00530 ELSEWHERE
00531   ZH_TRAFFIC  (:) = 0.
00532   ZLE_TRAFFIC (:) = 0.   
00533 END WHERE
00534 !
00535 !--------------------------------------------------------------------------------------
00536 !  Canyon forcing for TEB
00537 !--------------------------------------------------------------------------------------
00538 !-------------------------------------------------------------------------------------
00539 ! Town averaged quantities to force canopy atmospheric layers
00540 !-------------------------------------------------------------------------------------
00541 
00542 DO JTEB_PATCH=1,NTEB_PATCH
00543   CALL GOTO_TEB(JTEB_PATCH)
00544   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_BLD,         XBLD         )
00545   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_BLD_HEIGHT,  XBLD_HEIGHT  )
00546   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_WALL_O_HOR,  XWALL_O_HOR  )
00547   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_CAN_HW_RATIO,XCAN_HW_RATIO)
00548   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_Z0_TOWN,     XZ0_TOWN     )
00549 END DO
00550 !
00551 IF (LCANOPY) THEN
00552 !-------------------------------------------------------------------------------------
00553 ! Updates canopy vertical grid as a function of forcing height
00554 !-------------------------------------------------------------------------------------
00555 !
00556 !* determines where is the forcing level and modifies the upper levels of the canopy grid
00557 !
00558   CALL CANOPY_GRID_UPDATE(KI,NLVL,ZAVG_BLD_HEIGHT,ZAVG_BLD_HEIGHT+PUREF,XZ,XZF,XDZ,XDZF)
00559 !
00560 !* Initialisations of T, Q, TKE and wind at first time step
00561 !
00562 
00563   IF(ANY(XT(:,:) == XUNDEF)) THEN
00564     DO JLAYER=1,NLVL
00565       XT(:,JLAYER) = PTA(:)
00566       XQ(:,JLAYER) = PQA(:)
00567       XU(:,JLAYER) = 2./XPI * ZWIND(:)                                  &
00568               * LOG( (          2.* XBLD_HEIGHT(:)/3.) / XZ0_TOWN(:))   &
00569               / LOG( (PUREF(:)+ 2.* XBLD_HEIGHT(:)/3.) / XZ0_TOWN(:))
00570     END  DO
00571     XTKE(:,:) = 1.
00572   ENDIF
00573 !
00574 !* default forcing above roof: forcing level
00575 ZUREF(:)     = PUREF(:)
00576 ZZREF(:)     = PZREF(:)
00577 ZUA(:)       = XU(:,NLVL)
00578 ZTA(:)       = XT(:,NLVL)
00579 ZQA(:)       = XQ(:,NLVL)/PRHOA(:)
00580 ZPA(:)       = XP(:,NLVL)
00581 !* for the time being, only one value is kept for wall in-canyon forcing, in the middle of the canyon
00582 ZU_CANYON(:) = ZUA(:)
00583 ZT_CANYON(:) = ZTA(:)
00584 ZQ_CANYON(:) = ZQA(:)
00585   DO JLAYER=1,NLVL-1
00586     DO JI=1,KI
00587       !* finds middle canyon layer
00588       IF (XZ(JI,JLAYER)<ZAVG_BLD_HEIGHT(JI)/2. .AND. XZ(JI,JLAYER+1)>=ZAVG_BLD_HEIGHT(JI)/2.) THEN
00589         ZCOEF(JI) = (ZAVG_BLD_HEIGHT(JI)/2.-XZ(JI,JLAYER))/(XZ(JI,JLAYER+1)-XZ(JI,JLAYER))
00590         ZU_CANYON(JI) = XU(JI,JLAYER) + ZCOEF(JI) * (XU(JI,JLAYER+1)-XU(JI,JLAYER))
00591         ZT_CANYON(JI) = XT(JI,JLAYER) + ZCOEF(JI) * (XT(JI,JLAYER+1)-XT(JI,JLAYER))
00592         ZQ_CANYON(JI) =(XQ(JI,JLAYER) + ZCOEF(JI) * (XQ(JI,JLAYER+1)-XQ(JI,JLAYER)))/PRHOA(JI)
00593       END IF
00594       !* finds layer just above roof (at least 1m above roof)
00595       IF (XZ(JI,JLAYER)<ZAVG_BLD_HEIGHT(JI)+1. .AND. XZ(JI,JLAYER+1)>=ZAVG_BLD_HEIGHT(JI)+1.) THEN
00596         ZUREF(JI) = XZ(JI,JLAYER+1) - ZAVG_BLD_HEIGHT(JI)
00597         ZZREF(JI) = XZ(JI,JLAYER+1) - ZAVG_BLD_HEIGHT(JI)
00598         ZTA  (JI) = XT(JI,JLAYER+1)
00599         ZQA  (JI) = XQ(JI,JLAYER+1)/PRHOA(JI)
00600         !ZUA  (JI) = XU(JI,JLAYER+1)
00601         ZUA  (JI) = MAX(XU(JI,JLAYER+1) - 2.*SQRT(XTKE(JI,JLAYER+1)) , XU(JI,JLAYER+1)/3.)
00602         ZPA  (JI) = XP(JI,JLAYER+1)
00603         ZLMO (JI) = XLMO(JI,JLAYER+1)
00604       END IF
00605     END DO
00606   END DO
00607   ZU_CANYON= MAX(ZU_CANYON,0.2)
00608   ZU_LOWCAN=XU(:,1)
00609   ZT_LOWCAN=XT(:,1)
00610   ZQ_LOWCAN=XQ(:,1) / PRHOA(:)
00611   ZZ_LOWCAN=XZ(:,1)
00612   WHERE(ZPA==XUNDEF) ZPA = PPA   ! security for first time step
00613 !
00614 !-------------------------------------------------------------------------------------
00615 ! determine the vertical profile for mixing and dissipative lengths (at full levels)
00616 !-------------------------------------------------------------------------------------
00617 !
00618 ! frontal density
00619   ZLAMBDA_F(:) = ZAVG_CAN_HW_RATIO*ZAVG_BLD / (0.5*XPI)
00620 !
00621   CALL SM10(XZ,ZAVG_BLD_HEIGHT,ZLAMBDA_F,ZL)
00622 !
00623 !-------------------------------------------------------------------------------------
00624 ! computes coefficients for implicitation
00625 !-------------------------------------------------------------------------------------
00626 !
00627   ZAVG_UW_GRND(:)      = 0.
00628   ZAVG_DUWDU_GRND(:)   = 0.
00629   ZAVG_UW_ROOF(:)      = 0.
00630   ZAVG_DUWDU_ROOF(:)   = 0.
00631   ZAVG_H_GRND(:)       = 0.
00632   ZAVG_H_WALL(:)       = 0.
00633   ZAVG_H_ROOF(:)       = 0.
00634   ZAVG_E_GRND(:)       = 0.
00635   ZAVG_E_ROOF(:)       = 0.
00636   ZAVG_AC_GRND(:)      = 0.
00637   ZAVG_AC_GRND_WAT(:)  = 0.
00638   ZSFLUX_U(:)          = 0.
00639   ZSFLUX_T(:)          = 0.
00640   ZSFLUX_Q(:)          = 0.
00641 !
00642   DO JLAYER=1,NLVL-1
00643       !* Monin-Obuhkov theory not used inside the urban canopy
00644       ! => neutral mixing  if layer is below : (roof level +1 meter)
00645       WHERE (XZ(:,JLAYER)<=ZAVG_BLD_HEIGHT(:)+1.) XLMO(:,JLAYER) = XUNDEF
00646   ENDDO
00647 !
00648 !
00649 !* computes tendencies on wind and Tke due to canopy
00650  CALL TEB_CANOPY(KI,NLVL,XZ,XZF,XDZ,XDZF,ZAVG_BLD,ZAVG_BLD_HEIGHT,ZAVG_WALL_O_HOR,     &
00651                 PPA,PRHOA,XU,                                                         &
00652                 ZAVG_DUWDU_GRND, ZAVG_UW_ROOF, ZAVG_DUWDU_ROOF,                       &
00653                 ZAVG_H_WALL,ZAVG_H_ROOF,ZAVG_E_ROOF,ZAVG_AC_GRND,ZAVG_AC_GRND_WAT,    &
00654                 ZFORC_U,ZDFORC_UDU,ZFORC_E,ZDFORC_EDE,ZFORC_T,ZDFORC_TDT,ZFORC_Q,ZDFORC_QDQ)
00655 !
00656 !* computes coefficients for implicitation
00657   CALL CANOPY_EVOL(KI,NLVL,PTSTEP,1,                         &
00658                      ZL,ZWIND,PTA,PQA,PPA,PRHOA,             &
00659                      ZSFLUX_U,ZSFLUX_T,ZSFLUX_Q,             &
00660                      ZFORC_U,ZDFORC_UDU,ZFORC_E,ZDFORC_EDE,  &
00661                      ZFORC_T,ZDFORC_TDT,ZFORC_Q,ZDFORC_QDQ,  &
00662                      XZ,XZF,XDZ,XDZF,XU,XTKE,XT,XQ,XLMO,     &
00663                      XLM,XLEPS,XP,ZAVG_USTAR,                &
00664                      ZALFAU,ZBETAU,ZALFAT,ZBETAT,ZALFAQ,ZBETAQ)
00665 !
00666   ZPEW_A_COEF_LOWCAN = - ZALFAU / PRHOA
00667   ZPEW_B_COEF_LOWCAN = ZBETAU  
00668 !
00669 !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
00670 ELSE              ! no canopy case
00671 !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
00672   DO JI=1,KI
00673 !* skimming flow for h/w>1 (maximum effect of direction on wind in the canyon);
00674 !* isolated flow for h/w<0.5 (wind is the same in large streets for all dir.)
00675 !* wake flow between.
00676 !
00677     ZWAKE(JI)= 1. + (2./XPI-1.) * 2. * (ZAVG_CAN_HW_RATIO(JI)-0.5)
00678     ZWAKE(JI)= MAX(MIN(ZWAKE(JI),1.),2./XPI)
00679 !
00680 !* Estimation of canyon wind speed from wind just above roof level
00681 !  (at 1.33h). Wind at 1.33h is estimated using the log law.
00682 !
00683    IF (ZAVG_BLD_HEIGHT(JI) .GT. 0.) THEN
00684     ZU_CANYON(JI) = ZWAKE(JI) * EXP(-ZAVG_CAN_HW_RATIO(JI)/4.) * ZWIND(JI)     &
00685               * LOG( (           2.* ZAVG_BLD_HEIGHT(JI)/3.) / ZAVG_Z0_TOWN(JI))   &
00686               / LOG( (PUREF(JI)+ 2.* ZAVG_BLD_HEIGHT(JI)/3.) / ZAVG_Z0_TOWN(JI))
00687     ZZ_LOWCAN(JI) = ZAVG_BLD_HEIGHT(JI) / 2.
00688    ELSE
00689     ZU_CANYON(JI) = ZWIND(JI)
00690     ZZ_LOWCAN(JI) = PZREF(JI)
00691    ENDIF
00692  END DO
00693 !
00694 !* Without SBL scheme, canyon air is assumed at mid height
00695   ZU_LOWCAN=ZU_CANYON
00696   ZT_LOWCAN=XT_CANYON
00697   ZQ_LOWCAN=XQ_CANYON
00698   ZT_CANYON=XT_CANYON
00699   ZQ_CANYON=XQ_CANYON
00700   ZUREF    =PUREF
00701   ZZREF    =PZREF
00702   ZTA      =PTA
00703   ZUA      =ZWIND
00704   ZPA      =PPA
00705   ZPEW_A_COEF_LOWCAN =  0.
00706   ZPEW_B_COEF_LOWCAN =  ZU_CANYON
00707 END IF
00708 !
00709 ! Exner functions
00710 !
00711 ZEXNS     (:) = (PPS(:)/XP00)**(XRD/XCPD)
00712 ZEXNA     (:) = (ZPA(:)/XP00)**(XRD/XCPD)
00713 
00714 !--------------------------------------------------------------------------------------
00715 ! Over Urban surfaces/towns:
00716 !--------------------------------------------------------------------------------------
00717 !
00718 DO JTEB_PATCH=1,NTEB_PATCH
00719  CALL GOTO_TEB(JTEB_PATCH)
00720 !
00721 ZT_CAN=ZT_CANYON
00722 ZQ_CAN=ZQ_CANYON
00723 !
00724 IF (LCANOPY) THEN
00725   XT_CANYON(:) = ZT_CANYON(:)
00726   XQ_CANYON(:) = ZQ_CANYON(:)
00727 END IF
00728 !
00729 ZLESNOW_ROOF(:) = 0.
00730 ZLESNOW_ROAD(:) = 0.
00731 ZG_GREENROOF_ROOF(:) = 0.
00732 !
00733 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00734 !  Reinitialize shading of windows when changing day
00735 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00736 !
00737 IF (CBEM=='BEM') &
00738 WHERE (PTSUN .LT. PTSTEP + 1E-3) LSHAD_DAY(:) = .FALSE.
00739 !
00740 !
00741  CALL TEB_GARDEN      (CZ0H, CIMPLICIT_WIND, CROAD_DIR, CWALL_OPT,                      &
00742                       TTIME, PTSUN, ZT_CAN, ZQ_CAN, ZU_CANYON,                         &
00743                       ZT_LOWCAN, ZQ_LOWCAN, ZU_LOWCAN, ZZ_LOWCAN,                      &
00744                       XTI_BLD,                                                         &
00745                       XT_ROOF, XT_ROAD, XT_WALL_A, XT_WALL_B, XWS_ROOF,XWS_ROAD,       &
00746                       TSNOW_ROOF%SCHEME,                                               &
00747                       TSNOW_ROOF%WSNOW(:,:,1), TSNOW_ROOF%T(:,:,1),                    &
00748                       TSNOW_ROOF%RHO(:,:,1), TSNOW_ROOF%ALB(:,1),                      &
00749                       TSNOW_ROOF%TS(:,1), TSNOW_ROOF%EMIS(:,1),                        &
00750                       TSNOW_ROAD%SCHEME,                                               &
00751                       TSNOW_ROAD%WSNOW(:,:,1), TSNOW_ROAD%T(:,:,1),                    &
00752                       TSNOW_ROAD%RHO(:,:,1), TSNOW_ROAD%ALB(:,1),                      &
00753                       TSNOW_ROAD%TS(:,1), TSNOW_ROAD%EMIS(:,1),                        &
00754                       ZPEW_A_COEF, ZPEW_B_COEF,                                        &
00755                       ZPEW_A_COEF_LOWCAN, ZPEW_B_COEF_LOWCAN,                          &
00756                       PPS, ZPA, ZEXNS, ZEXNA, ZTA, ZQA, PRHOA, PCO2,                   &
00757                       PLW, ZDIR_SWB, ZSCA_SWB, PSW_BANDS, KSW, PZENITH, PAZIM,         &
00758                       PRAIN, PSNOW, ZZREF, ZUREF, ZUA,                                 &
00759                       ZH_TRAFFIC, ZLE_TRAFFIC, XH_INDUSTRY, XLE_INDUSTRY,              &
00760                       PTSTEP,                                                          &
00761                       XZ0_TOWN,                                                        &
00762                       XBLD, XGARDEN, XROAD_DIR, XROAD, XGREENROOF,                     &
00763                       XBLD_HEIGHT, XWALL_O_HOR, XCAN_HW_RATIO,                         &
00764                       XROAD_O_GRND, XGARDEN_O_GRND, XWALL_O_GRND,                      &
00765                       XALB_ROOF, XEMIS_ROOF,                                           &
00766                       XHC_ROOF,XTC_ROOF,XD_ROOF,                                       &
00767                       XALB_ROAD, XEMIS_ROAD, XSVF_ROAD,                                &
00768                       XHC_ROAD,XTC_ROAD,XD_ROAD,                                       &
00769                       XALB_WALL, XEMIS_WALL, XSVF_WALL,                                &
00770                       XSVF_GARDEN,                                                     &
00771                       XHC_WALL,XTC_WALL,XD_WALL,                                       &
00772                       ZRN_ROOF, ZH_ROOF, ZLE_ROOF, ZLEW_ROOF, ZGFLUX_ROOF,             &
00773                       ZRUNOFF_ROOF,                                                    &
00774                       ZRN_ROAD, ZH_ROAD, ZLE_ROAD, ZLEW_ROAD, ZGFLUX_ROAD,             &
00775                       ZRUNOFF_ROAD,                                                    &
00776                       ZRN_WALL_A, ZH_WALL_A, ZLE_WALL_A, ZGFLUX_WALL_A,                &
00777                       ZRN_WALL_B, ZH_WALL_B, ZLE_WALL_B, ZGFLUX_WALL_B,                &
00778                       ZRN_GARDEN,ZH_GARDEN,ZLE_GARDEN,ZGFLUX_GARDEN,                   &
00779                       ZRN_GREENROOF,ZH_GREENROOF,ZLE_GREENROOF,ZGFLUX_GREENROOF,       &
00780                       ZRN_STRLROOF,ZH_STRLROOF,ZLE_STRLROOF,ZGFLUX_STRLROOF,           &
00781                       ZRN_BLT,ZH_BLT,ZLE_BLT,ZGFLUX_BLT,                               &
00782                       ZRNSNOW_ROOF, ZHSNOW_ROOF, ZLESNOW_ROOF, ZGSNOW_ROOF,            &
00783                       ZMELT_ROOF,                                                      &
00784                       ZRNSNOW_ROAD, ZHSNOW_ROAD, ZLESNOW_ROAD, ZGSNOW_ROAD,            &
00785                       ZMELT_ROAD,                                                      &
00786                       ZRN_GRND, ZH_GRND, ZLE_GRND, ZGFLUX_GRND,                        &
00787                       ZRN, ZH, ZLE, ZGFLUX, ZEVAP, ZRUNOFF, ZSFCO2,                    &
00788                       ZUW_GRND, ZUW_ROOF, ZDUWDU_GRND, ZDUWDU_ROOF,                    &
00789                       ZUSTAR, ZCD, ZCDN, ZCH, ZRI,                                     &
00790                       ZTRAD, ZEMIS, ZDIR_ALB, ZSCA_ALB, ZRESA_TOWN, ZDQS_TOWN,         &
00791                       ZQF_TOWN, ZQF_BLD,                                               &
00792                       ZFLX_BLD, ZAC_ROAD, ZAC_GARDEN, ZAC_GREENROOF,                   &
00793                       ZAC_ROAD_WAT, ZAC_GARDEN_WAT, ZAC_GREENROOF_WAT,                 &
00794                       ZABS_SW_ROOF,ZABS_LW_ROOF,                                       &
00795                       ZABS_SW_SNOW_ROOF,ZABS_LW_SNOW_ROOF,                             &
00796                       ZABS_SW_ROAD,ZABS_LW_ROAD,                                       &
00797                       ZABS_SW_SNOW_ROAD,ZABS_LW_SNOW_ROAD,                             &
00798                       ZABS_SW_WALL_A, ZABS_LW_WALL_A,                                  &
00799                       ZABS_SW_WALL_B, ZABS_LW_WALL_B,                                  &
00800                       ZABS_SW_GARDEN,ZABS_LW_GARDEN,                                   &
00801                       ZABS_SW_GREENROOF,ZABS_LW_GREENROOF, ZG_GREENROOF_ROOF,          &
00802                       ZRUNOFF_GREENROOF, ZDRAIN_GREENROOF,                             &
00803                       CCOOL_COIL, XF_WATER_COND, CHEAT_COIL, CNATVENT,                 &
00804                       KDAY, XAUX_MAX, XT_FLOOR, XT_MASS, ZH_BLD_COOL,                  &
00805                       ZT_BLD_COOL, ZH_BLD_HEAT, ZLE_BLD_COOL, ZLE_BLD_HEAT, ZH_WASTE,  &
00806                       ZLE_WASTE, XF_WASTE_CAN, ZHVAC_COOL, ZHVAC_HEAT, XQIN, XQIN_FRAD,&
00807                       XQIN_FLAT, XGR, XEFF_HEAT, XINF, XTCOOL_TARGET,                  &
00808                       XTHEAT_TARGET, XHR_TARGET, XT_WIN2, XQI_BLD, XV_VENT,            &
00809                       XCAP_SYS_HEAT, XCAP_SYS_RAT, XT_ADP, XM_SYS_RAT, XCOP_RAT,       &
00810                       ZCAP_SYS, ZM_SYS, ZCOP, ZQ_SYS, ZT_SYS, ZTR_SW_WIN, ZFAN_POWER,  &
00811                       XHC_FLOOR, XTC_FLOOR, XD_FLOOR, XT_WIN1, ZABS_SW_WIN,            &
00812                       ZABS_LW_WIN, XSHGC, XSHGC_SH, XUGG_WIN, XALB_WIN, XABS_WIN,      &
00813                       ZEMIT_LW_FAC, ZEMIT_LW_GRND, ZT_RAD_IND, ZREF_SW_GRND,           &
00814                       ZREF_SW_FAC, ZHU_BLD, PTIME, LSHADE, LSHAD_DAY, LNATVENT_NIGHT,  &
00815                       CBEM, XN_FLOOR, XWALL_O_BLD, XGLAZ_O_BLD, XMASS_O_BLD,           &
00816                       XFLOOR_HW_RATIO,                                                 &
00817                       XF_FLOOR_MASS, XF_FLOOR_WALL, XF_FLOOR_WIN,                      &
00818                       XF_FLOOR_ROOF, XF_WALL_FLOOR, XF_WALL_MASS,                      &
00819                       XF_WALL_WIN, XF_WIN_FLOOR, XF_WIN_MASS, XF_WIN_WALL,             &
00820                       XF_MASS_FLOOR, XF_MASS_WALL, XF_MASS_WIN, LCANOPY, XTRAN_WIN,    &
00821                       CCH_BEM, XROUGH_ROOF, XROUGH_WALL, XF_WIN_WIN                    )
00822 
00823 
00824 !
00825 IF (.NOT. LCANOPY) THEN
00826   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_T_CANYON,ZT_CAN)
00827   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_Q_CANYON,ZQ_CAN)
00828 !
00829 ! Momentum fluxes
00830 !
00831   ZSFU = 0.
00832   ZSFV = 0.
00833   DO JJ=1,SIZE(PU)
00834     IF (ZWIND(JJ)>0.) THEN
00835       ZCOEF(JJ) = - PRHOA(JJ) * ZUSTAR(JJ)**2 / ZWIND(JJ)
00836       ZSFU(JJ) = ZCOEF(JJ) * PU(JJ)
00837       ZSFV(JJ) = ZCOEF(JJ) * PV(JJ)
00838     ENDIF
00839   ENDDO
00840   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,PSFU,ZSFU)
00841   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,PSFV,ZSFV)
00842 !
00843 ENDIF
00844 !
00845 !-------------------------------------------------------------------------------------
00846 ! Outputs:
00847 !-------------------------------------------------------------------------------------
00848 !
00849 ! Grid box average fluxes/properties: Arguments and standard diagnostics
00850 !
00851  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,PSFTH,ZH)
00852  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,PSFTQ,ZEVAP)
00853  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,PSFCO2,ZSFCO2)
00854 !
00855 !
00856 ! Albedo for each wavelength and patch
00857 !
00858 DO JSWB=1,SIZE(PSW_BANDS)
00859   DO JJ=1,SIZE(ZDIR_ALB)
00860     ZDIR_ALB_PATCH(JJ,JSWB,JTEB_PATCH) = ZDIR_ALB(JJ)
00861     ZSCA_ALB_PATCH(JJ,JSWB,JTEB_PATCH) = ZSCA_ALB(JJ)
00862   ENDDO
00863 END DO
00864 !
00865 ! emissivity and radiative temperature
00866 !
00867 ZEMIS_PATCH(:,JTEB_PATCH) = ZEMIS
00868 ZTRAD_PATCH(:,JTEB_PATCH) = ZTRAD
00869 !
00870 ! computes some aggregated diagnostics
00871 !
00872  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_CD ,ZCD )
00873  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_CDN,ZCDN)
00874  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_RI ,ZRI )
00875  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_CH ,ZCH )
00876  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_RN ,ZRN )
00877  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_H  ,ZH  )
00878  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_LE ,ZLE )
00879  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_GFLUX ,ZGFLUX )
00880 !
00881 !* warning: aerodynamical resistance does not yet take into account gardens
00882  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_RESA_TOWN,1./ZRESA_TOWN)
00883 IF (JTEB_PATCH==NTEB_PATCH) ZAVG_RESA_TOWN = 1./ZAVG_RESA_TOWN
00884 !
00885 !-------------------------------------------------------------------------------------
00886 ! Diagnostics on each patch
00887 !-------------------------------------------------------------------------------------
00888 !
00889  CALL DIAG_MISC_TEB_n(PTSTEP, ZDQS_TOWN, ZQF_BLD, ZQF_TOWN, ZFLX_BLD,           &
00890                      ZRN_ROAD, ZH_ROAD, ZLE_ROAD, ZGFLUX_ROAD,                 &
00891                      ZRN_WALL_A, ZH_WALL_A, ZGFLUX_WALL_A,                     &
00892                      ZRN_WALL_B, ZH_WALL_B, ZGFLUX_WALL_B,                     &
00893                      ZRN_ROOF, ZH_ROOF, ZLE_ROOF, ZGFLUX_ROOF, ZRUNOFF,        &
00894                      ZRN_STRLROOF, ZH_STRLROOF, ZLE_STRLROOF, ZGFLUX_STRLROOF, &
00895                      ZRN_GREENROOF, ZH_GREENROOF,                              &
00896                      ZLE_GREENROOF, ZGFLUX_GREENROOF, ZG_GREENROOF_ROOF,       &
00897                      ZRUNOFF_GREENROOF, ZDRAIN_GREENROOF,                      &
00898                      ZRN_GARDEN,ZH_GARDEN,ZLE_GARDEN,ZGFLUX_GARDEN,            &
00899                      ZRN_BLT,ZH_BLT,ZLE_BLT,ZGFLUX_BLT,                        &
00900                      ZABS_SW_ROOF,ZABS_LW_ROOF,                                &
00901                      ZABS_SW_SNOW_ROOF,ZABS_LW_SNOW_ROOF,                      &
00902                      ZABS_SW_ROAD,ZABS_LW_ROAD,                                &
00903                      ZABS_SW_SNOW_ROAD,ZABS_LW_SNOW_ROAD,                      &
00904                      ZABS_SW_WALL_A, ZABS_LW_WALL_A, ZABS_SW_WALL_B,           &
00905                      ZABS_LW_WALL_B,                                           &
00906                      ZABS_SW_GARDEN,ZABS_LW_GARDEN,                            &
00907                      ZABS_SW_GREENROOF,ZABS_LW_GREENROOF,                      &
00908                      ZH_BLD_COOL, ZT_BLD_COOL,                                 &     
00909                      ZH_BLD_HEAT, ZLE_BLD_COOL, ZLE_BLD_HEAT,                  &
00910                      ZH_WASTE, ZLE_WASTE, ZHVAC_COOL,                          &
00911                      ZHVAC_HEAT, ZCAP_SYS, ZM_SYS, ZCOP,                       &
00912                      ZQ_SYS, ZT_SYS, ZTR_SW_WIN, ZFAN_POWER,                   &
00913                      ZABS_SW_WIN, ZABS_LW_WIN                                  )
00914 !
00915 !
00916 !-------------------------------------------------------------------------------------
00917 ! Computes averaged parameters necessary for UTCI
00918 !-------------------------------------------------------------------------------------
00919 !
00920 IF (N2M >0 .AND. LUTCI) THEN
00921   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_REF_SW_GRND ,ZREF_SW_GRND )
00922   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_REF_SW_FAC  ,ZREF_SW_FAC  )
00923   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_SCA_SW      ,ZSCA_SW      )
00924   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_DIR_SW      ,ZDIR_SW      )
00925   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_EMIT_LW_FAC ,ZEMIT_LW_FAC )
00926   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_EMIT_LW_GRND,ZEMIT_LW_GRND)
00927   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_T_RAD_IND   ,ZT_RAD_IND   )
00928   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_TI_BLD      ,XTI_BLD      )
00929   CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_QI_BLD      ,XQI_BLD      )
00930 END IF
00931 !
00932 !-------------------------------------------------------------------------------------
00933 ! Use of the canopy version of TEB
00934 !-------------------------------------------------------------------------------------
00935 !
00936 IF (LCANOPY) THEN
00937 !-------------------------------------------------------------------------------------
00938 ! Town averaged quantities to force canopy atmospheric layers
00939 !-------------------------------------------------------------------------------------
00940 
00941  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_DUWDU_GRND ,ZDUWDU_GRND )
00942  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_UW_ROOF ,ZUW_ROOF)
00943  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_DUWDU_ROOF ,ZDUWDU_ROOF)
00944  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_H_WALL ,0.5*(ZH_WALL_A+ZH_WALL_B))
00945  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_H_ROOF ,(ZH_ROOF+XH_INDUSTRY))
00946  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_E_ROOF ,(ZLE_ROOF+XLE_INDUSTRY)/XLVTT)
00947 !
00948 !-------------------------------------------------------------------------------------
00949 ! Computes the impact of canopy and surfaces on air
00950 !-------------------------------------------------------------------------------------
00951 !
00952 ZAC_GRND    (:) = (XROAD(:)*ZAC_ROAD    (:) + XGARDEN(:)*ZAC_GARDEN    (:)) / (XROAD(:)+XGARDEN(:))
00953 ZAC_GRND_WAT(:) = (XROAD(:)*ZAC_ROAD_WAT(:) + XGARDEN(:)*ZAC_GARDEN_WAT(:)) / (XROAD(:)+XGARDEN(:))
00954 !
00955  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_AC_GRND     ,ZAC_GRND    )
00956  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZAVG_AC_GRND_WAT ,ZAC_GRND_WAT)
00957  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZSFLUX_U ,ZUW_GRND * (1.-XBLD))
00958  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZSFLUX_T ,ZH_GRND  * (1.-XBLD)/XCPD/PRHOA)
00959  CALL ADD_PATCH_CONTRIB(JTEB_PATCH,ZSFLUX_Q ,ZLE_GRND * (1.-XBLD)/XLVTT)
00960 !
00961 
00962 END IF
00963 !
00964 !-------------------------------------------------------------------------------------
00965 ! end of loop on TEB patches
00966 END DO
00967 !-------------------------------------------------------------------------------------
00968 !
00969 !-------------------------------------------------------------------------------------
00970 !* Evolution of canopy air if canopy option is active
00971 !-------------------------------------------------------------------------------------
00972 !
00973 IF (LCANOPY) THEN
00974 !
00975 !-------------------------------------------------------------------------------------
00976 !* Impact of TEB fluxes on the air
00977 !-------------------------------------------------------------------------------------
00978 !
00979  CALL TEB_CANOPY(KI,NLVL,XZ,XZF,XDZ,XDZF,ZAVG_BLD,ZAVG_BLD_HEIGHT,ZAVG_WALL_O_HOR,     &
00980                 PPA,PRHOA,XU,                                                         &
00981                 ZAVG_DUWDU_GRND, ZAVG_UW_ROOF, ZAVG_DUWDU_ROOF,                       &
00982                 ZAVG_H_WALL,ZAVG_H_ROOF,ZAVG_E_ROOF,ZAVG_AC_GRND,ZAVG_AC_GRND_WAT,    &
00983                 ZFORC_U,ZDFORC_UDU,ZFORC_E,ZDFORC_EDE,ZFORC_T,ZDFORC_TDT,ZFORC_Q,ZDFORC_QDQ)
00984 !
00985 !-------------------------------------------------------------------------------------
00986 !* Evolution of canopy air due to these impacts
00987 !-------------------------------------------------------------------------------------
00988 !
00989  CALL CANOPY_EVOL(KI,NLVL,PTSTEP,2,                                            &
00990                  ZL,ZWIND,PTA,PQA,PPA,PRHOA,                                  &
00991                  ZSFLUX_U,ZSFLUX_T,ZSFLUX_Q,                                  &
00992                  ZFORC_U,ZDFORC_UDU,ZFORC_E,ZDFORC_EDE,                       &
00993                  ZFORC_T,ZDFORC_TDT,ZFORC_Q,ZDFORC_QDQ,                       &
00994                  XZ,XZF,XDZ,XDZF,XU,XTKE,XT,XQ,XLMO,XLM,XLEPS,XP,             &
00995                  ZAVG_USTAR,                                                  &
00996                  ZALFAU,ZBETAU,ZALFAT,ZBETAT,ZALFAQ,ZBETAQ                    )
00997 !
00998 !
00999 !-------------------------------------------------------------------------------------
01000 ! Momentum fluxes in the case canopy is active
01001 !-------------------------------------------------------------------------------------
01002 !
01003 PSFU=0.
01004 PSFV=0.
01005 ZAVG_Z0_TOWN(:) = MIN(ZAVG_Z0_TOWN(:),PUREF(:)*0.5)
01006 ZAVG_CDN=(XKARMAN/LOG(PUREF(:)/ZAVG_Z0_TOWN(:)))**2
01007 ZAVG_CD = ZAVG_CDN
01008 ZAVG_RI = 0.
01009 DO JJ=1,SIZE(PU)
01010   IF (ZWIND(JJ)>0.) THEN
01011     ZCOEF(JJ) = - PRHOA(JJ) * ZAVG_USTAR(JJ)**2 / ZWIND(JJ)
01012     PSFU(JJ) = ZCOEF(JJ) * PU(JJ)
01013     PSFV(JJ) = ZCOEF(JJ) * PV(JJ)
01014     ZAVG_CD(JJ) = ZAVG_USTAR(JJ)**2 / ZWIND(JJ)**2
01015     ZAVG_RI(JJ) = -XG/PTA(JJ)*ZSFLUX_T(JJ)/ZAVG_USTAR(JJ)**4
01016   ENDIF
01017 ENDDO
01018 !
01019 !-------------------------------------------------------------------------------------
01020 ! End of specific case with canopy option
01021 !-------------------------------------------------------------------------------------
01022 !
01023 END IF
01024 !
01025 !-------------------------------------------------------------------------------------
01026 ! Outputs:
01027 !-------------------------------------------------------------------------------------
01028 !
01029 ! Albedo, Emissivity and fraction at time t+1
01030 !
01031  CALL AVERAGE_RAD(XTEB_PATCH,                                              &
01032                  ZDIR_ALB_PATCH, ZSCA_ALB_PATCH, ZEMIS_PATCH, ZTRAD_PATCH,&
01033                  PDIR_ALB,       PSCA_ALB,       PEMIS,       PTRAD       )
01034 
01035 !
01036 !-------------------------------------------------------------------------------------
01037 ! Scalar fluxes:
01038 !-------------------------------------------------------------------------------------
01039 !
01040 ZAVG_USTAR    (:) = SQRT(SQRT(PSFU**2+PSFV**2))
01041 !
01042 !
01043 IF (NBEQ>0) THEN
01044   IF (CCH_DRY_DEP == "WES89") THEN
01045     CALL CH_DEP_TOWN(ZAVG_RESA_TOWN,  ZAVG_USTAR, PTA, PTRAD, ZAVG_WALL_O_HOR,&
01046                      PSV(:,NSV_CHSBEG:NSV_CHSEND),        &
01047                      CSV(NSV_CHSBEG:NSV_CHSEND),             &
01048                      XDEP(:,1:NBEQ)  )
01049    
01050     DO JI=NSV_CHSBEG,NSV_CHSEND
01051 !cdir nodep
01052       DO JJ=1,SIZE(PSFTS,1)
01053         PSFTS(JJ,JI) = - PSV(JJ,JI) * XDEP(JJ,JI-NSV_CHSBEG+1)
01054       ENDDO
01055     ENDDO
01056 
01057     IF (NAEREQ > 0 ) THEN
01058       CALL CH_AER_DEP(PSV(:,NSV_AERBEG:NSV_AEREND),&
01059                          PSFTS(:,NSV_AERBEG:NSV_AEREND),&
01060                          ZAVG_USTAR,ZAVG_RESA_TOWN,PTA,PRHOA)   
01061     END IF
01062 
01063   ELSE
01064     DO JI=NSV_CHSBEG,NSV_CHSEND
01065       PSFTS(:,JI) =0.
01066     ENDDO
01067     IF(NSV_AERBEG.LT.NSV_AEREND) THEN
01068       DO JI=NSV_AERBEG,NSV_AEREND
01069         PSFTS(:,JI) =0.
01070       ENDDO
01071     ENDIF
01072   ENDIF
01073 ENDIF
01074 
01075 IF (NDSTEQ>0) THEN
01076   CALL DSLT_DEP(PSV(:,NSV_DSTBEG:NSV_DSTEND), PSFTS(:,NSV_DSTBEG:NSV_DSTEND),   &
01077                 ZUSTAR, ZRESA_TOWN, PTA, PRHOA, XEMISSIG_DST, XEMISRADIUS_DST,  &
01078                 JPMODE_DST, XDENSITY_DST, XMOLARWEIGHT_DST, ZCONVERTFACM0_DST,  &
01079                 ZCONVERTFACM6_DST, ZCONVERTFACM3_DST, LVARSIG_DST, LRGFIX_DST,  &
01080                 CVERMOD  )  
01081 
01082   CALL MASSFLUX2MOMENTFLUX(         &
01083     PSFTS(:,NSV_DSTBEG:NSV_DSTEND), & !I/O ![kg/m2/sec] In: flux of only mass, out: flux of moments
01084     PRHOA,                          & !I [kg/m3] air density
01085     XEMISRADIUS_DST,                &!I [um] emitted radius for the modes (max 3)
01086     XEMISSIG_DST,                   &!I [-] emitted sigma for the different modes (max 3)
01087     NDSTMDE,                        &
01088     ZCONVERTFACM0_DST,              &
01089     ZCONVERTFACM6_DST,              &
01090     ZCONVERTFACM3_DST,              &
01091     LVARSIG_DST, LRGFIX_DST         )  
01092 ENDIF
01093 IF (NSLTEQ>0) THEN
01094   CALL DSLT_DEP(PSV(:,NSV_SLTBEG:NSV_SLTEND), PSFTS(:,NSV_SLTBEG:NSV_SLTEND),   &
01095                 ZUSTAR, ZRESA_TOWN, PTA, PRHOA, XEMISSIG_SLT, XEMISRADIUS_SLT,  &
01096                 JPMODE_SLT, XDENSITY_SLT, XMOLARWEIGHT_SLT, ZCONVERTFACM0_SLT,  &
01097                 ZCONVERTFACM6_SLT, ZCONVERTFACM3_SLT, LVARSIG_SLT, LRGFIX_SLT,  &
01098                 CVERMOD  )  
01099 
01100   CALL MASSFLUX2MOMENTFLUX(         &
01101     PSFTS(:,NSV_SLTBEG:NSV_SLTEND), & !I/O ![kg/m2/sec] In: flux of only mass, out: flux of moments
01102     PRHOA,                          & !I [kg/m3] air density
01103     XEMISRADIUS_SLT,                &!I [um] emitted radius for the modes (max 3)
01104     XEMISSIG_SLT,                   &!I [-] emitted sigma for the different modes (max 3)
01105     NSLTMDE,                        &
01106     ZCONVERTFACM0_SLT,              &
01107     ZCONVERTFACM6_SLT,              &
01108     ZCONVERTFACM3_SLT,              &
01109     LVARSIG_SLT, LRGFIX_SLT         ) 
01110 ENDIF
01111 !
01112 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
01113 ! Inline diagnostics
01114 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
01115 !
01116  CALL DIAG_INLINE_TEB_n(LCANOPY, PTA, PTRAD, ZQA, PPA, PPS, PRHOA,              &
01117                        PU, PV, ZWIND, PZREF, PUREF,                            &
01118                        ZAVG_CD, ZAVG_CDN, ZAVG_RI, ZAVG_CH, ZAVG_Z0_TOWN,      &
01119                        PTRAD, PEMIS, PDIR_ALB, PSCA_ALB,                       &
01120                        PLW, ZDIR_SWB, ZSCA_SWB,                                  &
01121                        PSFTH, PSFTQ, PSFU, PSFV, PSFCO2,                       &
01122                        ZAVG_RN, ZAVG_H, ZAVG_LE, ZAVG_GFLUX                    )
01123 !
01124 !-------------------------------------------------------------------------------------
01125 ! Stores Canyon air and humidity if historical option of TEB is active
01126 !-------------------------------------------------------------------------------------
01127 !
01128 IF (.NOT. LCANOPY) THEN
01129   DO JTEB_PATCH=1,NTEB_PATCH
01130     CALL GOTO_TEB(JTEB_PATCH)
01131     XT_CANYON(:) = ZAVG_T_CANYON(:)
01132     XQ_CANYON(:) = ZAVG_Q_CANYON(:)
01133   END DO
01134 END IF
01135 !          
01136 !-------------------------------------------------------------------------------------
01137 ! Thermal confort index
01138 !-------------------------------------------------------------------------------------
01139 !
01140 IF (LUTCI .AND. N2M >0) THEN
01141   DO JJ=1,KI
01142     IF (XZON10M(JJ)/=XUNDEF) THEN
01143       ZU_UTCI(JJ) = SQRT(XZON10M(JJ)**2+XMER10M(JJ)**2)
01144     ELSE
01145       ZU_UTCI(JJ) = ZWIND(JJ)
01146     ENDIF
01147   ENDDO
01148  CALL UTCI_TEB(XT_CANYON, XQ_CANYON, ZAVG_TI_BLD, ZAVG_QI_BLD, ZU_UTCI, PPS, ZAVG_REF_SW_GRND,&
01149      ZAVG_REF_SW_FAC, ZAVG_SCA_SW, ZAVG_DIR_SW, PZENITH, ZAVG_EMIT_LW_FAC, ZAVG_EMIT_LW_GRND, PLW,   &
01150      ZAVG_T_RAD_IND, XBLD, XBLD_HEIGHT, XWALL_O_HOR, XUTCI_IN, XUTCI_OUTSUN,         &
01151      XUTCI_OUTSHADE, XTRAD_SUN, XTRAD_SHADE                                      )       
01152 ELSE IF (LUTCI) THEN
01153   XUTCI_IN(:) = XUNDEF
01154   XUTCI_OUTSUN(:) = XUNDEF
01155   XUTCI_OUTSHADE(:) = XUNDEF
01156   XTRAD_SUN(:) = XUNDEF
01157   XTRAD_SHADE(:) = XUNDEF
01158 ENDIF
01159 
01160 !
01161 IF (LHOOK) CALL DR_HOOK('COUPLING_TEB_N',1,ZHOOK_HANDLE)
01162 !
01163 !-------------------------------------------------------------------------------------
01164 CONTAINS
01165 SUBROUTINE ADD_PATCH_CONTRIB(JP,PAVG,PFIELD)
01166 INTEGER, INTENT(IN) :: JP
01167 REAL, DIMENSION(:), INTENT(INOUT) :: PAVG
01168 REAL, DIMENSION(:), INTENT(IN)    :: PFIELD
01169 !
01170 IF (JTEB_PATCH==1) PAVG = 0.
01171 PAVG = PAVG + XTEB_PATCH(:,JP) * PFIELD(:)
01172 !
01173 END SUBROUTINE ADD_PATCH_CONTRIB
01174 !-------------------------------------------------------------------------------------
01175 !
01176 END SUBROUTINE COUPLING_TEB_n
01177 
01178