SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/init_tebn.F90
Go to the documentation of this file.
00001 !     #############################################################
00002       SUBROUTINE INIT_TEB_n     (HPROGRAM,HINIT,                            &
00003                                  KI,KSV,KSW,                                &
00004                                  HSV,PCO2,PRHOA,                            &
00005                                  PZENITH,PAZIM,PSW_BANDS,PDIR_ALB,PSCA_ALB, &
00006                                  PEMIS,PTSRAD,                              &
00007                                  KYEAR, KMONTH,KDAY, PTIME,                 &
00008                                  HATMFILE,HATMFILETYPE,                     &
00009                                  HTEST                                      )  
00010 !     #############################################################
00011 !
00012 !!****  *INIT_TEB_n* - routine to initialize TEB
00013 !!
00014 !!    PURPOSE
00015 !!    -------
00016 !!
00017 !!**  METHOD
00018 !!    ------
00019 !!
00020 !!    EXTERNAL
00021 !!    --------
00022 !!
00023 !!
00024 !!    IMPLICIT ARGUMENTS
00025 !!    ------------------
00026 !!
00027 !!    REFERENCE
00028 !!    ---------
00029 !!
00030 !!
00031 !!    AUTHOR
00032 !!    ------
00033 !!      V. Masson   *Meteo France*      
00034 !!
00035 !!    MODIFICATIONS
00036 !!    -------------
00037 !!      Original    01/2003
00038 !!      G. Pigeon   09/2012: add ROUGH_WALL/ROUGH_ROOF/CH_BEM for conv. coef.
00039 !-------------------------------------------------------------------------------
00040 !
00041 !*       0.    DECLARATIONS
00042 !              ------------
00043 !
00044 USE MODD_IO_SURF_ASC,ONLY: CMASK
00045 USE MODD_SNOW_PAR, ONLY : XEMISSN
00046 !
00047 USE MODD_READ_NAMELIST, ONLY : LNAM_READ
00048 
00049 USE MODD_TEB_n,           ONLY: LGARDEN, LGREENROOF,                                     &
00050                                 XTSTEP, XOUT_TSTEP, TTIME, XCOVER,                       &
00051                                 XH_TRAFFIC, XLE_TRAFFIC, XH_INDUSTRY, XLE_INDUSTRY,      &
00052                                 XZ0_TOWN, XBLD, XGARDEN, XROAD_DIR, XGREENROOF,          &
00053                                 XROAD, XBLD_HEIGHT, XWALL_O_HOR, XCAN_HW_RATIO,          &
00054                                 XROAD_O_GRND, XGARDEN_O_GRND, XWALL_O_GRND, XWALL_O_BLD, &
00055                                 XALB_ROOF, XEMIS_ROOF, XHC_ROOF,XTC_ROOF, XD_ROOF,       &
00056                                 XALB_ROAD, XEMIS_ROAD, XHC_ROAD,XTC_ROAD, XD_ROAD,       &
00057                                 XALB_WALL, XEMIS_WALL, XHC_WALL,XTC_WALL, XD_WALL,       &
00058                                 XSVF_ROAD, XSVF_GARDEN, XSVF_WALL,                       &
00059                                 TSNOW_ROOF, TSNOW_ROAD,                                  &
00060                                 NROOF_LAYER, NROAD_LAYER, NWALL_LAYER,                   &
00061                                 XT_ROOF, XT_ROAD, XT_WALL_A, XT_WALL_B, CZ0H,            &
00062                                 CROAD_DIR, CWALL_OPT,                                    &
00063                                 XT_CANYON, XQ_CANYON,                                    &
00064                                 XAC_ROOF, XAC_ROAD, XAC_WALL, XAC_TOP,                   &
00065                                 XAC_ROOF_WAT, XAC_ROAD_WAT,                              &
00066                                 XQSAT_ROOF, XQSAT_ROAD, XDELT_ROOF, XDELT_ROAD,          &
00067                                 NTEB_PATCH, XTEB_PATCH, CBEM, CCH_BEM,                   &
00068                                 XROUGH_ROOF, XROUGH_WALL
00069 
00070 USE MODD_BEM_n,           ONLY: NFLOOR_LAYER, XHC_FLOOR, XTC_FLOOR, XD_FLOOR,            &
00071                                 XTCOOL_TARGET, XTHEAT_TARGET, XF_WASTE_CAN, XEFF_HEAT,   &
00072                                 XQIN, XQIN_FRAD, XSHGC, XSHGC_SH, XU_WIN, XGR,           &
00073                                 XFLOOR_HEIGHT, XINF, XQIN_FLAT, XHR_TARGET, XV_VENT,     &
00074                                 XCAP_SYS_HEAT, XAUX_MAX, XCAP_SYS_RAT, XT_ADP,           &
00075                                 XM_SYS_RAT, XCOP_RAT, XT_SIZE_MAX, XT_SIZE_MIN,          &
00076                                 CCOOL_COIL, CHEAT_COIL, XF_WATER_COND, LSHAD_DAY,        &
00077                                 LNATVENT_NIGHT, LSHADE, XSHADE, CNATVENT, XNATVENT,      &
00078                                 LAUTOSIZE, XT_WIN1, XALB_WIN, XABS_WIN, XUGG_WIN,        &
00079                                 XN_FLOOR, XGLAZ_O_BLD, XMASS_O_BLD, XFLOOR_HW_RATIO,     &
00080                                 XF_FLOOR_MASS, XF_FLOOR_WALL, XF_FLOOR_WIN,              &
00081                                 XF_FLOOR_ROOF, XF_WALL_FLOOR, XF_WALL_MASS,              &
00082                                 XF_WALL_WIN, XF_WIN_FLOOR, XF_WIN_MASS, XF_WIN_WALL,     &
00083                                 XF_MASS_FLOOR, XF_MASS_WALL, XF_MASS_WIN, XTRAN_WIN
00084 
00085 USE MODD_TEB_VEG_n,       ONLY: CC1DRY, CSOILFRZ, CDIFSFCOND, CSNOWRES,                  &
00086                                 CCPSURF, XCGMAX, CKSAT, CTOPREG,                         &
00087                                 CRAIN, CHORT,                                            &
00088                                 LCANOPY_DRAG, LVEGUPD
00089 
00090 USE MODD_CH_TEB_n,        ONLY: XDEP, CCH_DRY_DEP, CSV, CCH_NAMES,                       &
00091                                 NBEQ, NSV_CHSBEG, NSV_CHSEND,                            &
00092                                 NAEREQ, NSV_AERBEG, NSV_AEREND, CAER_NAMES,              &
00093                                 NSV_DSTBEG, NSV_DSTEND, NDSTEQ, CDSTNAMES,               &
00094                                 NSV_SLTBEG, NSV_SLTEND, NSLTEQ, CSLTNAMES  
00095 
00096 
00097 USE MODD_CHS_AEROSOL,     ONLY: LVARSIGI, LVARSIGJ
00098 USE MODD_DST_SURF,        ONLY: LVARSIG_DST, NDSTMDE, NDST_MDEBEG, LRGFIX_DST 
00099 USE MODD_SLT_SURF,        ONLY: LVARSIG_SLT, NSLTMDE, NSLT_MDEBEG, LRGFIX_SLT
00100 USE MODD_DIAG_TEB_n,      ONLY: N2M, LSURF_BUDGET, LRAD_BUDGET, XDIAG_TSTEP,             &
00101                                   LPGD, LPGD_FIX, L2M_MIN_ZS, LCOEF, LSURF_VARS  
00102 USE MODD_DIAG_MISC_TEB_n, ONLY: LSURF_MISC_BUDGET,                                       &
00103                                   LSURF_DIAG_ALBEDO, LSURF_EVAP_BUDGET  
00104 USE MODD_DIAG_UTCI_TEB_n, ONLY: LUTCI
00105 USE MODD_SURF_PAR,        ONLY: XUNDEF, NUNDEF
00106 !
00107 USE MODD_TEB_GARDEN_n,    ONLY : XLAI_GARDEN => XLAI
00108 USE MODD_TEB_GREENROOF_n, ONLY : XLAI_GREENROOF => XLAI, NLAYER_GR
00109 !
00110 USE MODI_INIT_IO_SURF_n
00111 USE MODI_DEFAULT_CH_DEP
00112 USE MODI_DEFAULT_TEB
00113 USE MODI_DEFAULT_DIAG_TEB
00114 USE MODI_READ_DEFAULT_TEB_n
00115 USE MODI_READ_TEB_CONF_n
00116 USE MODI_PREP_CTRL_TEB
00117 USE MODI_READ_TEB_n
00118 USE MODI_READ_PGD_TEB_n
00119 USE MODI_CONVERT_TEB
00120 USE MODI_CONVERT_PATCH_TEB
00121 USE MODI_INIT_SNOW_LW
00122 USE MODI_AVERAGED_TSRAD_TEB
00123 USE MODI_AVERAGED_ALBEDO_TEB
00124 USE MODI_DIAG_TEB_INIT_n
00125 USE MODI_DIAG_MISC_TEB_INIT_n
00126 USE MODI_END_IO_SURF_n
00127 USE MODI_GET_LUOUT
00128 USE MODI_READ_SURF
00129 USE MODI_READ_PREP_TEB_SNOW
00130 USE MODI_READ_TEB_DATE
00131 USE MODI_READ_NAM_PREP_TEB_n
00132 USE MODI_INIT_CHEMICAL_n
00133 USE MODI_GARDEN_PROPERTIES
00134 USE MODI_WINDOW_DATA
00135 USE MODI_HVAC_AUTOSIZE
00136 USE MODI_GOTO_TEB
00137 !
00138 USE MODI_INIT_TEB_GARDEN_n
00139 USE MODI_INIT_TEB_GARDEN_PGD_n
00140 USE MODI_INIT_TEB_VEG_OPTIONS_n
00141 USE MODI_TEB_MORPHO
00142 USE MODI_INIT_BEM_n
00143 USE MODI_INIT_TEB_GREENROOF_n
00144 USE MODI_INIT_TEB_GREENROOF_PGD_n
00145 USE MODI_GREENROOF_PROPERTIES
00146 !
00147 USE MODI_READ_COVER_GARDEN
00148 USE MODI_WRITE_COVER_TEX_TEB
00149 USE MODI_ABOR1_SFX
00150 USE MODI_READ_TEB_CANOPY_n
00151 USE MODI_SET_SURFEX_FILEIN
00152 !
00153 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00154 USE PARKIND1  ,ONLY : JPRB
00155 !
00156 IMPLICIT NONE
00157 !
00158 !*       0.1   Declarations of arguments
00159 !              -------------------------
00160 !
00161  CHARACTER(LEN=6),                   INTENT(IN)  :: HPROGRAM    ! program calling surf. schemes
00162  CHARACTER(LEN=3),                   INTENT(IN)  :: HINIT       ! choice of fields to initialize
00163 INTEGER,                            INTENT(IN)  :: KI          ! number of points
00164 INTEGER,                            INTENT(IN)  :: KSV         ! number of scalars
00165 INTEGER,                            INTENT(IN)  :: KSW         ! number of short-wave spectral bands
00166  CHARACTER(LEN=6), DIMENSION(KSV),   INTENT(IN)  :: HSV         ! name of all scalar variables
00167 REAL,             DIMENSION(KI),    INTENT(IN)  :: PCO2        ! CO2 concentration (kg/m3)
00168 REAL,             DIMENSION(KI),    INTENT(IN)  :: PRHOA       ! air density
00169 REAL,             DIMENSION(KI),    INTENT(IN)  :: PZENITH     ! solar zenithal angle
00170 REAL,             DIMENSION(KI),    INTENT(IN)  :: PAZIM       ! solar azimuthal angle (rad from N, clock)
00171 REAL,             DIMENSION(KSW),   INTENT(IN)  :: PSW_BANDS   ! middle wavelength of each band
00172 REAL,             DIMENSION(KI,KSW),INTENT(OUT) :: PDIR_ALB    ! direct albedo for each band
00173 REAL,             DIMENSION(KI,KSW),INTENT(OUT) :: PSCA_ALB    ! diffuse albedo for each band
00174 REAL,             DIMENSION(KI),    INTENT(OUT) :: PEMIS       ! emissivity
00175 REAL,             DIMENSION(KI),    INTENT(OUT) :: PTSRAD      ! radiative temperature
00176 INTEGER,                            INTENT(IN)  :: KYEAR       ! current year (UTC)
00177 INTEGER,                            INTENT(IN)  :: KMONTH      ! current month (UTC)
00178 INTEGER,                            INTENT(IN)  :: KDAY        ! current day (UTC)
00179 REAL,                               INTENT(IN)  :: PTIME       ! current time since
00180                                                                !  midnight (UTC, s)
00181 !
00182  CHARACTER(LEN=28),                  INTENT(IN)  :: HATMFILE    ! atmospheric file name
00183  CHARACTER(LEN=6),                   INTENT(IN)  :: HATMFILETYPE! atmospheric file type
00184  CHARACTER(LEN=2),                   INTENT(IN)  :: HTEST       ! must be equal to 'OK'
00185 !
00186 !*       0.2   Declarations of local variables
00187 !              -------------------------------
00188 !
00189 INTEGER                         :: ILU              ! sizes of TEB arrays
00190 INTEGER                         :: ILUOUT           ! unit of output listing file
00191 INTEGER                         :: IRESP            ! return code
00192 !
00193 INTEGER                         :: ISWB             ! number of shortwave spectral bands
00194 INTEGER                         :: JSWB             ! loop on shortwave spectral bands
00195 !
00196 REAL                            :: ZDEF_ROAD_DIR    ! default raod direction
00197 REAL, DIMENSION(:), ALLOCATABLE :: ZDIR_ALB         ! direct town albedo
00198 REAL, DIMENSION(:), ALLOCATABLE :: ZSCA_ALB         ! diffuse town albedo
00199 !
00200 !              local variables for urban green areas
00201 REAL, DIMENSION(KI,KSW)         :: ZDIR_SW          ! direct  SW for each band
00202 REAL, DIMENSION(KI,KSW)         :: ZSCA_SW          ! diffuse SW for each band
00203 REAL, DIMENSION(KI)             :: ZEMIS_GARDEN     ! emissivity
00204 REAL, DIMENSION(KI)             :: ZALB_GARDEN      ! albedo
00205 REAL, DIMENSION(KI)             :: ZTS_GARDEN       ! radiative temperature
00206 !
00207 !              local variables for urban greenroofs
00208 REAL, DIMENSION(KI)             :: ZEMIS_GREENROOF     ! emissivity
00209 REAL, DIMENSION(KI)             :: ZALB_GREENROOF      ! albedo
00210 REAL, DIMENSION(KI)             :: ZTS_GREENROOF       ! radiative temperature
00211 !
00212 INTEGER                         :: JPATCH
00213 INTEGER                         :: IVERSION, IBUGFIX
00214 
00215 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00216 !-------------------------------------------------------------------------------
00217 !
00218 !         Initialisation for IO
00219 !
00220 IF (LHOOK) CALL DR_HOOK('INIT_TEB_N',0,ZHOOK_HANDLE)
00221  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00222 !
00223 IF (HTEST/='OK') THEN
00224   CALL ABOR1_SFX('INIT_TEBN: FATAL ERROR DURING ARGUMENT TRANSFER')
00225 END IF
00226 !
00227 !         Other little things
00228 !
00229 PDIR_ALB = XUNDEF
00230 PSCA_ALB = XUNDEF
00231 PEMIS    = XUNDEF
00232 PTSRAD   = XUNDEF
00233 !
00234 LSURF_DIAG_ALBEDO = .FALSE.
00235 LSURF_EVAP_BUDGET = .FALSE.
00236 !
00237 IF (LNAM_READ) THEN
00238  !
00239  !*       0.     Defaults
00240  !               --------
00241  !
00242  !        0.1. Hard defaults
00243  !      
00244  CALL DEFAULT_TEB(CZ0H,XTSTEP,XOUT_TSTEP, CCH_BEM)
00245  CALL DEFAULT_CH_DEP(CCH_DRY_DEP)
00246  CALL DEFAULT_DIAG_TEB(N2M,LSURF_BUDGET,L2M_MIN_ZS,LRAD_BUDGET,LCOEF,LSURF_VARS, &
00247                        LSURF_MISC_BUDGET,LUTCI,LPGD,LPGD_FIX,XDIAG_TSTEP)  
00248 !
00249 ENDIF
00250 !
00251 !        0.2. Defaults from file header
00252 !    
00253  CALL READ_DEFAULT_TEB_n(HPROGRAM)
00254 !
00255 !*       1.     Reading of configuration:
00256 !               -------------------------
00257 !
00258  CALL READ_TEB_CONF_n(HPROGRAM)
00259 !
00260 !* initialization of snow scheme
00261 !
00262 IF (HINIT=='PRE') THEN
00263   DO JPATCH=1,NTEB_PATCH
00264     CALL GOTO_TEB(JPATCH)
00265     CALL READ_PREP_TEB_SNOW(HPROGRAM,TSNOW_ROOF%SCHEME,TSNOW_ROOF%NLAYER, &
00266                                      TSNOW_ROAD%SCHEME,TSNOW_ROAD%NLAYER)
00267   END DO
00268 ENDIF
00269 !
00270 !*       2.     Cover fields and grid:
00271 !               ---------------------
00272 !* date
00273 !
00274 SELECT CASE (HINIT)
00275   CASE ('PGD')
00276     TTIME%TDATE%YEAR = NUNDEF
00277     TTIME%TDATE%MONTH= NUNDEF
00278     TTIME%TDATE%DAY  = NUNDEF
00279     TTIME%TIME       = XUNDEF
00280 
00281   CASE ('PRE')
00282     CALL PREP_CTRL_TEB(N2M,LSURF_BUDGET,L2M_MIN_ZS,LRAD_BUDGET,LCOEF,LSURF_VARS,&
00283                          LSURF_EVAP_BUDGET,LSURF_MISC_BUDGET,LUTCI,ILUOUT )           
00284     IF (LNAM_READ) CALL READ_NAM_PREP_TEB_n(HPROGRAM)   
00285     CALL READ_TEB_DATE(HPROGRAM,HINIT,ILUOUT,HATMFILE,HATMFILETYPE,KYEAR,KMONTH,KDAY,PTIME,TTIME)
00286 
00287   CASE DEFAULT
00288     CALL INIT_IO_SURF_n(HPROGRAM,'TOWN  ','TEB   ','READ ')
00289     CALL READ_SURF(HPROGRAM,'DTCUR',TTIME,IRESP)
00290     CALL END_IO_SURF_n(HPROGRAM)
00291 END SELECT
00292 !
00293 !-----------------------------------------------------------------------------------------------------
00294 ! READ PGD FILE
00295 !-----------------------------------------------------------------------------------------------------
00296 !
00297 !         Initialisation for IO
00298 !
00299  CALL SET_SURFEX_FILEIN(HPROGRAM,'PGD ') ! change input file name to pgd name
00300  CALL INIT_IO_SURF_n(HPROGRAM,'TOWN  ','TEB   ','READ ')
00301 !
00302  CALL READ_SURF(HPROGRAM,'VERSION',IVERSION,IRESP)
00303  CALL READ_SURF(HPROGRAM,'BUG',IBUGFIX,IRESP)
00304 !
00305 !         Reading of the fields
00306 !
00307  CALL READ_COVER_GARDEN(HPROGRAM,LGARDEN)
00308 !
00309  CALL READ_PGD_TEB_n(HPROGRAM)
00310 !
00311  CALL END_IO_SURF_n(HPROGRAM)
00312 ! 
00313 !*        Fraction of each patch in the grid mesh
00314 !
00315 ILU = SIZE(XCOVER,1)
00316 !
00317 ALLOCATE(XTEB_PATCH(ILU,NTEB_PATCH))
00318  CALL CONVERT_TEB(XCOVER,XTEB_PATCH)
00319 !
00320  CALL SET_SURFEX_FILEIN(HPROGRAM,'PREP') ! restore input file name
00321  CALL INIT_IO_SURF_n(HPROGRAM,'TOWN  ','TEB   ','READ ')
00322 !
00323  CALL READ_SURF(HPROGRAM,'VERSION',IVERSION,IRESP)
00324  CALL READ_SURF(HPROGRAM,'BUG',IBUGFIX,IRESP)
00325 !
00326 !* reads what is the option defined for road orientations & walls
00327 !
00328 IF (HINIT=='ALL') THEN
00329   CROAD_DIR='UNIF'
00330   CWALL_OPT='UNIF'
00331   IF (IVERSION>7 .OR. (IVERSION==7 .AND. IBUGFIX>=3)) THEN
00332     CALL READ_SURF(HPROGRAM,'ROAD_DIR',CROAD_DIR,IRESP)
00333     CALL READ_SURF(HPROGRAM,'WALL_OPT',CWALL_OPT,IRESP)
00334   END IF
00335 END IF
00336  CALL END_IO_SURF_n(HPROGRAM)
00337 !-----------------------------------------------------------------------------------
00338 !
00339 !*              LOOP ON TEB PATCHES
00340 !               -------------------
00341 !
00342 DO JPATCH=1,NTEB_PATCH
00343 
00344   CALL GOTO_TEB(JPATCH)
00345   !-----------------------------------------------------------------------------------
00346   !
00347   !*       3.     Physiographic data fields from land cover:
00348   !               -----------------------------------------
00349   !
00350   ALLOCATE(XZ0_TOWN     (ILU))
00351   ALLOCATE(XALB_ROOF    (ILU))
00352   ALLOCATE(XEMIS_ROOF   (ILU))
00353   ALLOCATE(XALB_ROAD    (ILU))
00354   ALLOCATE(XEMIS_ROAD   (ILU))
00355   ALLOCATE(XALB_WALL    (ILU))
00356   ALLOCATE(XEMIS_WALL   (ILU))
00357   ALLOCATE(XBLD         (ILU))
00358   ALLOCATE(XROAD_DIR    (ILU))
00359   ALLOCATE(XROAD        (ILU))
00360   ALLOCATE(XBLD_HEIGHT  (ILU))
00361   ALLOCATE(XWALL_O_HOR  (ILU))
00362   ALLOCATE(XCAN_HW_RATIO(ILU))
00363   ALLOCATE(XROAD_O_GRND(ILU))
00364   ALLOCATE(XGARDEN_O_GRND(ILU))
00365   ALLOCATE(XWALL_O_GRND(ILU))
00366   ALLOCATE(XWALL_O_BLD(ILU))
00367   ALLOCATE(XH_TRAFFIC   (ILU))
00368   ALLOCATE(XLE_TRAFFIC  (ILU))
00369   ALLOCATE(XH_INDUSTRY  (ILU))
00370   ALLOCATE(XLE_INDUSTRY (ILU))
00371   ALLOCATE(XHC_ROOF     (ILU,NROOF_LAYER))
00372   ALLOCATE(XTC_ROOF     (ILU,NROOF_LAYER))
00373   ALLOCATE(XD_ROOF      (ILU,NROOF_LAYER))
00374   ALLOCATE(XHC_ROAD     (ILU,NROAD_LAYER))
00375   ALLOCATE(XTC_ROAD     (ILU,NROAD_LAYER))
00376   ALLOCATE(XD_ROAD      (ILU,NROAD_LAYER))
00377   ALLOCATE(XHC_WALL     (ILU,NWALL_LAYER))
00378   ALLOCATE(XTC_WALL     (ILU,NWALL_LAYER))
00379   ALLOCATE(XD_WALL      (ILU,NWALL_LAYER))
00380   ALLOCATE(XROUGH_ROOF      (ILU))
00381   ALLOCATE(XROUGH_WALL      (ILU))
00382   ALLOCATE(XGREENROOF       (ILU))
00383   ALLOCATE(XGARDEN          (ILU))
00384   !
00385   XROAD_DIR(:) = 0.
00386   XROAD    (:) = 0.
00387   !
00388   ZDEF_ROAD_DIR = 0.
00389   IF (CROAD_DIR/='UNIF') THEN
00390     !* road direction if not specified by the user depends on patch number
00391     !  First patch has a Notrh-South road. Other patches have roads spaced by
00392     !  regular angles
00393     ZDEF_ROAD_DIR = 180. * FLOAT(JPATCH-1) / FLOAT(NTEB_PATCH)
00394   END IF
00395   !
00396   CALL CONVERT_PATCH_TEB(XCOVER, ZDEF_ROAD_DIR,                                  &
00397                       PZ0_TOWN=XZ0_TOWN,                                         &
00398                       PALB_ROOF=XALB_ROOF,                                       &
00399                       PEMIS_ROOF=XEMIS_ROOF,PHC_ROOF=XHC_ROOF,PTC_ROOF=XTC_ROOF, &
00400                       PD_ROOF=XD_ROOF,                                           &
00401                       PALB_ROAD=XALB_ROAD,                                       &
00402                       PEMIS_ROAD=XEMIS_ROAD,PHC_ROAD=XHC_ROAD,PTC_ROAD=XTC_ROAD, &
00403                       PD_ROAD=XD_ROAD,                                           &
00404                       PALB_WALL=XALB_WALL,                                       &
00405                       PEMIS_WALL=XEMIS_WALL,PHC_WALL=XHC_WALL,PTC_WALL=XTC_WALL, &
00406                       PD_WALL=XD_WALL,                                           &
00407                       PBLD_HEIGHT=XBLD_HEIGHT,                                   &
00408                       PWALL_O_HOR=XWALL_O_HOR,PBLD=XBLD, PROAD_DIR=XROAD_DIR,    &
00409                       PGARDEN=XGARDEN,                                           &
00410                       PH_TRAFFIC=XH_TRAFFIC, PLE_TRAFFIC=XLE_TRAFFIC,            &
00411                       PH_INDUSTRY=XH_INDUSTRY, PLE_INDUSTRY=XLE_INDUSTRY,        &
00412                       PROUGH_ROOF = XROUGH_ROOF, PROUGH_WALL = XROUGH_WALL,      &
00413                       PGREENROOF = XGREENROOF                                    )
00414   !
00415   IF (.NOT. LGREENROOF .AND. MAXVAL(XGREENROOF)>0. ) THEN !<== A paralleliser pour un stop propre
00416     WRITE(ILUOUT,*) 'You choose NOT to have greenroofs, BUT your greenroof fraction is not zero'
00417     WRITE(ILUOUT,*) 'Please activate the greenroof option (and rerun the SURFEX suite from the PGD step)'
00418     WRITE(ILUOUT,*) 'Or be sure NOT to have any greenroofs in your area'
00419     CALL ABOR1_SFX('INIT_TEBN: GREENROOF OPTION NOT ACTIVATED WHILE GREENROOFS ARE PRESENT')
00420   ENDIF
00421   !-------------------------------------------------------------------------------
00422   !
00423   !*       5.     Sky-view-factors:
00424   !               ----------------
00425   !
00426   ALLOCATE(XSVF_ROAD  (ILU))
00427   ALLOCATE(XSVF_GARDEN(ILU))
00428   ALLOCATE(XSVF_WALL  (ILU))
00429   !
00430   ALLOCATE(XGR          (ILU))
00431   ALLOCATE(XALB_WIN     (ILU))
00432   ALLOCATE(XF_WASTE_CAN (ILU))
00433   !
00434   !
00435   CALL TEB_MORPHO(HPROGRAM, XBLD, XWALL_O_HOR, XGARDEN, XBLD_HEIGHT, XROAD, XROAD_O_GRND, &
00436                 XGARDEN_O_GRND, XWALL_O_GRND, XCAN_HW_RATIO, XSVF_ROAD, XSVF_GARDEN,    &
00437                 XSVF_WALL, XZ0_TOWN, XWALL_O_BLD, XH_TRAFFIC, XLE_TRAFFIC               )
00438                 !
00439   !-------------------------------------------------------------------------------
00440   !
00441   !*       6.     Building Energy Model
00442   !               ---------------------
00443   !
00444   CALL INIT_BEM_n(ILUOUT)
00445   !
00446   !-------------------------------------------------------------------------------
00447   !
00448   !*      7.      Case of urban green areas
00449   !               -------------------------
00450   !
00451   IF (LGARDEN) THEN
00452   !
00453     CALL SET_SURFEX_FILEIN(HPROGRAM,'PGD ') ! change input file name to pgd name
00454     CALL INIT_IO_SURF_n(HPROGRAM,'TOWN  ','TEB   ','READ ')     
00455     IF (JPATCH==1) CALL INIT_TEB_VEG_OPTIONS_n(HPROGRAM)
00456     CALL INIT_TEB_GARDEN_PGD_n(HPROGRAM,HINIT,(JPATCH==1),KI,KSV,HSV,IVERSION,IBUGFIX,PCO2,PRHOA)
00457     ! Case of urban green roofs
00458     IF (LGREENROOF) CALL INIT_TEB_GREENROOF_PGD_n(HPROGRAM,HINIT,(JPATCH==1), &
00459                                                   KI,KSV,HSV,IVERSION,PCO2,PRHOA)
00460     CALL END_IO_SURF_n(HPROGRAM)
00461     !
00462   ENDIF
00463 !-------------------------------------------------------------------------------
00464 END DO ! end of loop on TEB patches
00465 !-------------------------------------------------------------------------------
00466 !
00467 !* if only physiographic fields are to be initialized, stop here.
00468 !
00469  CALL WRITE_COVER_TEX_TEB
00470 !
00471 IF (HINIT/='ALL') THEN
00472   IF (LHOOK) CALL DR_HOOK('INIT_TEB_N',1,ZHOOK_HANDLE)
00473   RETURN
00474 END IF
00475 !
00476 !-------------------------------------------------------------------------------
00477 !
00478 !         Initialisation for IO
00479 !
00480  CALL SET_SURFEX_FILEIN(HPROGRAM,'PREP') ! restore input file name
00481  CALL INIT_IO_SURF_n(HPROGRAM,'TOWN  ','TEB   ','READ ')
00482 !
00483 !*       9.     Prognostic fields:
00484 !               -----------------
00485 !
00486 !               -------------------------
00487 !
00488 
00489 !
00490 !*              LOOP ON TEB PATCHES
00491 !               -------------------
00492 !
00493 DO JPATCH=1,NTEB_PATCH
00494   CALL GOTO_TEB(JPATCH)
00495 !
00496 !* TEB fields
00497   CALL READ_TEB_n(HPROGRAM,JPATCH)
00498 !
00499   ALLOCATE(XAC_ROOF    (ILU))
00500   ALLOCATE(XAC_ROAD    (ILU))
00501   ALLOCATE(XAC_WALL    (ILU))
00502   ALLOCATE(XAC_TOP     (ILU))
00503   ALLOCATE(XAC_ROOF_WAT(ILU))
00504   ALLOCATE(XAC_ROAD_WAT(ILU))
00505   ALLOCATE(XQSAT_ROOF  (ILU))
00506   ALLOCATE(XQSAT_ROAD  (ILU))
00507   ALLOCATE(XDELT_ROOF  (ILU))
00508   ALLOCATE(XDELT_ROAD  (ILU))
00509 !
00510 !* Case of urban green areas
00511   IF (LGARDEN) THEN
00512 !    CALL SET_SURFEX_FILEIN(HPROGRAM,'PREP') ! change input file name to pgd name
00513 !    CALL INIT_IO_SURF_n(HPROGRAM,'TOWN  ','TEB   ','READ ')       
00514     CALL INIT_TEB_GARDEN_n(HPROGRAM,HINIT,KI,KSW,PSW_BANDS)
00515   ! Case of urban green roofs
00516     IF (LGREENROOF) CALL INIT_TEB_GREENROOF_n(HPROGRAM,HINIT,KI,KSV,PSW_BANDS)
00517 !    CALL END_IO_SURF_n(HPROGRAM)
00518   ENDIF
00519 !-------------------------------------------------------------------------------
00520 !
00521 !*      10.     Infra-red Radiative fields:
00522 !               --------------------------
00523 !
00524 !* snow long-wave properties (not initialized in read_gr_snow)
00525 !
00526   CALL INIT_SNOW_LW(XEMISSN,TSNOW_ROOF)
00527   CALL INIT_SNOW_LW(XEMISSN,TSNOW_ROAD)
00528 !
00529   IF (LGARDEN) THEN
00530     ZDIR_SW=0. ! night as first guess for albedo computation
00531     ZSCA_SW=0. !
00532     CALL GARDEN_PROPERTIES(ZDIR_SW, ZSCA_SW, PSW_BANDS, KSW,     &
00533                            ZTS_GARDEN, ZEMIS_GARDEN, ZALB_GARDEN )      
00534   ELSE
00535     ZALB_GARDEN = XUNDEF
00536     ZEMIS_GARDEN= XUNDEF
00537     ZTS_GARDEN  = XUNDEF
00538   END IF
00539   !
00540   IF (LGREENROOF) THEN
00541     ZDIR_SW=0. ! night as first guess for albedo computation
00542     ZSCA_SW=0. !
00543     CALL GREENROOF_PROPERTIES(ZDIR_SW, ZSCA_SW, PSW_BANDS, KSW,                  &
00544                               ZTS_GREENROOF, ZEMIS_GREENROOF, ZALB_GREENROOF )  
00545   ELSE
00546     ZALB_GREENROOF  = XUNDEF
00547     ZEMIS_GREENROOF = XUNDEF
00548     ZTS_GREENROOF   = XUNDEF
00549   END IF
00550 !
00551 !* averaged albedo, emissivity and radiative temperature
00552 !
00553   CALL AVERAGED_TSRAD_TEB(XEMIS_ROOF,XT_ROOF(:,1),       &
00554                         XEMIS_ROAD,XT_ROAD(:,1),       &
00555                         XEMIS_WALL,                    &
00556                         XT_WALL_A(:,1),                &
00557                         XT_WALL_B(:,1),                &
00558                         ZEMIS_GARDEN, ZTS_GARDEN,      &
00559                         ZEMIS_GREENROOF, ZTS_GREENROOF,&
00560                         TSNOW_ROOF,TSNOW_ROAD,         &
00561                         XROAD, XGREENROOF, XGARDEN,    &
00562                         XBLD,XWALL_O_HOR,              &
00563                         XSVF_ROAD,XSVF_WALL,           &
00564                         XSVF_GARDEN,                   &
00565                         PEMIS,PTSRAD, XT_WIN1,         &
00566                         XGR                            )
00567 !
00568 !
00569 !*       9.     Visible and near-infra-red Radiative fields:
00570 !               -------------------------------------------
00571 !
00572   ALLOCATE(ZDIR_ALB(ILU))
00573   ALLOCATE(ZSCA_ALB(ILU))
00574 !
00575   CALL AVERAGED_ALBEDO_TEB(CBEM,CROAD_DIR,CWALL_OPT,PZENITH,PAZIM, &
00576                        XBLD, XGARDEN, XROAD_DIR, XROAD, XGREENROOF,&
00577                        XWALL_O_HOR, XCAN_HW_RATIO,                 &
00578                        XALB_ROOF,                                  &
00579                        XALB_ROAD, XSVF_ROAD,                       &
00580                        XALB_WALL, XSVF_WALL,                       &
00581                        ZALB_GARDEN, XSVF_GARDEN,                   &
00582                        ZALB_GREENROOF,                             &
00583                        TSNOW_ROOF, TSNOW_ROAD,                     &
00584                        XGR, XSHGC, XSHGC_SH, XABS_WIN, XALB_WIN,   &
00585                        LSHAD_DAY,                                  &
00586                        ZDIR_ALB, ZSCA_ALB, XTRAN_WIN               )  
00587 
00588   ISWB=SIZE(PSW_BANDS)
00589   DO JSWB=1,ISWB
00590     PDIR_ALB(:,JSWB) = ZDIR_ALB(:)
00591     PSCA_ALB(:,JSWB) = ZSCA_ALB(:)
00592   END DO
00593   !
00594   DEALLOCATE(ZDIR_ALB)
00595   DEALLOCATE(ZSCA_ALB)
00596 !-------------------------------------------------------------------------------
00597 !
00598 !*      10.     Chemistry /dust
00599 !               ---------------
00600 !
00601   CALL INIT_CHEMICAL_n(ILUOUT, KSV, HSV, NBEQ, CSV, NAEREQ,            &
00602                      NSV_CHSBEG, NSV_CHSEND, NSV_AERBEG, NSV_AEREND, &
00603                      CCH_NAMES, CAER_NAMES, NDSTEQ, NSV_DSTBEG,      &
00604                      NSV_DSTEND, NSLTEQ, NSV_SLTBEG, NSV_SLTEND,     &
00605                      HDSTNAMES=CDSTNAMES, HSLTNAMES=CSLTNAMES        )
00606 !
00607 !* Initialization of dry deposition scheme (chemistry)
00608 !
00609   IF (NBEQ>0 .AND. CCH_DRY_DEP=='WES89') THEN
00610     ALLOCATE(XDEP(ILU,NBEQ))
00611   ELSE
00612     ALLOCATE(XDEP(0,0))
00613   END IF
00614 !
00615 !-------------------------------------------------------------------------------
00616 END DO ! end of loop on patches
00617 !-------------------------------------------------------------------------------
00618 !
00619 !*       7.     Canopy air fields:
00620 !               ------------------
00621 !
00622  CALL READ_TEB_CANOPY_n(HPROGRAM)
00623 !
00624 !-------------------------------------------------------------------------------
00625 !
00626 !*      11.     Diagnostics:
00627 !               -----------
00628 !
00629  CALL DIAG_TEB_INIT_n(HPROGRAM,ILU,ISWB)
00630 DO JPATCH=1,NTEB_PATCH
00631   CALL GOTO_TEB(JPATCH)
00632   CALL DIAG_MISC_TEB_INIT_n(HPROGRAM,ILU,ISWB)
00633 END DO ! end of loop on patches
00634 !
00635 !-------------------------------------------------------------------------------
00636 !
00637 !         End of IO
00638 !
00639  CALL END_IO_SURF_n(HPROGRAM)
00640 IF (LHOOK) CALL DR_HOOK('INIT_TEB_N',1,ZHOOK_HANDLE)
00641 !
00642 !
00643 END SUBROUTINE INIT_TEB_n