SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/modd_tebn.F90
Go to the documentation of this file.
00001 !     ################
00002       MODULE MODD_TEB_n
00003 !     ################
00004 !
00005 !!****  *MODD_TEB_n - declaration of surface parameters for urban surface
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !     Declaration of surface parameters
00010 !
00011 !!
00012 !!**  IMPLICIT ARGUMENTS
00013 !!    ------------------
00014 !!      None 
00015 !!
00016 !!    REFERENCE
00017 !!    ---------
00018 !!
00019 !!    AUTHOR
00020 !!    ------
00021 !!      V. Masson   *Meteo France*
00022 !!
00023 !!    MODIFICATIONS
00024 !!    -------------
00025 !!      Original       01/2004
00026 !!      A. Lemonsu      07/2012         Key for urban hydrology
00027 !
00028 !*       0.   DECLARATIONS
00029 !             ------------
00030 !
00031 USE MODD_TYPE_SNOW
00032 USE MODD_TYPE_DATE_SURF
00033 !
00034 !
00035 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00036 USE PARKIND1  ,ONLY : JPRB
00037 !
00038 IMPLICIT NONE
00039 
00040 
00041 TYPE TEB_OPTIONS_t
00042 ! TEB scheme option
00043 !
00044   LOGICAL                        :: LCANOPY      ! T: SBL scheme within the canopy
00045                                                  ! F: no atmospheric layers below forcing level      
00046   LOGICAL                        :: LGARDEN      ! T: Urban green areas (call ISBA from TEB)
00047                                                  ! F: No urban green areas
00048   CHARACTER(LEN=4)               :: CROAD_DIR    ! TEB option for road directions
00049                                                  ! 'UNIF' : no specific direction
00050                                                  ! 'ORIE' : many road ORIEntations
00051                                                  ! ( one per TEB patch)
00052   CHARACTER(LEN=4)               :: CWALL_OPT    ! TEB option for walls
00053                                                  ! 'UNIF' : uniform walls
00054                                                  ! 'TWO ' : two separated walls
00055   CHARACTER(LEN=3)               :: CBLD_ATYPE   ! Type of averaging for walls
00056                                                  ! 'ARI'  : Characteristics are
00057                                                  !          linearly averaged
00058                                                  ! 'MAJ ' : Majoritary building in
00059                                                  !          grid mesh is chosen
00060   CHARACTER(LEN=6)               :: CZ0H         ! TEB option for z0h roof & road
00061                                                  ! 'MASC95' : Mascart et al 1995
00062                                                  ! 'BRUT82' : Brustaert     1982
00063                                                  ! 'KAND07' : Kanda         2007
00064   CHARACTER(LEN=5)               :: CCH_BEM      ! BEM option for roof/wall outside convective coefficient
00065                                                  ! 'DOE-2' : DOE-2 model from
00066                                                  ! EnergyPlus Engineering reference, p65
00067   CHARACTER(LEN=3)               :: CBEM         ! TEB option for the building energy model
00068                                                  ! 'DEF':  DEFault version force-restore model from Masson et al. 2002
00069                                                  ! 'BEM':  Building Energy Model Bueno et al. 2011
00070 
00071   CHARACTER(LEN=3)               :: CTREE        ! TEB option for the high vegetation
00072                                                  ! 'DEF':  DEFault version without radiative, dynamic effects or turbulent fluxes
00073                                                  ! 'RAD':  only RADiative effects 
00074                                                  ! 'DYN':  radiative and DYNamic effects 
00075                                                  ! 'FLX':  radiative, dynamic effects, and turbulent fluxes 
00076   LOGICAL                        :: LGREENROOF   ! T: green roofs (call ISBA from TEB)
00077   LOGICAL                        :: LHYDRO       ! T: urban subsoil and hydrology processes
00078 ! 
00079 ! type of initialization of vegetation: from cover types (ecoclimap) or parameters prescribed
00080 !
00081   LOGICAL                        :: LECOCLIMAP   ! T: parameters computed from ecoclimap
00082 !                                                ! F: they are read in the file
00083 !
00084 ! General surface: 
00085 !
00086   REAL, POINTER, DIMENSION(:)   :: XZS           ! orography                        (m)
00087   REAL, POINTER, DIMENSION(:,:) :: XCOVER        ! fraction of each ecosystem       (-)
00088   LOGICAL, POINTER, DIMENSION(:):: LCOVER        ! GCOVER(i)=T --> ith cover field is not 0.
00089   INTEGER                       :: NTEB_PATCH    ! number of TEB patches
00090   REAL, POINTER, DIMENSION(:,:) :: XTEB_PATCH    ! fraction of each TEB patch
00091 !
00092 ! Number of layers
00093 !
00094   INTEGER                       :: NROOF_LAYER   ! number of layers in roofs
00095   INTEGER                       :: NROAD_LAYER   ! number of layers in roads
00096   INTEGER                       :: NWALL_LAYER   ! number of layers in walls
00097 !
00098 ! Date:
00099 !
00100   TYPE (DATE_TIME)              :: TTIME         ! current date and time
00101 !
00102 ! Time-step:
00103 !
00104   REAL                          :: XTSTEP        ! time step for TEB
00105 !
00106   REAL                          :: XOUT_TSTEP    ! TEB output writing time step
00107 !
00108 END TYPE TEB_OPTIONS_t
00109 
00110 TYPE(TEB_OPTIONS_t), ALLOCATABLE, TARGET, SAVE :: TEB_OPTIONS_MODEL(:)
00111 
00112 LOGICAL, POINTER :: LCANOPY=>NULL()
00113 !$OMP THREADPRIVATE(LCANOPY)
00114 LOGICAL, POINTER :: LGARDEN=>NULL()
00115 !$OMP THREADPRIVATE(LGARDEN)
00116  CHARACTER(LEN=4), POINTER :: CROAD_DIR=>NULL()
00117 !$OMP THREADPRIVATE(CROAD_DIR)
00118  CHARACTER(LEN=4), POINTER :: CWALL_OPT=>NULL()
00119 !$OMP THREADPRIVATE(CWALL_OPT)
00120  CHARACTER(LEN=3), POINTER :: CBLD_ATYPE=>NULL()
00121 !$OMP THREADPRIVATE(CBLD_ATYPE)
00122  CHARACTER(LEN=6), POINTER :: CZ0H=>NULL()
00123 !$OMP THREADPRIVATE(CZ0H)
00124  CHARACTER(LEN=5), POINTER :: CCH_BEM=>NULL()
00125 !$OMP THREADPRIVATE(CCH_BEM)
00126  CHARACTER(LEN=3), POINTER :: CBEM=>NULL()
00127 !$OMP THREADPRIVATE(CBEM)
00128  CHARACTER(LEN=3), POINTER :: CTREE=>NULL()
00129 !$OMP THREADPRIVATE(CTREE)
00130 LOGICAL, POINTER :: LGREENROOF=>NULL()
00131 !$OMP THREADPRIVATE(LGREENROOF)
00132 LOGICAL, POINTER :: LHYDRO=>NULL()
00133 !$OMP THREADPRIVATE(LHYDRO)
00134 LOGICAL, POINTER :: LECOCLIMAP=>NULL()
00135 !$OMP THREADPRIVATE(LECOCLIMAP)
00136 REAL, POINTER, DIMENSION(:)   :: XZS=>NULL()
00137 !$OMP THREADPRIVATE(XZS)
00138 REAL, POINTER, DIMENSION(:,:) :: XCOVER=>NULL()
00139 !$OMP THREADPRIVATE(XCOVER)
00140 LOGICAL, POINTER, DIMENSION(:):: LCOVER=>NULL()
00141 !$OMP THREADPRIVATE(LCOVER)
00142 INTEGER, POINTER :: NTEB_PATCH=>NULL()
00143 !$OMP THREADPRIVATE(NTEB_PATCH)
00144 REAL, POINTER, DIMENSION(:,:) :: XTEB_PATCH=>NULL()
00145 !$OMP THREADPRIVATE(XTEB_PATCH)
00146 INTEGER, POINTER :: NROOF_LAYER=>NULL()
00147 !$OMP THREADPRIVATE(NROOF_LAYER)
00148 INTEGER, POINTER :: NROAD_LAYER=>NULL()
00149 !$OMP THREADPRIVATE(NROAD_LAYER)
00150 INTEGER, POINTER :: NWALL_LAYER=>NULL()
00151 !$OMP THREADPRIVATE(NWALL_LAYER)
00152 TYPE (DATE_TIME), POINTER :: TTIME=>NULL()
00153 !$OMP THREADPRIVATE(TTIME)
00154 REAL, POINTER :: XTSTEP=>NULL()
00155 !$OMP THREADPRIVATE(XTSTEP)
00156 REAL, POINTER :: XOUT_TSTEP=>NULL()
00157 !$OMP THREADPRIVATE(XOUT_TSTEP)
00158 
00159 !--------------------------------------------------------------------------
00160 
00161 TYPE TEB_t
00162 ! TEB scheme option
00163 !
00164 ! Geometric Parameters:
00165 !
00166   REAL, POINTER, DIMENSION(:)   :: XROAD_DIR     ! Road direction (° from North, clockwise)
00167   REAL, POINTER, DIMENSION(:)   :: XGARDEN       ! fraction of veg in the streets   (-)
00168   REAL, POINTER, DIMENSION(:)   :: XGREENROOF    ! fraction of greenroofs on roofs  (-)
00169   REAL, POINTER, DIMENSION(:)   :: XBLD          ! fraction of buildings            (-)
00170   REAL, POINTER, DIMENSION(:)   :: XROAD         ! fraction of roads                (-)
00171   REAL, POINTER, DIMENSION(:)   :: XCAN_HW_RATIO ! canyon    h/W                    (-)
00172   REAL, POINTER, DIMENSION(:)   :: XBLD_HEIGHT   ! buildings height 'h'             (m)
00173   REAL, POINTER, DIMENSION(:)   :: XWALL_O_HOR   ! wall surf. / hor. surf.          (-)
00174   REAL, POINTER, DIMENSION(:)   :: XROAD_O_GRND  ! road surf. / (road + garden surf.) (-)
00175   REAL, POINTER, DIMENSION(:)   :: XGARDEN_O_GRND! gard. surf. / (road + garden surf.)(-)
00176   REAL, POINTER, DIMENSION(:)   :: XWALL_O_GRND  ! wall surf. / (road + garden surf.) (-)
00177   REAL, POINTER, DIMENSION(:)   :: XWALL_O_BLD   ! wall surf. / bld surf. (-)
00178   REAL, POINTER, DIMENSION(:)   :: XZ0_TOWN      ! roughness length for momentum    (m)
00179   REAL, POINTER, DIMENSION(:)   :: XSVF_ROAD     ! road sky view factor             (-)
00180   REAL, POINTER, DIMENSION(:)   :: XSVF_GARDEN   ! green area sky view factor       (-)
00181   REAL, POINTER, DIMENSION(:)   :: XSVF_WALL     ! wall sky view factor             (-)
00182 !
00183 ! Roof parameters
00184 !
00185   REAL, POINTER, DIMENSION(:)   :: XALB_ROOF     ! roof albedo                      (-)
00186   REAL, POINTER, DIMENSION(:)   :: XEMIS_ROOF    ! roof emissivity                  (-)
00187   REAL, POINTER, DIMENSION(:,:) :: XHC_ROOF      ! roof layers heat capacity        (J/K/m3)
00188   REAL, POINTER, DIMENSION(:,:) :: XTC_ROOF      ! roof layers thermal conductivity (W/K/m)
00189   REAL, POINTER, DIMENSION(:,:) :: XD_ROOF       ! depth of roof layers             (m)
00190   REAL, POINTER, DIMENSION(:)   :: XROUGH_ROOF   ! roof roughness coef
00191 !
00192 !
00193 ! Road parameters
00194 !
00195   REAL, POINTER, DIMENSION(:)   :: XALB_ROAD     ! road albedo                      (-)
00196   REAL, POINTER, DIMENSION(:)   :: XEMIS_ROAD    ! road emissivity                  (-)
00197   REAL, POINTER, DIMENSION(:,:) :: XHC_ROAD      ! road layers heat capacity        (J/K/m3)
00198   REAL, POINTER, DIMENSION(:,:) :: XTC_ROAD      ! road layers thermal conductivity (W/K/m)
00199   REAL, POINTER, DIMENSION(:,:) :: XD_ROAD       ! depth of road layers             (m)
00200 !
00201 ! Wall parameters
00202 !
00203   REAL, POINTER, DIMENSION(:)   :: XALB_WALL     ! wall albedo                      (-)
00204   REAL, POINTER, DIMENSION(:)   :: XEMIS_WALL    ! wall emissivity                  (-)
00205   REAL, POINTER, DIMENSION(:,:) :: XHC_WALL      ! wall layers heat capacity        (J/K/m3)
00206   REAL, POINTER, DIMENSION(:,:) :: XTC_WALL      ! wall layers thermal conductivity (W/K/m)
00207   REAL, POINTER, DIMENSION(:,:) :: XD_WALL       ! depth of wall layers             (m)
00208   REAL, POINTER, DIMENSION(:)   :: XROUGH_WALL   ! wall roughness coef
00209 !
00210 ! anthropogenic fluxes
00211 !
00212   REAL, POINTER, DIMENSION(:)   :: XH_TRAFFIC    ! anthropogenic sensible
00213 !                                                  ! heat fluxes due to traffic       (W/m2)
00214   REAL, POINTER, DIMENSION(:)   :: XLE_TRAFFIC   ! anthropogenic latent
00215 !                                                  ! heat fluxes due to traffic       (W/m2)
00216   REAL, POINTER, DIMENSION(:)   :: XH_INDUSTRY   ! anthropogenic sensible                   
00217 !                                                  ! heat fluxes due to factories     (W/m2)
00218   REAL, POINTER, DIMENSION(:)   :: XLE_INDUSTRY  ! anthropogenic latent
00219 !                                                  ! heat fluxes due to factories     (W/m2)
00220 !
00221 ! temperatures for boundary conditions
00222 !
00223   REAL, POINTER, DIMENSION(:)   :: XTI_ROAD      ! road interior temperature        (K)
00224 !
00225 ! Prognostic variables:
00226 !
00227   REAL, POINTER, DIMENSION(:)   :: XWS_ROOF      ! roof water reservoir             (kg/m2)
00228   REAL, POINTER, DIMENSION(:)   :: XWS_ROAD      ! road water reservoir             (kg/m2)
00229   REAL, POINTER, DIMENSION(:,:) :: XT_ROOF       ! roof layer temperatures          (K)
00230   REAL, POINTER, DIMENSION(:,:) :: XT_ROAD       ! road layer temperatures          (K)
00231   REAL, POINTER, DIMENSION(:,:) :: XT_WALL_A     ! wall layer temperatures          (K)
00232   REAL, POINTER, DIMENSION(:,:) :: XT_WALL_B     ! wall layer temperatures          (K)
00233 !
00234   REAL, POINTER, DIMENSION(:)   :: XAC_ROOF      ! roof aerodynamic conductance     ()
00235   REAL, POINTER, DIMENSION(:)   :: XAC_ROAD      ! road aerodynamic conductance     ()
00236   REAL, POINTER, DIMENSION(:)   :: XAC_WALL      ! wall aerodynamic conductance     ()
00237   REAL, POINTER, DIMENSION(:)   :: XAC_TOP       ! top  aerodynamic conductance     ()
00238   REAL, POINTER, DIMENSION(:)   :: XAC_ROOF_WAT  ! water aerodynamic conductance    ()
00239   REAL, POINTER, DIMENSION(:)   :: XAC_ROAD_WAT  ! water aerodynamic conductance    ()
00240 !
00241   REAL, POINTER, DIMENSION(:)   :: XQSAT_ROOF    ! humidity of saturation for roofs (kg/kg)
00242   REAL, POINTER, DIMENSION(:)   :: XQSAT_ROAD    ! humidity of saturation for roads (kg/kg)
00243 !
00244   REAL, POINTER, DIMENSION(:)   :: XDELT_ROOF    ! humidity of saturation for roofs (-)
00245   REAL, POINTER, DIMENSION(:)   :: XDELT_ROAD    ! humidity of saturation for roads (-)
00246 !
00247 ! Semi-prognostic variables:
00248 !
00249   REAL, POINTER, DIMENSION(:)   :: XT_CANYON     ! canyon air temperature           (K)
00250   REAL, POINTER, DIMENSION(:)   :: XQ_CANYON     ! canyon air specific humidity     (kg/kg)
00251 !
00252 !
00253 ! Prognostic snow:
00254 !
00255   TYPE(SURF_SNOW)                 :: TSNOW_ROOF      ! snow state on roofs: 
00256 !                                                  ! scheme type/option               (-)
00257 !                                                  ! number of layers                 (-)
00258 !                                                  ! snow (& liq. water) content      (kg/m2)
00259 !                                                  ! heat content                     (J/m2)
00260 !                                                  ! temperature                      (K)
00261 !                                                  ! density                          (kg m-3)
00262   TYPE(SURF_SNOW)                 :: TSNOW_ROAD      ! snow state on roads: 
00263 !                                                  ! scheme type/option               (-)
00264 !                                                  ! number of layers                 (-)
00265 !                                                  ! snow (& liq. water) content      (kg/m2)
00266 !                                                  ! heat content                     (J/m2)
00267 !                                                  ! temperature                      (K)
00268 !                                                  ! density                          (kg m-3)
00269 !                                                  ! density                          (kg m-3)
00270   TYPE(SURF_SNOW)                 :: TSNOW_GARDEN    ! snow state on green areas:
00271 !                                                  ! scheme type/option               (-)
00272 !                                                  ! number of layers                 (-)
00273 !                                                  ! snow (& liq. water) content      (kg/m2)
00274 !                                                  ! heat content                     (J/m2)
00275 !                                                  ! temperature                      (K)
00276 !                                                  ! density                          (kg m-3)
00277 !
00278 END TYPE TEB_t
00279 
00280 TYPE(TEB_t), ALLOCATABLE, TARGET, SAVE :: TEB_MODEL(:,:)
00281 
00282 REAL, POINTER, DIMENSION(:)   :: XROAD_DIR=>NULL()
00283 !$OMP THREADPRIVATE(XROAD_DIR)
00284 REAL, POINTER, DIMENSION(:)   :: XGARDEN=>NULL()
00285 !$OMP THREADPRIVATE(XGARDEN)
00286 REAL, POINTER, DIMENSION(:)   :: XGREENROOF=>NULL()
00287 !$OMP THREADPRIVATE(XGREENROOF)
00288 REAL, POINTER, DIMENSION(:)   :: XBLD=>NULL()
00289 !$OMP THREADPRIVATE(XBLD)
00290 REAL, POINTER, DIMENSION(:)   :: XROAD=>NULL()
00291 !$OMP THREADPRIVATE(XROAD)
00292 REAL, POINTER, DIMENSION(:)   :: XCAN_HW_RATIO=>NULL()
00293 !$OMP THREADPRIVATE(XCAN_HW_RATIO)
00294 REAL, POINTER, DIMENSION(:)   :: XBLD_HEIGHT=>NULL()
00295 !$OMP THREADPRIVATE(XBLD_HEIGHT)
00296 REAL, POINTER, DIMENSION(:)   :: XWALL_O_HOR=>NULL()
00297 !$OMP THREADPRIVATE(XWALL_O_HOR)
00298 REAL, POINTER, DIMENSION(:)   :: XROAD_O_GRND=>NULL()
00299 !$OMP THREADPRIVATE(XROAD_O_GRND)
00300 REAL, POINTER, DIMENSION(:)   :: XGARDEN_O_GRND=>NULL()
00301 !$OMP THREADPRIVATE(XGARDEN_O_GRND)
00302 REAL, POINTER, DIMENSION(:)   :: XWALL_O_GRND=>NULL()
00303 !$OMP THREADPRIVATE(XWALL_O_GRND)
00304 REAL, POINTER, DIMENSION(:)   :: XWALL_O_BLD=>NULL()
00305 !$OMP THREADPRIVATE(XWALL_O_BLD)
00306 REAL, POINTER, DIMENSION(:)   :: XZ0_TOWN=>NULL()
00307 !$OMP THREADPRIVATE(XZ0_TOWN)
00308 REAL, POINTER, DIMENSION(:)   :: XSVF_ROAD=>NULL()
00309 !$OMP THREADPRIVATE(XSVF_ROAD)
00310 REAL, POINTER, DIMENSION(:)   :: XSVF_GARDEN=>NULL()
00311 !$OMP THREADPRIVATE(XSVF_GARDEN)
00312 REAL, POINTER, DIMENSION(:)   :: XSVF_WALL=>NULL()
00313 !$OMP THREADPRIVATE(XSVF_WALL)
00314 REAL, POINTER, DIMENSION(:)   :: XALB_ROOF=>NULL()
00315 !$OMP THREADPRIVATE(XALB_ROOF)
00316 REAL, POINTER, DIMENSION(:)   :: XEMIS_ROOF=>NULL()
00317 !$OMP THREADPRIVATE(XEMIS_ROOF)
00318 REAL, POINTER, DIMENSION(:,:) :: XHC_ROOF=>NULL()
00319 !$OMP THREADPRIVATE(XHC_ROOF)
00320 REAL, POINTER, DIMENSION(:,:) :: XTC_ROOF=>NULL()
00321 !$OMP THREADPRIVATE(XTC_ROOF)
00322 REAL, POINTER, DIMENSION(:,:) :: XD_ROOF=>NULL()
00323 !$OMP THREADPRIVATE(XD_ROOF)
00324 REAL, POINTER, DIMENSION(:)   :: XALB_ROAD=>NULL()
00325 !$OMP THREADPRIVATE(XALB_ROAD)
00326 REAL, POINTER, DIMENSION(:)   :: XEMIS_ROAD=>NULL()
00327 !$OMP THREADPRIVATE(XEMIS_ROAD)
00328 REAL, POINTER, DIMENSION(:,:) :: XHC_ROAD=>NULL()
00329 !$OMP THREADPRIVATE(XHC_ROAD)
00330 REAL, POINTER, DIMENSION(:,:) :: XTC_ROAD=>NULL()
00331 !$OMP THREADPRIVATE(XTC_ROAD)
00332 REAL, POINTER, DIMENSION(:,:) :: XD_ROAD=>NULL()
00333 !$OMP THREADPRIVATE(XD_ROAD)
00334 REAL, POINTER, DIMENSION(:)   :: XALB_WALL=>NULL()
00335 !$OMP THREADPRIVATE(XALB_WALL)
00336 REAL, POINTER, DIMENSION(:)   :: XEMIS_WALL=>NULL()
00337 !$OMP THREADPRIVATE(XEMIS_WALL)
00338 REAL, POINTER, DIMENSION(:,:) :: XHC_WALL=>NULL()
00339 !$OMP THREADPRIVATE(XHC_WALL)
00340 REAL, POINTER, DIMENSION(:,:) :: XTC_WALL=>NULL()
00341 !$OMP THREADPRIVATE(XTC_WALL)
00342 REAL, POINTER, DIMENSION(:,:) :: XD_WALL=>NULL()
00343 !$OMP THREADPRIVATE(XD_WALL)
00344 REAL, POINTER, DIMENSION(:)   :: XH_TRAFFIC=>NULL()
00345 !$OMP THREADPRIVATE(XH_TRAFFIC)
00346 REAL, POINTER, DIMENSION(:)   :: XLE_TRAFFIC=>NULL()
00347 !$OMP THREADPRIVATE(XLE_TRAFFIC)
00348 REAL, POINTER, DIMENSION(:)   :: XH_INDUSTRY=>NULL()
00349 !$OMP THREADPRIVATE(XH_INDUSTRY)
00350 REAL, POINTER, DIMENSION(:)   :: XLE_INDUSTRY=>NULL()
00351 !$OMP THREADPRIVATE(XLE_INDUSTRY)
00352 REAL, POINTER, DIMENSION(:)   :: XTI_ROAD=>NULL()
00353 !$OMP THREADPRIVATE(XTI_ROAD)
00354 REAL, POINTER, DIMENSION(:)   :: XWS_ROOF=>NULL()
00355 !$OMP THREADPRIVATE(XWS_ROOF)
00356 REAL, POINTER, DIMENSION(:)   :: XWS_ROAD=>NULL()
00357 !$OMP THREADPRIVATE(XWS_ROAD)
00358 REAL, POINTER, DIMENSION(:,:) :: XT_ROOF=>NULL()
00359 !$OMP THREADPRIVATE(XT_ROOF)
00360 REAL, POINTER, DIMENSION(:,:) :: XT_ROAD=>NULL()
00361 !$OMP THREADPRIVATE(XT_ROAD)
00362 REAL, POINTER, DIMENSION(:,:) :: XT_WALL_A=>NULL()
00363 !$OMP THREADPRIVATE(XT_WALL_A)
00364 REAL, POINTER, DIMENSION(:,:) :: XT_WALL_B=>NULL()
00365 !$OMP THREADPRIVATE(XT_WALL_B)
00366 REAL, POINTER, DIMENSION(:)   :: XAC_ROOF=>NULL()
00367 !$OMP THREADPRIVATE(XAC_ROOF)
00368 REAL, POINTER, DIMENSION(:)   :: XAC_ROAD=>NULL()
00369 !$OMP THREADPRIVATE(XAC_ROAD)
00370 REAL, POINTER, DIMENSION(:)   :: XAC_WALL=>NULL()
00371 !$OMP THREADPRIVATE(XAC_WALL)
00372 REAL, POINTER, DIMENSION(:)   :: XAC_TOP=>NULL()
00373 !$OMP THREADPRIVATE(XAC_TOP)
00374 REAL, POINTER, DIMENSION(:)   :: XAC_ROOF_WAT=>NULL()
00375 !$OMP THREADPRIVATE(XAC_ROOF_WAT)
00376 REAL, POINTER, DIMENSION(:)   :: XAC_ROAD_WAT=>NULL()
00377 !$OMP THREADPRIVATE(XAC_ROAD_WAT)
00378 REAL, POINTER, DIMENSION(:)   :: XQSAT_ROOF=>NULL()
00379 !$OMP THREADPRIVATE(XQSAT_ROOF)
00380 REAL, POINTER, DIMENSION(:)   :: XQSAT_ROAD=>NULL()
00381 !$OMP THREADPRIVATE(XQSAT_ROAD)
00382 REAL, POINTER, DIMENSION(:)   :: XDELT_ROOF=>NULL()
00383 !$OMP THREADPRIVATE(XDELT_ROOF)
00384 REAL, POINTER, DIMENSION(:)   :: XDELT_ROAD=>NULL()
00385 !$OMP THREADPRIVATE(XDELT_ROAD)
00386 REAL, POINTER, DIMENSION(:)   :: XT_CANYON=>NULL()
00387 !$OMP THREADPRIVATE(XT_CANYON)
00388 REAL, POINTER, DIMENSION(:)   :: XQ_CANYON=>NULL()
00389 !$OMP THREADPRIVATE(XQ_CANYON)
00390 TYPE(SURF_SNOW), POINTER :: TSNOW_ROOF=>NULL()
00391 !$OMP THREADPRIVATE(TSNOW_ROOF)
00392 TYPE(SURF_SNOW), POINTER :: TSNOW_ROAD=>NULL()
00393 !$OMP THREADPRIVATE(TSNOW_ROAD)
00394 TYPE(SURF_SNOW), POINTER :: TSNOW_GARDEN=>NULL()
00395 !$OMP THREADPRIVATE(TSNOW_GARDEN)
00396 REAL, POINTER, DIMENSION(:)   :: XROUGH_ROOF=>NULL()
00397 !$OMP THREADPRIVATE(XROUGH_ROOF)
00398 REAL, POINTER, DIMENSION(:)   :: XROUGH_WALL=>NULL()
00399 !$OMP THREADPRIVATE(XROUGH_WALL)
00400 
00401 !----------------------------------------------------------------------------
00402 CONTAINS
00403 !----------------------------------------------------------------------------
00404 
00405 SUBROUTINE TEB_OPTIONS_GOTO_MODEL(KFROM, KTO, LKFROM)
00406 LOGICAL, INTENT(IN) :: LKFROM
00407 INTEGER, INTENT(IN) :: KFROM, KTO
00408 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00409 !
00410 ! Save current state for allocated arrays
00411 IF (LKFROM) THEN
00412 TEB_OPTIONS_MODEL(KFROM)%XZS=>XZS
00413 TEB_OPTIONS_MODEL(KFROM)%XCOVER=>XCOVER
00414 TEB_OPTIONS_MODEL(KFROM)%LCOVER=>LCOVER
00415 TEB_OPTIONS_MODEL(KFROM)%XTEB_PATCH=>XTEB_PATCH
00416 ENDIF
00417 !
00418 ! Current model is set to model KTO
00419 IF (LHOOK) CALL DR_HOOK('MODD_TEB_N:TEB_OPTIONS_GOTO_MODEL',0,ZHOOK_HANDLE)
00420 LCANOPY=>TEB_OPTIONS_MODEL(KTO)%LCANOPY
00421 LGARDEN=>TEB_OPTIONS_MODEL(KTO)%LGARDEN
00422 CZ0H=>TEB_OPTIONS_MODEL(KTO)%CZ0H
00423 CCH_BEM=>TEB_OPTIONS_MODEL(KTO)%CCH_BEM
00424 CBEM=>TEB_OPTIONS_MODEL(KTO)%CBEM
00425 CTREE=>TEB_OPTIONS_MODEL(KTO)%CTREE
00426 CROAD_DIR=>TEB_OPTIONS_MODEL(KTO)%CROAD_DIR
00427 CWALL_OPT=>TEB_OPTIONS_MODEL(KTO)%CWALL_OPT
00428 CBLD_ATYPE=>TEB_OPTIONS_MODEL(KTO)%CBLD_ATYPE
00429 LGREENROOF=>TEB_OPTIONS_MODEL(KTO)%LGREENROOF
00430 LHYDRO=>TEB_OPTIONS_MODEL(KTO)%LHYDRO
00431 LECOCLIMAP=>TEB_OPTIONS_MODEL(KTO)%LECOCLIMAP
00432 XZS=>TEB_OPTIONS_MODEL(KTO)%XZS
00433 XCOVER=>TEB_OPTIONS_MODEL(KTO)%XCOVER
00434 LCOVER=>TEB_OPTIONS_MODEL(KTO)%LCOVER
00435 NTEB_PATCH=>TEB_OPTIONS_MODEL(KTO)%NTEB_PATCH
00436 XTEB_PATCH=>TEB_OPTIONS_MODEL(KTO)%XTEB_PATCH
00437 NROOF_LAYER=>TEB_OPTIONS_MODEL(KTO)%NROOF_LAYER
00438 NROAD_LAYER=>TEB_OPTIONS_MODEL(KTO)%NROAD_LAYER
00439 NWALL_LAYER=>TEB_OPTIONS_MODEL(KTO)%NWALL_LAYER
00440 TTIME=>TEB_OPTIONS_MODEL(KTO)%TTIME
00441 XTSTEP=>TEB_OPTIONS_MODEL(KTO)%XTSTEP
00442 XOUT_TSTEP=>TEB_OPTIONS_MODEL(KTO)%XOUT_TSTEP
00443 IF (LHOOK) CALL DR_HOOK('MODD_TEB_N:TEB_OPTIONS_GOTO_MODEL',1,ZHOOK_HANDLE)
00444 
00445 END SUBROUTINE TEB_OPTIONS_GOTO_MODEL
00446 
00447 SUBROUTINE TEB_OPTIONS_ALLOC(KMODEL)
00448 INTEGER, INTENT(IN) :: KMODEL
00449 INTEGER :: J,JP
00450 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00451 IF (LHOOK) CALL DR_HOOK("MODD_TEB_N:TEB_OPTIONS_ALLOC",0,ZHOOK_HANDLE)
00452 ALLOCATE(TEB_OPTIONS_MODEL(KMODEL))
00453 DO J=1,KMODEL
00454   NULLIFY(TEB_OPTIONS_MODEL(J)%XZS)
00455   NULLIFY(TEB_OPTIONS_MODEL(J)%XCOVER)
00456   NULLIFY(TEB_OPTIONS_MODEL(J)%LCOVER)
00457   NULLIFY(TEB_OPTIONS_MODEL(J)%XTEB_PATCH)
00458 ENDDO
00459 TEB_OPTIONS_MODEL(:)%LCANOPY=.FALSE.
00460 TEB_OPTIONS_MODEL(:)%LGARDEN=.FALSE.
00461 TEB_OPTIONS_MODEL(:)%CROAD_DIR=' '
00462 TEB_OPTIONS_MODEL(:)%CWALL_OPT=' '
00463 TEB_OPTIONS_MODEL(:)%CBLD_ATYPE=' '
00464 TEB_OPTIONS_MODEL(:)%CZ0H=' '
00465 TEB_OPTIONS_MODEL(:)%CCH_BEM=' '
00466 TEB_OPTIONS_MODEL(:)%CBEM=' '
00467 TEB_OPTIONS_MODEL(:)%CTREE=' '
00468 TEB_OPTIONS_MODEL(:)%LGREENROOF=.FALSE.
00469 TEB_OPTIONS_MODEL(:)%LHYDRO=.FALSE.
00470 TEB_OPTIONS_MODEL(:)%LECOCLIMAP=.FALSE.
00471 TEB_OPTIONS_MODEL(:)%NTEB_PATCH=0
00472 TEB_OPTIONS_MODEL(:)%NROOF_LAYER=0
00473 TEB_OPTIONS_MODEL(:)%NROAD_LAYER=0
00474 TEB_OPTIONS_MODEL(:)%NWALL_LAYER=0
00475 TEB_OPTIONS_MODEL(:)%XTSTEP=0.
00476 TEB_OPTIONS_MODEL(:)%XOUT_TSTEP=0.
00477 IF (LHOOK) CALL DR_HOOK("MODD_TEB_N:TEB_OPTIONS_ALLOC",1,ZHOOK_HANDLE)
00478 END SUBROUTINE TEB_OPTIONS_ALLOC
00479 
00480 SUBROUTINE TEB_OPTIONS_DEALLO
00481 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00482 IF (LHOOK) CALL DR_HOOK("MODD_TEB_N:TEB_OPTIONS_DEALLO",0,ZHOOK_HANDLE)
00483 IF (ALLOCATED(TEB_OPTIONS_MODEL)) DEALLOCATE(TEB_OPTIONS_MODEL)
00484 IF (LHOOK) CALL DR_HOOK("MODD_TEB_N:TEB_OPTIONS_DEALLO",1,ZHOOK_HANDLE)
00485 END SUBROUTINE TEB_OPTIONS_DEALLO
00486 
00487 !----------------------------------------------------------------------------
00488 
00489 SUBROUTINE TEB_GOTO_MODEL(KFROM, KTO, LKFROM, KFROM_PATCH, KTO_PATCH)
00490 LOGICAL, INTENT(IN) :: LKFROM
00491 INTEGER, INTENT(IN) :: KFROM, KTO
00492 INTEGER, INTENT(IN) :: KFROM_PATCH, KTO_PATCH
00493 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00494 !
00495 
00496 ! Save current state for allocated arrays
00497 IF (LKFROM) THEN
00498 TEB_MODEL(KFROM,KFROM_PATCH)%XBLD=>XBLD
00499 TEB_MODEL(KFROM,KFROM_PATCH)%XROAD_DIR=>XROAD_DIR
00500 TEB_MODEL(KFROM,KFROM_PATCH)%XGARDEN=>XGARDEN
00501 TEB_MODEL(KFROM,KFROM_PATCH)%XGREENROOF=>XGREENROOF
00502 TEB_MODEL(KFROM,KFROM_PATCH)%XROAD=>XROAD
00503 TEB_MODEL(KFROM,KFROM_PATCH)%XCAN_HW_RATIO=>XCAN_HW_RATIO
00504 TEB_MODEL(KFROM,KFROM_PATCH)%XBLD_HEIGHT=>XBLD_HEIGHT
00505 TEB_MODEL(KFROM,KFROM_PATCH)%XWALL_O_HOR=>XWALL_O_HOR
00506 TEB_MODEL(KFROM,KFROM_PATCH)%XROAD_O_GRND=>XROAD_O_GRND
00507 TEB_MODEL(KFROM,KFROM_PATCH)%XGARDEN_O_GRND=>XGARDEN_O_GRND
00508 TEB_MODEL(KFROM,KFROM_PATCH)%XWALL_O_GRND=>XWALL_O_GRND
00509 TEB_MODEL(KFROM,KFROM_PATCH)%XWALL_O_BLD=>XWALL_O_BLD
00510 TEB_MODEL(KFROM,KFROM_PATCH)%XZ0_TOWN=>XZ0_TOWN
00511 TEB_MODEL(KFROM,KFROM_PATCH)%XSVF_ROAD=>XSVF_ROAD
00512 TEB_MODEL(KFROM,KFROM_PATCH)%XSVF_GARDEN=>XSVF_GARDEN
00513 TEB_MODEL(KFROM,KFROM_PATCH)%XSVF_WALL=>XSVF_WALL
00514 TEB_MODEL(KFROM,KFROM_PATCH)%XALB_ROOF=>XALB_ROOF
00515 TEB_MODEL(KFROM,KFROM_PATCH)%XEMIS_ROOF=>XEMIS_ROOF
00516 TEB_MODEL(KFROM,KFROM_PATCH)%XHC_ROOF=>XHC_ROOF
00517 TEB_MODEL(KFROM,KFROM_PATCH)%XTC_ROOF=>XTC_ROOF
00518 TEB_MODEL(KFROM,KFROM_PATCH)%XD_ROOF=>XD_ROOF
00519 TEB_MODEL(KFROM,KFROM_PATCH)%XALB_ROAD=>XALB_ROAD
00520 TEB_MODEL(KFROM,KFROM_PATCH)%XEMIS_ROAD=>XEMIS_ROAD
00521 TEB_MODEL(KFROM,KFROM_PATCH)%XHC_ROAD=>XHC_ROAD
00522 TEB_MODEL(KFROM,KFROM_PATCH)%XTC_ROAD=>XTC_ROAD
00523 TEB_MODEL(KFROM,KFROM_PATCH)%XD_ROAD=>XD_ROAD
00524 TEB_MODEL(KFROM,KFROM_PATCH)%XALB_WALL=>XALB_WALL
00525 TEB_MODEL(KFROM,KFROM_PATCH)%XEMIS_WALL=>XEMIS_WALL
00526 TEB_MODEL(KFROM,KFROM_PATCH)%XHC_WALL=>XHC_WALL
00527 TEB_MODEL(KFROM,KFROM_PATCH)%XTC_WALL=>XTC_WALL
00528 TEB_MODEL(KFROM,KFROM_PATCH)%XD_WALL=>XD_WALL
00529 TEB_MODEL(KFROM,KFROM_PATCH)%XH_TRAFFIC=>XH_TRAFFIC
00530 TEB_MODEL(KFROM,KFROM_PATCH)%XLE_TRAFFIC=>XLE_TRAFFIC
00531 TEB_MODEL(KFROM,KFROM_PATCH)%XH_INDUSTRY=>XH_INDUSTRY
00532 TEB_MODEL(KFROM,KFROM_PATCH)%XLE_INDUSTRY=>XLE_INDUSTRY
00533 TEB_MODEL(KFROM,KFROM_PATCH)%XTI_ROAD=>XTI_ROAD
00534 TEB_MODEL(KFROM,KFROM_PATCH)%XWS_ROOF=>XWS_ROOF
00535 TEB_MODEL(KFROM,KFROM_PATCH)%XWS_ROAD=>XWS_ROAD
00536 TEB_MODEL(KFROM,KFROM_PATCH)%XT_ROOF=>XT_ROOF
00537 TEB_MODEL(KFROM,KFROM_PATCH)%XT_ROAD=>XT_ROAD
00538 TEB_MODEL(KFROM,KFROM_PATCH)%XT_WALL_A=>XT_WALL_A
00539 TEB_MODEL(KFROM,KFROM_PATCH)%XT_WALL_B=>XT_WALL_B
00540 TEB_MODEL(KFROM,KFROM_PATCH)%XAC_ROOF=>XAC_ROOF
00541 TEB_MODEL(KFROM,KFROM_PATCH)%XAC_ROAD=>XAC_ROAD
00542 TEB_MODEL(KFROM,KFROM_PATCH)%XAC_WALL=>XAC_WALL
00543 TEB_MODEL(KFROM,KFROM_PATCH)%XAC_TOP=>XAC_TOP
00544 TEB_MODEL(KFROM,KFROM_PATCH)%XAC_ROOF_WAT=>XAC_ROOF_WAT
00545 TEB_MODEL(KFROM,KFROM_PATCH)%XAC_ROAD_WAT=>XAC_ROAD_WAT
00546 TEB_MODEL(KFROM,KFROM_PATCH)%XQSAT_ROOF=>XQSAT_ROOF
00547 TEB_MODEL(KFROM,KFROM_PATCH)%XQSAT_ROAD=>XQSAT_ROAD
00548 TEB_MODEL(KFROM,KFROM_PATCH)%XDELT_ROOF=>XDELT_ROOF
00549 TEB_MODEL(KFROM,KFROM_PATCH)%XDELT_ROAD=>XDELT_ROAD
00550 TEB_MODEL(KFROM,KFROM_PATCH)%XT_CANYON=>XT_CANYON
00551 TEB_MODEL(KFROM,KFROM_PATCH)%XQ_CANYON=>XQ_CANYON
00552 TEB_MODEL(KFROM,KFROM_PATCH)%XROUGH_ROOF=>XROUGH_ROOF
00553 TEB_MODEL(KFROM,KFROM_PATCH)%XROUGH_WALL=>XROUGH_WALL
00554 ENDIF
00555 
00556 !
00557 ! Current model is set to model KTO
00558 IF (LHOOK) CALL DR_HOOK('MODD_TEB_N:TEB_GOTO_MODEL',0,ZHOOK_HANDLE)
00559 XBLD=>TEB_MODEL(KTO,KTO_PATCH)%XBLD
00560 XROAD_DIR=>TEB_MODEL(KTO,KTO_PATCH)%XROAD_DIR
00561 XGARDEN=>TEB_MODEL(KTO,KTO_PATCH)%XGARDEN
00562 XGREENROOF=>TEB_MODEL(KTO,KTO_PATCH)%XGREENROOF
00563 XROAD=>TEB_MODEL(KTO,KTO_PATCH)%XROAD
00564 XCAN_HW_RATIO=>TEB_MODEL(KTO,KTO_PATCH)%XCAN_HW_RATIO
00565 XBLD_HEIGHT=>TEB_MODEL(KTO,KTO_PATCH)%XBLD_HEIGHT
00566 XWALL_O_HOR=>TEB_MODEL(KTO,KTO_PATCH)%XWALL_O_HOR
00567 XROAD_O_GRND=>TEB_MODEL(KTO,KTO_PATCH)%XROAD_O_GRND
00568 XGARDEN_O_GRND=>TEB_MODEL(KTO,KTO_PATCH)%XGARDEN_O_GRND
00569 XWALL_O_GRND=>TEB_MODEL(KTO,KTO_PATCH)%XWALL_O_GRND
00570 XWALL_O_BLD=>TEB_MODEL(KTO,KTO_PATCH)%XWALL_O_BLD
00571 XZ0_TOWN=>TEB_MODEL(KTO,KTO_PATCH)%XZ0_TOWN
00572 XSVF_ROAD=>TEB_MODEL(KTO,KTO_PATCH)%XSVF_ROAD
00573 XSVF_GARDEN=>TEB_MODEL(KTO,KTO_PATCH)%XSVF_GARDEN
00574 XSVF_WALL=>TEB_MODEL(KTO,KTO_PATCH)%XSVF_WALL
00575 XALB_ROOF=>TEB_MODEL(KTO,KTO_PATCH)%XALB_ROOF
00576 XEMIS_ROOF=>TEB_MODEL(KTO,KTO_PATCH)%XEMIS_ROOF
00577 XHC_ROOF=>TEB_MODEL(KTO,KTO_PATCH)%XHC_ROOF
00578 XTC_ROOF=>TEB_MODEL(KTO,KTO_PATCH)%XTC_ROOF
00579 XD_ROOF=>TEB_MODEL(KTO,KTO_PATCH)%XD_ROOF
00580 XALB_ROAD=>TEB_MODEL(KTO,KTO_PATCH)%XALB_ROAD
00581 XEMIS_ROAD=>TEB_MODEL(KTO,KTO_PATCH)%XEMIS_ROAD
00582 XHC_ROAD=>TEB_MODEL(KTO,KTO_PATCH)%XHC_ROAD
00583 XTC_ROAD=>TEB_MODEL(KTO,KTO_PATCH)%XTC_ROAD
00584 XD_ROAD=>TEB_MODEL(KTO,KTO_PATCH)%XD_ROAD
00585 XALB_WALL=>TEB_MODEL(KTO,KTO_PATCH)%XALB_WALL
00586 XEMIS_WALL=>TEB_MODEL(KTO,KTO_PATCH)%XEMIS_WALL
00587 XHC_WALL=>TEB_MODEL(KTO,KTO_PATCH)%XHC_WALL
00588 XTC_WALL=>TEB_MODEL(KTO,KTO_PATCH)%XTC_WALL
00589 XD_WALL=>TEB_MODEL(KTO,KTO_PATCH)%XD_WALL
00590 XH_TRAFFIC=>TEB_MODEL(KTO,KTO_PATCH)%XH_TRAFFIC
00591 XLE_TRAFFIC=>TEB_MODEL(KTO,KTO_PATCH)%XLE_TRAFFIC
00592 XH_INDUSTRY=>TEB_MODEL(KTO,KTO_PATCH)%XH_INDUSTRY
00593 XLE_INDUSTRY=>TEB_MODEL(KTO,KTO_PATCH)%XLE_INDUSTRY
00594 XTI_ROAD=>TEB_MODEL(KTO,KTO_PATCH)%XTI_ROAD
00595 XWS_ROOF=>TEB_MODEL(KTO,KTO_PATCH)%XWS_ROOF
00596 XWS_ROAD=>TEB_MODEL(KTO,KTO_PATCH)%XWS_ROAD
00597 XT_ROOF=>TEB_MODEL(KTO,KTO_PATCH)%XT_ROOF
00598 XT_ROAD=>TEB_MODEL(KTO,KTO_PATCH)%XT_ROAD
00599 XT_WALL_A=>TEB_MODEL(KTO,KTO_PATCH)%XT_WALL_A
00600 XT_WALL_B=>TEB_MODEL(KTO,KTO_PATCH)%XT_WALL_B
00601 XAC_ROOF=>TEB_MODEL(KTO,KTO_PATCH)%XAC_ROOF
00602 XAC_ROAD=>TEB_MODEL(KTO,KTO_PATCH)%XAC_ROAD
00603 XAC_WALL=>TEB_MODEL(KTO,KTO_PATCH)%XAC_WALL
00604 XAC_TOP=>TEB_MODEL(KTO,KTO_PATCH)%XAC_TOP
00605 XAC_ROOF_WAT=>TEB_MODEL(KTO,KTO_PATCH)%XAC_ROOF_WAT
00606 XAC_ROAD_WAT=>TEB_MODEL(KTO,KTO_PATCH)%XAC_ROAD_WAT
00607 XQSAT_ROOF=>TEB_MODEL(KTO,KTO_PATCH)%XQSAT_ROOF
00608 XQSAT_ROAD=>TEB_MODEL(KTO,KTO_PATCH)%XQSAT_ROAD
00609 XDELT_ROOF=>TEB_MODEL(KTO,KTO_PATCH)%XDELT_ROOF
00610 XDELT_ROAD=>TEB_MODEL(KTO,KTO_PATCH)%XDELT_ROAD
00611 XT_CANYON=>TEB_MODEL(KTO,KTO_PATCH)%XT_CANYON
00612 XQ_CANYON=>TEB_MODEL(KTO,KTO_PATCH)%XQ_CANYON
00613 TSNOW_ROOF=>TEB_MODEL(KTO,KTO_PATCH)%TSNOW_ROOF
00614 TSNOW_ROAD=>TEB_MODEL(KTO,KTO_PATCH)%TSNOW_ROAD
00615 TSNOW_GARDEN=>TEB_MODEL(KTO,KTO_PATCH)%TSNOW_GARDEN
00616 XROUGH_ROOF=>TEB_MODEL(KTO,KTO_PATCH)%XROUGH_ROOF
00617 IF (LHOOK) CALL DR_HOOK('MODD_TEB_N:TEB_GOTO_MODEL',1,ZHOOK_HANDLE)
00618 !
00619 !
00620 END SUBROUTINE TEB_GOTO_MODEL
00621 
00622 SUBROUTINE TEB_ALLOC(KMODEL,KPATCH)
00623 INTEGER, INTENT(IN) :: KMODEL
00624 INTEGER, INTENT(IN) :: KPATCH
00625 INTEGER :: J,JP
00626 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00627 IF (LHOOK) CALL DR_HOOK("MODD_TEB_N:TEB_ALLOC",0,ZHOOK_HANDLE)
00628 ALLOCATE(TEB_MODEL(KMODEL,KPATCH))
00629 DO J=1,KMODEL
00630  DO JP=1,KPATCH
00631   NULLIFY(TEB_MODEL(J,JP)%XROAD_DIR)
00632   NULLIFY(TEB_MODEL(J,JP)%XGARDEN)
00633   NULLIFY(TEB_MODEL(J,JP)%XGREENROOF)
00634   NULLIFY(TEB_MODEL(J,JP)%XBLD)
00635   NULLIFY(TEB_MODEL(J,JP)%XROAD)
00636   NULLIFY(TEB_MODEL(J,JP)%XCAN_HW_RATIO)
00637   NULLIFY(TEB_MODEL(J,JP)%XBLD_HEIGHT)
00638   NULLIFY(TEB_MODEL(J,JP)%XWALL_O_HOR)
00639   NULLIFY(TEB_MODEL(J,JP)%XROAD_O_GRND)
00640   NULLIFY(TEB_MODEL(J,JP)%XGARDEN_O_GRND)
00641   NULLIFY(TEB_MODEL(J,JP)%XWALL_O_GRND)
00642   NULLIFY(TEB_MODEL(J,JP)%XWALL_O_BLD)
00643   NULLIFY(TEB_MODEL(J,JP)%XZ0_TOWN)
00644   NULLIFY(TEB_MODEL(J,JP)%XSVF_ROAD)
00645   NULLIFY(TEB_MODEL(J,JP)%XSVF_GARDEN)
00646   NULLIFY(TEB_MODEL(J,JP)%XSVF_WALL)
00647   NULLIFY(TEB_MODEL(J,JP)%XALB_ROOF)
00648   NULLIFY(TEB_MODEL(J,JP)%XEMIS_ROOF)
00649   NULLIFY(TEB_MODEL(J,JP)%XHC_ROOF)
00650   NULLIFY(TEB_MODEL(J,JP)%XTC_ROOF)
00651   NULLIFY(TEB_MODEL(J,JP)%XD_ROOF)
00652   NULLIFY(TEB_MODEL(J,JP)%XALB_ROAD)
00653   NULLIFY(TEB_MODEL(J,JP)%XEMIS_ROAD)
00654   NULLIFY(TEB_MODEL(J,JP)%XHC_ROAD)
00655   NULLIFY(TEB_MODEL(J,JP)%XTC_ROAD)
00656   NULLIFY(TEB_MODEL(J,JP)%XD_ROAD)
00657   NULLIFY(TEB_MODEL(J,JP)%XALB_WALL)
00658   NULLIFY(TEB_MODEL(J,JP)%XEMIS_WALL)
00659   NULLIFY(TEB_MODEL(J,JP)%XHC_WALL)
00660   NULLIFY(TEB_MODEL(J,JP)%XTC_WALL)
00661   NULLIFY(TEB_MODEL(J,JP)%XD_WALL)
00662   NULLIFY(TEB_MODEL(J,JP)%XH_TRAFFIC)
00663   NULLIFY(TEB_MODEL(J,JP)%XLE_TRAFFIC)
00664   NULLIFY(TEB_MODEL(J,JP)%XH_INDUSTRY)
00665   NULLIFY(TEB_MODEL(J,JP)%XLE_INDUSTRY)
00666   NULLIFY(TEB_MODEL(J,JP)%XTI_ROAD)
00667   NULLIFY(TEB_MODEL(J,JP)%XWS_ROOF)
00668   NULLIFY(TEB_MODEL(J,JP)%XWS_ROAD)
00669   NULLIFY(TEB_MODEL(J,JP)%XT_ROOF)
00670   NULLIFY(TEB_MODEL(J,JP)%XT_ROAD)
00671   NULLIFY(TEB_MODEL(J,JP)%XT_WALL_A)
00672   NULLIFY(TEB_MODEL(J,JP)%XT_WALL_B)
00673   NULLIFY(TEB_MODEL(J,JP)%XAC_ROOF)
00674   NULLIFY(TEB_MODEL(J,JP)%XAC_ROAD)
00675   NULLIFY(TEB_MODEL(J,JP)%XAC_WALL)
00676   NULLIFY(TEB_MODEL(J,JP)%XAC_TOP)
00677   NULLIFY(TEB_MODEL(J,JP)%XAC_ROOF_WAT)
00678   NULLIFY(TEB_MODEL(J,JP)%XAC_ROAD_WAT)
00679   NULLIFY(TEB_MODEL(J,JP)%XQSAT_ROOF)
00680   NULLIFY(TEB_MODEL(J,JP)%XQSAT_ROAD)
00681   NULLIFY(TEB_MODEL(J,JP)%XDELT_ROOF)
00682   NULLIFY(TEB_MODEL(J,JP)%XDELT_ROAD)
00683   NULLIFY(TEB_MODEL(J,JP)%XT_CANYON)
00684   NULLIFY(TEB_MODEL(J,JP)%XQ_CANYON)
00685   NULLIFY(TEB_MODEL(J,JP)%XROUGH_ROOF)
00686   NULLIFY(TEB_MODEL(J,JP)%XROUGH_WALL)
00687  ENDDO
00688 ENDDO
00689 IF (LHOOK) CALL DR_HOOK("MODD_TEB_N:TEB_ALLOC",1,ZHOOK_HANDLE)
00690 END SUBROUTINE TEB_ALLOC
00691 
00692 SUBROUTINE TEB_DEALLO
00693 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00694 IF (LHOOK) CALL DR_HOOK("MODD_TEB_N:TEB_DEALLO",0,ZHOOK_HANDLE)
00695 IF (ALLOCATED(TEB_MODEL)) DEALLOCATE(TEB_MODEL)
00696 IF (LHOOK) CALL DR_HOOK("MODD_TEB_N:TEB_DEALLO",1,ZHOOK_HANDLE)
00697 END SUBROUTINE TEB_DEALLO
00698 
00699 END MODULE MODD_TEB_n