!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
!SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
!SFX_LIC for details. version 1.
!     #########################
      SUBROUTINE INI_DATA_PARAM_TEB(HPROGRAM, BDD, DTT, KTYPE, PFLOOR_HEIGHT,                     &
                              PCAP_SYS_HEAT, PCAP_SYS_RAT, PT_ADP, PM_SYS_RAT,              &
                              PT_SIZE_MAX, PT_SIZE_MIN, PROUGH_ROOF, PROUGH_WALL,           &
                              PALB_ROOF, PEMIS_ROOF, PHC_ROOF, PTC_ROOF, PD_ROOF,           & 
                              PALB_WALL, PEMIS_WALL, PHC_WALL, PTC_WALL, PD_WALL,           &
                              NISOROOFPOS, NISOWALLPOS, PALB_ROAD, PEMIS_ROAD, PHC_ROAD, PTC_ROAD, PD_ROAD, &
                              PHC_FLOOR, PTC_FLOOR, PD_FLOOR, PISMASS, PHC_MASS, PTC_MASS,  &
                              PD_MASS, PN50,PGR,PU_WIN,PSHGC,PSHGC_SH,PSHADEARCHI,          &
                              PISMECH,PMECHRATE,PGREENROOF,                                 &
                              PEMIS_PANEL,PALB_PANEL,PEFF_PANEL,                            &
                              PFRAC_PANEL, PTHEAT_OCCD,PTHEAT_OCCN,PTHEAT_VCDD,PTHEAT_VCDN, &
                              PTHEAT_VCLD,PFRACOMP,PTCOOL_OCCD,PTCOOL_OCCN,PTCOOL_VCDD,PTCOOL_VCDN,&
                              PTCOOL_VCLD,PF_WATER_COND,PCOP_RAT,PHR_TARGET,PQIN,PQIN_FRAD, &
                              PQIN_FLAT,PMODQIN_VCD,PMODQIN_VLD,PMODQIN_NIG,PHOTWAT,PNATVENT,PFVSUM,PFVNIG, &
                              PTDESV,PFVVAC,PFOPEN,PFSSUM,PFSNIG,PFSVAC,PWIN_SW_MAX,PDAYWBEG_SCHED,         &
                              PHOURBEG_SCHED,PBEG_HOLIDAY,PEND_HOLIDAY,PMOD_HOLIDAY,PPROBOCC,PF_WASTE_CAN)

!     #########################
!
!!
!!    PURPOSE
!!    -------
!!
!!    METHOD
!!    ------
!!
!!
!!    EXTERNAL
!!    --------
!!
!!    IMPLICIT ARGUMENTS
!!    ------------------
!!
!!    REFERENCE
!!    ---------
!!
!!    AUTHOR
!!    ------
!!
!!    S. Faroux & V. Masson        Meteo-France
!!
!!    MODIFICATION
!!    ------------
!!
!!    Original    05/2012 from INI_DATA_PARAM_TEB, separates urban parameters
!!    modified    08/2012 add PROUGH_ROOF, PROUGH_WALL
!!     V. Masson  08/2013 add solar panels
!!     R. Schoetter 11/2015 Major changes in order to read MApUCE data
!----------------------------------------------------------------------------
!
!*    0.     DECLARATION
!            -----------
!
USE MODD_BLD_DESCRIPTION_n, ONLY : BLD_DESC_t
USE MODD_DATA_TEB_n, ONLY : DATA_TEB_t
USE MODD_CSTS, ONLY : XSURF_EPSILON
!
USE MODI_ABOR1_SFX
USE MODI_GET_LUOUT
!
USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
USE PARKIND1  ,ONLY : JPRB
!
IMPLICIT NONE
!
!*    0.1    Declaration of arguments
!            ------------------------
!
TYPE(BLD_DESC_t), INTENT(INOUT) :: BDD
TYPE(DATA_TEB_t), INTENT(INOUT) :: DTT
INTEGER, DIMENSION(:), INTENT(INOUT) :: KTYPE
 CHARACTER(LEN=6),    INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
