SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE READ_PGD_ISBA_PAR_n(HPROGRAM,KSIZE,OLAND_USE,HDIR) 00003 ! ################################################ 00004 ! 00005 !!**** *READ_PGD_ISBA_PAR_n* - reads ISBA physiographic fields 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 !! 00010 !!** METHOD 00011 !! ------ 00012 !! 00013 !! EXTERNAL 00014 !! -------- 00015 !! 00016 !! 00017 !! IMPLICIT ARGUMENTS 00018 !! ------------------ 00019 !! 00020 !! REFERENCE 00021 !! --------- 00022 !! 00023 !! 00024 !! AUTHOR 00025 !! ------ 00026 !! V. Masson *Meteo France* 00027 !! 00028 !! MODIFICATIONS 00029 !! ------------- 00030 !! Original 01/2003 00031 !! P. Le Moigne 12/2004 : add type of photosynthesis 00032 !------------------------------------------------------------------------------- 00033 ! 00034 !* 0. DECLARATIONS 00035 ! ------------ 00036 ! 00037 USE MODD_DATA_COVER_PAR, ONLY : NVEGTYPE 00038 USE MODD_PREP, ONLY : LINTERP 00039 ! 00040 USE MODD_ISBA_GRID_n, ONLY : NDIM 00041 USE MODD_ISBA_n, ONLY : LECOCLIMAP, NGROUND_LAYER 00042 USE MODD_DATA_ISBA_n, ONLY : NTIME, XPAR_VEG, XPAR_LAI,XPAR_RSMIN,XPAR_GAMMA,XPAR_WRMAX_CF, & 00043 XPAR_RGL,XPAR_CV,XPAR_DG,XPAR_Z0,XPAR_Z0_O_Z0H, & 00044 XPAR_ALBNIR_VEG,XPAR_ALBVIS_VEG, XPAR_ALBUV_VEG, & 00045 XPAR_ALBNIR_SOIL,XPAR_ALBVIS_SOIL, XPAR_ALBUV_SOIL, & 00046 XPAR_EMIS, XPAR_DICE, & 00047 XPAR_VEGTYPE,XPAR_ROOTFRAC, & 00048 XPAR_GMES,XPAR_BSLAI,XPAR_LAIMIN,XPAR_SEFOLD,XPAR_GC, & 00049 XPAR_DMAX, XPAR_F2I, LPAR_STRESS, XPAR_H_TREE,XPAR_RE25,& 00050 XPAR_CE_NITRO,XPAR_CF_NITRO,XPAR_CNA_NITRO, & 00051 XPAR_GROUND_DEPTH, XPAR_ROOT_DEPTH, & 00052 XPAR_ROOT_EXTINCTION, XPAR_ROOT_LIN, & 00053 LPAR_STRESS, XPAR_IRRIG, XPAR_WATSUP, & 00054 LDATA_VEGTYPE, LDATA_LAI, LDATA_H_TREE, LDATA_DG, LDATA_ROOTFRAC,& 00055 LDATA_VEG, LDATA_Z0, LDATA_EMIS, LDATA_DICE, & 00056 LDATA_RSMIN, LDATA_GAMMA, LDATA_WRMAX_CF, LDATA_RGL, & 00057 LDATA_CV, LDATA_Z0_O_Z0H, & 00058 LDATA_ALBNIR_VEG, LDATA_ALBVIS_VEG, LDATA_ALBUV_VEG, & 00059 LDATA_ALBVIS_SOIL, LDATA_ALBNIR_SOIL, LDATA_ALBUV_SOIL, & 00060 LDATA_GMES, LDATA_BSLAI, LDATA_SEFOLD, LDATA_GC, LDATA_DMAX, & 00061 LDATA_RE25, LDATA_LAIMIN, LDATA_F2I, & 00062 LDATA_CE_NITRO,LDATA_CF_NITRO, LDATA_CNA_NITRO,& 00063 LDATA_STRESS, LDATA_IRRIG, LDATA_WATSUP ,& 00064 LDATA_GROUND_DEPTH, LDATA_ROOT_DEPTH, & 00065 LDATA_ROOT_EXTINCTION, LDATA_ROOT_LIN, LDATA_MIXPAR 00066 ! 00067 USE MODI_GET_LUOUT 00068 USE MODI_READ_SURF 00069 USE MODI_HOR_INTERPOL 00070 USE MODI_READ_SURF_ISBA_PAR_n 00071 ! 00072 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00073 USE PARKIND1 ,ONLY : JPRB 00074 ! 00075 IMPLICIT NONE 00076 ! 00077 !* 0.1 Declarations of arguments 00078 ! ------------------------- 00079 ! 00080 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling 00081 INTEGER, INTENT(IN) :: KSIZE 00082 LOGICAL, INTENT(IN) :: OLAND_USE ! 00083 CHARACTER(LEN=1),OPTIONAL,INTENT(IN) :: HDIR ! type of field : 00084 ! ! 'H' : field with 00085 ! ! horizontal spatial dim. 00086 ! ! '-' : no horizontal dim. 00087 ! 00088 !* 0.2 Declarations of local variables 00089 ! ------------------------------- 00090 ! 00091 REAL, DIMENSION(KSIZE,NVEGTYPE) :: ZFIELD 00092 REAL, DIMENSION(:,:), ALLOCATABLE :: ZWORK 00093 INTEGER :: ILUOUT 00094 INTEGER :: ITIME 00095 INTEGER :: IRESP ! IRESP : return-code if a problem appears 00096 CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read 00097 CHARACTER(LEN=16) :: YRECFM2 00098 CHARACTER(LEN=100):: YCOMMENT ! Comment string 00099 CHARACTER(LEN=1) :: YDIR 00100 INTEGER :: JTIME ! loop index 00101 INTEGER :: JLAYER ! loop index 00102 INTEGER :: JPATCH ! loop index 00103 INTEGER :: IVERSION ! surface version 00104 INTEGER :: IBUGFIX 00105 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00106 ! 00107 ! 00108 !------------------------------------------------------------------------------- 00109 ! 00110 IF (LHOOK) CALL DR_HOOK('READ_PGD_ISBA_PAR_N',0,ZHOOK_HANDLE) 00111 ! 00112 CALL GET_LUOUT(HPROGRAM,ILUOUT) 00113 ! 00114 YDIR = 'H' 00115 IF (PRESENT(HDIR)) YDIR = HDIR 00116 ! 00117 YRECFM='VERSION' 00118 CALL READ_SURF(HPROGRAM,YRECFM,IVERSION,IRESP) 00119 WRITE(ILUOUT,*) 'read version ',IVERSION 00120 ! 00121 YRECFM='BUG' 00122 CALL READ_SURF(HPROGRAM,YRECFM,IBUGFIX,IRESP) 00123 ! 00124 LDATA_MIXPAR = .FALSE. 00125 ! 00126 IF (IVERSION<7 .AND. .NOT.LECOCLIMAP) THEN 00127 ! 00128 LDATA_VEGTYPE=.TRUE. 00129 LDATA_VEG=.TRUE. 00130 LDATA_LAI=.TRUE. 00131 LDATA_Z0=.TRUE. 00132 LDATA_EMIS=.TRUE. 00133 LDATA_RSMIN=.TRUE. 00134 LDATA_GAMMA=.TRUE. 00135 LDATA_WRMAX_CF=.TRUE. 00136 LDATA_RGL=.TRUE. 00137 LDATA_CV=.TRUE. 00138 LDATA_Z0_O_Z0H=.TRUE. 00139 LDATA_DG=.TRUE. 00140 LDATA_ROOTFRAC=.TRUE. 00141 ! 00142 LDATA_DICE=.FALSE. 00143 LDATA_GROUND_DEPTH=.FALSE. 00144 LDATA_ROOT_DEPTH=.FALSE. 00145 LDATA_ROOT_LIN=.FALSE. 00146 LDATA_ROOT_EXTINCTION=.FALSE. 00147 ! 00148 LDATA_ALBNIR_VEG=.TRUE. 00149 LDATA_ALBVIS_VEG=.TRUE. 00150 LDATA_ALBUV_VEG=.TRUE. 00151 LDATA_ALBNIR_SOIL=.TRUE. 00152 LDATA_ALBVIS_SOIL=.TRUE. 00153 LDATA_ALBUV_SOIL=.TRUE. 00154 LDATA_GMES=.TRUE. 00155 LDATA_BSLAI=.TRUE. 00156 LDATA_LAIMIN=.TRUE. 00157 LDATA_SEFOLD=.TRUE. 00158 LDATA_GC=.TRUE. 00159 LDATA_DMAX=.TRUE. 00160 LDATA_F2I=.TRUE. 00161 LDATA_STRESS=.TRUE. 00162 LDATA_H_TREE=.TRUE. 00163 LDATA_RE25=.TRUE. 00164 LDATA_CE_NITRO=.TRUE. 00165 LDATA_CF_NITRO=.TRUE. 00166 LDATA_CNA_NITRO=.TRUE. 00167 ! 00168 LDATA_IRRIG=.FALSE. 00169 LDATA_WATSUP=.FALSE. 00170 ! 00171 ENDIF 00172 ! 00173 IF (.NOT.OLAND_USE) THEN 00174 ! 00175 IF (IVERSION>=7) THEN 00176 ! 00177 YRECFM='L_VEGTYPE' 00178 YCOMMENT=YRECFM 00179 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_VEGTYPE,IRESP,HCOMMENT=YCOMMENT) 00180 IF (LDATA_VEGTYPE) LDATA_MIXPAR = .TRUE. 00181 ! 00182 YRECFM='L_VEG' 00183 YCOMMENT=YRECFM 00184 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_VEG,IRESP,HCOMMENT=YCOMMENT) 00185 IF (LDATA_VEG) LDATA_MIXPAR = .TRUE. 00186 YRECFM='L_LAI' 00187 YCOMMENT=YRECFM 00188 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_LAI,IRESP,HCOMMENT=YCOMMENT) 00189 IF (LDATA_LAI) LDATA_MIXPAR = .TRUE. 00190 YRECFM='L_Z0' 00191 YCOMMENT=YRECFM 00192 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_Z0,IRESP,HCOMMENT=YCOMMENT) 00193 IF (LDATA_Z0) LDATA_MIXPAR = .TRUE. 00194 YRECFM='L_EMIS' 00195 YCOMMENT=YRECFM 00196 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_EMIS,IRESP,HCOMMENT=YCOMMENT) 00197 IF (LDATA_EMIS) LDATA_MIXPAR = .TRUE. 00198 ! 00199 YRECFM='L_RSMIN' 00200 YCOMMENT=YRECFM 00201 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_RSMIN,IRESP,HCOMMENT=YCOMMENT) 00202 IF (LDATA_RSMIN) LDATA_MIXPAR = .TRUE. 00203 YRECFM='L_GAMMA' 00204 YCOMMENT=YRECFM 00205 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_GAMMA,IRESP,HCOMMENT=YCOMMENT) 00206 IF (LDATA_GAMMA) LDATA_MIXPAR = .TRUE. 00207 YRECFM='L_WRMAX_CF' 00208 YCOMMENT=YRECFM 00209 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_WRMAX_CF,IRESP,HCOMMENT=YCOMMENT) 00210 IF (LDATA_WRMAX_CF) LDATA_MIXPAR = .TRUE. 00211 YRECFM='L_RGL' 00212 YCOMMENT=YRECFM 00213 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_RGL,IRESP,HCOMMENT=YCOMMENT) 00214 IF (LDATA_RGL) LDATA_MIXPAR = .TRUE. 00215 YRECFM='L_CV' 00216 YCOMMENT=YRECFM 00217 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_CV,IRESP,HCOMMENT=YCOMMENT) 00218 IF (LDATA_CV) LDATA_MIXPAR = .TRUE. 00219 YRECFM='L_Z0_O_Z0H' 00220 YCOMMENT=YRECFM 00221 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_Z0_O_Z0H,IRESP,HCOMMENT=YCOMMENT) 00222 IF (LDATA_Z0_O_Z0H) LDATA_MIXPAR = .TRUE. 00223 YRECFM='L_DG' 00224 YCOMMENT=YRECFM 00225 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_DG,IRESP,HCOMMENT=YCOMMENT) 00226 IF (LDATA_DG) LDATA_MIXPAR = .TRUE. 00227 YRECFM='L_ROOTFRAC' 00228 YCOMMENT=YRECFM 00229 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ROOTFRAC,IRESP,HCOMMENT=YCOMMENT) 00230 IF (LDATA_ROOTFRAC) LDATA_MIXPAR = .TRUE. 00231 YRECFM='L_DICE' 00232 YCOMMENT=YRECFM 00233 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_DICE,IRESP,HCOMMENT=YCOMMENT) 00234 IF (LDATA_DICE) LDATA_MIXPAR = .TRUE. 00235 ! 00236 IF (IBUGFIX>=2) THEN 00237 YRECFM2='L_GROUND_DEPTH' 00238 IF (IBUGFIX>=3) YRECFM2='L_GROUND_DPT' 00239 YCOMMENT=YRECFM 00240 CALL READ_SURF(HPROGRAM,YRECFM2,LDATA_GROUND_DEPTH,IRESP,HCOMMENT=YCOMMENT) 00241 IF (LDATA_GROUND_DEPTH) LDATA_MIXPAR = .TRUE. 00242 YRECFM='L_ROOT_DEPTH' 00243 YCOMMENT=YRECFM 00244 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ROOT_DEPTH,IRESP,HCOMMENT=YCOMMENT) 00245 IF (LDATA_ROOT_DEPTH) LDATA_MIXPAR = .TRUE. 00246 YRECFM='L_ROOT_EXT' 00247 YCOMMENT=YRECFM 00248 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ROOT_EXTINCTION,IRESP,HCOMMENT=YCOMMENT) 00249 IF (LDATA_ROOT_EXTINCTION) LDATA_MIXPAR = .TRUE. 00250 YRECFM='L_ROOT_LIN' 00251 YCOMMENT=YRECFM 00252 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ROOT_LIN,IRESP,HCOMMENT=YCOMMENT) 00253 IF (LDATA_ROOT_LIN) LDATA_MIXPAR = .TRUE. 00254 ELSE 00255 LDATA_GROUND_DEPTH = .FALSE. 00256 LDATA_ROOT_DEPTH = .FALSE. 00257 LDATA_ROOT_EXTINCTION = .FALSE. 00258 LDATA_ROOT_LIN = .FALSE. 00259 ENDIF 00260 ! 00261 YRECFM='L_ALBNIR_VEG' 00262 YCOMMENT=YRECFM 00263 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALBNIR_VEG,IRESP,HCOMMENT=YCOMMENT) 00264 IF (LDATA_ALBNIR_VEG) LDATA_MIXPAR = .TRUE. 00265 YRECFM='L_ALBVIS_VEG' 00266 YCOMMENT=YRECFM 00267 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALBVIS_VEG,IRESP,HCOMMENT=YCOMMENT) 00268 IF (LDATA_ALBVIS_VEG) LDATA_MIXPAR = .TRUE. 00269 YRECFM='L_ALBUV_VEG' 00270 YCOMMENT=YRECFM 00271 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALBUV_VEG,IRESP,HCOMMENT=YCOMMENT) 00272 IF (LDATA_ALBUV_VEG) LDATA_MIXPAR = .TRUE. 00273 YRECFM='L_ALBNIR_SOI' 00274 YCOMMENT=YRECFM 00275 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALBNIR_SOIL,IRESP,HCOMMENT=YCOMMENT) 00276 IF (LDATA_ALBNIR_SOIL) LDATA_MIXPAR = .TRUE. 00277 YRECFM='L_ALBVIS_SOI' 00278 YCOMMENT=YRECFM 00279 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALBVIS_SOIL,IRESP,HCOMMENT=YCOMMENT) 00280 IF (LDATA_ALBVIS_SOIL) LDATA_MIXPAR = .TRUE. 00281 YRECFM='L_ALBUV_SOI' 00282 YCOMMENT=YRECFM 00283 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALBUV_SOIL,IRESP,HCOMMENT=YCOMMENT) 00284 IF (LDATA_ALBUV_SOIL) LDATA_MIXPAR = .TRUE. 00285 YRECFM='L_GMES' 00286 YCOMMENT=YRECFM 00287 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_GMES,IRESP,HCOMMENT=YCOMMENT) 00288 IF (LDATA_GMES) LDATA_MIXPAR = .TRUE. 00289 YRECFM='L_BSLAI' 00290 YCOMMENT=YRECFM 00291 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_BSLAI,IRESP,HCOMMENT=YCOMMENT) 00292 IF (LDATA_BSLAI) LDATA_MIXPAR = .TRUE. 00293 YRECFM='L_LAIMIN' 00294 YCOMMENT=YRECFM 00295 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_LAIMIN,IRESP,HCOMMENT=YCOMMENT) 00296 IF (LDATA_LAIMIN) LDATA_MIXPAR = .TRUE. 00297 YRECFM='L_SEFOLD' 00298 YCOMMENT=YRECFM 00299 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_SEFOLD,IRESP,HCOMMENT=YCOMMENT) 00300 IF (LDATA_SEFOLD) LDATA_MIXPAR = .TRUE. 00301 YRECFM='L_GC' 00302 YCOMMENT=YRECFM 00303 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_GC,IRESP,HCOMMENT=YCOMMENT) 00304 IF (LDATA_GC) LDATA_MIXPAR = .TRUE. 00305 YRECFM='L_DMAX' 00306 YCOMMENT=YRECFM 00307 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_DMAX,IRESP,HCOMMENT=YCOMMENT) 00308 IF (LDATA_DMAX) LDATA_MIXPAR = .TRUE. 00309 YRECFM='L_F2I' 00310 YCOMMENT=YRECFM 00311 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_F2I,IRESP,HCOMMENT=YCOMMENT) 00312 IF (LDATA_F2I) LDATA_MIXPAR = .TRUE. 00313 YRECFM='L_STRESS' 00314 YCOMMENT=YRECFM 00315 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_STRESS,IRESP,HCOMMENT=YCOMMENT) 00316 IF (LDATA_STRESS) LDATA_MIXPAR = .TRUE. 00317 YRECFM='L_H_TREE' 00318 YCOMMENT=YRECFM 00319 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_H_TREE,IRESP,HCOMMENT=YCOMMENT) 00320 IF (LDATA_H_TREE) LDATA_MIXPAR = .TRUE. 00321 YRECFM='L_RE25' 00322 YCOMMENT=YRECFM 00323 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_RE25,IRESP,HCOMMENT=YCOMMENT) 00324 IF (LDATA_RE25) LDATA_MIXPAR = .TRUE. 00325 YRECFM='L_CE_NITRO' 00326 YCOMMENT=YRECFM 00327 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_CE_NITRO,IRESP,HCOMMENT=YCOMMENT) 00328 IF (LDATA_CE_NITRO) LDATA_MIXPAR = .TRUE. 00329 YRECFM='L_CF_NITRO' 00330 YCOMMENT=YRECFM 00331 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_CF_NITRO,IRESP,HCOMMENT=YCOMMENT) 00332 IF (LDATA_CF_NITRO) LDATA_MIXPAR = .TRUE. 00333 YRECFM='L_CNA_NITRO' 00334 YCOMMENT=YRECFM 00335 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_CNA_NITRO,IRESP,HCOMMENT=YCOMMENT) 00336 IF (LDATA_CNA_NITRO) LDATA_MIXPAR = .TRUE. 00337 YRECFM='L_IRRIG' 00338 YCOMMENT=YRECFM 00339 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_IRRIG,IRESP,HCOMMENT=YCOMMENT) 00340 IF (LDATA_IRRIG) LDATA_MIXPAR = .TRUE. 00341 YRECFM='L_WATSUP' 00342 YCOMMENT=YRECFM 00343 CALL READ_SURF(HPROGRAM,YRECFM,LDATA_WATSUP,IRESP,HCOMMENT=YCOMMENT) 00344 IF (LDATA_WATSUP) LDATA_MIXPAR = .TRUE. 00345 ! 00346 ENDIF 00347 ! 00348 IF (ALLOCATED(LINTERP)) LINTERP(:) = .TRUE. 00349 ! 00350 IF (LDATA_VEGTYPE) THEN 00351 YRECFM='D_VEGTYPE' 00352 CALL READ_SURF(HPROGRAM,YRECFM,ZFIELD(:,:),IRESP,HCOMMENT=YCOMMENT,HDIR=YDIR) 00353 ALLOCATE(XPAR_VEGTYPE (NDIM,NVEGTYPE)) 00354 IF (NDIM/=KSIZE) THEN 00355 CALL HOR_INTERPOL(ILUOUT,ZFIELD,XPAR_VEGTYPE) 00356 ELSE 00357 XPAR_VEGTYPE(:,:) = ZFIELD(:,:) 00358 ENDIF 00359 ENDIF 00360 ! 00361 IF (LDATA_LAI .OR. LDATA_VEG .OR. LDATA_Z0 .OR. LDATA_EMIS) THEN 00362 YRECFM='NDATA_TIME' 00363 CALL READ_SURF(HPROGRAM,YRECFM,NTIME,IRESP,HCOMMENT=YCOMMENT) 00364 ITIME = NTIME 00365 ENDIF 00366 ! 00367 IF (LDATA_VEG) THEN 00368 ALLOCATE(XPAR_VEG(NDIM,NTIME,NVEGTYPE)) 00369 DO JTIME=1,ITIME 00370 WRITE(YRECFM,FMT='(A7,I2.2)') 'D_VEG_T',JTIME 00371 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_VEG(:,JTIME,:),IRESP,IVERSION,& 00372 HCOMMENT=YCOMMENT,HDIR=YDIR) 00373 END DO 00374 ENDIF 00375 ! 00376 IF (LDATA_LAI) THEN 00377 ALLOCATE(XPAR_LAI(NDIM,NTIME,NVEGTYPE)) 00378 DO JTIME=1,ITIME 00379 WRITE(YRECFM,FMT='(A7,I2.2)') 'D_LAI_T',JTIME 00380 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_LAI(:,JTIME,:),IRESP,IVERSION,& 00381 HCOMMENT=YCOMMENT,HDIR=YDIR) 00382 END DO 00383 ENDIF 00384 ! 00385 IF (LDATA_Z0) THEN 00386 ALLOCATE(XPAR_Z0 (NDIM,NTIME,NVEGTYPE)) 00387 DO JTIME=1,ITIME 00388 WRITE(YRECFM,FMT='(A6,I2.2)') 'D_Z0_T',JTIME 00389 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_Z0(:,JTIME,:),IRESP,IVERSION,& 00390 HCOMMENT=YCOMMENT,HDIR=YDIR) 00391 END DO 00392 ENDIF 00393 ! 00394 IF (LDATA_EMIS) THEN 00395 ALLOCATE(XPAR_EMIS (NDIM,NTIME,NVEGTYPE)) 00396 DO JTIME=1,ITIME 00397 WRITE(YRECFM,FMT='(A8,I2.2)') 'D_EMIS_T',JTIME 00398 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_EMIS(:,JTIME,:),IRESP,IVERSION,& 00399 HCOMMENT=YCOMMENT,HDIR=YDIR) 00400 END DO 00401 ENDIF 00402 ! 00403 IF (LDATA_RSMIN) THEN 00404 ALLOCATE(XPAR_RSMIN (NDIM,NVEGTYPE)) 00405 YRECFM='D_RSMIN' 00406 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_RSMIN(:,:),IRESP,IVERSION,& 00407 HCOMMENT=YCOMMENT,HDIR=YDIR) 00408 ENDIF 00409 ! 00410 IF (LDATA_GAMMA) THEN 00411 ALLOCATE(XPAR_GAMMA (NDIM,NVEGTYPE)) 00412 YRECFM='D_GAMMA' 00413 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_GAMMA(:,:),IRESP,IVERSION,& 00414 HCOMMENT=YCOMMENT,HDIR=YDIR) 00415 ENDIF 00416 ! 00417 IF (LDATA_WRMAX_CF) THEN 00418 ALLOCATE(XPAR_WRMAX_CF (NDIM,NVEGTYPE)) 00419 YRECFM='D_WRMAX_CF' 00420 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_WRMAX_CF(:,:),IRESP,IVERSION,& 00421 HCOMMENT=YCOMMENT,HDIR=YDIR) 00422 ENDIF 00423 ! 00424 IF (LDATA_RGL) THEN 00425 ALLOCATE(XPAR_RGL (NDIM,NVEGTYPE)) 00426 YRECFM='D_RGL' 00427 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_RGL(:,:),IRESP,IVERSION,& 00428 HCOMMENT=YCOMMENT,HDIR=YDIR) 00429 ENDIF 00430 ! 00431 IF (LDATA_CV) THEN 00432 ALLOCATE(XPAR_CV (NDIM,NVEGTYPE)) 00433 YRECFM='D_CV' 00434 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_CV(:,:),IRESP,IVERSION,& 00435 HCOMMENT=YCOMMENT,HDIR=YDIR) 00436 ENDIF 00437 ! 00438 IF (LDATA_Z0_O_Z0H) THEN 00439 ALLOCATE(XPAR_Z0_O_Z0H (NDIM,NVEGTYPE)) 00440 YRECFM='D_Z0_O_Z0H' 00441 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_Z0_O_Z0H(:,:),IRESP,IVERSION,& 00442 HCOMMENT=YCOMMENT,HDIR=YDIR) 00443 ENDIF 00444 ! 00445 IF (LDATA_DG) THEN 00446 ALLOCATE(XPAR_DG (NDIM,NGROUND_LAYER,NVEGTYPE)) 00447 ALLOCATE(ZWORK(SIZE(XPAR_DG,1),SIZE(XPAR_DG,3))) 00448 DO JLAYER=1,SIZE(XPAR_DG,2) 00449 IF (JLAYER<10) WRITE(YRECFM,FMT='(A4,I1.1)') 'D_DG',JLAYER 00450 IF (JLAYER>=10) WRITE(YRECFM,FMT='(A4,I2.2)') 'D_DG',JLAYER 00451 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,ZWORK,IRESP,IVERSION,& 00452 HCOMMENT=YCOMMENT,HDIR=YDIR) 00453 DO JPATCH=1,SIZE(XPAR_DG,3) 00454 XPAR_DG(:,JLAYER,JPATCH) = ZWORK(:,JPATCH) 00455 END DO 00456 END DO 00457 DEALLOCATE(ZWORK) 00458 ENDIF 00459 ! 00460 IF (LDATA_ROOTFRAC) THEN 00461 ALLOCATE(XPAR_ROOTFRAC (NDIM,NGROUND_LAYER,NVEGTYPE)) 00462 ALLOCATE(ZWORK(SIZE(XPAR_ROOTFRAC,1),SIZE(XPAR_ROOTFRAC,3))) 00463 DO JLAYER=1,SIZE(XPAR_ROOTFRAC,2) 00464 IF (JLAYER<10) WRITE(YRECFM,FMT='(A10,I1.1)') 'D_ROOTFRAC',JLAYER 00465 IF (JLAYER>=10) WRITE(YRECFM,FMT='(A10,I2.2)') 'D_ROOTFRAC',JLAYER 00466 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,ZWORK,IRESP,IVERSION,& 00467 HCOMMENT=YCOMMENT,HDIR=YDIR) 00468 DO JPATCH=1,SIZE(XPAR_ROOTFRAC,3) 00469 XPAR_ROOTFRAC(:,JLAYER,JPATCH) = ZWORK(:,JPATCH) 00470 END DO 00471 END DO 00472 DEALLOCATE(ZWORK) 00473 ENDIF 00474 ! 00475 IF (LDATA_DICE) THEN 00476 ALLOCATE(XPAR_DICE (NDIM,NVEGTYPE)) 00477 YRECFM='D_DICE' 00478 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_DICE(:,:),IRESP,IVERSION,& 00479 HCOMMENT=YCOMMENT,HDIR=YDIR) 00480 ENDIF 00481 ! 00482 IF (LDATA_GROUND_DEPTH) THEN 00483 ALLOCATE(XPAR_GROUND_DEPTH(NDIM,NVEGTYPE)) 00484 YRECFM2='D_GROUND_DEPTH' 00485 IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=3) YRECFM2='D_GROUND_DPT' 00486 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM2,ILUOUT,KSIZE,XPAR_GROUND_DEPTH(:,:),IRESP,IVERSION,& 00487 HCOMMENT=YCOMMENT,HDIR=YDIR) 00488 ENDIF 00489 ! 00490 IF (LDATA_ROOT_DEPTH) THEN 00491 ALLOCATE(XPAR_ROOT_DEPTH(NDIM,NVEGTYPE)) 00492 YRECFM='D_ROOT_DEPTH' 00493 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ROOT_DEPTH(:,:),IRESP,IVERSION,& 00494 HCOMMENT=YCOMMENT,HDIR=YDIR) 00495 ENDIF 00496 ! 00497 IF (LDATA_ROOT_EXTINCTION) THEN 00498 ALLOCATE(XPAR_ROOT_EXTINCTION(NDIM,NVEGTYPE)) 00499 YRECFM='D_ROOT_EXT' 00500 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ROOT_EXTINCTION(:,:),IRESP,IVERSION,& 00501 HCOMMENT=YCOMMENT,HDIR=YDIR) 00502 ENDIF 00503 ! 00504 IF (LDATA_ROOT_LIN) THEN 00505 ALLOCATE(XPAR_ROOT_LIN(NDIM,NVEGTYPE)) 00506 YRECFM='D_ROOT_LIN' 00507 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ROOT_LIN(:,:),IRESP,IVERSION,& 00508 HCOMMENT=YCOMMENT,HDIR=YDIR) 00509 ENDIF 00510 ! 00511 IF (LDATA_ALBNIR_VEG) THEN 00512 ALLOCATE(XPAR_ALBNIR_VEG(NDIM,NVEGTYPE)) 00513 YRECFM='D_ALBNIR_VEG' 00514 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ALBNIR_VEG(:,:),IRESP,IVERSION,& 00515 HCOMMENT=YCOMMENT,HDIR=YDIR) 00516 ENDIF 00517 ! 00518 IF (LDATA_ALBVIS_VEG) THEN 00519 ALLOCATE(XPAR_ALBVIS_VEG(NDIM,NVEGTYPE)) 00520 YRECFM='D_ALBVIS_VEG' 00521 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ALBVIS_VEG(:,:),IRESP,IVERSION,& 00522 HCOMMENT=YCOMMENT,HDIR=YDIR) 00523 ENDIF 00524 ! 00525 IF (LDATA_ALBUV_VEG) THEN 00526 ALLOCATE(XPAR_ALBUV_VEG (NDIM,NVEGTYPE)) 00527 YRECFM='D_ALBUV_VEG' 00528 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ALBUV_VEG(:,:),IRESP,IVERSION,& 00529 HCOMMENT=YCOMMENT,HDIR=YDIR) 00530 ENDIF 00531 ! 00532 IF (LDATA_ALBNIR_SOIL) THEN 00533 ALLOCATE(XPAR_ALBNIR_SOIL(NDIM,NVEGTYPE)) 00534 YRECFM='D_ALBNIR_SOI' 00535 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ALBNIR_SOIL(:,:),IRESP,IVERSION,& 00536 HCOMMENT=YCOMMENT,HDIR=YDIR) 00537 ENDIF 00538 ! 00539 IF (LDATA_ALBVIS_SOIL) THEN 00540 ALLOCATE(XPAR_ALBVIS_SOIL(NDIM,NVEGTYPE)) 00541 YRECFM='D_ALBVIS_SOI' 00542 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ALBVIS_SOIL(:,:),IRESP,IVERSION,& 00543 HCOMMENT=YCOMMENT,HDIR=YDIR) 00544 ENDIF 00545 ! 00546 IF (LDATA_ALBUV_SOIL) THEN 00547 ALLOCATE(XPAR_ALBUV_SOIL (NDIM,NVEGTYPE)) 00548 YRECFM='D_ALBUV_SOI' 00549 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ALBUV_SOIL(:,:),IRESP,IVERSION,& 00550 HCOMMENT=YCOMMENT,HDIR=YDIR) 00551 ENDIF 00552 ! 00553 IF (LDATA_GMES) THEN 00554 ALLOCATE(XPAR_GMES (NDIM,NVEGTYPE)) 00555 YRECFM='D_GMES' 00556 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_GMES(:,:),IRESP,IVERSION,& 00557 HCOMMENT=YCOMMENT,HDIR=YDIR) 00558 ENDIF 00559 ! 00560 IF (LDATA_BSLAI) THEN 00561 ALLOCATE(XPAR_BSLAI (NDIM,NVEGTYPE)) 00562 YRECFM='D_BSLAI' 00563 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_BSLAI(:,:),IRESP,IVERSION,& 00564 HCOMMENT=YCOMMENT,HDIR=YDIR) 00565 ENDIF 00566 ! 00567 IF (LDATA_LAIMIN) THEN 00568 ALLOCATE(XPAR_LAIMIN (NDIM,NVEGTYPE)) 00569 YRECFM='D_LAIMIN' 00570 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_LAIMIN(:,:),IRESP,IVERSION,& 00571 HCOMMENT=YCOMMENT,HDIR=YDIR) 00572 ENDIF 00573 ! 00574 IF (LDATA_SEFOLD) THEN 00575 ALLOCATE(XPAR_SEFOLD (NDIM,NVEGTYPE)) 00576 YRECFM='D_SEFOLD' 00577 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_SEFOLD(:,:),IRESP,IVERSION,& 00578 HCOMMENT=YCOMMENT,HDIR=YDIR) 00579 ENDIF 00580 ! 00581 IF (LDATA_GC) THEN 00582 ALLOCATE(XPAR_GC (NDIM,NVEGTYPE)) 00583 YRECFM='D_GC' 00584 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_GC(:,:),IRESP,IVERSION,& 00585 HCOMMENT=YCOMMENT,HDIR=YDIR) 00586 ENDIF 00587 ! 00588 IF (LDATA_DMAX) THEN 00589 ALLOCATE(XPAR_DMAX (NDIM,NVEGTYPE)) 00590 YRECFM='D_DMAX' 00591 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_DMAX(:,:),IRESP,IVERSION,& 00592 HCOMMENT=YCOMMENT,HDIR=YDIR) 00593 ENDIF 00594 ! 00595 IF (LDATA_F2I) THEN 00596 ALLOCATE(XPAR_F2I (NDIM,NVEGTYPE)) 00597 YRECFM='D_F2I' 00598 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_F2I(:,:),IRESP,IVERSION,& 00599 HCOMMENT=YCOMMENT,HDIR=YDIR) 00600 ENDIF 00601 ! 00602 IF (LDATA_STRESS) THEN 00603 ALLOCATE(LPAR_STRESS (NDIM,NVEGTYPE)) 00604 ALLOCATE(ZWORK(SIZE(LPAR_STRESS,1),SIZE(LPAR_STRESS,2))) 00605 YRECFM='D_STRESS' 00606 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,ZWORK(:,:),IRESP,IVERSION,& 00607 HCOMMENT=YCOMMENT,HDIR=YDIR) 00608 LPAR_STRESS = .FALSE. 00609 WHERE(ZWORK==1.) LPAR_STRESS = .TRUE. 00610 DEALLOCATE(ZWORK) 00611 ENDIF 00612 ! 00613 IF (LDATA_H_TREE) THEN 00614 ALLOCATE(XPAR_H_TREE (NDIM,NVEGTYPE)) 00615 YRECFM='D_H_TREE' 00616 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_H_TREE(:,:),IRESP,IVERSION,& 00617 HCOMMENT=YCOMMENT,HDIR=YDIR) 00618 ENDIF 00619 ! 00620 IF (LDATA_RE25) THEN 00621 ALLOCATE(XPAR_RE25 (NDIM,NVEGTYPE)) 00622 YRECFM='D_RE25' 00623 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_RE25(:,:),IRESP,IVERSION,& 00624 HCOMMENT=YCOMMENT,HDIR=YDIR) 00625 ENDIF 00626 ! 00627 IF (LDATA_CE_NITRO) THEN 00628 ALLOCATE(XPAR_CE_NITRO (NDIM,NVEGTYPE)) 00629 YRECFM='D_CE_NITRO' 00630 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_CE_NITRO(:,:),IRESP,IVERSION,& 00631 HCOMMENT=YCOMMENT,HDIR=YDIR) 00632 ENDIF 00633 ! 00634 IF (LDATA_CF_NITRO) THEN 00635 ALLOCATE(XPAR_CF_NITRO (NDIM,NVEGTYPE)) 00636 YRECFM='D_CF_NITRO' 00637 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_CF_NITRO(:,:),IRESP,IVERSION,& 00638 HCOMMENT=YCOMMENT,HDIR=YDIR) 00639 ENDIF 00640 ! 00641 IF (LDATA_CNA_NITRO) THEN 00642 ALLOCATE(XPAR_CNA_NITRO (NDIM,NVEGTYPE)) 00643 YRECFM='D_CNA_NITRO' 00644 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_CNA_NITRO(:,:),IRESP,IVERSION,& 00645 HCOMMENT=YCOMMENT,HDIR=YDIR) 00646 ENDIF 00647 ! 00648 IF (LDATA_IRRIG) THEN 00649 ALLOCATE(XPAR_IRRIG (NDIM,NTIME,NVEGTYPE)) 00650 DO JTIME=1,ITIME 00651 WRITE(YRECFM,FMT='(A9,I2.2)') 'D_IRRIG_T',JTIME 00652 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_IRRIG(:,JTIME,:),IRESP,IVERSION,& 00653 HCOMMENT=YCOMMENT,HDIR=YDIR) 00654 END DO 00655 ENDIF 00656 ! 00657 IF (LDATA_WATSUP) THEN 00658 ALLOCATE(XPAR_WATSUP (NDIM,NTIME,NVEGTYPE)) 00659 DO JTIME=1,ITIME 00660 WRITE(YRECFM,FMT='(A10,I2.2)') 'D_WATSUP_T',JTIME 00661 CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_WATSUP(:,JTIME,:),IRESP,IVERSION,& 00662 HCOMMENT=YCOMMENT,HDIR=YDIR) 00663 END DO 00664 ENDIF 00665 ! 00666 ENDIF 00667 ! 00668 IF (LHOOK) CALL DR_HOOK('READ_PGD_ISBA_PAR_N',1,ZHOOK_HANDLE) 00669 ! 00670 !------------------------------------------------------------------------------- 00671 ! 00672 END SUBROUTINE READ_PGD_ISBA_PAR_n