6 SUBROUTINE read_pgd_isba_par_n (DTCO, U, GCP, DTI, KDIM, IO, HPROGRAM,KSIZE,OLAND_USE, TPDATE_BEG, TPDATE_END, HDIR)
53 USE modd_assim
, ONLY : lread_all, lassim
55 USE modd_data_cover_par
, ONLY : nvegtype, nvegtype_old, nvegtype_ecosg
60 USE modi_make_choice_array
62 USE modi_read_surf_isba_par_n
77 INTEGER,
INTENT(IN) :: KDIM
80 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
81 INTEGER,
INTENT(IN) :: KSIZE
82 LOGICAL,
INTENT(IN) :: OLAND_USE
83 TYPE(
date),
INTENT(IN) :: TPDATE_BEG
84 TYPE(
date),
INTENT(IN) :: TPDATE_END
85 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
93 REAL,
DIMENSION(KSIZE,NVEGTYPE) :: ZFIELD
94 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZWORK
95 LOGICAL,
DIMENSION(36) :: GTIME
99 CHARACTER(LEN=12) :: YRECFM
100 CHARACTER(LEN=16) :: YRECFM2
101 CHARACTER(LEN=100):: YCOMMENT
102 CHARACTER(LEN=1) :: YDIR
107 INTEGER :: ISIZE_LMEB_PATCH
108 INTEGER :: IENDT, IEND, ID1, ID2, JT_BEG, JT_END
110 LOGICAL :: GREAD_ALL, GDIM, GDIM2
112 REAL(KIND=JPRB) :: ZHOOK_HANDLE
116 IF (
lhook)
CALL dr_hook(
'READ_PGD_ISBA_PAR_N',0,zhook_handle)
121 IF (
PRESENT(hdir)) ydir = hdir
124 gread_all = lread_all
129 CALL read_surf(hprogram,yrecfm,iversion,iresp)
130 WRITE(iluout,*)
'read version ',iversion
133 CALL read_surf(hprogram,yrecfm,ibugfix,iresp)
136 gdim = (iversion>8 .OR. (iversion==8 .AND. ibugfix>=1))
138 IF (gdim)
CALL read_surf(hprogram,
'SPLIT_PATCH',gdim2,iresp)
140 isize_lmeb_patch=
count(io%LMEB_PATCH(:))
142 dti%LDATA_MIXPAR = .false.
146 CALL read_surf(hprogram,yrecfm,dti%NTIME,iresp,hcomment=ycomment)
149 dti%NVEGTYPE = nvegtype
151 ALLOCATE(dti%LDATA_VEG (36*nvegtype))
152 ALLOCATE(dti%LDATA_LAI (36*nvegtype))
153 ALLOCATE(dti%LDATA_Z0 (36*nvegtype))
154 ALLOCATE(dti%LDATA_EMIS (36*nvegtype))
155 ALLOCATE(dti%LDATA_ALBNIR_VEG (36*nvegtype))
156 ALLOCATE(dti%LDATA_ALBVIS_VEG (36*nvegtype))
157 ALLOCATE(dti%LDATA_ALBUV_VEG (36*nvegtype))
158 ALLOCATE(dti%LDATA_ALBNIR_SOIL(36*nvegtype))
159 ALLOCATE(dti%LDATA_ALBVIS_SOIL(36*nvegtype))
160 ALLOCATE(dti%LDATA_ALBUV_SOIL (36*nvegtype))
161 ALLOCATE(dti%LDATA_IRRIG (36*nvegtype))
162 ALLOCATE(dti%LDATA_WATSUP (36*nvegtype))
163 dti%LDATA_VEG (:) = .false.
164 dti%LDATA_LAI (:) = .false.
165 dti%LDATA_Z0 (:) = .false.
166 dti%LDATA_EMIS (:) = .false.
167 dti%LDATA_ALBNIR_VEG (:) = .false.
168 dti%LDATA_ALBVIS_VEG (:) = .false.
169 dti%LDATA_ALBUV_VEG (:) = .false.
170 dti%LDATA_ALBNIR_SOIL(:) = .false.
171 dti%LDATA_ALBVIS_SOIL(:) = .false.
172 dti%LDATA_ALBUV_SOIL (:) = .false.
173 dti%LDATA_IRRIG (:) = .false.
174 dti%LDATA_WATSUP (:) = .false.
176 IF (iversion<7 .AND. .NOT.io%LECOCLIMAP)
THEN 178 dti%LDATA_VEGTYPE =.true.
180 dti%LDATA_VEG =.true.
181 dti%LDATA_LAI =.true.
183 dti%LDATA_EMIS =.true.
184 dti%LDATA_ALBNIR_VEG =.true.
185 dti%LDATA_ALBVIS_VEG =.true.
186 dti%LDATA_ALBUV_VEG =.true.
187 dti%LDATA_ALBNIR_SOIL=.true.
188 dti%LDATA_ALBVIS_SOIL=.true.
189 dti%LDATA_ALBUV_SOIL =.true.
190 dti%LDATA_IRRIG =.false.
191 dti%LDATA_WATSUP=.false.
193 dti%LDATA_RSMIN =.true.
194 dti%LDATA_GAMMA =.true.
195 dti%LDATA_WRMAX_CF=.true.
196 dti%LDATA_RGL =.true.
198 dti%LDATA_Z0_O_Z0H=.true.
200 dti%LDATA_ROOTFRAC=.true.
202 dti%LDATA_DICE =.false.
203 dti%LDATA_GROUND_DEPTH =.false.
204 dti%LDATA_ROOT_DEPTH =.false.
205 dti%LDATA_ROOT_LIN =.false.
206 dti%LDATA_ROOT_EXTINCTION=.false.
208 dti%LDATA_GMES =.true.
209 dti%LDATA_BSLAI =.true.
210 dti%LDATA_LAIMIN =.true.
211 dti%LDATA_SEFOLD =.true.
213 dti%LDATA_DMAX =.true.
214 dti%LDATA_F2I =.true.
215 dti%LDATA_STRESS =.true.
216 dti%LDATA_H_TREE =.true.
217 dti%LDATA_RE25 =.true.
218 dti%LDATA_CE_NITRO =.true.
219 dti%LDATA_CF_NITRO =.true.
220 dti%LDATA_CNA_NITRO =.true.
222 dti%LDATA_SEED_M=.false.
223 dti%LDATA_SEED_D=.false.
224 dti%LDATA_REAP_M=.false.
225 dti%LDATA_REAP_D=.false.
229 ALLOCATE(dti%LDATA_GNDLITTER(36*nvegtype))
230 ALLOCATE(dti%LDATA_Z0LITTER (36*nvegtype))
231 ALLOCATE(dti%LDATA_H_VEG (36*nvegtype))
232 dti%LDATA_GNDLITTER(:) = .false.
233 dti%LDATA_Z0LITTER (:) = .false.
234 dti%LDATA_H_VEG (:) = .false.
236 dti%LIMP_VEG =.false.
238 dti%LIMP_EMIS=.false.
241 iendt = nvegtype * dti%NTIME
242 iend = max(nvegtype_old,nvegtype_ecosg)
249 IF (.NOT.oland_use)
THEN 251 IF (iversion>=7)
THEN 254 CALL read_surf(hprogram,yrecfm,dti%LDATA_VEGTYPE,iresp,hcomment=ycomment
255 IF (dti%LDATA_VEGTYPE) dti%LDATA_MIXPAR = .true.
258 CALL read_surf(hprogram,yrecfm,dti%LDATA_VEG(1:iendt),iresp,hcomment
'-' 259 IF (any(dti%LDATA_VEG))
THEN 260 dti%LDATA_MIXPAR = .true.
261 dti%LIMP_VEG = .true.
265 CALL read_surf(hprogram,yrecfm,dti%LDATA_LAI(1:iendt),iresp,hcomment
'-' 266 IF (any(dti%LDATA_LAI)) dti%LDATA_MIXPAR = .true.
269 CALL read_surf(hprogram,yrecfm,dti%LDATA_Z0(1:iendt),iresp,hcomment=ycomment
'-' 270 IF (any(dti%LDATA_Z0))
THEN 271 dti%LDATA_MIXPAR = .true.
276 CALL read_surf(hprogram,yrecfm,dti%LDATA_EMIS(1:iendt),iresp,hcomment
'-' 277 IF (any(dti%LDATA_EMIS))
THEN 278 dti%LDATA_MIXPAR = .true.
279 dti%LIMP_EMIS = .true.
283 CALL read_surf(hprogram,yrecfm,dti%LDATA_RSMIN(1:iend),iresp,hcomment
'-' 284 IF (any(dti%LDATA_RSMIN)) dti%LDATA_MIXPAR = .true.
286 CALL read_surf(hprogram,yrecfm,dti%LDATA_GAMMA(1:iend),iresp,hcomment
'-' 287 IF (any(dti%LDATA_GAMMA)) dti%LDATA_MIXPAR = .true.
289 CALL read_surf(hprogram,yrecfm,dti%LDATA_WRMAX_CF(1:iend),iresp,hcomment
'-' 290 IF (any(dti%LDATA_WRMAX_CF)) dti%LDATA_MIXPAR = .true.
292 CALL read_surf(hprogram,yrecfm,dti%LDATA_RGL(1:iend),iresp,hcomment=ycomment
'-' 293 IF (any(dti%LDATA_RGL)) dti%LDATA_MIXPAR = .true.
295 CALL read_surf(hprogram,yrecfm,dti%LDATA_CV(1:iend),iresp,hcomment=ycomment
'-' 296 IF (any(dti%LDATA_CV)) dti%LDATA_MIXPAR = .true.
298 CALL read_surf(hprogram,yrecfm,dti%LDATA_Z0_O_Z0H(1:iend),iresp,hcomment
'-' 299 IF (any(dti%LDATA_Z0_O_Z0H)) dti%LDATA_MIXPAR = .true.
301 CALL read_surf(hprogram,yrecfm,dti%LDATA_DG(1:iend),iresp,hcomment=ycomment
'-' 302 IF (any(dti%LDATA_DG)) dti%LDATA_MIXPAR = .true.
304 CALL read_surf(hprogram,yrecfm,dti%LDATA_ROOTFRAC(1:iend),iresp,hcomment
'-' 305 IF (any(dti%LDATA_ROOTFRAC)) dti%LDATA_MIXPAR = .true.
307 CALL read_surf(hprogram,yrecfm,dti%LDATA_DICE(1:iend),iresp,hcomment
'-' 308 IF (any(dti%LDATA_DICE)) dti%LDATA_MIXPAR = .true.
310 IF ( (iversion==7 .AND. ibugfix>=2) .OR. iversion>7 )
THEN 311 yrecfm2=
'L_GROUND_DPT' 312 CALL read_surf(hprogram,yrecfm2,dti%LDATA_GROUND_DEPTH(1:iend),iresp
'-' 313 IF (any(dti%LDATA_GROUND_DEPTH)) dti%LDATA_MIXPAR = .true.
314 yrecfm=
'L_ROOT_DEPTH' 315 CALL read_surf(hprogram,yrecfm,dti%LDATA_ROOT_DEPTH(1:iend),iresp,hcomment
'-' 316 IF (any(dti%LDATA_ROOT_DEPTH)) dti%LDATA_MIXPAR = .true.
318 CALL read_surf(hprogram,yrecfm,dti%LDATA_ROOT_EXTINCTION(1:iend),iresp
'-' 319 IF (any(dti%LDATA_ROOT_EXTINCTION)) dti%LDATA_MIXPAR = .true.
321 CALL read_surf(hprogram,yrecfm,dti%LDATA_ROOT_LIN(1:iend),iresp,hcomment
'-' 322 IF (any(dti%LDATA_ROOT_LIN)) dti%LDATA_MIXPAR = .true.
324 dti%LDATA_GROUND_DEPTH = .false.
325 dti%LDATA_ROOT_DEPTH = .false.
326 dti%LDATA_ROOT_EXTINCTION = .false.
327 dti%LDATA_ROOT_LIN = .false.
330 yrecfm=
'L_ALBNIR_VEG' 331 CALL read_surf(hprogram,yrecfm,dti%LDATA_ALBNIR_VEG(1:iendt),iresp,hcomment
'-' 332 IF (any(dti%LDATA_ALBNIR_VEG)) dti%LDATA_MIXPAR = .true.
333 yrecfm=
'L_ALBVIS_VEG' 334 CALL read_surf(hprogram,yrecfm,dti%LDATA_ALBVIS_VEG(1:iendt),iresp,hcomment
'-' 335 IF (any(dti%LDATA_ALBVIS_VEG)) dti%LDATA_MIXPAR = .true.
337 CALL read_surf(hprogram,yrecfm,dti%LDATA_ALBUV_VEG(1:iendt),iresp,hcomment
'-' 338 IF (any(dti%LDATA_ALBUV_VEG)) dti%LDATA_MIXPAR = .true.
339 yrecfm=
'L_ALBNIR_SOI' 340 CALL read_surf(hprogram,yrecfm,dti%LDATA_ALBNIR_SOIL(1:iendt),iresp,hcomment
'-' 341 IF (any(dti%LDATA_ALBNIR_SOIL)) dti%LDATA_MIXPAR = .true.
342 yrecfm=
'L_ALBVIS_SOI' 343 CALL read_surf(hprogram,yrecfm,dti%LDATA_ALBVIS_SOIL(1:iendt),iresp,hcomment
'-' 344 IF (any(dti%LDATA_ALBVIS_SOIL)) dti%LDATA_MIXPAR = .true.
346 CALL read_surf(hprogram,yrecfm,dti%LDATA_ALBUV_SOIL(1:iendt),iresp,hcomment
'-' 347 IF (any(dti%LDATA_ALBUV_SOIL)) dti%LDATA_MIXPAR = .true.
350 CALL read_surf(hprogram,yrecfm,dti%LDATA_GMES(1:iend),iresp,hcomment
'-' 351 IF (any(dti%LDATA_GMES)) dti%LDATA_MIXPAR = .true.
353 CALL read_surf(hprogram,yrecfm,dti%LDATA_BSLAI(1:iend),iresp,hcomment
'-' 354 IF (any(dti%LDATA_BSLAI)) dti%LDATA_MIXPAR = .true.
356 CALL read_surf(hprogram,yrecfm,dti%LDATA_LAIMIN(1:iend),iresp,hcomment
'-' 357 IF (any(dti%LDATA_LAIMIN)) dti%LDATA_MIXPAR = .true.
359 CALL read_surf(hprogram,yrecfm,dti%LDATA_SEFOLD(1:iend),iresp,hcomment
'-' 360 IF (any(dti%LDATA_SEFOLD)) dti%LDATA_MIXPAR = .true.
362 CALL read_surf(hprogram,yrecfm,dti%LDATA_GC(1:iend),iresp,hcomment=ycomment
'-' 363 IF (any(dti%LDATA_GC)) dti%LDATA_MIXPAR = .true.
365 CALL read_surf(hprogram,yrecfm,dti%LDATA_DMAX(1:iend),iresp,hcomment
'-' 366 IF (any(dti%LDATA_DMAX)) dti%LDATA_MIXPAR = .true.
368 CALL read_surf(hprogram,yrecfm,dti%LDATA_F2I(1:iend),iresp,hcomment=ycomment
'-' 369 IF (any(dti%LDATA_F2I)) dti%LDATA_MIXPAR = .true.
371 CALL read_surf(hprogram,yrecfm,dti%LDATA_STRESS(1:iend),iresp,hcomment
'-' 372 IF (any(dti%LDATA_STRESS)) dti%LDATA_MIXPAR = .true.
374 CALL read_surf(hprogram,yrecfm,dti%LDATA_H_TREE(1:iend),iresp,hcomment
'-' 375 IF (any(dti%LDATA_H_TREE)) dti%LDATA_MIXPAR = .true.
377 CALL read_surf(hprogram,yrecfm,dti%LDATA_RE25(1:iend),iresp,hcomment
'-' 378 IF (any(dti%LDATA_RE25)) dti%LDATA_MIXPAR = .true.
380 CALL read_surf(hprogram,yrecfm,dti%LDATA_CE_NITRO(1:iend),iresp,hcomment
'-' 381 IF (any(dti%LDATA_CE_NITRO)) dti%LDATA_MIXPAR = .true.
383 CALL read_surf(hprogram,yrecfm,dti%LDATA_CF_NITRO(1:iend),iresp,hcomment
'-' 384 IF (any(dti%LDATA_CF_NITRO)) dti%LDATA_MIXPAR = .true.
386 CALL read_surf(hprogram,yrecfm,dti%LDATA_CNA_NITRO(1:iend),iresp,hcomment
'-' 387 IF (any(dti%LDATA_CNA_NITRO)) dti%LDATA_MIXPAR = .true.
390 CALL read_surf(hprogram,yrecfm,dti%LDATA_IRRIG(1:iendt),iresp,hcomment
'-' 391 IF (any(dti%LDATA_IRRIG)) dti%LDATA_MIXPAR = .true.
393 CALL read_surf(hprogram,yrecfm,dti%LDATA_WATSUP(1:iendt),iresp,hcomment
'-' 394 IF (any(dti%LDATA_WATSUP)) dti%LDATA_MIXPAR = .true.
398 IF (iversion>=8.AND.isize_lmeb_patch>0)
THEN 401 CALL read_surf(hprogram,yrecfm,dti%LDATA_H_VEG(1:iendt),iresp,hcomment
'-' 402 IF (any(dti%LDATA_H_VEG)) dti%LDATA_MIXPAR = .true.
404 CALL read_surf(hprogram,yrecfm,dti%LDATA_Z0LITTER(1:iendt),iresp,hcomment
'-' 405 IF (any(dti%LDATA_Z0LITTER)) dti%LDATA_MIXPAR = .true.
407 CALL read_surf(hprogram,yrecfm,dti%LDATA_GNDLITTER(1:iendt),iresp,hcomment
'-' 408 IF (any(dti%LDATA_GNDLITTER)) dti%LDATA_MIXPAR = .true.
415 CALL read_surf(hprogram,yrecfm,dti%LDATA_SEED_M(1:iend),iresp,hcomment
'-' 416 IF (any(dti%LDATA_SEED_M)) dti%LDATA_MIXPAR = .true.
418 CALL read_surf(hprogram,yrecfm,dti%LDATA_SEED_D(1:iend),iresp,hcomment
'-' 419 IF (any(dti%LDATA_SEED_D)) dti%LDATA_MIXPAR = .true.
421 CALL read_surf(hprogram,yrecfm,dti%LDATA_REAP_M(1:iend),iresp,hcomment
'-' 422 IF (any(dti%LDATA_REAP_M)) dti%LDATA_MIXPAR = .true.
424 CALL read_surf(hprogram,yrecfm,dti%LDATA_REAP_D(1:iend),iresp,hcomment
'-' 425 IF (any(dti%LDATA_REAP_D)) dti%LDATA_MIXPAR = .true.
428 CALL read_surf(hprogram,yrecfm,dti%LDATA_CONDSAT,iresp,hcomment=ycomment
'-' 430 CALL read_surf(hprogram,yrecfm,dti%LDATA_MPOTSAT,iresp,hcomment=ycomment
'-' 432 CALL read_surf(hprogram,yrecfm,dti%LDATA_BCOEF,iresp,hcomment=ycomment
'-' 434 CALL read_surf(hprogram,yrecfm,dti%LDATA_WWILT,iresp,hcomment=ycomment
'-' 436 CALL read_surf(hprogram,yrecfm,dti%LDATA_WFC,iresp,hcomment=ycomment
'-' 438 CALL read_surf(hprogram,yrecfm,dti%LDATA_WSAT,iresp,hcomment=ycomment
'-' 442 dti%LDATA_SEED_M=.false.
443 dti%LDATA_SEED_D=.false.
444 dti%LDATA_REAP_M=.false.
445 dti%LDATA_REAP_D=.false.
447 dti%LDATA_CONDSAT=.false.
448 dti%LDATA_MPOTSAT=.false.
449 dti%LDATA_BCOEF=.false.
450 dti%LDATA_WWILT=.false.
451 dti%LDATA_WFC=.false.
452 dti%LDATA_WSAT=.false.
458 IF (gdim .OR. ( any(dti%LDATA_LAI) .OR. any(dti%LDATA_VEG) .OR. &
459 any(dti%LDATA_Z0) .OR. any(dti%LDATA_EMIS)) )
THEN 462 CALL read_surf(hprogram,yrecfm,dti%NTIME,iresp,hcomment=ycomment)
475 jt_beg = (tpdate_beg%MONTH-1) * 3 + ceiling(min(tpdate_beg%DAY,30)/1
477 IF ( tpdate_end%YEAR > tpdate_beg%YEAR+1 )
THEN 483 IF (jt_beg<=8.OR.jt_beg>=27)
THEN 488 IF (jt_end<=8.OR.jt_end>=27)
THEN 494 jt_beg = ceiling(jt_beg/(36./itime))
495 jt_end = ceiling(jt_end/(36./itime))
499 DO jt = 1,
SIZE(gtime)
500 IF (jt_beg==jt_end .AND. tpdate_end%YEAR==tpdate_beg%YEAR+1)
THEN 502 ELSEIF (jt_beg<=jt_end .AND. jt>=jt_beg .AND. jt<=jt_end)
THEN 504 ELSEIF (jt_beg>jt_end .AND. (jt>=jt_beg .OR. jt<=jt_end))
THEN 510 IF (dti%LDATA_VEGTYPE)
THEN 517 ALLOCATE(dti%XPAR_VEGTYPE(kdim,nvegtype))
518 IF (kdim/=ksize)
THEN 519 CALL hor_interpol(dtco, u, gcp, iluout,zfield,dti%XPAR_VEGTYPE)
521 dti%XPAR_VEGTYPE(:,:) = zfield(:,:)
525 IF (any(dti%LDATA_VEG))
THEN 526 ALLOCATE(dti%XPAR_VEG(kdim,dti%NTIME,nvegtype))
528 id1 = (jt-1)*nvegtype + 1
531 WRITE(yrecfm,fmt=
'(A7,I2.2)')
'D_VEG_T',jt
536 dti%XPAR_VEG(:,jt,:) =
xundef 541 IF (any(dti%LDATA_LAI))
THEN 542 ALLOCATE(dti%XPAR_LAI(kdim,dti%NTIME,nvegtype))
544 id1 = (jt-1)*nvegtype + 1
547 WRITE(yrecfm,fmt=
'(A7,I2.2)')
'D_LAI_T',jt
552 dti%XPAR_LAI(:,jt,:) =
xundef 557 IF (any(dti%LDATA_Z0))
THEN 558 ALLOCATE(dti%XPAR_Z0 (kdim,dti%NTIME,nvegtype))
560 id1 = (jt-1)*nvegtype + 1
563 WRITE(yrecfm,fmt=
'(A6,I2.2)')
'D_Z0_T',jt
568 dti%XPAR_Z0(:,jt,:) =
xundef 573 IF (any(dti%LDATA_EMIS))
THEN 574 ALLOCATE(dti%XPAR_EMIS (kdim,dti%NTIME,nvegtype))
576 id1 = (jt-1)*nvegtype + 1
579 WRITE(yrecfm,fmt=
'(A8,I2.2)')
'D_EMI_T',jt
581 WRITE(yrecfm,fmt=
'(A8,I2.2)')
'D_EMIS_T',jt
588 dti%XPAR_EMIS(:,jt,:) =
xundef 593 IF (any(dti%LDATA_H_VEG))
THEN 594 ALLOCATE(dti%XPAR_H_VEG(kdim,dti%NTIME,nvegtype))
596 id1 = (jt-1)*nvegtype + 1
599 WRITE(yrecfm,fmt=
'(A7,I2.2)')
'D_HVG_T',jt
601 WRITE(yrecfm,fmt=
'(A9,I2.2)')
'D_H_VEG_T',jt
608 dti%XPAR_H_VEG(:,jt,:) =
xundef 613 IF (any(dti%LDATA_GNDLITTER))
THEN 614 ALLOCATE(dti%XPAR_GNDLITTER(kdim,dti%NTIME,nvegtype))
616 id1 = (jt-1)*nvegtype + 1
619 WRITE(yrecfm,fmt=
'(A7,I2.2)')
'D_GLI_T',jt
621 WRITE(yrecfm,fmt=
'(A7,I2.2)')
'D_GNDLITTER',jt
628 dti%XPAR_GNDLITTER(:,jt,:) =
xundef 633 IF (any(dti%LDATA_Z0LITTER))
THEN 634 ALLOCATE(dti%XPAR_Z0LITTER (kdim,dti%NTIME,nvegtype))
636 id1 = (jt-1)*nvegtype + 1
639 WRITE(yrecfm,fmt=
'(A7,I2.2)')
'D_Z0L_T',jt
641 WRITE(yrecfm,fmt=
'(A8,I2.2)')
'D_Z0LITTER_T',jt
648 dti%XPAR_Z0LITTER(:,jt,:) =
xundef 653 IF (any(dti%LDATA_ALBNIR_VEG))
THEN 654 ALLOCATE(dti%XPAR_ALBNIR_VEG(kdim,dti%NTIME,nvegtype))
656 id1 = (jt-1)*nvegtype + 1
660 WRITE(yrecfm,fmt=
'(A7,I2.2)')
'D_ANV_T',jt
665 dti%XPAR_ALBNIR_VEG(:,jt,:) =
xundef 669 yrecfm=
'D_ALBNIR_VEG' 674 dti%XPAR_ALBNIR_VEG(:,jt,:) = dti%XPAR_ALBNIR_VEG(:,1,:)
680 IF (any(dti%LDATA_ALBVIS_VEG))
THEN 681 ALLOCATE(dti%XPAR_ALBVIS_VEG(kdim,dti%NTIME,nvegtype))
683 id1 = (jt-1)*nvegtype + 1
687 WRITE(yrecfm,fmt=
'(A7,I2.2)')
'D_AVV_T',jt
692 dti%XPAR_ALBVIS_VEG(:,jt,:) =
xundef 696 yrecfm=
'D_ALBVIS_VEG' 701 dti%XPAR_ALBVIS_VEG(:,jt,:) = dti%XPAR_ALBVIS_VEG(:,1,:)
707 IF (any(dti%LDATA_ALBUV_VEG))
THEN 708 ALLOCATE(dti%XPAR_ALBUV_VEG(kdim,dti%NTIME,nvegtype))
710 id1 = (jt-1)*nvegtype + 1
714 WRITE(yrecfm,fmt=
'(A7,I2.2)')
'D_AUV_T',jt
719 dti%XPAR_ALBUV_VEG(:,jt,:) =
xundef 728 dti%XPAR_ALBUV_VEG(:,jt,:) = dti%XPAR_ALBUV_VEG(:,1,:)
734 IF (any(dti%LDATA_ALBNIR_SOIL))
THEN 735 ALLOCATE(dti%XPAR_ALBNIR_SOIL(kdim,dti%NTIME,nvegtype))
737 id1 = (jt-1)*nvegtype + 1
741 WRITE(yrecfm,fmt=
'(A7,I2.2)')
'D_ANS_T',jt
746 dti%XPAR_ALBNIR_SOIL(:,jt,:) =
xundef 750 yrecfm=
'D_ALBNIR_SOI' 755 dti%XPAR_ALBNIR_SOIL(:,jt,:) = dti%XPAR_ALBNIR_SOIL(:,1,:)
761 IF (any(dti%LDATA_ALBVIS_SOIL))
THEN 762 ALLOCATE(dti%XPAR_ALBVIS_SOIL(kdim,dti%NTIME,nvegtype))
764 id1 = (jt-1)*nvegtype + 1
768 WRITE(yrecfm,fmt=
'(A7,I2.2)')
'D_AVS_T',jt
773 dti%XPAR_ALBVIS_SOIL(:,jt,:) =
xundef 777 yrecfm=
'D_ALBVIS_SOI' 782 dti%XPAR_ALBVIS_SOIL(:,jt,:) = dti%XPAR_ALBVIS_SOIL(:,1,:)
788 IF (any(dti%LDATA_ALBUV_SOIL))
THEN 789 ALLOCATE(dti%XPAR_ALBUV_SOIL(kdim,dti%NTIME,nvegtype))
791 id1 = (jt-1)*nvegtype + 1
795 WRITE(yrecfm,fmt=
'(A7,I2.2)')
'D_AUS_T',jt
800 dti%XPAR_ALBUV_SOIL(:,jt,:) =
xundef 809 dti%XPAR_ALBUV_SOIL(:,jt,:) = dti%XPAR_ALBUV_SOIL(:,1,:)
815 IF (any(dti%LDATA_RSMIN))
THEN 816 ALLOCATE(dti%XPAR_RSMIN (kdim,nvegtype))
827 IF (any(dti%LDATA_GAMMA))
THEN 828 ALLOCATE(dti%XPAR_GAMMA (kdim,nvegtype))
839 IF (any(dti%LDATA_WRMAX_CF))
THEN 840 ALLOCATE(dti%XPAR_WRMAX_CF (kdim,nvegtype))
851 IF (any(dti%LDATA_RGL))
THEN 852 ALLOCATE(dti%XPAR_RGL (kdim,nvegtype))
863 IF (any(dti%LDATA_CV))
THEN 864 ALLOCATE(dti%XPAR_CV (kdim,nvegtype))
875 IF (any(dti%LDATA_Z0_O_Z0H))
THEN 876 ALLOCATE(dti%XPAR_Z0_O_Z0H (kdim,nvegtype))
887 IF (any(dti%LDATA_DG))
THEN 888 ALLOCATE(dti%XPAR_DG (kdim,io%NGROUND_LAYER,nvegtype))
889 DO jl=1,
SIZE(dti%XPAR_DG,2)
891 WRITE(yrecfm,fmt=
'(A6,I2.2)')
'D_DG_L',jl
893 IF (jl<10)
WRITE(yrecfm,fmt=
'(A4,I1.1)')
'D_DG',jl
894 IF (jl>=10)
WRITE(yrecfm,fmt=
'(A4,I2.2)')
'D_DG',jl
902 IF (any(dti%LDATA_ROOTFRAC))
THEN 903 ALLOCATE(dti%XPAR_ROOTFRAC (kdim,io%NGROUND_LAYER,nvegtype))
904 DO jl=1,
SIZE(dti%XPAR_ROOTFRAC,2)
906 WRITE(yrecfm,fmt=
'(A6,I2.2)')
'D_RTF_L',jl
908 IF (jl<10)
WRITE(yrecfm,fmt=
'(A10,I1.1)')
'D_ROOTFRAC',jl
909 IF (jl>=10)
WRITE(yrecfm,fmt=
'(A10,I2.2)')
'D_ROOTFRAC',jl
917 IF (any(dti%LDATA_GROUND_DEPTH))
THEN 918 ALLOCATE(dti%XPAR_GROUND_DEPTH(kdim,nvegtype))
922 yrecfm2=
'D_GROUND_DEPTH' 923 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm2=
'D_GROUND_DPT' 930 IF (any(dti%LDATA_ROOT_DEPTH))
THEN 931 ALLOCATE(dti%XPAR_ROOT_DEPTH(kdim,nvegtype))
935 yrecfm=
'D_ROOT_DEPTH' 942 IF (any(dti%LDATA_ROOT_EXTINCTION))
THEN 943 ALLOCATE(dti%XPAR_ROOT_EXTINCTION(kdim,nvegtype))
954 IF (any(dti%LDATA_ROOT_LIN))
THEN 955 ALLOCATE(dti%XPAR_ROOT_LIN(kdim,nvegtype))
966 IF (any(dti%LDATA_DICE))
THEN 967 ALLOCATE(dti%XPAR_DICE (kdim,nvegtype))
978 IF (any(dti%LDATA_GMES))
THEN 979 ALLOCATE(dti%XPAR_GMES (kdim,nvegtype))
990 IF (any(dti%LDATA_BSLAI))
THEN 991 ALLOCATE(dti%XPAR_BSLAI (kdim,nvegtype))
1002 IF (any(dti%LDATA_LAIMIN))
THEN 1003 ALLOCATE(dti%XPAR_LAIMIN (kdim,nvegtype))
1014 IF (any(dti%LDATA_SEFOLD))
THEN 1015 ALLOCATE(dti%XPAR_SEFOLD (kdim,nvegtype))
1026 IF (any(dti%LDATA_GC))
THEN 1027 ALLOCATE(dti%XPAR_GC (kdim,nvegtype))
1038 IF (any(dti%LDATA_DMAX))
THEN 1039 ALLOCATE(dti%XPAR_DMAX (kdim,nvegtype))
1050 IF (any(dti%LDATA_F2I))
THEN 1051 ALLOCATE(dti%XPAR_F2I (kdim,nvegtype))
1063 IF (any(dti%LDATA_STRESS))
THEN 1064 ALLOCATE(dti%LPAR_STRESS (kdim,nvegtype))
1065 ALLOCATE(zwork(
SIZE(dti%LPAR_STRESS,1),
SIZE(dti%LPAR_STRESS,2)))
1076 WHERE(zwork==1.) dti%LPAR_STRESS = .true.
1080 IF (any(dti%LDATA_H_TREE))
THEN 1081 ALLOCATE(dti%XPAR_H_TREE (kdim,nvegtype))
1092 IF (any(dti%LDATA_RE25))
THEN 1093 ALLOCATE(dti%XPAR_RE25 (kdim,nvegtype))
1104 IF (any(dti%LDATA_CE_NITRO))
THEN 1105 ALLOCATE(dti%XPAR_CE_NITRO (kdim,nvegtype))
1116 IF (any(dti%LDATA_CF_NITRO))
THEN 1117 ALLOCATE(dti%XPAR_CF_NITRO (kdim,nvegtype))
1128 IF (any(dti%LDATA_CNA_NITRO))
THEN 1129 ALLOCATE(dti%XPAR_CNA_NITRO (kdim,nvegtype))
1133 yrecfm=
'D_CNA_NITRO' 1140 IF (any(dti%LDATA_IRRIG))
THEN 1141 ALLOCATE(dti%XPAR_IRRIG (kdim,dti%NTIME,nvegtype))
1143 id1 = (jt-1)*nvegtype + 1
1146 WRITE(yrecfm,fmt=
'(A9,I2.2)')
'D_IRR_T',jt
1148 WRITE(yrecfm,fmt=
'(A9,I2.2)')
'D_IRRIG_T',jt
1155 dti%XPAR_IRRIG(:,jt,:) =
xundef 1160 IF (any(dti%LDATA_WATSUP))
THEN 1161 ALLOCATE(dti%XPAR_WATSUP (kdim,dti%NTIME,nvegtype))
1163 id1 = (jt-1)*nvegtype + 1
1166 WRITE(yrecfm,fmt=
'(A10,I2.2)')
'D_WAT_T',jt
1168 WRITE(yrecfm,fmt=
'(A10,I2.2)')
'D_WATSUP_T',jt
1175 dti%XPAR_WATSUP(:,jt,:) =
xundef 1182 IF (any(dti%LDATA_SEED_M))
THEN 1183 ALLOCATE(dti%XPAR_SEED_M (kdim,nvegtype))
1191 IF (any(dti%LDATA_SEED_D))
THEN 1192 ALLOCATE(dti%XPAR_SEED_D (kdim,nvegtype))
1199 IF (any(dti%LDATA_REAP_M))
THEN 1200 ALLOCATE(dti%XPAR_REAP_M (kdim,nvegtype))
1207 IF (any(dti%LDATA_REAP_D))
THEN 1208 ALLOCATE(dti%XPAR_REAP_D (kdim,nvegtype))
1215 ALLOCATE(zwork(ksize,io%NGROUND_LAYER))
1217 IF (dti%LDATA_CONDSAT)
THEN 1218 ALLOCATE(dti%XPAR_CONDSAT(kdim,io%NGROUND_LAYER))
1219 DO jl=1,
SIZE(dti%XPAR_CONDSAT,2)
1220 WRITE(yrecfm,fmt=
'(A10,I2.2)')
'D_CNDSAT_L',jl
1221 CALL read_surf(hprogram,yrecfm,zwork(:,jl),iresp,hcomment=ycomment
1223 IF (kdim/=ksize)
THEN 1224 CALL hor_interpol(dtco, u, gcp, iluout,zwork,dti%XPAR_CONDSAT)
1226 dti%XPAR_CONDSAT(:,:) = zwork(:,:)
1230 IF (dti%LDATA_MPOTSAT)
THEN 1231 ALLOCATE(dti%XPAR_MPOTSAT(kdim,io%NGROUND_LAYER))
1232 DO jl=1,
SIZE(dti%XPAR_MPOTSAT,2)
1233 WRITE(yrecfm,fmt=
'(A10,I2.2)')
'D_MPTSAT_L',jl
1234 CALL read_surf(hprogram,yrecfm,zwork(:,jl),iresp,hcomment=ycomment
1236 IF (kdim/=ksize)
THEN 1237 CALL hor_interpol(dtco, u, gcp, iluout,zwork,dti%XPAR_MPOTSAT)
1239 dti%XPAR_MPOTSAT(:,:) = zwork(:,:)
1243 IF (dti%LDATA_BCOEF)
THEN 1244 ALLOCATE(dti%XPAR_BCOEF(kdim,io%NGROUND_LAYER))
1245 DO jl=1,
SIZE(dti%XPAR_BCOEF,2)
1246 WRITE(yrecfm,fmt=
'(A9,I2.2)')
'D_BCOEF_L',jl
1247 CALL read_surf(hprogram,yrecfm,zwork(:,jl),iresp,hcomment=ycomment
1249 IF (kdim/=ksize)
THEN 1250 CALL hor_interpol(dtco, u, gcp, iluout,zwork,dti%XPAR_BCOEF)
1252 dti%XPAR_BCOEF(:,:) = zwork(:,:)
1256 IF (dti%LDATA_WWILT)
THEN 1257 ALLOCATE(dti%XPAR_WWILT(kdim,io%NGROUND_LAYER))
1258 DO jl=1,
SIZE(dti%XPAR_WWILT,2)
1259 WRITE(yrecfm,fmt=
'(A9,I2.2)')
'D_WWILT_L',jl
1260 CALL read_surf(hprogram,yrecfm,zwork(:,jl),iresp,hcomment=ycomment
1262 IF (kdim/=ksize)
THEN 1263 CALL hor_interpol(dtco, u, gcp, iluout,zwork,dti%XPAR_WWILT)
1265 dti%XPAR_WWILT(:,:) = zwork(:,:)
1269 IF (dti%LDATA_WFC)
THEN 1270 ALLOCATE(dti%XPAR_WFC(kdim,io%NGROUND_LAYER))
1271 DO jl=1,
SIZE(dti%XPAR_WFC,2)
1272 WRITE(yrecfm,fmt=
'(A7,I2.2)')
'D_WFC_L',jl
1273 CALL read_surf(hprogram,yrecfm,zwork(:,jl),iresp,hcomment=ycomment
1275 IF (kdim/=ksize)
THEN 1276 CALL hor_interpol(dtco, u, gcp, iluout,zwork,dti%XPAR_WFC)
1278 dti%XPAR_WFC(:,:) = zwork(:,:)
1282 IF (dti%LDATA_WSAT)
THEN 1283 ALLOCATE(dti%XPAR_WSAT(kdim,io%NGROUND_LAYER))
1284 DO jl=1,
SIZE(dti%XPAR_WSAT,2)
1285 WRITE(yrecfm,fmt=
'(A8,I2.2)')
'D_WSAT_L',jl
1286 CALL read_surf(hprogram,yrecfm,zwork(:,jl),iresp,hcomment=ycomment
1288 IF (kdim/=ksize)
THEN 1289 CALL hor_interpol(dtco, u, gcp, iluout,zwork,dti%XPAR_WSAT)
1291 dti%XPAR_WSAT(:,:) = zwork(:,:)
1301 IF (lassim) lread_all = gread_all
1303 IF (
lhook)
CALL dr_hook(
'READ_PGD_ISBA_PAR_N',1,zhook_handle)
subroutine make_choice_array(HPROGRAM, KNPATCH, ODIM, HRECFM, PWORK, HDIR, KPATCH)
subroutine read_pgd_isba_par_n(DTCO, U, GCP, DTI, KDIM, IO, HPROG
logical, dimension(:), allocatable linterp
subroutine hor_interpol(DTCO, U, GCP, KLUOUT, PFIELDIN, PFIELDOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine read_surf_isba_par_n(DTCO, U, GCP, KPATCH, HPROGRAM, H