!
! Parameters not yet read from tables
!
REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PFLOOR_HEIGHT
REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PCAP_SYS_HEAT
REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PCAP_SYS_RAT
REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PT_ADP
REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PM_SYS_RAT
REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PT_SIZE_MAX
REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PT_SIZE_MIN
REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PROUGH_ROOF
REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PROUGH_WALL
!
! Building architectural characteristics
!
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PALB_ROOF
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PEMIS_ROOF
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PHC_ROOF
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTC_ROOF
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PD_ROOF
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PALB_WALL
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PEMIS_WALL
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PHC_WALL
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTC_WALL
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PD_WALL
INTEGER, DIMENSION(:),   INTENT(OUT), OPTIONAL :: NISOROOFPOS
INTEGER, DIMENSION(:),   INTENT(OUT), OPTIONAL :: NISOWALLPOS
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PALB_ROAD
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PEMIS_ROAD
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PHC_ROAD
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTC_ROAD
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PD_ROAD
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PHC_FLOOR
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTC_FLOOR
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PD_FLOOR
REAL, DIMENSION(:)  , INTENT(OUT), OPTIONAL :: PISMASS
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PHC_MASS
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTC_MASS
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PD_MASS
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PN50
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PGR
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PU_WIN
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PSHGC
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PSHGC_SH
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PSHADEARCHI
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PISMECH
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PMECHRATE
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PGREENROOF
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PEMIS_PANEL
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PALB_PANEL
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PEFF_PANEL
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PFRAC_PANEL
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PF_WASTE_CAN
!
! Occupant behaviour characteristics
!
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTHEAT_OCCD
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTHEAT_OCCN
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTHEAT_VCDD
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTHEAT_VCDN
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTHEAT_VCLD
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PFRACOMP
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTCOOL_OCCD
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTCOOL_OCCN
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTCOOL_VCDD
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTCOOL_VCDN
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PTCOOL_VCLD
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PF_WATER_COND
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PCOP_RAT
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PHR_TARGET
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PQIN
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PQIN_FRAD
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PQIN_FLAT
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PMODQIN_VCD
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PMODQIN_VLD
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PMODQIN_NIG
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PHOTWAT
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PNATVENT
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PFVSUM
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PFVNIG
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PTDESV
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PFVVAC
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PFOPEN
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PFSSUM
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PFSNIG
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PFSVAC
REAL, DIMENSION(:),   INTENT(OUT), OPTIONAL :: PWIN_SW_MAX
REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL :: PBEG_HOLIDAY
REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL :: PEND_HOLIDAY
REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL   :: PMOD_HOLIDAY
REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL :: PDAYWBEG_SCHED
REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL :: PHOURBEG_SCHED
REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL :: PPROBOCC
!
!*    0.2    Declaration of local variables
!      ------------------------------
!
INTEGER, DIMENSION(:), ALLOCATABLE :: ILIST ! link between urban types and indices
INTEGER            :: II           ! Loop counter
INTEGER            :: JLOOP        ! spatial loop counter
INTEGER            :: JLIST        ! loop counter on urban types
INTEGER            :: KLIST        ! loop counter on urban types
INTEGER            :: IINDEX       ! index of type for each point
INTEGER            :: NCTL         ! Control variable
INTEGER            :: ILUOUT       ! Unit number
!
REAL(KIND=JPRB) :: ZHOOK_HANDLE
!
!-------------------------------------------------------------------------------
!-------------------------------------------------------------------------------
!
IF (LHOOK) CALL DR_HOOK('INI_DATA_PARAM_TEB',0,ZHOOK_HANDLE)
!
!-------------------------------------------------------------------------------
!
!*    1.     Builds the list of indices corresponding to the "type" field
!      ------------------------------------------------------------------
!
ALLOCATE(ILIST(SIZE(KTYPE)))
ILIST(:) = -9999
!
! ##################################################################
! Elimination of unrealistic combinations of input data
! This is only valid for MApUCE data, and an alternative
! is required for other input datasets.
! ##################################################################
!
DO JLIST=1,SIZE(KTYPE)
  !
  ! A) In the case the building type is "high-rise building" and the
  !    construction period is P1, the construction period is set
  !    to P2, since there are no high-rise buildings in P1.
  !
  IF ((DTT%NPAR_BLDTYPE(JLIST).EQ.BDD%NDESC_POS_TYP_BGH).AND.(DTT%NPAR_COL_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1)) THEN
     !
     DTT%NPAR_COL_BLD_AGE(JLIST)=BDD%NDESC_POS_AGE_P2
     !
     CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
          DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     !
  ENDIF
  !
  ! B) In the case the building type is "local", the use is set to "LOCAL NON CHAUFFE"
  !
  IF (DTT%NPAR_BLDTYPE(JLIST).EQ.BDD%NDESC_POS_TYP_LOCA) THEN
     !
     DTT%NPAR_USETYPE(JLIST)=BDD%NDESC_POS_USE_LNC
     !
     IF (DTT%NPAR_COL_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ELSE
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ENDIF
     !
  ENDIF
  !
  ! C) In the case the building type coincides with individual housing, but the
  !    use with collective housing, the use is set to individual housing
  !    The building type is given priority
  !
  IF ( ((DTT%NPAR_BLDTYPE(JLIST).EQ.BDD%NDESC_POS_TYP_PD)  .OR.(DTT%NPAR_BLDTYPE(JLIST).EQ.BDD%NDESC_POS_TYP_PSC).OR. &
        (DTT%NPAR_BLDTYPE(JLIST).EQ.BDD%NDESC_POS_TYP_PCIO).OR.(DTT%NPAR_BLDTYPE(JLIST).EQ.BDD%NDESC_POS_TYP_PCIF)) .AND. &
        (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_HAC) )  THEN
     !
     DTT%NPAR_USETYPE(JLIST)=BDD%NDESC_POS_USE_HAI
     !
     IF (DTT%NPAR_IND_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ELSE
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ENDIF
     !
  ENDIF
  !
  ! D) In the case the building type coincides with collective housing, but the
  !    use is INDIVIDUEL, the use is set to COLLECTIF
  !    The building type is given priority
  !
  IF ( ((DTT%NPAR_BLDTYPE(JLIST).EQ.BDD%NDESC_POS_TYP_ID).OR.(DTT%NPAR_BLDTYPE(JLIST).EQ.BDD%NDESC_POS_TYP_ICIO).OR. &
        (DTT%NPAR_BLDTYPE(JLIST).EQ.BDD%NDESC_POS_TYP_ICIF)).AND.(DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_HAI)) THEN
     !
     DTT%NPAR_USETYPE(JLIST)=BDD%NDESC_POS_USE_HAC
     !
     IF (DTT%NPAR_COL_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ELSE
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ENDIF
     !
  ENDIF
  !
  ! E) In the case the building type is "BATIMENT D'ACTIVITE",
  !    but the use is INDIVIDUEL or COLLECTIF it is set to INDUSTRIEL
  !    The building type is given priority
  !
  IF ( ((DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_HAC).OR.(DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_HAI)) .AND. &
        (DTT%NPAR_BLDTYPE(JLIST).EQ.BDD%NDESC_POS_TYP_BA) )  THEN
     !
     DTT%NPAR_USETYPE(JLIST)=BDD%NDESC_POS_USE_IND
     !
     IF (DTT%NPAR_IND_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ELSE
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ENDIF
     !
  ENDIF
  !
  ! F) In the case the use is LOCAL NON CHAUFFE, the building type is set to "LOCAL"
  !
  IF (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_LNC) THEN
     !
     DTT%NPAR_BLDTYPE(JLIST)=BDD%NDESC_POS_TYP_LOCA
     !
     IF (DTT%NPAR_IND_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ELSE
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ENDIF
     !
  ENDIF
  !
  ! G) For Office use, the building type must be ID/ICIO/ICIF/ for P1 and ID/ICIO/BGH for PX
  !
  IF (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_TER) THEN
     !
     IF (DTT%NPAR_COL_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
        !
        IF ((DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ID).AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ICIO).AND. &
            (DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ICIF)) THEN
           !
           DTT%NPAR_BLDTYPE(JLIST)=BDD%NDESC_POS_TYP_ICIO
           !
           CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST), &
                DTT%NPAR_USETYPE(JLIST),DTT%NPAR_P1TERRITORY(JLIST), &
                DTT%NPAR_BLDCODE(JLIST))
           !
        ENDIF
        !
     ELSE
        !
        IF ((DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ID).AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ICIO).AND. &
            (DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_BGH)) THEN
           !
           DTT%NPAR_BLDTYPE(JLIST)=BDD%NDESC_POS_TYP_ICIO
           !
           CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST), &
                DTT%NPAR_USETYPE(JLIST),DTT%NPAR_PXTERRITORY(JLIST), &
                DTT%NPAR_BLDCODE(JLIST))
           !
        ENDIF
        !
     ENDIF
     !
  ENDIF
  !
  ! H) In the case the use is SANTE and the building type is not ICIF or ICIO, the building type is set to ICIO.
  !
  IF ( (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_SAN).AND. &
      ((DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ICIF).AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ICIO)) )  THEN
      !
      DTT%NPAR_BLDTYPE(JLIST)=BDD%NDESC_POS_TYP_ICIO
      !
      IF (DTT%NPAR_COL_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
         CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
              DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
      ELSE
         CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
              DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
      ENDIF
      !
  ENDIF
  !
  ! I) In the case the use is ENSEIGNEMENT and the building type 
  !    is not ID/ICIO/ICIF the building type is set to ICIO.
  !
  IF ( (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_ENS).AND. &
       ((DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ID).AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ICIO).AND. &
        (DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ICIF))) THEN
      !
      DTT%NPAR_BLDTYPE(JLIST)=BDD%NDESC_POS_TYP_ICIO
      !
      IF (DTT%NPAR_COL_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
         CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
              DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
      ELSE
         CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
              DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
      ENDIF
      !
   ENDIF
   !
   ! K) In the case the use is CHATEAU the building type must be ID and the period must be P1
   !
   IF (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_CHA) THEN
     !
     DTT%NPAR_BLDTYPE(JLIST)     = BDD%NDESC_POS_TYP_ID
     DTT%NPAR_COL_BLD_AGE(JLIST) = BDD%NDESC_POS_AGE_P1
     DTT%NPAR_IND_BLD_AGE(JLIST) = BDD%NDESC_POS_AGE_P1
     !
     CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
                  DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     !
  ENDIF
  !
  ! L) In the case the use is SPORTIF the building type must be BA
  !
  IF (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_SPO) THEN
     !
     DTT%NPAR_BLDTYPE(JLIST) = BDD%NDESC_POS_TYP_BA
     !
     IF (DTT%NPAR_IND_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ELSE
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ENDIF
     !
  ENDIF
  !
  ! M) In the case the use is RELIGIEUX the building type must be ID/ICIF
  !
  IF ( (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_REL) .AND. &
      ((DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ID).AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ICIF)) ) THEN
      !
      DTT%NPAR_BLDTYPE(JLIST)=BDD%NDESC_POS_TYP_ICIF
      !
      IF (DTT%NPAR_COL_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
         CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
      ELSE
         CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
      ENDIF
      !
  ENDIF
  !
  ! N) In the case the use is AGRICOLE the building type must be BA
  !
  IF (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_AGR)  THEN
     !
     DTT%NPAR_BLDTYPE(JLIST)=BDD%NDESC_POS_TYP_BA
     !
     IF (DTT%NPAR_IND_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ELSE
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ENDIF
     !
  ENDIF
  !
  ! O) In the case the use is SERRE the building type must be BA
  !
  IF (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_SER)  THEN
     !
     DTT%NPAR_BLDTYPE(JLIST)=BDD%NDESC_POS_TYP_BA
     !
     IF (DTT%NPAR_IND_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ELSE
        CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
             DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
     ENDIF
     !
  ENDIF
  !
  ! P) In the case the use is INDUSTRIEL the building type must be BA
  !
  IF (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_IND)  THEN
      !
      DTT%NPAR_BLDTYPE(JLIST)=BDD%NDESC_POS_TYP_BA
      !
      IF (DTT%NPAR_IND_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
         CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
              DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
      ELSE
         CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
              DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
      ENDIF
      !
   ENDIF
   !
   ! Q) In the case the use is COMMERCE the building type must be 
   !    ID/ICIO/ICIF for P1
   !    ID/ICIF for P2 to P3
   !    ID/ICIF/BA for P4 to P7 and ID/ICIF for P1 to P3
   !
   IF (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_COM) THEN
      !
      IF (DTT%NPAR_COL_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
         !
         IF ((DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ID).AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ICIF).AND. &
            (DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ICIO)) THEN
            !
            DTT%NPAR_BLDTYPE(JLIST)=BDD%NDESC_POS_TYP_ICIF
            !
            CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
                         DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
            !
         ENDIF
         !
      ELSEIF (DTT%NPAR_COL_BLD_AGE(JLIST).LT.BDD%NDESC_POS_AGE_P4) THEN
         !
         IF ((DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ID).AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ICIF)) THEN
            !
            DTT%NPAR_BLDTYPE(JLIST)=BDD%NDESC_POS_TYP_ICIF
            !
            CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
                         DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
            !
         ENDIF
         !
      ELSE
         !
         IF ((DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ID).AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ICIF).AND. &
             (DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_BA)) THEN
            !
            DTT%NPAR_BLDTYPE(JLIST)=BDD%NDESC_POS_TYP_BA
            !
            CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
                         DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
            !
         ENDIF
         !
      ENDIF
      !
   ENDIF
   !
   ! R) In the case the use is COLLECTIF the building type must be ID/ICIO/ICIF/BGH
   !
   IF ( (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_HAC) .AND. &
       ((DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ID)  .AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ICIO).AND. &
        (DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_ICIF).AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_BGH) ) )  THEN
      !
      DTT%NPAR_BLDTYPE(JLIST)=BDD%NDESC_POS_TYP_ICIO
      !
      IF (DTT%NPAR_COL_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
         CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
              DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
      ELSE
         CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
              DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
      ENDIF
      !
   ENDIF
   !
   ! S) In the case the use is INDIVIDUEL the building type must be PD/PSC/PCIO/PCIF
   !
   IF ( (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_HAI) .AND. &
       ((DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PD)  .AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PSC).AND. &
       (DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PCIO).AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PCIF) ))  THEN
       !
       DTT%NPAR_BLDTYPE(JLIST)=BDD%NDESC_POS_TYP_PD
       !
       IF (DTT%NPAR_IND_BLD_AGE(JLIST).EQ.BDD%NDESC_POS_AGE_P1) THEN
          CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
               DTT%NPAR_P1TERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
       ELSE
          CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
               DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
       ENDIF
       !
   ENDIF
   !
