SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/read_pgd_teb_parn.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE READ_PGD_TEB_PAR_n(HPROGRAM,KNI,HDIRIN)
00003 !     ################################################
00004 !
00005 !!****  *READ_PGD_TEB_PAR_n* - reads ISBA physiographic fields
00006 !!                        
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !!
00011 !!**  METHOD
00012 !!    ------
00013 !!
00014 !!    EXTERNAL
00015 !!    --------
00016 !!
00017 !!
00018 !!    IMPLICIT ARGUMENTS
00019 !!    ------------------
00020 !!
00021 !!    REFERENCE
00022 !!    ---------
00023 !!
00024 !!
00025 !!    AUTHOR
00026 !!    ------
00027 !!      V. Masson   *Meteo France*      
00028 !!
00029 !!    MODIFICATIONS
00030 !!    -------------
00031 !!      Original    05/2005
00032 !-------------------------------------------------------------------------------
00033 !
00034 !*       0.    DECLARATIONS
00035 !              ------------
00036 !
00037 USE MODD_TEB_GRID_n, ONLY :   NDIM
00038 USE MODD_TEB_n,      ONLY :   LECOCLIMAP, LGARDEN, CBEM
00039 USE MODD_DATA_TEB_n, ONLY :   NPAR_ROOF_LAYER, NPAR_WALL_LAYER, NPAR_ROAD_LAYER, &
00040                               NPAR_BLDTYPE, NPAR_USETYPE,                        &
00041                               NPAR_BLDCODE, NPAR_BLD_AGE,                        &
00042                               XPAR_Z0_TOWN, XPAR_BLD,                            &
00043                               XPAR_GARDEN, XPAR_ROAD_DIR, XPAR_GREENROOF,        &
00044                               XPAR_ALB_ROOF,                                     &
00045                               XPAR_EMIS_ROOF, XPAR_HC_ROOF, XPAR_TC_ROOF,        &
00046                               XPAR_D_ROOF, XPAR_ALB_ROAD, XPAR_EMIS_ROAD,        &
00047                               XPAR_HC_ROAD, XPAR_TC_ROAD, XPAR_D_ROAD,           &
00048                               XPAR_ALB_WALL, XPAR_EMIS_WALL, XPAR_HC_WALL,       &
00049                               XPAR_TC_WALL, XPAR_D_WALL, XPAR_BLD_HEIGHT,        &
00050                               XPAR_WALL_O_HOR,                                   &
00051                               XPAR_H_TRAFFIC, XPAR_LE_TRAFFIC,                   &
00052                               XPAR_H_INDUSTRY, XPAR_LE_INDUSTRY,                 &
00053                               LDATA_Z0_TOWN, LDATA_BLD, LDATA_ALB_ROOF,          &
00054                               LDATA_EMIS_ROOF, LDATA_HC_ROOF, LDATA_TC_ROOF,     &
00055                               LDATA_D_ROOF, LDATA_ALB_ROAD, LDATA_EMIS_ROAD,     &
00056                               LDATA_HC_ROAD, LDATA_TC_ROAD, LDATA_D_ROAD,        &
00057                               LDATA_ALB_WALL, LDATA_EMIS_WALL, LDATA_HC_WALL,    &
00058                               LDATA_TC_WALL, LDATA_D_WALL, LDATA_BLD_HEIGHT,     &
00059                               LDATA_WALL_O_HOR,                                  &
00060                               LDATA_H_TRAFFIC, LDATA_LE_TRAFFIC,                 &
00061                               LDATA_H_INDUSTRY, LDATA_LE_INDUSTRY ,              &
00062                               LDATA_GARDEN, LDATA_BLDTYPE, LDATA_GREENROOF,      &
00063                               LDATA_ROAD_DIR, LDATA_USETYPE, LDATA_BLD_AGE,      &
00064                               LDATA_ROUGH_ROOF, LDATA_ROUGH_WALL,                &
00065                               XPAR_ROUGH_WALL, XPAR_ROUGH_ROOF
00066 
00067 USE MODD_DATA_BEM_n, ONLY :   NPAR_FLOOR_LAYER,                                  &
00068                               XPAR_TCOOL_TARGET, XPAR_THEAT_TARGET,              &
00069                               XPAR_HC_FLOOR, XPAR_TC_FLOOR, XPAR_D_FLOOR,        & 
00070                               XPAR_F_WASTE_CAN, XPAR_SHADE, XPAR_NATVENT,        &
00071                               XPAR_EFF_HEAT, XPAR_QIN, XPAR_QIN_FRAD,            &
00072                               XPAR_SHGC, XPAR_U_WIN, XPAR_GR,                    &
00073                               XPAR_FLOOR_HEIGHT, XPAR_INF, XPAR_QIN_FLAT,        &
00074                               XPAR_HR_TARGET, XPAR_V_VENT, XPAR_CAP_SYS_HEAT,    &
00075                               XPAR_CAP_SYS_RAT, XPAR_T_ADP, XPAR_M_SYS_RAT,      &
00076                               XPAR_COP_RAT, XPAR_T_SIZE_MAX, XPAR_T_SIZE_MIN,    &
00077                               XPAR_F_WATER_COND, XPAR_SHGC_SH,                   &
00078                               LDATA_HC_FLOOR, LDATA_TC_FLOOR, LDATA_D_FLOOR,     &
00079                               LDATA_TCOOL_TARGET, LDATA_THEAT_TARGET,            &
00080                               LDATA_F_WASTE_CAN, LDATA_SHADE, LDATA_NATVENT,     &
00081                               LDATA_EFF_HEAT, LDATA_QIN, LDATA_QIN_FRAD,         &
00082                               LDATA_SHGC, LDATA_U_WIN, LDATA_GR,                 &
00083                               LDATA_FLOOR_HEIGHT, LDATA_INF, LDATA_QIN_FLAT,     &
00084                               LDATA_HR_TARGET, LDATA_V_VENT, LDATA_CAP_SYS_HEAT, &
00085                               LDATA_CAP_SYS_RAT, LDATA_T_ADP, LDATA_M_SYS_RAT,   &
00086                               LDATA_COP_RAT, LDATA_T_SIZE_MAX, LDATA_T_SIZE_MIN, &
00087                               LDATA_F_WATER_COND, LDATA_SHGC_SH
00088 !
00089 USE MODI_READ_SURF
00090 USE MODI_READ_BLD_DESCRIPTION
00091 USE MODI_GET_LUOUT
00092 USE MODI_BLDCODE
00093 USE MODI_ABOR1_SFX
00094 !
00095 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00096 USE PARKIND1  ,ONLY : JPRB
00097 !
00098 IMPLICIT NONE
00099 !
00100 !*       0.1   Declarations of arguments
00101 !              -------------------------
00102 !
00103  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! program calling
00104 INTEGER,           INTENT(IN)  :: KNI      ! size of the new domain
00105  CHARACTER(LEN=1),  INTENT(IN)  :: HDIRIN
00106 !
00107 !*       0.2   Declarations of local variables
00108 !              -------------------------------
00109 !
00110 INTEGER           :: ILUOUT         ! output listing logical unit
00111 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
00112  CHARACTER(LEN=12) :: YRECFM         ! Name of the article to be read
00113 INTEGER           :: JLAYER         ! loop index
00114 !
00115 INTEGER           :: IVERSION       ! surface version
00116 INTEGER           :: IBUGFIX        ! surface bugfix version
00117 REAL, DIMENSION(NDIM) :: ZWORK      ! work array
00118 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00119 !
00120 !-------------------------------------------------------------------------------
00121 IF (LHOOK) CALL DR_HOOK('READ_PGD_TEB_PAR_N',0,ZHOOK_HANDLE)
00122 !
00123  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00124 !
00125 YRECFM='VERSION'
00126  CALL READ_SURF(HPROGRAM,YRECFM,IVERSION,IRESP)
00127 YRECFM='BUG'
00128  CALL READ_SURF(HPROGRAM,YRECFM,IBUGFIX,IRESP)
00129 !
00130 IF (IVERSION<7 .AND. .NOT.LECOCLIMAP) THEN
00131   !
00132   LDATA_BLDTYPE     = .FALSE.
00133   LDATA_BLD_AGE     = .FALSE.
00134   LDATA_USETYPE     = .FALSE.
00135   LDATA_Z0_TOWN     = .TRUE.
00136   LDATA_BLD         = .TRUE.
00137   LDATA_GARDEN      = .TRUE.
00138   LDATA_GREENROOF   = .TRUE.
00139   LDATA_ROAD_DIR    = .FALSE.
00140   LDATA_ALB_ROOF    = .TRUE.
00141   LDATA_EMIS_ROOF   = .TRUE.
00142   LDATA_HC_ROOF     = .TRUE.
00143   LDATA_TC_ROOF     = .TRUE.
00144   LDATA_D_ROOF      = .TRUE.
00145   LDATA_ALB_ROAD    = .TRUE.
00146   LDATA_EMIS_ROAD   = .TRUE.
00147   LDATA_HC_ROAD     = .TRUE.
00148   LDATA_TC_ROAD     = .TRUE.
00149   LDATA_D_ROAD      = .TRUE.
00150   LDATA_ALB_WALL    = .TRUE.
00151   LDATA_EMIS_WALL   = .TRUE.
00152   LDATA_HC_WALL     = .TRUE.
00153   LDATA_TC_WALL     = .TRUE.
00154   LDATA_D_WALL      = .TRUE.
00155   LDATA_BLD_HEIGHT  = .TRUE.
00156   LDATA_WALL_O_HOR  = .TRUE.
00157   LDATA_H_TRAFFIC   = .TRUE.
00158   LDATA_LE_TRAFFIC  = .TRUE.
00159   LDATA_H_INDUSTRY  = .TRUE.
00160   LDATA_LE_INDUSTRY = .TRUE.
00161   LDATA_ROUGH_ROOF  = .FALSE.
00162   LDATA_ROUGH_WALL  = .FALSE.
00163   !
00164 ELSEIF (IVERSION>=7) THEN
00165   !
00166   IF (IVERSION>7 .OR. IBUGFIX>=3) THEN
00167     YRECFM='L_BLDTYPE'
00168     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_BLDTYPE,IRESP)
00169     YRECFM='L_BLD_AGE'
00170     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_BLD_AGE,IRESP)
00171     YRECFM='L_USETYPE'
00172     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_USETYPE,IRESP)
00173     IF (LDATA_BLDTYPE .OR. LDATA_BLD_AGE .OR. LDATA_USETYPE) CALL READ_BLD_DESCRIPTION(HPROGRAM)
00174   ENDIF
00175   YRECFM='L_Z0_TOWN'
00176   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_Z0_TOWN,IRESP)
00177   YRECFM='L_BLD'
00178   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_BLD,IRESP)
00179   IF (IVERSION>=6) THEN
00180     YRECFM='L_GARDEN'
00181     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_GARDEN,IRESP)
00182   ENDIF
00183   IF (IVERSION==7 .AND. IBUGFIX<=2) THEN
00184     LDATA_ROAD_DIR = .FALSE.
00185     LDATA_GREENROOF= .FALSE.
00186   ELSE
00187     YRECFM='L_ROAD_DIR'
00188     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ROAD_DIR,IRESP)
00189     YRECFM='L_GREENROOF'
00190     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_GREENROOF,IRESP)
00191   END IF
00192   YRECFM='L_ALB_ROOF'
00193   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALB_ROOF,IRESP)
00194   YRECFM='L_EMIS_ROOF'
00195   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_EMIS_ROOF,IRESP)
00196   YRECFM='L_HC_ROOF'
00197   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_HC_ROOF,IRESP)
00198   YRECFM='L_TC_ROOF'
00199   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_TC_ROOF,IRESP)
00200   YRECFM='L_D_ROOF'
00201   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_D_ROOF,IRESP)
00202   YRECFM='L_ALB_ROAD'
00203   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALB_ROAD,IRESP)
00204   YRECFM='L_EMIS_ROAD'
00205   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_EMIS_ROAD,IRESP)
00206   YRECFM='L_HC_ROAD'
00207   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_HC_ROAD,IRESP)
00208   YRECFM='L_TC_ROAD'
00209   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_TC_ROAD,IRESP)
00210   YRECFM='L_D_ROAD'
00211   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_D_ROAD,IRESP)
00212   YRECFM='L_ALB_WALL'
00213   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALB_WALL,IRESP)
00214   YRECFM='L_EMIS_WALL'
00215   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_EMIS_WALL,IRESP)
00216   YRECFM='L_HC_WALL'
00217   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_HC_WALL,IRESP)
00218   YRECFM='L_TC_WALL'
00219   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_TC_WALL,IRESP)
00220   YRECFM='L_D_WALL'
00221   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_D_WALL,IRESP)
00222   YRECFM='L_BLD_HEIGHT'
00223   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_BLD_HEIGHT,IRESP)
00224   YRECFM='L_WALL_O_HOR'
00225   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_WALL_O_HOR,IRESP)
00226   YRECFM='L_H_TRAF'
00227   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_H_TRAFFIC,IRESP)
00228   YRECFM='L_LE_TRAF'
00229   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_LE_TRAFFIC,IRESP)
00230   YRECFM='L_H_IND'
00231   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_H_INDUSTRY,IRESP)
00232   YRECFM='L_LE_IND'
00233   CALL READ_SURF(HPROGRAM,YRECFM,LDATA_LE_INDUSTRY,IRESP)
00234   IF (IVERSION>7 .OR. IBUGFIX>=3) THEN
00235     YRECFM='L_ROUGH_ROOF'
00236     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ROUGH_ROOF,IRESP)
00237     YRECFM='L_ROUGH_WALL'
00238     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ROUGH_WALL,IRESP)
00239   ENDIF
00240   !
00241   IF (CBEM=='BEM') THEN
00242     YRECFM='L_HC_FLOOR'
00243     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_HC_FLOOR,IRESP)
00244     YRECFM='L_TC_FLOOR'
00245     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_TC_FLOOR,IRESP)
00246     YRECFM='L_D_FLOOR'
00247     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_D_FLOOR,IRESP)            
00248     YRECFM='L_TCOOL_TARG'
00249     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_TCOOL_TARGET,IRESP)
00250     YRECFM='L_THEAT_TARG'
00251     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_THEAT_TARGET,IRESP)
00252     YRECFM='L_F_WAST_CAN'
00253     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_F_WASTE_CAN,IRESP)
00254     YRECFM='L_EFF_HEAT'
00255     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_EFF_HEAT,IRESP)
00256     YRECFM='L_QIN'
00257     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_QIN,IRESP)
00258     YRECFM='L_QIN_FRAD'
00259     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_QIN_FRAD,IRESP)
00260     YRECFM='L_SHGC'
00261     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_SHGC,IRESP)
00262     YRECFM='L_U_WIN'
00263     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_U_WIN,IRESP)
00264     YRECFM='L_GR'
00265     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_GR,IRESP)
00266     YRECFM='L_SHGC_SH'
00267     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_SHGC_SH,IRESP)    
00268     YRECFM='L_FLOOR_HEIG'
00269     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_FLOOR_HEIGHT,IRESP)
00270     YRECFM='L_INF'
00271     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_INF,IRESP)
00272     YRECFM='L_FWAT_COND'
00273     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_F_WATER_COND,IRESP)
00274     YRECFM='L_SHADE'
00275     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_SHADE,IRESP) 
00276     YRECFM='L_NATVENT'
00277     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_NATVENT,IRESP)     
00278     YRECFM='L_V_VENT'
00279     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_V_VENT,IRESP)    
00280     YRECFM='L_QIN_FLAT'
00281     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_QIN_FLAT,IRESP)
00282     YRECFM='L_HR_TARGET'
00283     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_HR_TARGET,IRESP)
00284     YRECFM='L_CAP_SYS_HE'
00285     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_CAP_SYS_HEAT,IRESP)
00286     YRECFM='L_CAP_SYS_RA'
00287     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_CAP_SYS_RAT,IRESP)
00288     YRECFM='L_T_ADP'
00289     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_T_ADP,IRESP)
00290     YRECFM='L_M_SYS_RAT'
00291     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_M_SYS_RAT,IRESP)
00292     YRECFM='L_COP_RAT'
00293     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_COP_RAT,IRESP)
00294     YRECFM='L_T_SIZE_MAX'
00295     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_T_SIZE_MAX,IRESP)
00296     YRECFM='L_T_SIZE_MIN'
00297     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_T_SIZE_MIN,IRESP)
00298   ENDIF
00299   !
00300 ENDIF
00301 !
00302 !* read number of layers if thermal properties are specified
00303 !
00304 IF (LDATA_HC_ROOF) THEN
00305   YRECFM='PAR_RF_LAYER'
00306   IF (IVERSION<7 .OR. (IVERSION==7 .AND. IBUGFIX<=2)) YRECFM='ROOF_LAYER'
00307   CALL READ_SURF(HPROGRAM,YRECFM,NPAR_ROOF_LAYER,IRESP)
00308 END IF
00309 !
00310 IF (LDATA_HC_ROAD) THEN
00311   YRECFM='PAR_RD_LAYER'
00312   IF (IVERSION<7 .OR. (IVERSION==7 .AND. IBUGFIX<=2)) YRECFM='ROAD_LAYER'
00313   CALL READ_SURF(HPROGRAM,YRECFM,NPAR_ROAD_LAYER,IRESP)
00314 END IF
00315 !
00316 IF (LDATA_HC_WALL) THEN
00317   YRECFM='PAR_WL_LAYER'
00318   IF (IVERSION<7 .OR. (IVERSION==7 .AND. IBUGFIX<=2)) YRECFM='WALL_LAYER'
00319   CALL READ_SURF(HPROGRAM,YRECFM,NPAR_WALL_LAYER,IRESP)
00320 END IF
00321 !
00322 IF (LDATA_HC_FLOOR) THEN
00323   YRECFM='PAR_FL_LAYER'
00324   IF (IVERSION<7 .OR. (IVERSION==7 .AND. IBUGFIX<=2)) YRECFM='FLOOR_LAYER'
00325   CALL READ_SURF(HPROGRAM,YRECFM,NPAR_FLOOR_LAYER,IRESP)
00326 END IF
00327 !
00328 !* read specified fields
00329 !
00330 IF (LDATA_BLDTYPE .AND. .NOT. LDATA_BLDTYPE) THEN
00331   CALL ABOR1_SFX('FATAL ERROR: Building type is prescribed but not the building age')
00332 END IF
00333 !
00334 IF (LDATA_BLDTYPE) THEN
00335   ALLOCATE(NPAR_BLDTYPE     (NDIM))    
00336   YRECFM='D_BLDTYPE'
00337   CALL READ_FIELD(YRECFM,ZWORK,HDIRIN)
00338   NPAR_BLDTYPE(:) = NINT(ZWORK)
00339 ENDIF
00340 !
00341 IF (LDATA_BLD_AGE) THEN
00342   ALLOCATE(NPAR_BLD_AGE     (NDIM))    
00343   YRECFM='D_BLD_AGE'
00344   CALL READ_FIELD(YRECFM,ZWORK,HDIRIN)
00345   NPAR_BLD_AGE(:) = NINT(ZWORK)
00346 ENDIF
00347 !
00348 IF (LDATA_BLDTYPE .AND. LDATA_BLDTYPE) THEN
00349   ALLOCATE(NPAR_BLDCODE(NDIM))
00350   NPAR_BLDCODE=BLDCODE(NPAR_BLDTYPE,NPAR_BLD_AGE)
00351 END IF
00352 !
00353 IF (LDATA_USETYPE) THEN
00354   ALLOCATE(NPAR_USETYPE     (NDIM))    
00355   YRECFM='D_USETYPE'
00356   CALL READ_FIELD(YRECFM,ZWORK,HDIRIN)
00357   NPAR_USETYPE(:) = NINT(ZWORK)
00358 ENDIF
00359 !
00360 IF (LDATA_Z0_TOWN) THEN
00361   ALLOCATE(XPAR_Z0_TOWN     (NDIM))
00362   YRECFM='D_Z0_TOWN'
00363   CALL READ_FIELD(YRECFM,XPAR_Z0_TOWN,HDIRIN)
00364 ENDIF
00365 !
00366 IF (LDATA_BLD) THEN
00367   ALLOCATE(XPAR_BLD         (NDIM))
00368   YRECFM='D_BLD'
00369   CALL READ_FIELD(YRECFM,XPAR_BLD,HDIRIN)
00370 ENDIF
00371 !
00372 IF (IVERSION>=6) THEN
00373   IF (LDATA_GARDEN) THEN
00374     ALLOCATE(XPAR_GARDEN      (NDIM))
00375     YRECFM='D_GARDEN'
00376     CALL READ_FIELD(YRECFM,XPAR_GARDEN,HDIRIN)
00377   ENDIF
00378 !
00379 ENDIF
00380 !
00381 IF (LDATA_GREENROOF) THEN
00382   ALLOCATE(XPAR_GREENROOF    (NDIM))
00383   YRECFM='D_GREENROOF'
00384   CALL READ_FIELD(YRECFM,XPAR_GREENROOF,HDIRIN)
00385 ENDIF
00386 !
00387 IF (LDATA_ROAD_DIR) THEN
00388   ALLOCATE(XPAR_ROAD_DIR    (NDIM))
00389   YRECFM='D_ROAD_DIR'
00390   CALL READ_FIELD(YRECFM,XPAR_ROAD_DIR,HDIRIN)
00391 ENDIF
00392 !
00393 IF (LDATA_ALB_ROOF) THEN
00394   ALLOCATE(XPAR_ALB_ROOF    (NDIM))        
00395   YRECFM='D_ALB_ROOF'
00396   CALL READ_FIELD(YRECFM,XPAR_ALB_ROOF,HDIRIN)
00397 ENDIF
00398 !
00399 IF (LDATA_EMIS_ROOF) THEN
00400   ALLOCATE(XPAR_EMIS_ROOF   (NDIM))        
00401   YRECFM='D_EMI_ROOF'
00402   CALL READ_FIELD(YRECFM,XPAR_EMIS_ROOF,HDIRIN)
00403 ENDIF
00404 !
00405 IF (LDATA_HC_ROOF) THEN
00406   ALLOCATE(XPAR_HC_ROOF     (NDIM,NPAR_ROOF_LAYER))
00407   DO JLAYER=1,NPAR_ROOF_LAYER
00408     WRITE(YRECFM,FMT='(A9,I1.1)') 'D_HC_ROOF',JLAYER
00409     CALL READ_FIELD(YRECFM,XPAR_HC_ROOF(:,JLAYER),HDIRIN)
00410   END DO
00411 ENDIF
00412 !
00413 IF (LDATA_TC_ROOF) THEN
00414   ALLOCATE(XPAR_TC_ROOF     (NDIM,NPAR_ROOF_LAYER))
00415   DO JLAYER=1,NPAR_ROOF_LAYER
00416     WRITE(YRECFM,FMT='(A9,I1.1)') 'D_TC_ROOF',JLAYER
00417     CALL READ_FIELD(YRECFM,XPAR_TC_ROOF(:,JLAYER),HDIRIN)
00418   END DO
00419 ENDIF
00420 !
00421 IF (LDATA_D_ROOF) THEN
00422   ALLOCATE(XPAR_D_ROOF      (NDIM,NPAR_ROOF_LAYER))
00423   DO JLAYER=1,NPAR_ROOF_LAYER
00424     WRITE(YRECFM,FMT='(A8,I1.1)') 'D_D_ROOF',JLAYER
00425     CALL READ_FIELD(YRECFM,XPAR_D_ROOF(:,JLAYER),HDIRIN)
00426   END DO
00427 ENDIF
00428 !
00429 IF (LDATA_ALB_ROAD) THEN
00430   ALLOCATE(XPAR_ALB_ROAD    (NDIM))
00431   YRECFM='D_ALB_ROAD'
00432   CALL READ_FIELD(YRECFM,XPAR_ALB_ROAD,HDIRIN)
00433 ENDIF
00434 !
00435 IF (LDATA_EMIS_ROAD) THEN
00436   ALLOCATE(XPAR_EMIS_ROAD   (NDIM))
00437   YRECFM='D_EMI_ROAD'
00438   CALL READ_FIELD(YRECFM,XPAR_EMIS_ROAD,HDIRIN)
00439 ENDIF
00440 !
00441 IF (LDATA_HC_ROAD) THEN
00442   ALLOCATE(XPAR_HC_ROAD     (NDIM,NPAR_ROAD_LAYER))
00443   DO JLAYER=1,NPAR_ROAD_LAYER
00444     WRITE(YRECFM,FMT='(A9,I1.1)') 'D_HC_ROAD',JLAYER
00445     CALL READ_FIELD(YRECFM,XPAR_HC_ROAD(:,JLAYER),HDIRIN)
00446   END DO
00447 ENDIF
00448 !
00449 IF (LDATA_TC_ROAD) THEN
00450   ALLOCATE(XPAR_TC_ROAD     (NDIM,NPAR_ROAD_LAYER))
00451   DO JLAYER=1,NPAR_ROAD_LAYER
00452     WRITE(YRECFM,FMT='(A9,I1.1)') 'D_TC_ROAD',JLAYER
00453     CALL READ_FIELD(YRECFM,XPAR_TC_ROAD(:,JLAYER),HDIRIN)
00454   END DO
00455 ENDIF
00456 !
00457 IF (LDATA_D_ROAD) THEN
00458   ALLOCATE(XPAR_D_ROAD      (NDIM,NPAR_ROAD_LAYER))
00459   DO JLAYER=1,NPAR_ROAD_LAYER
00460     WRITE(YRECFM,FMT='(A8,I1.1)') 'D_D_ROAD',JLAYER
00461     CALL READ_FIELD(YRECFM,XPAR_D_ROAD(:,JLAYER),HDIRIN)
00462   END DO
00463 ENDIF
00464 !
00465 IF (LDATA_ALB_WALL) THEN
00466   ALLOCATE(XPAR_ALB_WALL    (NDIM))
00467   YRECFM='D_ALB_WALL'
00468   CALL READ_FIELD(YRECFM,XPAR_ALB_WALL,HDIRIN)
00469 ENDIF
00470 !
00471 IF (LDATA_EMIS_WALL) THEN
00472   ALLOCATE(XPAR_EMIS_WALL   (NDIM))
00473   YRECFM='D_EMI_WALL'
00474   CALL READ_FIELD(YRECFM,XPAR_EMIS_WALL,HDIRIN)
00475 ENDIF
00476 !
00477 IF (LDATA_HC_WALL) THEN
00478   ALLOCATE(XPAR_HC_WALL     (NDIM,NPAR_WALL_LAYER))
00479   DO JLAYER=1,NPAR_WALL_LAYER
00480     WRITE(YRECFM,FMT='(A9,I1.1)') 'D_HC_WALL',JLAYER
00481     CALL READ_FIELD(YRECFM,XPAR_HC_WALL(:,JLAYER),HDIRIN)
00482   END DO
00483 ENDIF
00484 !
00485 IF (LDATA_TC_WALL) THEN
00486   ALLOCATE(XPAR_TC_WALL     (NDIM,NPAR_WALL_LAYER))
00487   DO JLAYER=1,NPAR_WALL_LAYER
00488     WRITE(YRECFM,FMT='(A9,I1.1)') 'D_TC_WALL',JLAYER
00489     CALL READ_FIELD(YRECFM,XPAR_TC_WALL(:,JLAYER),HDIRIN)
00490   END DO
00491 ENDIF
00492 !
00493 IF (LDATA_D_WALL) THEN
00494   ALLOCATE(XPAR_D_WALL      (NDIM,NPAR_WALL_LAYER))
00495   DO JLAYER=1,NPAR_WALL_LAYER
00496     WRITE(YRECFM,FMT='(A8,I1.1)') 'D_D_WALL',JLAYER
00497     CALL READ_FIELD(YRECFM,XPAR_D_WALL(:,JLAYER),HDIRIN)
00498   END DO
00499 ENDIF
00500 !
00501 IF (LDATA_BLD_HEIGHT) THEN
00502   ALLOCATE(XPAR_BLD_HEIGHT  (NDIM))
00503   YRECFM='D_BLD_HEIG'
00504   CALL READ_FIELD(YRECFM,XPAR_BLD_HEIGHT,HDIRIN)
00505 ENDIF
00506 !
00507 IF (LDATA_WALL_O_HOR) THEN
00508   ALLOCATE(XPAR_WALL_O_HOR  (NDIM))
00509   YRECFM='D_WALL_O_H'
00510   CALL READ_FIELD(YRECFM,XPAR_WALL_O_HOR,HDIRIN)
00511 ENDIF
00512 !
00513 IF (LDATA_H_TRAFFIC) THEN
00514   ALLOCATE(XPAR_H_TRAFFIC   (NDIM))
00515   YRECFM='D_H_TRAF'
00516   CALL READ_FIELD(YRECFM,XPAR_H_TRAFFIC,HDIRIN)
00517 ENDIF
00518 !
00519 IF (LDATA_LE_TRAFFIC) THEN
00520   ALLOCATE(XPAR_LE_TRAFFIC  (NDIM))
00521   YRECFM='D_LE_TRAF'
00522   CALL READ_FIELD(YRECFM,XPAR_LE_TRAFFIC,HDIRIN)
00523 ENDIF
00524 !
00525 IF (LDATA_H_INDUSTRY) THEN
00526   ALLOCATE(XPAR_H_INDUSTRY  (NDIM))
00527   YRECFM='D_H_IND'
00528   CALL READ_FIELD(YRECFM,XPAR_H_INDUSTRY,HDIRIN)
00529 ENDIF
00530 !
00531 IF (LDATA_LE_INDUSTRY) THEN
00532   ALLOCATE(XPAR_LE_INDUSTRY (NDIM))
00533   YRECFM='D_LE_IND'
00534   CALL READ_FIELD(YRECFM,XPAR_LE_INDUSTRY,HDIRIN)
00535 ENDIF
00536 !
00537 IF (LDATA_ROUGH_ROOF) THEN
00538   ALLOCATE(XPAR_ROUGH_ROOF (NDIM))
00539   YRECFM='D_ROUGH_ROOF'
00540   CALL READ_FIELD(YRECFM,XPAR_ROUGH_ROOF,HDIRIN)
00541 ENDIF
00542 !
00543 IF (LDATA_ROUGH_WALL) THEN
00544   ALLOCATE(XPAR_ROUGH_WALL (NDIM))
00545   YRECFM='D_ROUGH_WALL'
00546   CALL READ_FIELD(YRECFM,XPAR_ROUGH_WALL,HDIRIN)
00547 ENDIF
00548 !
00549 IF (CBEM=='BEM') THEN
00550   !
00551 
00552   IF (LDATA_HC_FLOOR) THEN
00553     ALLOCATE(XPAR_HC_FLOOR    (NDIM,NPAR_FLOOR_LAYER))
00554     DO JLAYER=1,NPAR_FLOOR_LAYER
00555       WRITE(YRECFM,FMT='(A10,I1.1)') 'D_HC_FLOOR',JLAYER
00556       CALL READ_FIELD(YRECFM,XPAR_HC_FLOOR(:,JLAYER),HDIRIN)
00557     END DO
00558   ENDIF
00559   !
00560   IF (LDATA_TC_FLOOR) THEN
00561     ALLOCATE(XPAR_TC_FLOOR    (NDIM,NPAR_FLOOR_LAYER))
00562     DO JLAYER=1,NPAR_FLOOR_LAYER
00563       WRITE(YRECFM,FMT='(A10,I1.1)') 'D_TC_FLOOR',JLAYER
00564       CALL READ_FIELD(YRECFM,XPAR_TC_FLOOR(:,JLAYER),HDIRIN)
00565     END DO
00566   ENDIF
00567   !
00568   IF (LDATA_D_FLOOR) THEN
00569     ALLOCATE(XPAR_D_FLOOR     (NDIM,NPAR_FLOOR_LAYER))
00570     DO JLAYER=1,NPAR_FLOOR_LAYER
00571       WRITE(YRECFM,FMT='(A9,I1.1)') 'D_D_FLOOR',JLAYER
00572       CALL READ_FIELD(YRECFM,XPAR_D_FLOOR(:,JLAYER),HDIRIN)
00573     END DO
00574   ENDIF
00575   !
00576   IF (LDATA_TCOOL_TARGET) THEN
00577     ALLOCATE(XPAR_TCOOL_TARGET  (NDIM))
00578     YRECFM='D_TCOOL_TARG'
00579     CALL READ_FIELD(YRECFM,XPAR_TCOOL_TARGET,HDIRIN)
00580   ENDIF
00581   !
00582   IF (LDATA_THEAT_TARGET) THEN
00583     ALLOCATE(XPAR_THEAT_TARGET  (NDIM))
00584     YRECFM='D_THEAT_TARG'
00585     CALL READ_FIELD(YRECFM,XPAR_THEAT_TARGET,HDIRIN)
00586   ENDIF
00587   !
00588   IF (LDATA_F_WASTE_CAN) THEN
00589     ALLOCATE(XPAR_F_WASTE_CAN   (NDIM))
00590     YRECFM='D_F_WAST_CAN'
00591     CALL READ_FIELD(YRECFM,XPAR_F_WASTE_CAN,HDIRIN)
00592   ENDIF
00593   !
00594   IF (LDATA_EFF_HEAT) THEN
00595     ALLOCATE(XPAR_EFF_HEAT      (NDIM))
00596     YRECFM='D_EFF_HEAT'
00597     CALL READ_FIELD(YRECFM,XPAR_EFF_HEAT,HDIRIN)
00598   ENDIF
00599   !
00600   IF (LDATA_QIN) THEN
00601     ALLOCATE(XPAR_QIN           (NDIM))
00602     YRECFM='D_QIN'
00603     CALL READ_FIELD(YRECFM,XPAR_QIN,HDIRIN)
00604   ENDIF
00605   !
00606   IF (LDATA_QIN_FRAD) THEN
00607     ALLOCATE(XPAR_QIN_FRAD      (NDIM))
00608     YRECFM='D_QIN_FRAD'
00609     CALL READ_FIELD(YRECFM,XPAR_QIN_FRAD,HDIRIN)
00610   ENDIF
00611   !
00612   IF (LDATA_SHGC) THEN
00613     ALLOCATE(XPAR_SHGC          (NDIM))
00614     YRECFM='D_SHGC'
00615     CALL READ_FIELD(YRECFM,XPAR_SHGC,HDIRIN)
00616   ENDIF
00617   !
00618   IF (LDATA_U_WIN) THEN
00619     ALLOCATE(XPAR_U_WIN         (NDIM))
00620     YRECFM='D_U_WIN'
00621     CALL READ_FIELD(YRECFM,XPAR_U_WIN,HDIRIN)
00622   ENDIF
00623   !
00624   IF (LDATA_GR) THEN
00625     ALLOCATE(XPAR_GR            (NDIM))
00626     YRECFM='D_GR'
00627     CALL READ_FIELD(YRECFM,XPAR_GR,HDIRIN)
00628   ENDIF
00629   !
00630   IF (LDATA_SHGC_SH) THEN
00631     ALLOCATE(XPAR_SHGC_SH       (NDIM))
00632     YRECFM='D_SHGC_SH'
00633     CALL READ_FIELD(YRECFM,XPAR_SHGC_SH,HDIRIN)
00634   ENDIF
00635   !
00636   IF (LDATA_FLOOR_HEIGHT) THEN
00637     ALLOCATE(XPAR_FLOOR_HEIGHT  (NDIM))
00638     YRECFM='D_FLOOR_HEIG'
00639     CALL READ_FIELD(YRECFM,XPAR_FLOOR_HEIGHT,HDIRIN)
00640   ENDIF
00641   !
00642   IF (LDATA_INF) THEN
00643     ALLOCATE(XPAR_INF           (NDIM))
00644     YRECFM='D_INF'
00645     CALL READ_FIELD(YRECFM,XPAR_INF,HDIRIN)
00646   ENDIF
00647   !
00648   IF (LDATA_F_WATER_COND) THEN
00649      ALLOCATE(XPAR_F_WATER_COND (NDIM))
00650     YRECFM='D_FWAT_COND'
00651     CALL READ_FIELD(YRECFM,XPAR_F_WATER_COND,HDIRIN)
00652   ENDIF
00653   !
00654   IF (LDATA_SHADE) THEN
00655     ALLOCATE(XPAR_SHADE        (NDIM))
00656     YRECFM='D_SHADE'
00657     CALL READ_FIELD(YRECFM,XPAR_SHADE,HDIRIN)
00658     XPAR_SHADE=FLOAT(NINT(XPAR_SHADE))
00659   ENDIF
00660   !
00661   IF (LDATA_NATVENT) THEN
00662     ALLOCATE(XPAR_NATVENT      (NDIM))
00663     YRECFM='D_NATVENT'
00664     CALL READ_FIELD(YRECFM,XPAR_NATVENT,HDIRIN)
00665     XPAR_NATVENT=FLOAT(NINT(XPAR_NATVENT))
00666   ENDIF
00667   !  
00668   IF (LDATA_QIN_FLAT) THEN
00669     ALLOCATE(XPAR_QIN_FLAT     (NDIM))
00670     YRECFM='D_QIN_FLAT'
00671     CALL READ_FIELD(YRECFM,XPAR_QIN_FLAT,HDIRIN)
00672   ENDIF
00673   !
00674   IF (LDATA_HR_TARGET) THEN
00675     ALLOCATE(XPAR_HR_TARGET    (NDIM))
00676     YRECFM='D_HR_TARGET'
00677     CALL READ_FIELD(YRECFM,XPAR_HR_TARGET,HDIRIN)
00678   ENDIF
00679   !
00680   IF (LDATA_V_VENT) THEN
00681     ALLOCATE(XPAR_V_VENT       (NDIM))
00682     YRECFM='D_V_VENT'
00683     CALL READ_FIELD(YRECFM,XPAR_V_VENT,HDIRIN)
00684   ENDIF
00685   !
00686   IF (LDATA_CAP_SYS_HEAT) THEN
00687     ALLOCATE(XPAR_CAP_SYS_HEAT (NDIM))
00688     YRECFM='D_CAP_SYS_HE'
00689     CALL READ_FIELD(YRECFM,XPAR_CAP_SYS_HEAT,HDIRIN)
00690   ENDIF
00691   !
00692   IF (LDATA_CAP_SYS_RAT) THEN
00693     ALLOCATE(XPAR_CAP_SYS_RAT  (NDIM))
00694     YRECFM='D_CAP_SYS_RA'
00695     CALL READ_FIELD(YRECFM,XPAR_CAP_SYS_RAT,HDIRIN)
00696   ENDIF
00697   !
00698   IF (LDATA_T_ADP) THEN
00699     ALLOCATE(XPAR_T_ADP        (NDIM))
00700     YRECFM='D_T_ADP'
00701     CALL READ_FIELD(YRECFM,XPAR_T_ADP,HDIRIN)
00702   ENDIF
00703   !
00704   IF (LDATA_M_SYS_RAT) THEN
00705     ALLOCATE(XPAR_M_SYS_RAT    (NDIM))
00706     YRECFM='D_M_SYS_RAT'
00707     CALL READ_FIELD(YRECFM,XPAR_M_SYS_RAT,HDIRIN)
00708   ENDIF
00709   !
00710   IF (LDATA_COP_RAT) THEN
00711     ALLOCATE(XPAR_COP_RAT      (NDIM))
00712     YRECFM='D_COP_RAT'
00713     CALL READ_FIELD(YRECFM,XPAR_COP_RAT,HDIRIN)
00714   ENDIF
00715   !
00716   IF (LDATA_T_SIZE_MAX) THEN
00717     ALLOCATE(XPAR_T_SIZE_MAX   (NDIM))
00718     YRECFM='D_T_SIZE_MAX'
00719     CALL READ_FIELD(YRECFM,XPAR_T_SIZE_MAX,HDIRIN)
00720   ENDIF
00721   !
00722   IF (LDATA_T_SIZE_MIN) THEN
00723     ALLOCATE(XPAR_T_SIZE_MIN   (NDIM))
00724     YRECFM='D_T_SIZE_MIN'
00725     CALL READ_FIELD(YRECFM,XPAR_T_SIZE_MIN,HDIRIN)
00726   ENDIF
00727   !
00728 ENDIF
00729 !
00730 IF (LHOOK) CALL DR_HOOK('READ_PGD_TEB_PAR_N',1,ZHOOK_HANDLE)
00731 !
00732 !-------------------------------------------------------------------------------
00733 CONTAINS
00734 !-------------------------------------------------------------------------------
00735 !
00736 SUBROUTINE READ_FIELD(HRECFM,PFIELD,YDIR)
00737 !
00738 USE MODI_HOR_INTERPOL
00739 !
00740 IMPLICIT NONE
00741 !
00742  CHARACTER(LEN=*),     INTENT(IN)  :: HRECFM ! name of record in the file
00743 REAL, DIMENSION(NDIM), INTENT(OUT) :: PFIELD
00744  CHARACTER(LEN=1),     INTENT(IN)  :: YDIR
00745 !
00746 REAL, DIMENSION(KNI)              :: ZF
00747 REAL, DIMENSION(:,:), POINTER     :: ZIN
00748 REAL, DIMENSION(NDIM,1)           :: ZOUT
00749 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00750 !
00751 IF (LHOOK) CALL DR_HOOK('READ_PGD_TEB_PAR_N:READ_FIELD',0,ZHOOK_HANDLE)
00752 !
00753 IF (YDIR=='A') THEN
00754   !
00755   CALL READ_SURF(HPROGRAM,HRECFM,ZF,IRESP,HDIR='A')
00756   ALLOCATE(ZIN(KNI,1))
00757   ZIN(:,1) = ZF(:)
00758   CALL HOR_INTERPOL(ILUOUT,ZIN,ZOUT)
00759   DEALLOCATE(ZIN)
00760   PFIELD(:) = ZOUT(:,1)
00761   !
00762 ELSE
00763   CALL READ_SURF(HPROGRAM,HRECFM,PFIELD,IRESP)
00764 ENDIF
00765 !
00766 IF (LHOOK) CALL DR_HOOK('READ_PGD_TEB_PAR_N:READ_FIELD',1,ZHOOK_HANDLE)
00767 !
00768 END SUBROUTINE READ_FIELD
00769 !_______________________________
00770 !
00771 END SUBROUTINE READ_PGD_TEB_PAR_n