|
SURFEX v7.3
General documentation of Surfex
|
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
1.8.0