ENDDO
!
! ##################################################################
! Treatment of missing combinations of building type,
! use, construction period and territory
! ##################################################################
!
DO JLIST=1,SIZE(KTYPE)
   !
   ! Test matching of initial building code
   !
   KTYPE(JLIST)=DTT%NPAR_BLDCODE(JLIST)
   !
   NCTL=0
   DO KLIST=1,SIZE(BDD%NDESC_CODE_LIST)
      IF (KTYPE(JLIST).EQ.BDD%NDESC_CODE_LIST(KLIST)) THEN
         ILIST(JLIST) = KLIST
         NCTL=NCTL+1
      ENDIF
   END DO
   !
   ! There must only be one line in the .csv-table corresponding
   ! to the given building code
   !
   IF (NCTL.GT.1) CALL ABOR1_SFX("More than one line in csv-file corresponds to input")
   !
   ! Treatment of missing data
   !
   IF (NCTL.EQ.0) THEN
      !
      ! If the construction period is larger than 1, the territory is set to default
      !
      IF ((DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PD)  .AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PSC).AND. &
          (DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PCIO).AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PCIF)) THEN
         !
         IF (DTT%NPAR_COL_BLD_AGE(JLIST).NE.BDD%NDESC_POS_AGE_P1) THEN
            !
            DTT%NPAR_PXTERRITORY(JLIST)=BDD%NDESC_POS_PX_DEFAULT
            !
            CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
                 DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
            !
            KTYPE(JLIST)=DTT%NPAR_BLDCODE(JLIST)
            !
         ENDIF
         !
      ELSE
         !
         IF (DTT%NPAR_IND_BLD_AGE(JLIST).NE.BDD%NDESC_POS_AGE_P1) THEN
            !
            DTT%NPAR_PXTERRITORY(JLIST)=BDD%NDESC_POS_PX_DEFAULT
            !
            CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
                 DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
            !
            KTYPE(JLIST)=DTT%NPAR_BLDCODE(JLIST)
            !
         ENDIF
         !
      ENDIF
      !
      ! Test matching of modified building code
      !
      NCTL=0
      DO KLIST=1,SIZE(BDD%NDESC_CODE_LIST)
         IF (KTYPE(JLIST).EQ.BDD%NDESC_CODE_LIST(KLIST)) THEN
            ILIST(JLIST) = KLIST
            NCTL=NCTL+1
         ENDIF
      ENDDO
      IF (NCTL.GT.1) CALL ABOR1_SFX("More than one line in csv-file corresponds to input")
      !
      IF (NCTL.EQ.0) THEN
         !
         ! In case of still missing arcitectural description,
         ! the constuction period is increased until a match is found.
         ! It is assmed, that the construction period numbering
         ! increases towards more recent periods
         !
         DO 
            !
            IF ((DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PD)  .AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PSC).AND. &
                (DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PCIO).AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PCIF)) THEN
               !
               IF (DTT%NPAR_COL_BLD_AGE(JLIST).NE.BDD%NDESC_POS_AGE_P7) THEN
                  !
                  DTT%NPAR_COL_BLD_AGE(JLIST)=DTT%NPAR_COL_BLD_AGE(JLIST)+1
                  !
                  CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
                       DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
                  !
                  KTYPE(JLIST)=DTT%NPAR_BLDCODE(JLIST)
                  !
               ELSE
                  CALL GET_LUOUT(HPROGRAM,ILUOUT)
                  WRITE(ILUOUT,*) "                                                          "
                  WRITE(ILUOUT,*) "In ini_data_param_teb                                     "
                  WRITE(ILUOUT,*) "No building archetype found for the following combination "
                  WRITE(ILUOUT,*) "of building type, use, construction period and territory  "
                  WRITE(ILUOUT,*) "                            "
                  WRITE(ILUOUT,*) "DTT%NPAR_BLDTYPE(JLIST)     ",DTT%NPAR_BLDTYPE(JLIST)
                  WRITE(ILUOUT,*) "DTT%NPAR_COL_BLD_AGE(JLIST) ",DTT%NPAR_COL_BLD_AGE(JLIST)
                  WRITE(ILUOUT,*) "DTT%NPAR_USETYPE(JLIST)     ",DTT%NPAR_USETYPE(JLIST)
                  WRITE(ILUOUT,*) "DTT%NPAR_PXTERRITORY(JLIST) ",DTT%NPAR_PXTERRITORY(JLIST)
                  CALL FLUSH(ILUOUT)
                  CALL ABOR1_SFX ("Missing building archetype, check report")
               ENDIF
               !
            ELSE
               !
               IF (DTT%NPAR_IND_BLD_AGE(JLIST).NE.BDD%NDESC_POS_AGE_P7) THEN
                  !
                  DTT%NPAR_IND_BLD_AGE(JLIST)=DTT%NPAR_IND_BLD_AGE(JLIST)+1
                  !
                  CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
                       DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
                  !
                  KTYPE(JLIST)=DTT%NPAR_BLDCODE(JLIST)
                  !
               ELSE
                  CALL GET_LUOUT(HPROGRAM,ILUOUT)
                  WRITE(ILUOUT,*) "                                                          "
                  WRITE(ILUOUT,*) "In ini_data_param_teb                                     "
                  WRITE(ILUOUT,*) "No building archetype found for the following combination "
                  WRITE(ILUOUT,*) "of building type, use, construction period and territory  "
                  WRITE(ILUOUT,*) "                            "
                  WRITE(ILUOUT,*) "DTT%NPAR_BLDTYPE(JLIST)     ",DTT%NPAR_BLDTYPE(JLIST)
                  WRITE(ILUOUT,*) "DTT%NPAR_IND_BLD_AGE(JLIST) ",DTT%NPAR_IND_BLD_AGE(JLIST)
                  WRITE(ILUOUT,*) "DTT%NPAR_USETYPE(JLIST)     ",DTT%NPAR_USETYPE(JLIST)
                  WRITE(ILUOUT,*) "DTT%NPAR_PXTERRITORY(JLIST) ",DTT%NPAR_PXTERRITORY(JLIST)
                  CALL FLUSH(ILUOUT)
                  CALL ABOR1_SFX ("Missing building archetype, check report")
               ENDIF
               !
            ENDIF
            !
            ! Test matching of modified building code
            !
            NCTL=0
            DO KLIST=1,SIZE(BDD%NDESC_CODE_LIST)
               IF (KTYPE(JLIST).EQ.BDD%NDESC_CODE_LIST(KLIST)) THEN
                  ILIST(JLIST) = KLIST
                  NCTL=NCTL+1
               ENDIF
            ENDDO
            !
            IF (NCTL.GT.0) THEN
               EXIT
            ENDIF
            !
            ! Set territory to default
            !
            DTT%NPAR_PXTERRITORY(JLIST)=BDD%NDESC_POS_PX_DEFAULT
            !
            IF ((DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PD)  .AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PSC).AND.&
               (DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PCIO).AND.(DTT%NPAR_BLDTYPE(JLIST).NE.BDD%NDESC_POS_TYP_PCIF)) THEN
               CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_COL_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
                    DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
            ELSE
               CALL BLDCODE(DTT%NPAR_BLDTYPE(JLIST),DTT%NPAR_IND_BLD_AGE(JLIST),DTT%NPAR_USETYPE(JLIST), &
                    DTT%NPAR_PXTERRITORY(JLIST),DTT%NPAR_BLDCODE(JLIST))
            ENDIF
            !
            KTYPE(JLIST)=DTT%NPAR_BLDCODE(JLIST)
            !
            ! Test matching of modified building code
            !
            NCTL=0
            DO KLIST=1,SIZE(BDD%NDESC_CODE_LIST)
               IF (KTYPE(JLIST).EQ.BDD%NDESC_CODE_LIST(KLIST)) THEN
                  ILIST(JLIST) = KLIST
                  NCTL=NCTL+1
               ENDIF
            ENDDO
            !
            IF (NCTL.GT.0) THEN
               EXIT
            ENDIF
            !
         ENDDO
         !
      ENDIF
      !
   ENDIF
   !
ENDDO
!
! ###########################################################
! Initialisation of architectural characteristics 
! ###########################################################
!
IINDEX = 0
!
!-------------------------------------------------------------------------------
DO JLOOP=1,SIZE(KTYPE)
!-------------------------------------------------------------------------------
!
IINDEX=ILIST(JLOOP)
! 
!*    1.     town parameters depending on urban characteristics
!      --------------------------------------------------------
!
! Road
!
    IF (PRESENT(PALB_ROAD)) THEN
      PALB_ROAD(JLOOP)=BDD%XDESC_ALB_ROAD(IINDEX)
    ENDIF
    IF (PRESENT(PEMIS_ROAD)) THEN
      PEMIS_ROAD(JLOOP)=BDD%XDESC_EMIS_ROAD(IINDEX)
    ENDIF
    IF (PRESENT(PHC_ROAD)) THEN
      PHC_ROAD(JLOOP,:)= BDD%XDESC_HC_ROAD(IINDEX,:)
    ENDIF
    IF (PRESENT(PTC_ROAD)) THEN
      PTC_ROAD(JLOOP,:)= BDD%XDESC_TC_ROAD(IINDEX,:)
    ENDIF
    IF (PRESENT(PD_ROAD)) THEN
      PD_ROAD(JLOOP,:)= BDD%XDESC_D_ROAD(IINDEX,:)
    ENDIF
!
! Roof
!
    IF (PRESENT(PALB_ROOF)) THEN
      PALB_ROOF(JLOOP)=BDD%XDESC_ALB_ROOF(IINDEX)
    ENDIF
    IF (PRESENT(PEMIS_ROOF)) THEN
      PEMIS_ROOF(JLOOP)=BDD%XDESC_EMIS_ROOF(IINDEX)
    ENDIF
    IF (PRESENT(PHC_ROOF)) THEN
      PHC_ROOF(JLOOP,:)= BDD%XDESC_HC_ROOF(IINDEX,:)
    ENDIF
    IF (PRESENT(PTC_ROOF)) THEN
      PTC_ROOF(JLOOP,:)= BDD%XDESC_TC_ROOF(IINDEX,:)
    ENDIF
    IF (PRESENT(PD_ROOF)) THEN
      PD_ROOF(JLOOP,:)= BDD%XDESC_D_ROOF(IINDEX,:)
    ENDIF
!
! Wall
!
    IF (PRESENT(PALB_WALL)) THEN
      PALB_WALL(JLOOP)=BDD%XDESC_ALB_WALL(IINDEX)
    ENDIF
    IF (PRESENT(PEMIS_WALL)) THEN
      PEMIS_WALL(JLOOP)=BDD%XDESC_EMIS_WALL(IINDEX)
    ENDIF
    IF (PRESENT(PHC_WALL)) THEN
      PHC_WALL(JLOOP,:)= BDD%XDESC_HC_WALL(IINDEX,:)
    ENDIF
    IF (PRESENT(PTC_WALL)) THEN
      PTC_WALL(JLOOP,:)= BDD%XDESC_TC_WALL(IINDEX,:)
    ENDIF
    IF (PRESENT(PD_WALL)) THEN
      PD_WALL(JLOOP,:)= BDD%XDESC_D_WALL(IINDEX,:)
    ENDIF
!
! Position of isolation layers
!
    IF (PRESENT(NISOROOFPOS)) THEN
       NISOROOFPOS(JLOOP) = BDD%NDESC_ISOROOFPOS(IINDEX)
    ENDIF
     IF (PRESENT(NISOWALLPOS)) THEN
        NISOWALLPOS(JLOOP) = BDD%NDESC_ISOWALLPOS(IINDEX)
     ENDIF
!
! Floor
!
    IF (PRESENT(PHC_FLOOR)) THEN
      PHC_FLOOR(JLOOP,:)= BDD%XDESC_HC_FLOOR(IINDEX,:)
    ENDIF
    IF (PRESENT(PTC_FLOOR)) THEN
      PTC_FLOOR(JLOOP,:)= BDD%XDESC_TC_FLOOR(IINDEX,:)
    ENDIF
    IF (PRESENT(PD_FLOOR)) THEN
      PD_FLOOR(JLOOP,:)= BDD%XDESC_D_FLOOR(IINDEX,:)
    ENDIF
!
! Mass
!
    IF (PRESENT(PHC_MASS)) THEN
       PHC_MASS(JLOOP,:)= BDD%XDESC_HC_MASS(IINDEX,:)
    ENDIF
    IF (PRESENT(PTC_MASS)) THEN
       PTC_MASS(JLOOP,:)= BDD%XDESC_TC_MASS(IINDEX,:)
    ENDIF
    IF (PRESENT(PD_MASS)) THEN
       PD_MASS(JLOOP,:)= BDD%XDESC_D_MASS(IINDEX,:)
    ENDIF
    IF (PRESENT(PISMASS)) THEN
       PISMASS(JLOOP) = BDD%XDESC_ISMASS(IINDEX)
    ENDIF
!
    IF (PRESENT(PN50)) THEN
       PN50(JLOOP) = BDD%XDESC_N50(IINDEX)
    ENDIF
!
    IF (PRESENT(PGR)) THEN
      PGR(JLOOP) = BDD%XDESC_GR(IINDEX)
    ENDIF
!
    IF (PRESENT(PU_WIN)) THEN
       PU_WIN(JLOOP) = BDD%XDESC_U_WIN(IINDEX)
    ENDIF
!
    IF (PRESENT(PSHGC)) THEN
       PSHGC(JLOOP) = BDD%XDESC_SHGC(IINDEX)
    ENDIF
!
    IF (PRESENT(PSHGC_SH)) THEN
       PSHGC_SH(JLOOP) = BDD%XDESC_SHGC_SH(IINDEX)
    ENDIF
    !
    IF (PRESENT(PSHADEARCHI)) THEN
       PSHADEARCHI(JLOOP) = BDD%XDESC_SHADEARCHI(IINDEX)
    ENDIF
!
    IF (PRESENT(PISMECH)) THEN
       PISMECH(JLOOP) = BDD%XDESC_ISMECH(IINDEX)
    ENDIF
!
    IF (PRESENT(PMECHRATE)) THEN
       PMECHRATE(JLOOP) = BDD%XDESC_MECHRATE(IINDEX)
    ENDIF
    !
    IF (PRESENT(PGREENROOF)) THEN
      PGREENROOF(JLOOP) = BDD%XDESC_GREENROOF(IINDEX)
    ENDIF
    !
    IF (PRESENT(PEMIS_PANEL)) THEN
      PEMIS_PANEL(JLOOP) = BDD%XDESC_EMIS_PANEL(IINDEX)
    ENDIF
    !
    IF (PRESENT(PALB_PANEL)) THEN
      PALB_PANEL(JLOOP) = BDD%XDESC_ALB_PANEL(IINDEX)
    ENDIF
    !
    IF (PRESENT(PEFF_PANEL)) THEN
      PEFF_PANEL(JLOOP) = BDD%XDESC_EFF_PANEL(IINDEX)
    ENDIF
    !
    IF (PRESENT(PFRAC_PANEL)) THEN
      PFRAC_PANEL(JLOOP) = BDD%XDESC_FRAC_PANEL(IINDEX)
    ENDIF
    !
!      ----------------------------------------------------
! Architectural parameters not read from table
!      ---------------------------------------------------
!
    IF (PRESENT(PCAP_SYS_HEAT)) THEN
      PCAP_SYS_HEAT(JLOOP) = 100.
    ENDIF
!
    IF (PRESENT(PCAP_SYS_RAT)) THEN
      PCAP_SYS_RAT(JLOOP) = 90.
    ENDIF
!
    IF (PRESENT(PT_ADP)) THEN
      PT_ADP(JLOOP) = 285.66
    ENDIF
!
    IF (PRESENT(PM_SYS_RAT)) THEN
      PM_SYS_RAT(JLOOP) = 0.0067
    ENDIF
!
    IF (PRESENT(PT_SIZE_MAX)) THEN
      PT_SIZE_MAX(JLOOP) = 301.95
    ENDIF
!
    IF (PRESENT(PT_SIZE_MIN)) THEN
      PT_SIZE_MIN(JLOOP) = 268.96
    ENDIF
!
    IF (PRESENT(PFLOOR_HEIGHT)) THEN
      PFLOOR_HEIGHT(JLOOP) = 2.9
    ENDIF
!
    IF (PRESENT(PROUGH_ROOF)) THEN
      PROUGH_ROOF(JLOOP) = 1.52
    ENDIF
!
    IF (PRESENT(PROUGH_WALL)) THEN
      PROUGH_WALL(JLOOP) = 1.52
    ENDIF

!
END DO
!
DEALLOCATE(ILIST)
!
! ###########################################################
! Initialisation of behavioural characteristics
! When using the building description files, it is possible
! to simulate with 1 or 6 compartments
! For 6-compartments-case, the compartments are defined as follows
! - (1): FORT CRE   (low design temperature, if applicable)
! - (2): FAIBLE CRE (high design temperature, if applicable)
! - (3): Mean between FORT CRE and FAIBLE CRE (if applicable)
! - (4): non-heated fraction of the building
! - (5): COMMERCIAL fraction (if applicable)
! - (6): TERTIARE   fraction (if applicable)
!
! For the 1-compartment-case, the input values are averaged
! to represent the variety of behaviours as good as possible
!
! More details can be found in Schoetter et al. (2017), GMD.
!
! ###########################################################
!
! Initialisation of the fraction of compartments
!
DO JLIST=1,SIZE(DTT%NPAR_USETYPE)
   !
   IF (PRESENT(PFRACOMP)) THEN
      !
      IF (SIZE(PFRACOMP,2).EQ.1) THEN
         !
         PFRACOMP(JLIST,1) = 1.0
         !
      ELSEIF (SIZE(PFRACOMP,2).EQ.6) THEN
         !
         IF (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_HAC) THEN
            !
            ! For main use = COLLECTIVE housing, a non-heated fraction,
            ! a COMMERCIAL and TERTIARY fraction and 3 residential
            ! compartments with 3 different heating design temperatures are considered.
            ! The non-heated fraction related to this specific building archetype
            ! It will be used to normalise the commercial and office fraction
            !
            PFRACOMP(JLIST,4) = BDD%XDESC_FNOHEAT_AVG(DTT%NPAR_USETYPE(JLIST)) + &
               BDD%XDESC_FNOHEAT_MOD(DTT%NPAR_USETYPE(JLIST))*(2*DTT%XPAR_CRE_APPT(JLIST)-1)
            !
            PFRACOMP(JLIST,5) = DTT%XPAR_FRACCOM(JLIST)*(1.0-PFRACOMP(JLIST,4))
            PFRACOMP(JLIST,6) = DTT%XPAR_FRACTER(JLIST)*(1.0-PFRACOMP(JLIST,4))
            !
            PFRACOMP(JLIST,4) = ( 1.0 - DTT%XPAR_FRACNHE(JLIST) - DTT%XPAR_FRACIND(JLIST) ) * ( &
                 BDD%XDESC_FNOHEAT_AVG(DTT%NPAR_USETYPE(JLIST)) + &
                 BDD%XDESC_FNOHEAT_MOD(DTT%NPAR_USETYPE(JLIST)) * (2*DTT%XPAR_CRE_APPT(JLIST)-1) ) + &
                 DTT%XPAR_FRACNHE(JLIST) + DTT%XPAR_FRACIND(JLIST)
            !
            PFRACOMP(JLIST,1) = (1.0 - PFRACOMP(JLIST,4) - PFRACOMP(JLIST,5) - PFRACOMP(JLIST,6)) * &
                 (DTT%XPAR_CRE_APPT(JLIST)  * BDD%XDESC_FLDT(BDD%NDESC_POS_HAC_FORTCRE) + &
             (1.0-DTT%XPAR_CRE_APPT(JLIST)) * BDD%XDESC_FLDT(BDD%NDESC_POS_HAC_FAIBCRE))
            !
            PFRACOMP(JLIST,2) = (1.0 - PFRACOMP(JLIST,4) - PFRACOMP(JLIST,5) - PFRACOMP(JLIST,6)) * &
                 (DTT%XPAR_CRE_APPT(JLIST)  * BDD%XDESC_FHDT(BDD%NDESC_POS_HAC_FORTCRE) + &
             (1.0-DTT%XPAR_CRE_APPT(JLIST)) * BDD%XDESC_FHDT(BDD%NDESC_POS_HAC_FAIBCRE))
            !
            PFRACOMP(JLIST,3) = (1.0 - PFRACOMP(JLIST,4) - PFRACOMP(JLIST,5) - PFRACOMP(JLIST,6)) * &
                 (DTT%XPAR_CRE_APPT(JLIST)  * BDD%XDESC_FIDT(BDD%NDESC_POS_HAC_FORTCRE) + &
             (1.0-DTT%XPAR_CRE_APPT(JLIST)) * BDD%XDESC_FIDT(BDD%NDESC_POS_HAC_FAIBCRE))
            !
         ELSEIF (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_HAI) THEN
            !
            ! For main use = INDIVIDUAL housing, a non-heated fraction,
            ! a COMMERCIAL and TERTIARY fraction and 3 residential
            ! compartments with 3 different heating design temperatures are considered.
            ! The non-heated fraction related to this specific building archetype
            ! It will be used to normalise the commercial and office fraction
            !
            PFRACOMP(JLIST,4) = BDD%XDESC_FNOHEAT_AVG(DTT%NPAR_USETYPE(JLIST)) + &
               BDD%XDESC_FNOHEAT_MOD(DTT%NPAR_USETYPE(JLIST)) * (2*DTT%XPAR_CRE_MAIS(JLIST)-1)
            !
            PFRACOMP(JLIST,5) = DTT%XPAR_FRACCOM(JLIST)*(1.0-PFRACOMP(JLIST,4))
            PFRACOMP(JLIST,6) = DTT%XPAR_FRACTER(JLIST)*(1.0-PFRACOMP(JLIST,4))
            !
            PFRACOMP(JLIST,4) = ( 1.0 - DTT%XPAR_FRACNHE(JLIST) - DTT%XPAR_FRACIND(JLIST) ) * ( &
               BDD%XDESC_FNOHEAT_AVG(DTT%NPAR_USETYPE(JLIST)) + &
               BDD%XDESC_FNOHEAT_MOD(DTT%NPAR_USETYPE(JLIST)) * (2*DTT%XPAR_CRE_MAIS(JLIST)-1) ) + &
               DTT%XPAR_FRACNHE(JLIST) + DTT%XPAR_FRACIND(JLIST)              
            !
            PFRACOMP(JLIST,1) = (1.0 - PFRACOMP(JLIST,4) - PFRACOMP(JLIST,5) - PFRACOMP(JLIST,6)) * &
                 (DTT%XPAR_CRE_MAIS(JLIST)  * BDD%XDESC_FLDT(BDD%NDESC_POS_HAI_FORTCRE) + &
             (1.0-DTT%XPAR_CRE_MAIS(JLIST)) * BDD%XDESC_FLDT(BDD%NDESC_POS_HAI_FAIBCRE))
            !
            PFRACOMP(JLIST,2) = (1.0 - PFRACOMP(JLIST,4) - PFRACOMP(JLIST,5) - PFRACOMP(JLIST,6)) * &
                 (DTT%XPAR_CRE_MAIS(JLIST)  * BDD%XDESC_FHDT(BDD%NDESC_POS_HAI_FORTCRE) + &
             (1.0-DTT%XPAR_CRE_MAIS(JLIST)) * BDD%XDESC_FHDT(BDD%NDESC_POS_HAI_FAIBCRE))
            !
            PFRACOMP(JLIST,3) = (1.0 - PFRACOMP(JLIST,4) - PFRACOMP(JLIST,5) - PFRACOMP(JLIST,6)) * &
                 (DTT%XPAR_CRE_MAIS(JLIST)  * BDD%XDESC_FIDT(BDD%NDESC_POS_HAI_FORTCRE) + &
             (1.0-DTT%XPAR_CRE_MAIS(JLIST)) * BDD%XDESC_FIDT(BDD%NDESC_POS_HAI_FAIBCRE))
            !
         ELSEIF ( (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_COM).OR.(DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_SAN) .OR. &
                  (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_ENS).OR.(DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_TER) ) THEN
            !
            ! For the main use = TERTIARY, COMMERCIAL, HEALTH and EDUCATION
            ! a non-heated fraction and 3 compartments with different design temperatures
            ! of heating and climatisation are considered
            !
            PFRACOMP(JLIST,4) = (1.0 - DTT%XPAR_FRACNHE(JLIST) - DTT%XPAR_FRACIND(JLIST) ) * &
                                BDD%XDESC_FNOHEAT_AVG(DTT%NPAR_USETYPE(JLIST)) + &
                                DTT%XPAR_FRACNHE(JLIST) + DTT%XPAR_FRACIND(JLIST) 
            !
            PFRACOMP(JLIST,5) = 0.0
            PFRACOMP(JLIST,6) = 0.0
            PFRACOMP(JLIST,1) = (1.0 - PFRACOMP(JLIST,4) - PFRACOMP(JLIST,5) - PFRACOMP(JLIST,6)) * 0.33
            PFRACOMP(JLIST,2) = (1.0 - PFRACOMP(JLIST,4) - PFRACOMP(JLIST,5) - PFRACOMP(JLIST,6)) * 0.34
            PFRACOMP(JLIST,3) = (1.0 - PFRACOMP(JLIST,4) - PFRACOMP(JLIST,5) - PFRACOMP(JLIST,6)) * 0.33
            !
         ELSE
            !
            ! Only a non-heated fraction is considered
            !
            PFRACOMP(JLIST,4) = (1.0-DTT%XPAR_FRACNHE(JLIST) - DTT%XPAR_FRACIND(JLIST))* &
                                BDD%XDESC_FNOHEAT_AVG(DTT%NPAR_USETYPE(JLIST)) + &
                                DTT%XPAR_FRACNHE(JLIST) + DTT%XPAR_FRACIND(JLIST)
            PFRACOMP(JLIST,5) = 0.0
            PFRACOMP(JLIST,6) = 0.0
            PFRACOMP(JLIST,1) = 1.0 - PFRACOMP(JLIST,4) - PFRACOMP(JLIST,5) - PFRACOMP(JLIST,6)
            PFRACOMP(JLIST,2) = 0.0
            PFRACOMP(JLIST,3) = 0.0
            !
         ENDIF
         !
      ELSE
         CALL ABOR1_SFX("No rule implemented for this number of compartments")
      ENDIF
      !
      ! Check whether the individual compartment fractions by more than 1.0E-6 wrong
      !
      DO II=1,SIZE(PFRACOMP,2)
         IF ((PFRACOMP(JLIST,II).LT.-1.0E-6).OR.(PFRACOMP(JLIST,II).GT.(1.0+1.0E-6))) THEN
            CALL ABOR1_SFX("INI_DATA_PARAM_TEB: Wrong fraction of compartments")
         ENDIF
      ENDDO
      !
      ! Very small deviations from 0.0 or 1.0 are corrected
      !
      WHERE (PFRACOMP(JLIST,:).LT.0.0)
         PFRACOMP(JLIST,:) = 0.0
      ELSEWHERE (PFRACOMP(JLIST,:).GT.1.0)
         PFRACOMP(JLIST,:) = 1.0
      ENDWHERE
      !
      ! Check whether the sum is far from 1.0
      !
      IF (ABS(SUM(PFRACOMP(JLIST,:))-1.0).GT.1.0E-6) THEN
         CALL ABOR1_SFX("INI_DATA_PARAM_TEB : Wrong initial sum of compartment fractions")
      ENDIF
      !
      ! Renormalise the sum
      !
      PFRACOMP(JLIST,:) = PFRACOMP(JLIST,:)/SUM(PFRACOMP(JLIST,:))
      !
      ! Check whether the renormalised sum is exactly 1.0
      !
      IF (ABS(SUM(PFRACOMP(JLIST,:))-1.0).GT.XSURF_EPSILON) THEN
         CALL ABOR1_SFX("INI_DATA_PARAM_TEB : Wrong final sum of compartment fractions")
      ENDIF
      !
   ENDIF
   !
ENDDO
!
! ###########################################################
!
! Initialisation of heating-related variables
!
DO JLIST=1,SIZE(DTT%NPAR_USETYPE)
   !
   IF (PRESENT(PTHEAT_OCCD)) THEN
      !
      IF (SIZE(PTHEAT_OCCD,2).EQ.1) THEN
         PTHEAT_OCCD(JLIST,1) = BDD%XDESC_THEAT_OCCD_AVG(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PTHEAT_OCCD,2).EQ.6) THEN
         PTHEAT_OCCD(JLIST,1) = BDD%XDESC_THEAT_OCCD_AVG(DTT%NPAR_USETYPE(JLIST))- &
             BDD%XDESC_THEAT_OCCD_MOD(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_OCCD(JLIST,2) = BDD%XDESC_THEAT_OCCD_AVG(DTT%NPAR_USETYPE(JLIST))+ &
              BDD%XDESC_THEAT_OCCD_MOD(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_OCCD(JLIST,3) = BDD%XDESC_THEAT_OCCD_AVG(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_OCCD(JLIST,4) = 200.0
         PTHEAT_OCCD(JLIST,5) = BDD%XDESC_THEAT_OCCD_AVG(BDD%NDESC_POS_USE_COM)
         PTHEAT_OCCD(JLIST,6) = BDD%XDESC_THEAT_OCCD_AVG(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX("No rule for this number of compartments")
      ENDIF
      !
   ENDIF
   !
   IF (PRESENT(PTHEAT_OCCN)) THEN
      !
      IF (SIZE(PTHEAT_OCCN,2).EQ.1) THEN
         PTHEAT_OCCN(JLIST,1) = BDD%XDESC_THEAT_OCCN_AVG(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PTHEAT_OCCN,2).EQ.6) THEN
         PTHEAT_OCCN(JLIST,1) = BDD%XDESC_THEAT_OCCN_AVG(DTT%NPAR_USETYPE(JLIST))- &
              BDD%XDESC_THEAT_OCCN_MOD(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_OCCN(JLIST,2) = BDD%XDESC_THEAT_OCCN_AVG(DTT%NPAR_USETYPE(JLIST))+ &
              BDD%XDESC_THEAT_OCCN_MOD(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_OCCN(JLIST,3) = BDD%XDESC_THEAT_OCCN_AVG(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_OCCN(JLIST,4) = 200.0
         PTHEAT_OCCN(JLIST,5) = BDD%XDESC_THEAT_OCCN_AVG(BDD%NDESC_POS_USE_COM)
         PTHEAT_OCCN(JLIST,6) = BDD%XDESC_THEAT_OCCN_AVG(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX("No rule for this number of compartments")
      ENDIF
      !
   ENDIF
   !
   IF (PRESENT(PTHEAT_VCDD)) THEN
      !
      IF (SIZE(PTHEAT_VCDD,2).EQ.1) THEN
         PTHEAT_VCDD(JLIST,1) = BDD%XDESC_THEAT_VCDD_AVG(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PTHEAT_VCDD,2).EQ.6) THEN
         PTHEAT_VCDD(JLIST,1) = BDD%XDESC_THEAT_VCDD_AVG(DTT%NPAR_USETYPE(JLIST))- &
              BDD%XDESC_THEAT_VCDD_MOD(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_VCDD(JLIST,2) = BDD%XDESC_THEAT_VCDD_AVG(DTT%NPAR_USETYPE(JLIST))+ &
              BDD%XDESC_THEAT_VCDD_MOD(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_VCDD(JLIST,3) = BDD%XDESC_THEAT_VCDD_AVG(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_VCDD(JLIST,4) = 200.0
         PTHEAT_VCDD(JLIST,5) = BDD%XDESC_THEAT_VCDD_AVG(BDD%NDESC_POS_USE_COM)
         PTHEAT_VCDD(JLIST,6) = BDD%XDESC_THEAT_VCDD_AVG(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX("No rule for this number of compartments")
      ENDIF
      !
   ENDIF
   !
   IF (PRESENT(PTHEAT_VCDN)) THEN
      !
      IF (SIZE(PTHEAT_VCDN,2).EQ.1) THEN
         PTHEAT_VCDN(JLIST,1) = BDD%XDESC_THEAT_VCDN_AVG(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PTHEAT_VCDN,2).EQ.6) THEN
         PTHEAT_VCDN(JLIST,1) = BDD%XDESC_THEAT_VCDN_AVG(DTT%NPAR_USETYPE(JLIST))- &
              BDD%XDESC_THEAT_VCDN_MOD(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_VCDN(JLIST,2) = BDD%XDESC_THEAT_VCDN_AVG(DTT%NPAR_USETYPE(JLIST))+ &
              BDD%XDESC_THEAT_VCDN_MOD(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_VCDN(JLIST,3) = BDD%XDESC_THEAT_VCDN_AVG(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_VCDN(JLIST,4) = 200.0
         PTHEAT_VCDN(JLIST,5) = BDD%XDESC_THEAT_VCDN_AVG(BDD%NDESC_POS_USE_COM)
         PTHEAT_VCDN(JLIST,6) = BDD%XDESC_THEAT_VCDN_AVG(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX("No rule for this number of compartments")
      ENDIF
      !
   ENDIF
   !
   IF (PRESENT(PTHEAT_VCLD)) THEN
      !
      IF (SIZE(PTHEAT_VCLD,2).EQ.1) THEN
         PTHEAT_VCLD(JLIST,1) = BDD%XDESC_THEAT_VCLD_AVG(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PTHEAT_VCLD,2).EQ.6) THEN
         PTHEAT_VCLD(JLIST,1) = BDD%XDESC_THEAT_VCLD_AVG(DTT%NPAR_USETYPE(JLIST))- &
              BDD%XDESC_THEAT_VCLD_MOD(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_VCLD(JLIST,2) = BDD%XDESC_THEAT_VCLD_AVG(DTT%NPAR_USETYPE(JLIST))+ &
              BDD%XDESC_THEAT_VCLD_MOD(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_VCLD(JLIST,3) = BDD%XDESC_THEAT_VCLD_AVG(DTT%NPAR_USETYPE(JLIST))
         PTHEAT_VCLD(JLIST,4) = 200.0
         PTHEAT_VCLD(JLIST,5) = BDD%XDESC_THEAT_VCLD_AVG(BDD%NDESC_POS_USE_COM)
         PTHEAT_VCLD(JLIST,6) = BDD%XDESC_THEAT_VCLD_AVG(BDD%NDESC_POS_USE_TER)    
      ELSE
         CALL ABOR1_SFX("No rule for this number of compartments")
      ENDIF
      !
   ENDIF
   !
ENDDO
!
! Initialisation of cooling-related variables
!
DO JLIST=1,SIZE(DTT%NPAR_USETYPE)
   !
   IF (PRESENT(PTCOOL_OCCD)) THEN
      IF (SIZE(PTCOOL_OCCD,2).EQ.1) THEN
         PTCOOL_OCCD(JLIST,1) = BDD%XDESC_TCOOL_OCCD(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PTCOOL_OCCD,2).EQ.6) THEN
         PTCOOL_OCCD(JLIST,1) = BDD%XDESC_TCOOL_OCCD(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_OCCD(JLIST,2) = BDD%XDESC_TCOOL_OCCD(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_OCCD(JLIST,3) = BDD%XDESC_TCOOL_OCCD(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_OCCD(JLIST,4) = 400.0
         PTCOOL_OCCD(JLIST,5) = BDD%XDESC_TCOOL_OCCD(BDD%NDESC_POS_USE_COM)
         PTCOOL_OCCD(JLIST,6) = BDD%XDESC_TCOOL_OCCD(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")
      ENDIF
   ENDIF
   !
   IF (PRESENT(PTCOOL_OCCN)) THEN
      IF (SIZE(PTCOOL_OCCN,2).EQ.1) THEN
         PTCOOL_OCCN(JLIST,1) = BDD%XDESC_TCOOL_OCCN(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PTCOOL_OCCN,2).EQ.6) THEN
         PTCOOL_OCCN(JLIST,1) = BDD%XDESC_TCOOL_OCCN(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_OCCN(JLIST,2) = BDD%XDESC_TCOOL_OCCN(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_OCCN(JLIST,3) = BDD%XDESC_TCOOL_OCCN(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_OCCN(JLIST,4) = 400.0
         PTCOOL_OCCN(JLIST,5) = BDD%XDESC_TCOOL_OCCN(BDD%NDESC_POS_USE_COM)
         PTCOOL_OCCN(JLIST,6) = BDD%XDESC_TCOOL_OCCN(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")
      ENDIF
   ENDIF
   !
   IF (PRESENT(PTCOOL_VCDD)) THEN
      IF (SIZE(PTCOOL_VCDD,2).EQ.1) THEN
         PTCOOL_VCDD(JLIST,1) = BDD%XDESC_TCOOL_VCDD(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PTCOOL_VCDD,2).EQ.6) THEN
         PTCOOL_VCDD(JLIST,1) = BDD%XDESC_TCOOL_VCDD(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_VCDD(JLIST,2) = BDD%XDESC_TCOOL_VCDD(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_VCDD(JLIST,3) = BDD%XDESC_TCOOL_VCDD(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_VCDD(JLIST,4) = 400.0
         PTCOOL_VCDD(JLIST,5) = BDD%XDESC_TCOOL_VCDD(BDD%NDESC_POS_USE_COM)
         PTCOOL_VCDD(JLIST,6) = BDD%XDESC_TCOOL_VCDD(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")
      ENDIF
   ENDIF
   !
   IF (PRESENT(PTCOOL_VCDN)) THEN
      IF (SIZE(PTCOOL_VCDN,2).EQ.1) THEN
         PTCOOL_VCDN(JLIST,1) = BDD%XDESC_TCOOL_VCDN(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PTCOOL_VCDN,2).EQ.6) THEN
         PTCOOL_VCDN(JLIST,1) = BDD%XDESC_TCOOL_VCDN(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_VCDN(JLIST,2) = BDD%XDESC_TCOOL_VCDN(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_VCDN(JLIST,3) = BDD%XDESC_TCOOL_VCDN(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_VCDN(JLIST,4) = 400.0
         PTCOOL_VCDN(JLIST,5) = BDD%XDESC_TCOOL_VCDN(BDD%NDESC_POS_USE_COM)
         PTCOOL_VCDN(JLIST,6) = BDD%XDESC_TCOOL_VCDN(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")
      ENDIF
   ENDIF
   !
   IF (PRESENT(PTCOOL_VCLD)) THEN
      IF (SIZE(PTCOOL_VCLD,2).EQ.1) THEN
         PTCOOL_VCLD(JLIST,1) = BDD%XDESC_TCOOL_VCLD(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PTCOOL_VCLD,2).EQ.6) THEN
         PTCOOL_VCLD(JLIST,1) = BDD%XDESC_TCOOL_VCLD(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_VCLD(JLIST,2) = BDD%XDESC_TCOOL_VCLD(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_VCLD(JLIST,3) = BDD%XDESC_TCOOL_VCLD(DTT%NPAR_USETYPE(JLIST))
         PTCOOL_VCLD(JLIST,4) = 400.0
         PTCOOL_VCLD(JLIST,5) = BDD%XDESC_TCOOL_VCLD(BDD%NDESC_POS_USE_COM)
         PTCOOL_VCLD(JLIST,6) = BDD%XDESC_TCOOL_VCLD(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")
      ENDIF
   ENDIF
   !
   IF (PRESENT(PF_WATER_COND)) THEN
      PF_WATER_COND(JLIST)=BDD%XDESC_F_WATER_COND(DTT%NPAR_USETYPE(JLIST))
   ENDIF
   !
   IF (PRESENT(PF_WASTE_CAN)) THEN
      PF_WASTE_CAN(JLIST) = BDD%XDESC_F_WASTE_CAN(DTT%NPAR_USETYPE(JLIST))
   ENDIF
   !
   IF (PRESENT(PCOP_RAT)) THEN
      PCOP_RAT(JLIST)=BDD%XDESC_COP_RAT(DTT%NPAR_USETYPE(JLIST))
   ENDIF
   !
   IF (PRESENT(PHR_TARGET)) THEN
      PHR_TARGET(JLIST)=BDD%XDESC_HR_TARGET(DTT%NPAR_USETYPE(JLIST))
   ENDIF
   !
ENDDO
!
! Initialisation of internal heat release-related variables
! At the moment the same internal heat release is distributed
! over all the heating design temperature differenciated compartments
!
DO JLIST=1,SIZE(DTT%NPAR_USETYPE)
   !
   IF (PRESENT(PQIN)) THEN
      !
      IF (SIZE(PQIN,2).EQ.1) THEN
         PQIN(JLIST,1) = BDD%XDESC_QIN(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PQIN,2).EQ.6) THEN
         !
         IF (DTT%NPAR_USETYPE(JLIST).EQ.BDD%NDESC_POS_USE_HAI) THEN
            PQIN(JLIST,1) = BDD%XDESC_QIN(DTT%NPAR_USETYPE(JLIST)) + &
              MAX(0.0,(2*DTT%XPAR_FOEQI_MAIS(JLIST)-1)*BDD%XDESC_QIN_ADDBEHAV(DTT%NPAR_USETYPE(JLIST))) - &
              MAX(0.0,(2*DTT%XPAR_FAEQI_MAIS(JLIST)-1)*BDD%XDESC_QIN_ADDBEHAV(DTT%NPAR_USETYPE(JLIST)))
         ELSE
            PQIN(JLIST,1) = BDD%XDESC_QIN(DTT%NPAR_USETYPE(JLIST)) + &
              MAX(0.0,(2*DTT%XPAR_FOEQI_APPT(JLIST)-1)*BDD%XDESC_QIN_ADDBEHAV(DTT%NPAR_USETYPE(JLIST))) - &
              MAX(0.0,(2*DTT%XPAR_FAEQI_APPT(JLIST)-1)*BDD%XDESC_QIN_ADDBEHAV(DTT%NPAR_USETYPE(JLIST)))             
         ENDIF
         !
         PQIN(JLIST,2) = PQIN(JLIST,1)
         PQIN(JLIST,3) = PQIN(JLIST,1)
         PQIN(JLIST,4) = PQIN(JLIST,1)
         PQIN(JLIST,5) = BDD%XDESC_QIN(BDD%NDESC_POS_USE_COM)
         PQIN(JLIST,6) = BDD%XDESC_QIN(BDD%NDESC_POS_USE_TER)
         !
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")
      ENDIF
      !
      DO II=1,SIZE(PQIN,2)
         IF (PQIN(JLIST,II).LT.-XSURF_EPSILON) THEN
            CALL ABOR1_SFX("INI_DATA_PARAM_TEB:Negative value for nominative internal heat release")
         ENDIF
      ENDDO
      !
   ENDIF
   !
   IF (PRESENT(PQIN_FRAD)) THEN
      PQIN_FRAD(JLIST)=BDD%XDESC_QIN_FRAD(DTT%NPAR_USETYPE(JLIST))
   ENDIF
   !
   IF (PRESENT(PQIN_FLAT)) THEN
      PQIN_FLAT(JLIST)=BDD%XDESC_QIN_FLAT(DTT%NPAR_USETYPE(JLIST))
   ENDIF
   !
   IF (PRESENT(PMODQIN_VCD)) THEN
      IF (SIZE(PMODQIN_VCD,2).EQ.1) THEN
        PMODQIN_VCD(JLIST,1) = BDD%XDESC_MODQIN_VCD(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PMODQIN_VCD,2).EQ.6) THEN
         PMODQIN_VCD(JLIST,1) = BDD%XDESC_MODQIN_VCD(DTT%NPAR_USETYPE(JLIST))
         PMODQIN_VCD(JLIST,2) = BDD%XDESC_MODQIN_VCD(DTT%NPAR_USETYPE(JLIST))
         PMODQIN_VCD(JLIST,3) = BDD%XDESC_MODQIN_VCD(DTT%NPAR_USETYPE(JLIST))
         PMODQIN_VCD(JLIST,4) = BDD%XDESC_MODQIN_VCD(DTT%NPAR_USETYPE(JLIST))
         PMODQIN_VCD(JLIST,5) = BDD%XDESC_MODQIN_VCD(BDD%NDESC_POS_USE_COM)
         PMODQIN_VCD(JLIST,6) = BDD%XDESC_MODQIN_VCD(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")
      ENDIF
   ENDIF
   !
   IF (PRESENT(PMODQIN_VLD)) THEN
      IF (SIZE(PMODQIN_VLD,2).EQ.1) THEN
         PMODQIN_VLD(JLIST,1) = BDD%XDESC_MODQIN_VLD(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PMODQIN_VLD,2).EQ.6) THEN
         PMODQIN_VLD(JLIST,1) = BDD%XDESC_MODQIN_VLD(DTT%NPAR_USETYPE(JLIST))
         PMODQIN_VLD(JLIST,2) = BDD%XDESC_MODQIN_VLD(DTT%NPAR_USETYPE(JLIST))
         PMODQIN_VLD(JLIST,3) = BDD%XDESC_MODQIN_VLD(DTT%NPAR_USETYPE(JLIST))
         PMODQIN_VLD(JLIST,4) = BDD%XDESC_MODQIN_VLD(DTT%NPAR_USETYPE(JLIST))
         PMODQIN_VLD(JLIST,5) = BDD%XDESC_MODQIN_VLD(BDD%NDESC_POS_USE_COM)
         PMODQIN_VLD(JLIST,6) = BDD%XDESC_MODQIN_VLD(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")
      ENDIF
   ENDIF
   !
   IF (PRESENT(PMODQIN_NIG)) THEN
      IF (SIZE(PMODQIN_NIG,2).EQ.1) THEN
        PMODQIN_NIG(JLIST,1) = BDD%XDESC_MODQIN_NIG(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PMODQIN_NIG,2).EQ.6) THEN
         PMODQIN_NIG(JLIST,1) = BDD%XDESC_MODQIN_NIG(DTT%NPAR_USETYPE(JLIST))
         PMODQIN_NIG(JLIST,2) = BDD%XDESC_MODQIN_NIG(DTT%NPAR_USETYPE(JLIST))
         PMODQIN_NIG(JLIST,3) = BDD%XDESC_MODQIN_NIG(DTT%NPAR_USETYPE(JLIST))
         PMODQIN_NIG(JLIST,4) = BDD%XDESC_MODQIN_NIG(DTT%NPAR_USETYPE(JLIST))
         PMODQIN_NIG(JLIST,5) = BDD%XDESC_MODQIN_NIG(BDD%NDESC_POS_USE_COM)
         PMODQIN_NIG(JLIST,6) = BDD%XDESC_MODQIN_NIG(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")
      ENDIF
   ENDIF
   !
   IF (PRESENT(PHOTWAT)) THEN
      IF (SIZE(PHOTWAT,2).EQ.1) THEN
         PHOTWAT(JLIST,1) = BDD%XDESC_HOTWAT(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PHOTWAT,2).EQ.6) THEN       
         PHOTWAT(JLIST,1) = BDD%XDESC_HOTWAT(DTT%NPAR_USETYPE(JLIST))
         PHOTWAT(JLIST,2) = BDD%XDESC_HOTWAT(DTT%NPAR_USETYPE(JLIST))
         PHOTWAT(JLIST,3) = BDD%XDESC_HOTWAT(DTT%NPAR_USETYPE(JLIST))
         PHOTWAT(JLIST,4) = 0.0
         PHOTWAT(JLIST,5) = 0.0
         PHOTWAT(JLIST,6) = 0.0           
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")
      ENDIF
   ENDIF
   !
ENDDO
!
! Initialisation of shading and ventilation-related variables
!
DO JLIST=1,SIZE(DTT%NPAR_USETYPE)
   !
   IF (PRESENT(PNATVENT)) THEN
      IF (SIZE(PNATVENT,2).EQ.1) THEN
         PNATVENT(JLIST,1) = BDD%XDESC_NATVENT(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PNATVENT,2).EQ.6) THEN
         PNATVENT(JLIST,1) = BDD%XDESC_NATVENT(DTT%NPAR_USETYPE(JLIST))
         PNATVENT(JLIST,2) = BDD%XDESC_NATVENT(DTT%NPAR_USETYPE(JLIST))
         PNATVENT(JLIST,3) = BDD%XDESC_NATVENT(DTT%NPAR_USETYPE(JLIST))
         PNATVENT(JLIST,4) = 0.0
         PNATVENT(JLIST,5) = BDD%XDESC_NATVENT(BDD%NDESC_POS_USE_COM)
         PNATVENT(JLIST,6) = BDD%XDESC_NATVENT(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")           
      ENDIF
   ENDIF
   !
   IF (PRESENT(PFVSUM)) THEN
      IF (SIZE(PFVSUM,2).EQ.1) THEN        
         PFVSUM(JLIST,1) = BDD%XDESC_FVSUM(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PFVSUM,2).EQ.6) THEN
         PFVSUM(JLIST,1) = BDD%XDESC_FVSUM(DTT%NPAR_USETYPE(JLIST))
         PFVSUM(JLIST,2) = BDD%XDESC_FVSUM(DTT%NPAR_USETYPE(JLIST))
         PFVSUM(JLIST,3) = BDD%XDESC_FVSUM(DTT%NPAR_USETYPE(JLIST))
         PFVSUM(JLIST,4) = 0.0
         PFVSUM(JLIST,5) = BDD%XDESC_FVSUM(BDD%NDESC_POS_USE_COM)
         PFVSUM(JLIST,6) = BDD%XDESC_FVSUM(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments") 
      ENDIF
   ENDIF
   !
   IF (PRESENT(PFVNIG)) THEN
      IF (SIZE(PFVNIG,2).EQ.1) THEN        
         PFVNIG(JLIST,1) = BDD%XDESC_FVNIG(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PFVNIG,2).EQ.6) THEN
         PFVNIG(JLIST,1) = BDD%XDESC_FVNIG(DTT%NPAR_USETYPE(JLIST))
         PFVNIG(JLIST,2) = BDD%XDESC_FVNIG(DTT%NPAR_USETYPE(JLIST))
         PFVNIG(JLIST,3) = BDD%XDESC_FVNIG(DTT%NPAR_USETYPE(JLIST))
         PFVNIG(JLIST,4) = 0.0
         PFVNIG(JLIST,5) = BDD%XDESC_FVNIG(BDD%NDESC_POS_USE_COM)
         PFVNIG(JLIST,6) = BDD%XDESC_FVNIG(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments") 
      ENDIF
   ENDIF
   !
   IF (PRESENT(PTDESV)) THEN
      PTDESV(JLIST)=BDD%XDESC_TDESV(DTT%NPAR_USETYPE(JLIST))
   ENDIF
   !
   IF (PRESENT(PFVVAC)) THEN
      IF (SIZE(PFVVAC,2).EQ.1) THEN    
         PFVVAC(JLIST,1) = BDD%XDESC_FVVAC(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PFVVAC,2).EQ.6) THEN
         PFVVAC(JLIST,1) = BDD%XDESC_FVVAC(DTT%NPAR_USETYPE(JLIST))
         PFVVAC(JLIST,2) = BDD%XDESC_FVVAC(DTT%NPAR_USETYPE(JLIST))
         PFVVAC(JLIST,3) = BDD%XDESC_FVVAC(DTT%NPAR_USETYPE(JLIST))
         PFVVAC(JLIST,4) = 0.0
         PFVVAC(JLIST,5) = BDD%XDESC_FVVAC(BDD%NDESC_POS_USE_COM)
         PFVVAC(JLIST,6) = BDD%XDESC_FVVAC(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")            
      ENDIF
   ENDIF
   !
   IF (PRESENT(PFOPEN)) THEN
      PFOPEN(JLIST)=BDD%XDESC_FOPEN(DTT%NPAR_USETYPE(JLIST))
   ENDIF
   !
   IF (PRESENT(PFSSUM)) THEN
      IF (SIZE(PFSSUM,2).EQ.1) THEN   
         PFSSUM(JLIST,1) = BDD%XDESC_FSSUM(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PFSSUM,2).EQ.6) THEN
         PFSSUM(JLIST,1) = BDD%XDESC_FSSUM(DTT%NPAR_USETYPE(JLIST))
         PFSSUM(JLIST,2) = BDD%XDESC_FSSUM(DTT%NPAR_USETYPE(JLIST))
         PFSSUM(JLIST,3) = BDD%XDESC_FSSUM(DTT%NPAR_USETYPE(JLIST))
         PFSSUM(JLIST,4) = 0.0
         PFSSUM(JLIST,5) = BDD%XDESC_FSSUM(BDD%NDESC_POS_USE_COM)      
         PFSSUM(JLIST,6) = BDD%XDESC_FSSUM(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")               
      ENDIF
   ENDIF
   !
   IF (PRESENT(PFSNIG)) THEN
      IF (SIZE(PFSNIG,2).EQ.1) THEN    
         PFSNIG(JLIST,1) = BDD%XDESC_FSNIG(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PFSNIG,2).EQ.6) THEN
         PFSNIG(JLIST,1) = BDD%XDESC_FSNIG(DTT%NPAR_USETYPE(JLIST))
         PFSNIG(JLIST,2) = BDD%XDESC_FSNIG(DTT%NPAR_USETYPE(JLIST))
         PFSNIG(JLIST,3) = BDD%XDESC_FSNIG(DTT%NPAR_USETYPE(JLIST))
         PFSNIG(JLIST,4) = 0.0
         PFSNIG(JLIST,5) = BDD%XDESC_FSNIG(BDD%NDESC_POS_USE_COM)
         PFSNIG(JLIST,6) = BDD%XDESC_FSNIG(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")              
      ENDIF
   ENDIF
   !
   IF (PRESENT(PFSVAC)) THEN
      IF (SIZE(PFSVAC,2).EQ.1) THEN
         PFSVAC(JLIST,1) = BDD%XDESC_FSVAC(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PFSVAC,2).EQ.6) THEN
         PFSVAC(JLIST,1) = BDD%XDESC_FSVAC(DTT%NPAR_USETYPE(JLIST))
         PFSVAC(JLIST,2) = BDD%XDESC_FSVAC(DTT%NPAR_USETYPE(JLIST))
         PFSVAC(JLIST,3) = BDD%XDESC_FSVAC(DTT%NPAR_USETYPE(JLIST))
         PFSVAC(JLIST,4) = 0.0
         PFSVAC(JLIST,5) = BDD%XDESC_FSVAC(BDD%NDESC_POS_USE_COM)       
         PFSVAC(JLIST,6) = BDD%XDESC_FSVAC(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")              
      ENDIF
   ENDIF
   !
   IF (PRESENT(PWIN_SW_MAX)) THEN
      PWIN_SW_MAX(JLIST)=BDD%XDESC_WIN_SW_MAX(DTT%NPAR_USETYPE(JLIST))
   ENDIF
   !
ENDDO
!
! Initialisation of building occupation-related variables
!
DO JLIST=1,SIZE(DTT%NPAR_USETYPE)
   !
   IF (PRESENT(PPROBOCC)) THEN
      !
      IF (SIZE(PPROBOCC,3).EQ.1) THEN
         PPROBOCC(JLIST,:,1) = BDD%XDESC_PROBOCC(DTT%NPAR_USETYPE(JLIST),:)
      ELSEIF (SIZE(PPROBOCC,3).EQ.6) THEN
         PPROBOCC(JLIST,:,1) = BDD%XDESC_PROBOCC(DTT%NPAR_USETYPE(JLIST),:)
         PPROBOCC(JLIST,:,2) = BDD%XDESC_PROBOCC(DTT%NPAR_USETYPE(JLIST),:)
         PPROBOCC(JLIST,:,3) = BDD%XDESC_PROBOCC(DTT%NPAR_USETYPE(JLIST),:)
         PPROBOCC(JLIST,:,4) = 0.0
         PPROBOCC(JLIST,:,5) = BDD%XDESC_PROBOCC(BDD%NDESC_POS_USE_COM,:)
         PPROBOCC(JLIST,:,6) = BDD%XDESC_PROBOCC(BDD%NDESC_POS_USE_TER,:)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")    
      ENDIF
      !
      IF (MAXVAL(PPROBOCC(JLIST,:,:)).GT.1.0) CALL ABOR1_SFX ("Wrong building occuppation probability")
      IF (MINVAL(PPROBOCC(JLIST,:,:)).LT.0.0) CALL ABOR1_SFX ("Wrong building occuppation probability")
      !
   ENDIF 
   !
   ! Initialisation of schedules
   !
   IF (PRESENT(PDAYWBEG_SCHED)) THEN
      !
      IF (SIZE(PDAYWBEG_SCHED,3).EQ.1) THEN
         PDAYWBEG_SCHED(JLIST,:,1) = BDD%XDESC_DAYWBEG_SCHED(DTT%NPAR_USETYPE(JLIST),:)
      ELSEIF (SIZE(PDAYWBEG_SCHED,3).EQ.6) THEN
         PDAYWBEG_SCHED(JLIST,:,1) = BDD%XDESC_DAYWBEG_SCHED(DTT%NPAR_USETYPE(JLIST),:)
         PDAYWBEG_SCHED(JLIST,:,2) = BDD%XDESC_DAYWBEG_SCHED(DTT%NPAR_USETYPE(JLIST),:)
         PDAYWBEG_SCHED(JLIST,:,3) = BDD%XDESC_DAYWBEG_SCHED(DTT%NPAR_USETYPE(JLIST),:)
         PDAYWBEG_SCHED(JLIST,:,4) = BDD%XDESC_DAYWBEG_SCHED(DTT%NPAR_USETYPE(JLIST),:)
         PDAYWBEG_SCHED(JLIST,:,5) = BDD%XDESC_DAYWBEG_SCHED(BDD%NDESC_POS_USE_COM,:)
         PDAYWBEG_SCHED(JLIST,:,6) = BDD%XDESC_DAYWBEG_SCHED(BDD%NDESC_POS_USE_TER,:)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")              
      ENDIF
      !
   ENDIF
   !
   IF (PRESENT(PHOURBEG_SCHED)) THEN
      !
      IF (SIZE(PHOURBEG_SCHED,3).EQ.1) THEN   
         PHOURBEG_SCHED(JLIST,:,1) = BDD%XDESC_HOURBEG_SCHED(DTT%NPAR_USETYPE(JLIST),:)
      ELSEIF (SIZE(PHOURBEG_SCHED,3).EQ.6) THEN
         PHOURBEG_SCHED(JLIST,:,1) = BDD%XDESC_HOURBEG_SCHED(DTT%NPAR_USETYPE(JLIST),:)
         PHOURBEG_SCHED(JLIST,:,2) = BDD%XDESC_HOURBEG_SCHED(DTT%NPAR_USETYPE(JLIST),:)
         PHOURBEG_SCHED(JLIST,:,3) = BDD%XDESC_HOURBEG_SCHED(DTT%NPAR_USETYPE(JLIST),:)
         PHOURBEG_SCHED(JLIST,:,4) = BDD%XDESC_HOURBEG_SCHED(DTT%NPAR_USETYPE(JLIST),:)
         PHOURBEG_SCHED(JLIST,:,5) = BDD%XDESC_HOURBEG_SCHED(BDD%NDESC_POS_USE_COM,:)
         PHOURBEG_SCHED(JLIST,:,6) = BDD%XDESC_HOURBEG_SCHED(BDD%NDESC_POS_USE_TER,:)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")
      ENDIF
      !
   ENDIF
   !
   ! Initialisation of holidays
   !
   IF (PRESENT(PBEG_HOLIDAY)) THEN
      !
      IF (SIZE(PBEG_HOLIDAY,3).EQ.1) THEN
         PBEG_HOLIDAY(JLIST,:,1) = BDD%XDESC_BEG_HOLIDAY(DTT%NPAR_USETYPE(JLIST),:)       
      ELSEIF (SIZE(PBEG_HOLIDAY,3).EQ.6) THEN
         PBEG_HOLIDAY(JLIST,:,1) = BDD%XDESC_BEG_HOLIDAY(DTT%NPAR_USETYPE(JLIST),:)
         PBEG_HOLIDAY(JLIST,:,2) = BDD%XDESC_BEG_HOLIDAY(DTT%NPAR_USETYPE(JLIST),:)
         PBEG_HOLIDAY(JLIST,:,3) = BDD%XDESC_BEG_HOLIDAY(DTT%NPAR_USETYPE(JLIST),:)
         PBEG_HOLIDAY(JLIST,:,4) = BDD%XDESC_BEG_HOLIDAY(DTT%NPAR_USETYPE(JLIST),:)
         PBEG_HOLIDAY(JLIST,:,5) = BDD%XDESC_BEG_HOLIDAY(BDD%NDESC_POS_USE_COM,:)
         PBEG_HOLIDAY(JLIST,:,6) = BDD%XDESC_BEG_HOLIDAY(BDD%NDESC_POS_USE_TER,:)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")
      ENDIF
      !
   ENDIF
   !
   IF (PRESENT(PEND_HOLIDAY)) THEN
      !
      IF (SIZE(PEND_HOLIDAY,3).EQ.1) THEN
         PEND_HOLIDAY(JLIST,:,1) = BDD%XDESC_END_HOLIDAY(DTT%NPAR_USETYPE(JLIST),:)
      ELSEIF (SIZE(PEND_HOLIDAY,3).EQ.6) THEN
         PEND_HOLIDAY(JLIST,:,1) = BDD%XDESC_END_HOLIDAY(DTT%NPAR_USETYPE(JLIST),:)
         PEND_HOLIDAY(JLIST,:,2) = BDD%XDESC_END_HOLIDAY(DTT%NPAR_USETYPE(JLIST),:)
         PEND_HOLIDAY(JLIST,:,3) = BDD%XDESC_END_HOLIDAY(DTT%NPAR_USETYPE(JLIST),:)
         PEND_HOLIDAY(JLIST,:,4) = BDD%XDESC_END_HOLIDAY(DTT%NPAR_USETYPE(JLIST),:)
         PEND_HOLIDAY(JLIST,:,5) = BDD%XDESC_END_HOLIDAY(BDD%NDESC_POS_USE_COM,:)
         PEND_HOLIDAY(JLIST,:,6) = BDD%XDESC_END_HOLIDAY(BDD%NDESC_POS_USE_TER,:)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")           
      ENDIF
      !
   ENDIF
   !
   IF (PRESENT(PMOD_HOLIDAY)) THEN
      !
      IF (SIZE(PMOD_HOLIDAY,2).EQ.1) THEN      
         PMOD_HOLIDAY(JLIST,1) = BDD%XDESC_MOD_HOLIDAY(DTT%NPAR_USETYPE(JLIST))
      ELSEIF (SIZE(PMOD_HOLIDAY,2).EQ.6) THEN
         PMOD_HOLIDAY(JLIST,1) = BDD%XDESC_MOD_HOLIDAY(DTT%NPAR_USETYPE(JLIST))
         PMOD_HOLIDAY(JLIST,2) = BDD%XDESC_MOD_HOLIDAY(DTT%NPAR_USETYPE(JLIST))
         PMOD_HOLIDAY(JLIST,3) = BDD%XDESC_MOD_HOLIDAY(DTT%NPAR_USETYPE(JLIST))
         PMOD_HOLIDAY(JLIST,4) = BDD%XDESC_MOD_HOLIDAY(DTT%NPAR_USETYPE(JLIST))
         PMOD_HOLIDAY(JLIST,5) = BDD%XDESC_MOD_HOLIDAY(BDD%NDESC_POS_USE_COM)
         PMOD_HOLIDAY(JLIST,6) = BDD%XDESC_MOD_HOLIDAY(BDD%NDESC_POS_USE_TER)
      ELSE
         CALL ABOR1_SFX ("No rule for this number of compartments")                  
      ENDIF
      !
   ENDIF
   !
ENDDO
!
IF (LHOOK) CALL DR_HOOK('INI_DATA_PARAM_TEB',1,ZHOOK_HANDLE)
!-------------------------------------------------------------------------------
!
END SUBROUTINE INI_DATA_PARAM_TEB