SURFEX v8.1
General documentation of Surfex
read_pgd_isba_parn.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #########
6  SUBROUTINE read_pgd_isba_par_n (DTCO, U, GCP, DTI, KDIM, IO, HPROGRAM,KSIZE,OLAND_USE, TPDATE_BEG, TPDATE_END, HDIR)
7 ! ################################################
8 !
9 !!**** *READ_PGD_ISBA_PAR_n* - reads ISBA physiographic fields
10 !!
11 !! PURPOSE
12 !! -------
13 !!
14 !!** METHOD
15 !! ------
16 !!
17 !! EXTERNAL
18 !! --------
19 !!
20 !!
21 !! IMPLICIT ARGUMENTS
22 !! ------------------
23 !!
24 !! REFERENCE
25 !! ---------
26 !!
27 !!
28 !! AUTHOR
29 !! ------
30 !! V. Masson *Meteo France*
31 !!
32 !! MODIFICATIONS
33 !! -------------
34 !! Original 01/2003
35 !! P. Le Moigne 12/2004 : add type of photosynthesis
36 !! P. Samuelsson 02/2012 : MEB
37 !! B. Decharme 01/16 : Bug when vegetation veg, z0 and emis are imposed whith interactive vegetation
38 !-------------------------------------------------------------------------------
39 !
40 !* 0. DECLARATIONS
41 ! ------------
42 !
44 USE modd_surf_atm_n, ONLY : surf_atm_t
46 !
47 USE modd_data_isba_n, ONLY : data_isba_t
49 !
50 USE modd_surf_par, ONLY : xundef
51 USE modd_type_date_surf, ONLY : date
52 !
53 USE modd_assim, ONLY : lread_all, lassim
54 !
55 USE modd_data_cover_par, ONLY : nvegtype, nvegtype_old, nvegtype_ecosg
56 USE modd_prep, ONLY : linterp
57 !
58 USE modi_get_luout
60 USE modi_make_choice_array
61 USE modi_hor_interpol
62 USE modi_read_surf_isba_par_n
63 !
64 USE yomhook ,ONLY : lhook, dr_hook
65 USE parkind1 ,ONLY : jprb
66 !
67 IMPLICIT NONE
68 !
69 !* 0.1 Declarations of arguments
70 ! -------------------------
71 !
72 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
73 TYPE(surf_atm_t), INTENT(INOUT) :: U
74 TYPE(grid_conf_proj_t),INTENT(INOUT) :: GCP
75 !
76 TYPE(data_isba_t), INTENT(INOUT) :: DTI
77 INTEGER, INTENT(IN) :: KDIM
78 TYPE(isba_options_t), INTENT(INOUT) :: IO
79 !
80  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling
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 ! type of field :
86 ! ! 'H' : field with
87 ! ! horizontal spatial dim.
88 ! ! '-' : no horizontal dim.
89 !
90 !* 0.2 Declarations of local variables
91 ! -------------------------------
92 !
93 REAL, DIMENSION(KSIZE,NVEGTYPE) :: ZFIELD
94 REAL, DIMENSION(:,:), ALLOCATABLE :: ZWORK
95 LOGICAL, DIMENSION(36) :: GTIME
96 INTEGER :: ILUOUT
97 INTEGER :: ITIME
98 INTEGER :: IRESP ! IRESP : return-code if a problem appears
99  CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read
100  CHARACTER(LEN=16) :: YRECFM2
101  CHARACTER(LEN=100):: YCOMMENT
102  CHARACTER(LEN=1) :: YDIR
103 INTEGER :: JT ! loop index
104 INTEGER :: JL ! loop index
105 INTEGER :: IVERSION ! surface version
106 INTEGER :: IBUGFIX
107 INTEGER :: ISIZE_LMEB_PATCH
108 INTEGER :: IENDT, IEND, ID1, ID2, JT_BEG, JT_END
109 !
110 LOGICAL :: GREAD_ALL, GDIM, GDIM2
111 !
112 REAL(KIND=JPRB) :: ZHOOK_HANDLE
113 !
114 !-------------------------------------------------------------------------------
115 !
116 IF (lhook) CALL dr_hook('READ_PGD_ISBA_PAR_N',0,zhook_handle)
117 !
118  CALL get_luout(hprogram,iluout)
119 !
120 ydir = 'H'
121 IF (PRESENT(hdir)) ydir = hdir
122 !
123 IF (lassim) THEN
124  gread_all = lread_all
125  lread_all = .true.
126 ENDIF
127 !
128 yrecfm='VERSION'
129  CALL read_surf(hprogram,yrecfm,iversion,iresp)
130 WRITE(iluout,*) 'read version ',iversion
131 !
132 yrecfm='BUG'
133  CALL read_surf(hprogram,yrecfm,ibugfix,iresp)
134 !
135 !
136 gdim = (iversion>8 .OR. (iversion==8 .AND. ibugfix>=1))
137 gdim2 = gdim
138 IF (gdim) CALL read_surf(hprogram,'SPLIT_PATCH',gdim2,iresp)
139 !
140 isize_lmeb_patch=count(io%LMEB_PATCH(:))
141 !
142 dti%LDATA_MIXPAR = .false.
143 !
144 IF (gdim) THEN
145  yrecfm='NDATA_TIME'
146  CALL read_surf(hprogram,yrecfm,dti%NTIME,iresp,hcomment=ycomment)
147 ENDIF
148 !
149 dti%NVEGTYPE = nvegtype
150 !
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.
175 !
176 IF (iversion<7 .AND. .NOT.io%LECOCLIMAP) THEN
177  !
178  dti%LDATA_VEGTYPE =.true.
179  !
180  dti%LDATA_VEG =.true.
181  dti%LDATA_LAI =.true.
182  dti%LDATA_Z0 =.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.
192  !
193  dti%LDATA_RSMIN =.true.
194  dti%LDATA_GAMMA =.true.
195  dti%LDATA_WRMAX_CF=.true.
196  dti%LDATA_RGL =.true.
197  dti%LDATA_CV =.true.
198  dti%LDATA_Z0_O_Z0H=.true.
199  dti%LDATA_DG =.true.
200  dti%LDATA_ROOTFRAC=.true.
201  !
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.
207  !
208  dti%LDATA_GMES =.true.
209  dti%LDATA_BSLAI =.true.
210  dti%LDATA_LAIMIN =.true.
211  dti%LDATA_SEFOLD =.true.
212  dti%LDATA_GC =.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.
221  !
222  dti%LDATA_SEED_M=.false.
223  dti%LDATA_SEED_D=.false.
224  dti%LDATA_REAP_M=.false.
225  dti%LDATA_REAP_D=.false.
226  !
227 ENDIF
228 !
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.
235 !
236 dti%LIMP_VEG =.false.
237 dti%LIMP_Z0 =.false.
238 dti%LIMP_EMIS=.false.
239 !
240 IF (gdim) THEN
241  iendt = nvegtype * dti%NTIME
242  iend = max(nvegtype_old,nvegtype_ecosg)
243 ELSE
244  iendt = 1
245  iend = 1
246 ENDIF
247 !
248 !
249 IF (.NOT.oland_use) THEN
250  !
251  IF (iversion>=7) THEN
252  !
253  yrecfm='L_VEGTYPE'
254  CALL read_surf(hprogram,yrecfm,dti%LDATA_VEGTYPE,iresp,hcomment=ycomment)
255  IF (dti%LDATA_VEGTYPE) dti%LDATA_MIXPAR = .true.
256  !
257  yrecfm='L_VEG'
258  CALL read_surf(hprogram,yrecfm,dti%LDATA_VEG(1:iendt),iresp,hcomment=ycomment,hdir='-')
259  IF (any(dti%LDATA_VEG)) THEN
260  dti%LDATA_MIXPAR = .true.
261  dti%LIMP_VEG = .true.
262  ENDIF
263  !
264  yrecfm='L_LAI'
265  CALL read_surf(hprogram,yrecfm,dti%LDATA_LAI(1:iendt),iresp,hcomment=ycomment,hdir='-')
266  IF (any(dti%LDATA_LAI)) dti%LDATA_MIXPAR = .true.
267  !
268  yrecfm='L_Z0'
269  CALL read_surf(hprogram,yrecfm,dti%LDATA_Z0(1:iendt),iresp,hcomment=ycomment,hdir='-')
270  IF (any(dti%LDATA_Z0)) THEN
271  dti%LDATA_MIXPAR = .true.
272  dti%LIMP_Z0 = .true.
273  ENDIF
274  !
275  yrecfm='L_EMIS'
276  CALL read_surf(hprogram,yrecfm,dti%LDATA_EMIS(1:iendt),iresp,hcomment=ycomment,hdir='-')
277  IF (any(dti%LDATA_EMIS)) THEN
278  dti%LDATA_MIXPAR = .true.
279  dti%LIMP_EMIS = .true.
280  ENDIF
281  !
282  yrecfm='L_RSMIN'
283  CALL read_surf(hprogram,yrecfm,dti%LDATA_RSMIN(1:iend),iresp,hcomment=ycomment,hdir='-')
284  IF (any(dti%LDATA_RSMIN)) dti%LDATA_MIXPAR = .true.
285  yrecfm='L_GAMMA'
286  CALL read_surf(hprogram,yrecfm,dti%LDATA_GAMMA(1:iend),iresp,hcomment=ycomment,hdir='-')
287  IF (any(dti%LDATA_GAMMA)) dti%LDATA_MIXPAR = .true.
288  yrecfm='L_WRMAX_CF'
289  CALL read_surf(hprogram,yrecfm,dti%LDATA_WRMAX_CF(1:iend),iresp,hcomment=ycomment,hdir='-')
290  IF (any(dti%LDATA_WRMAX_CF)) dti%LDATA_MIXPAR = .true.
291  yrecfm='L_RGL'
292  CALL read_surf(hprogram,yrecfm,dti%LDATA_RGL(1:iend),iresp,hcomment=ycomment,hdir='-')
293  IF (any(dti%LDATA_RGL)) dti%LDATA_MIXPAR = .true.
294  yrecfm='L_CV'
295  CALL read_surf(hprogram,yrecfm,dti%LDATA_CV(1:iend),iresp,hcomment=ycomment,hdir='-')
296  IF (any(dti%LDATA_CV)) dti%LDATA_MIXPAR = .true.
297  yrecfm='L_Z0_O_Z0H'
298  CALL read_surf(hprogram,yrecfm,dti%LDATA_Z0_O_Z0H(1:iend),iresp,hcomment=ycomment,hdir='-')
299  IF (any(dti%LDATA_Z0_O_Z0H)) dti%LDATA_MIXPAR = .true.
300  yrecfm='L_DG'
301  CALL read_surf(hprogram,yrecfm,dti%LDATA_DG(1:iend),iresp,hcomment=ycomment,hdir='-')
302  IF (any(dti%LDATA_DG)) dti%LDATA_MIXPAR = .true.
303  yrecfm='L_ROOTFRAC'
304  CALL read_surf(hprogram,yrecfm,dti%LDATA_ROOTFRAC(1:iend),iresp,hcomment=ycomment,hdir='-')
305  IF (any(dti%LDATA_ROOTFRAC)) dti%LDATA_MIXPAR = .true.
306  yrecfm='L_DICE'
307  CALL read_surf(hprogram,yrecfm,dti%LDATA_DICE(1:iend),iresp,hcomment=ycomment,hdir='-')
308  IF (any(dti%LDATA_DICE)) dti%LDATA_MIXPAR = .true.
309  !
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,hcomment=ycomment,hdir='-')
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=ycomment,hdir='-')
316  IF (any(dti%LDATA_ROOT_DEPTH)) dti%LDATA_MIXPAR = .true.
317  yrecfm='L_ROOT_EXT'
318  CALL read_surf(hprogram,yrecfm,dti%LDATA_ROOT_EXTINCTION(1:iend),iresp,hcomment=ycomment,hdir='-')
319  IF (any(dti%LDATA_ROOT_EXTINCTION)) dti%LDATA_MIXPAR = .true.
320  yrecfm='L_ROOT_LIN'
321  CALL read_surf(hprogram,yrecfm,dti%LDATA_ROOT_LIN(1:iend),iresp,hcomment=ycomment,hdir='-')
322  IF (any(dti%LDATA_ROOT_LIN)) dti%LDATA_MIXPAR = .true.
323  ELSE
324  dti%LDATA_GROUND_DEPTH = .false.
325  dti%LDATA_ROOT_DEPTH = .false.
326  dti%LDATA_ROOT_EXTINCTION = .false.
327  dti%LDATA_ROOT_LIN = .false.
328  ENDIF
329  !
330  yrecfm='L_ALBNIR_VEG'
331  CALL read_surf(hprogram,yrecfm,dti%LDATA_ALBNIR_VEG(1:iendt),iresp,hcomment=ycomment,hdir='-')
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=ycomment,hdir='-')
335  IF (any(dti%LDATA_ALBVIS_VEG)) dti%LDATA_MIXPAR = .true.
336  yrecfm='L_ALBUV_VEG'
337  CALL read_surf(hprogram,yrecfm,dti%LDATA_ALBUV_VEG(1:iendt),iresp,hcomment=ycomment,hdir='-')
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=ycomment,hdir='-')
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=ycomment,hdir='-')
344  IF (any(dti%LDATA_ALBVIS_SOIL)) dti%LDATA_MIXPAR = .true.
345  yrecfm='L_ALBUV_SOI'
346  CALL read_surf(hprogram,yrecfm,dti%LDATA_ALBUV_SOIL(1:iendt),iresp,hcomment=ycomment,hdir='-')
347  IF (any(dti%LDATA_ALBUV_SOIL)) dti%LDATA_MIXPAR = .true.
348  !
349  yrecfm='L_GMES'
350  CALL read_surf(hprogram,yrecfm,dti%LDATA_GMES(1:iend),iresp,hcomment=ycomment,hdir='-')
351  IF (any(dti%LDATA_GMES)) dti%LDATA_MIXPAR = .true.
352  yrecfm='L_BSLAI'
353  CALL read_surf(hprogram,yrecfm,dti%LDATA_BSLAI(1:iend),iresp,hcomment=ycomment,hdir='-')
354  IF (any(dti%LDATA_BSLAI)) dti%LDATA_MIXPAR = .true.
355  yrecfm='L_LAIMIN'
356  CALL read_surf(hprogram,yrecfm,dti%LDATA_LAIMIN(1:iend),iresp,hcomment=ycomment,hdir='-')
357  IF (any(dti%LDATA_LAIMIN)) dti%LDATA_MIXPAR = .true.
358  yrecfm='L_SEFOLD'
359  CALL read_surf(hprogram,yrecfm,dti%LDATA_SEFOLD(1:iend),iresp,hcomment=ycomment,hdir='-')
360  IF (any(dti%LDATA_SEFOLD)) dti%LDATA_MIXPAR = .true.
361  yrecfm='L_GC'
362  CALL read_surf(hprogram,yrecfm,dti%LDATA_GC(1:iend),iresp,hcomment=ycomment,hdir='-')
363  IF (any(dti%LDATA_GC)) dti%LDATA_MIXPAR = .true.
364  yrecfm='L_DMAX'
365  CALL read_surf(hprogram,yrecfm,dti%LDATA_DMAX(1:iend),iresp,hcomment=ycomment,hdir='-')
366  IF (any(dti%LDATA_DMAX)) dti%LDATA_MIXPAR = .true.
367  yrecfm='L_F2I'
368  CALL read_surf(hprogram,yrecfm,dti%LDATA_F2I(1:iend),iresp,hcomment=ycomment,hdir='-')
369  IF (any(dti%LDATA_F2I)) dti%LDATA_MIXPAR = .true.
370  yrecfm='L_STRESS'
371  CALL read_surf(hprogram,yrecfm,dti%LDATA_STRESS(1:iend),iresp,hcomment=ycomment,hdir='-')
372  IF (any(dti%LDATA_STRESS)) dti%LDATA_MIXPAR = .true.
373  yrecfm='L_H_TREE'
374  CALL read_surf(hprogram,yrecfm,dti%LDATA_H_TREE(1:iend),iresp,hcomment=ycomment,hdir='-')
375  IF (any(dti%LDATA_H_TREE)) dti%LDATA_MIXPAR = .true.
376  yrecfm='L_RE25'
377  CALL read_surf(hprogram,yrecfm,dti%LDATA_RE25(1:iend),iresp,hcomment=ycomment,hdir='-')
378  IF (any(dti%LDATA_RE25)) dti%LDATA_MIXPAR = .true.
379  yrecfm='L_CE_NITRO'
380  CALL read_surf(hprogram,yrecfm,dti%LDATA_CE_NITRO(1:iend),iresp,hcomment=ycomment,hdir='-')
381  IF (any(dti%LDATA_CE_NITRO)) dti%LDATA_MIXPAR = .true.
382  yrecfm='L_CF_NITRO'
383  CALL read_surf(hprogram,yrecfm,dti%LDATA_CF_NITRO(1:iend),iresp,hcomment=ycomment,hdir='-')
384  IF (any(dti%LDATA_CF_NITRO)) dti%LDATA_MIXPAR = .true.
385  yrecfm='L_CNA_NITRO'
386  CALL read_surf(hprogram,yrecfm,dti%LDATA_CNA_NITRO(1:iend),iresp,hcomment=ycomment,hdir='-')
387  IF (any(dti%LDATA_CNA_NITRO)) dti%LDATA_MIXPAR = .true.
388  !
389  yrecfm='L_IRRIG'
390  CALL read_surf(hprogram,yrecfm,dti%LDATA_IRRIG(1:iendt),iresp,hcomment=ycomment,hdir='-')
391  IF (any(dti%LDATA_IRRIG)) dti%LDATA_MIXPAR = .true.
392  yrecfm='L_WATSUP'
393  CALL read_surf(hprogram,yrecfm,dti%LDATA_WATSUP(1:iendt),iresp,hcomment=ycomment,hdir='-')
394  IF (any(dti%LDATA_WATSUP)) dti%LDATA_MIXPAR = .true.
395  !
396  ENDIF
397  !
398  IF (iversion>=8.AND.isize_lmeb_patch>0) THEN
399  !
400  yrecfm='L_H_VEG'
401  CALL read_surf(hprogram,yrecfm,dti%LDATA_H_VEG(1:iendt),iresp,hcomment=ycomment,hdir='-')
402  IF (any(dti%LDATA_H_VEG)) dti%LDATA_MIXPAR = .true.
403  yrecfm='L_Z0LITTER'
404  CALL read_surf(hprogram,yrecfm,dti%LDATA_Z0LITTER(1:iendt),iresp,hcomment=ycomment,hdir='-')
405  IF (any(dti%LDATA_Z0LITTER)) dti%LDATA_MIXPAR = .true.
406  yrecfm='L_GNDLITTER'
407  CALL read_surf(hprogram,yrecfm,dti%LDATA_GNDLITTER(1:iendt),iresp,hcomment=ycomment,hdir='-')
408  IF (any(dti%LDATA_GNDLITTER)) dti%LDATA_MIXPAR = .true.
409  !
410  ENDIF
411  !
412  IF (gdim) THEN
413  !
414  yrecfm='L_SEED_M'
415  CALL read_surf(hprogram,yrecfm,dti%LDATA_SEED_M(1:iend),iresp,hcomment=ycomment,hdir='-')
416  IF (any(dti%LDATA_SEED_M)) dti%LDATA_MIXPAR = .true.
417  yrecfm='L_SEED_D'
418  CALL read_surf(hprogram,yrecfm,dti%LDATA_SEED_D(1:iend),iresp,hcomment=ycomment,hdir='-')
419  IF (any(dti%LDATA_SEED_D)) dti%LDATA_MIXPAR = .true.
420  yrecfm='L_REAP_M'
421  CALL read_surf(hprogram,yrecfm,dti%LDATA_REAP_M(1:iend),iresp,hcomment=ycomment,hdir='-')
422  IF (any(dti%LDATA_REAP_M)) dti%LDATA_MIXPAR = .true.
423  yrecfm='L_REAP_D'
424  CALL read_surf(hprogram,yrecfm,dti%LDATA_REAP_D(1:iend),iresp,hcomment=ycomment,hdir='-')
425  IF (any(dti%LDATA_REAP_D)) dti%LDATA_MIXPAR = .true.
426  !
427  yrecfm='L_CONDSAT'
428  CALL read_surf(hprogram,yrecfm,dti%LDATA_CONDSAT,iresp,hcomment=ycomment,hdir='-')
429  yrecfm='L_MPOTSAT'
430  CALL read_surf(hprogram,yrecfm,dti%LDATA_MPOTSAT,iresp,hcomment=ycomment,hdir='-')
431  yrecfm='L_BCOEF'
432  CALL read_surf(hprogram,yrecfm,dti%LDATA_BCOEF,iresp,hcomment=ycomment,hdir='-')
433  yrecfm='L_WWILT'
434  CALL read_surf(hprogram,yrecfm,dti%LDATA_WWILT,iresp,hcomment=ycomment,hdir='-')
435  yrecfm='L_WFC'
436  CALL read_surf(hprogram,yrecfm,dti%LDATA_WFC,iresp,hcomment=ycomment,hdir='-')
437  yrecfm='L_WSAT'
438  CALL read_surf(hprogram,yrecfm,dti%LDATA_WSAT,iresp,hcomment=ycomment,hdir='-')
439  !
440  ELSE
441  !
442  dti%LDATA_SEED_M=.false.
443  dti%LDATA_SEED_D=.false.
444  dti%LDATA_REAP_M=.false.
445  dti%LDATA_REAP_D=.false.
446  !
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.
453  !
454  ENDIF
455  !
456  IF (ALLOCATED(linterp)) linterp(:) = .true.
457  !
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
460  IF (.NOT.gdim) THEN
461  yrecfm='NDATA_TIME'
462  CALL read_surf(hprogram,yrecfm,dti%NTIME,iresp,hcomment=ycomment)
463  ENDIF
464  itime = dti%NTIME
465  ELSE
466  itime = 1
467  ENDIF
468  !
469  IF (itime==1) THEN
470  jt_beg = 1
471  jt_end = 1
472  ELSE
473  ! get JT corresponding to DATE_BEG and DATE_END
474  ! for ITIME = 36
475  jt_beg = (tpdate_beg%MONTH-1) * 3 + ceiling(min(tpdate_beg%DAY,30)/10.)
476  jt_end = (tpdate_end%MONTH-1) * 3 + ceiling(min(tpdate_end%DAY,30)/10.)
477  IF ( tpdate_end%YEAR > tpdate_beg%YEAR+1 ) THEN
478  jt_beg = 1
479  jt_end = 36
480  ENDIF
481  ! for ITIME = DTI%NTIME
482  IF (itime==2) THEN ! particular case of summer / winter
483  IF (jt_beg<=8.OR.jt_beg>=27) THEN
484  jt_beg = 1
485  ELSE
486  jt_beg = 2
487  ENDIF
488  IF (jt_end<=8.OR.jt_end>=27) THEN
489  jt_end = 1
490  ELSE
491  jt_end = 2
492  ENDIF
493  ELSE
494  jt_beg = ceiling(jt_beg/(36./itime))
495  jt_end = ceiling(jt_end/(36./itime))
496  ENDIF
497  ENDIF
498  gtime(:) = .false.
499  DO jt = 1,SIZE(gtime)
500  IF (jt_beg==jt_end .AND. tpdate_end%YEAR==tpdate_beg%YEAR+1) THEN
501  gtime(jt) = .true.
502  ELSEIF (jt_beg<=jt_end .AND. jt>=jt_beg .AND. jt<=jt_end) THEN
503  gtime(jt) = .true.
504  ELSEIF (jt_beg>jt_end .AND. (jt>=jt_beg .OR. jt<=jt_end)) THEN
505  gtime(jt) = .true.
506  ENDIF
507  ENDDO
508  !
509  !
510  IF (dti%LDATA_VEGTYPE) THEN
511  IF (gdim2) THEN
512  yrecfm='D_VEGTY_'
513  ELSE
514  yrecfm='D_VEGTYPE'
515  ENDIF
516  CALL make_choice_array(hprogram, nvegtype, gdim2, yrecfm, zfield(:,:),hdir=ydir)
517  ALLOCATE(dti%XPAR_VEGTYPE(kdim,nvegtype))
518  IF (kdim/=ksize) THEN
519  CALL hor_interpol(dtco, u, gcp, iluout,zfield,dti%XPAR_VEGTYPE)
520  ELSE
521  dti%XPAR_VEGTYPE(:,:) = zfield(:,:)
522  ENDIF
523  ENDIF
524  !
525  IF (any(dti%LDATA_VEG)) THEN
526  ALLOCATE(dti%XPAR_VEG(kdim,dti%NTIME,nvegtype))
527  DO jt=1,itime
528  id1 = (jt-1)*nvegtype + 1
529  id2 = jt*nvegtype
530  IF (gtime(jt)) THEN
531  WRITE(yrecfm,fmt='(A7,I2.2)') 'D_VEG_T',jt
532  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
533  iversion, ibugfix, dti%LDATA_VEG(id1:id2), dti%XPAR_VEG(:,jt,:),iresp,&
534  hcomment=ycomment,hdir=ydir)
535  ELSE
536  dti%XPAR_VEG(:,jt,:) = xundef
537  ENDIF
538  END DO
539  ENDIF
540 !
541  IF (any(dti%LDATA_LAI)) THEN
542  ALLOCATE(dti%XPAR_LAI(kdim,dti%NTIME,nvegtype))
543  DO jt=1,itime
544  id1 = (jt-1)*nvegtype + 1
545  id2 = jt*nvegtype
546  IF (gtime(jt)) THEN
547  WRITE(yrecfm,fmt='(A7,I2.2)') 'D_LAI_T',jt
548  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
549  iversion, ibugfix, dti%LDATA_LAI(id1:id2),dti%XPAR_LAI(:,jt,:),iresp,&
550  hcomment=ycomment,hdir=ydir)
551  ELSE
552  dti%XPAR_LAI(:,jt,:) = xundef
553  ENDIF
554  END DO
555  ENDIF
556 !
557  IF (any(dti%LDATA_Z0)) THEN
558  ALLOCATE(dti%XPAR_Z0 (kdim,dti%NTIME,nvegtype))
559  DO jt=1,itime
560  id1 = (jt-1)*nvegtype + 1
561  id2 = jt*nvegtype
562  IF (gtime(jt)) THEN
563  WRITE(yrecfm,fmt='(A6,I2.2)') 'D_Z0_T',jt
564  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
565  iversion, ibugfix, dti%LDATA_Z0(id1:id2),dti%XPAR_Z0(:,jt,:),iresp,&
566  hcomment=ycomment,hdir=ydir)
567  ELSE
568  dti%XPAR_Z0(:,jt,:) = xundef
569  ENDIF
570  END DO
571  ENDIF
572 !
573  IF (any(dti%LDATA_EMIS)) THEN
574  ALLOCATE(dti%XPAR_EMIS (kdim,dti%NTIME,nvegtype))
575  DO jt=1,itime
576  id1 = (jt-1)*nvegtype + 1
577  id2 = jt*nvegtype
578  IF (gdim) THEN
579  WRITE(yrecfm,fmt='(A8,I2.2)') 'D_EMI_T',jt
580  ELSE
581  WRITE(yrecfm,fmt='(A8,I2.2)') 'D_EMIS_T',jt
582  ENDIF
583  IF (gtime(jt)) THEN
584  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
585  iversion, ibugfix, dti%LDATA_EMIS(id1:id2),dti%XPAR_EMIS(:,jt,:),iresp,&
586  hcomment=ycomment,hdir=ydir)
587  ELSE
588  dti%XPAR_EMIS(:,jt,:) = xundef
589  ENDIF
590  END DO
591  ENDIF
592 !
593  IF (any(dti%LDATA_H_VEG)) THEN
594  ALLOCATE(dti%XPAR_H_VEG(kdim,dti%NTIME,nvegtype))
595  DO jt=1,itime
596  id1 = (jt-1)*nvegtype + 1
597  id2 = jt*nvegtype
598  IF (gdim) THEN
599  WRITE(yrecfm,fmt='(A7,I2.2)') 'D_HVG_T',jt
600  ELSE
601  WRITE(yrecfm,fmt='(A9,I2.2)') 'D_H_VEG_T',jt
602  ENDIF
603  IF (gtime(jt)) THEN
604  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
605  iversion, ibugfix, dti%LDATA_H_VEG(id1:id2),dti%XPAR_H_VEG(:,jt,:),iresp,&
606  hcomment=ycomment,hdir=ydir)
607  ELSE
608  dti%XPAR_H_VEG(:,jt,:) = xundef
609  ENDIF
610  END DO
611  ENDIF
612 !
613  IF (any(dti%LDATA_GNDLITTER)) THEN
614  ALLOCATE(dti%XPAR_GNDLITTER(kdim,dti%NTIME,nvegtype))
615  DO jt=1,itime
616  id1 = (jt-1)*nvegtype + 1
617  id2 = jt*nvegtype
618  IF (gdim) THEN
619  WRITE(yrecfm,fmt='(A7,I2.2)') 'D_GLI_T',jt
620  ELSE
621  WRITE(yrecfm,fmt='(A7,I2.2)') 'D_GNDLITTER',jt
622  ENDIF
623  IF (gtime(jt)) THEN
624  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
625  iversion, ibugfix, dti%LDATA_GNDLITTER(id1:id2),dti%XPAR_GNDLITTER(:,jt,:),iresp,&
626  hcomment=ycomment,hdir=ydir)
627  ELSE
628  dti%XPAR_GNDLITTER(:,jt,:) = xundef
629  ENDIF
630  END DO
631  ENDIF
632 !
633  IF (any(dti%LDATA_Z0LITTER)) THEN
634  ALLOCATE(dti%XPAR_Z0LITTER (kdim,dti%NTIME,nvegtype))
635  DO jt=1,itime
636  id1 = (jt-1)*nvegtype + 1
637  id2 = jt*nvegtype
638  IF (gdim) THEN
639  WRITE(yrecfm,fmt='(A7,I2.2)') 'D_Z0L_T',jt
640  ELSE
641  WRITE(yrecfm,fmt='(A8,I2.2)') 'D_Z0LITTER_T',jt
642  ENDIF
643  IF (gtime(jt)) THEN
644  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
645  iversion, ibugfix, dti%LDATA_Z0LITTER(id1:id2),dti%XPAR_Z0LITTER(:,jt,:),iresp,&
646  hcomment=ycomment,hdir=ydir)
647  ELSE
648  dti%XPAR_Z0LITTER(:,jt,:) = xundef
649  ENDIF
650  END DO
651  ENDIF
652 !
653  IF (any(dti%LDATA_ALBNIR_VEG)) THEN
654  ALLOCATE(dti%XPAR_ALBNIR_VEG(kdim,dti%NTIME,nvegtype))
655  DO jt=1,itime
656  id1 = (jt-1)*nvegtype + 1
657  id2 = jt*nvegtype
658  IF (gdim) THEN
659  IF (gtime(jt)) THEN
660  WRITE(yrecfm,fmt='(A7,I2.2)') 'D_ANV_T',jt
661  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
662  iversion, ibugfix, dti%LDATA_ALBNIR_VEG(id1:id2),dti%XPAR_ALBNIR_VEG(:,jt,:),iresp,&
663  hcomment=ycomment,hdir=ydir)
664  ELSE
665  dti%XPAR_ALBNIR_VEG(:,jt,:) = xundef
666  ENDIF
667  ELSE
668  IF (jt==1) THEN
669  yrecfm='D_ALBNIR_VEG'
670  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
671  iversion, ibugfix, dti%LDATA_ALBNIR_VEG,dti%XPAR_ALBNIR_VEG(:,1,:),iresp,&
672  hcomment=ycomment,hdir=ydir)
673  ELSE
674  dti%XPAR_ALBNIR_VEG(:,jt,:) = dti%XPAR_ALBNIR_VEG(:,1,:)
675  ENDIF
676  ENDIF
677  ENDDO
678  ENDIF
679 !
680  IF (any(dti%LDATA_ALBVIS_VEG)) THEN
681  ALLOCATE(dti%XPAR_ALBVIS_VEG(kdim,dti%NTIME,nvegtype))
682  DO jt=1,itime
683  id1 = (jt-1)*nvegtype + 1
684  id2 = jt*nvegtype
685  IF (gdim) THEN
686  IF (gtime(jt)) THEN
687  WRITE(yrecfm,fmt='(A7,I2.2)') 'D_AVV_T',jt
688  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
689  iversion, ibugfix, dti%LDATA_ALBVIS_VEG(id1:id2),dti%XPAR_ALBVIS_VEG(:,jt,:),iresp,&
690  hcomment=ycomment,hdir=ydir)
691  ELSE
692  dti%XPAR_ALBVIS_VEG(:,jt,:) = xundef
693  ENDIF
694  ELSE
695  IF (jt==1) THEN
696  yrecfm='D_ALBVIS_VEG'
697  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
698  iversion, ibugfix, dti%LDATA_ALBVIS_VEG,dti%XPAR_ALBVIS_VEG(:,1,:),iresp,&
699  hcomment=ycomment,hdir=ydir)
700  ELSE
701  dti%XPAR_ALBVIS_VEG(:,jt,:) = dti%XPAR_ALBVIS_VEG(:,1,:)
702  ENDIF
703  ENDIF
704  ENDDO
705  ENDIF
706 !
707  IF (any(dti%LDATA_ALBUV_VEG)) THEN
708  ALLOCATE(dti%XPAR_ALBUV_VEG(kdim,dti%NTIME,nvegtype))
709  DO jt=1,itime
710  id1 = (jt-1)*nvegtype + 1
711  id2 = jt*nvegtype
712  IF (gdim) THEN
713  IF (gtime(jt)) THEN
714  WRITE(yrecfm,fmt='(A7,I2.2)') 'D_AUV_T',jt
715  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
716  iversion, ibugfix, dti%LDATA_ALBUV_VEG(id1:id2),dti%XPAR_ALBUV_VEG(:,jt,:),iresp,&
717  hcomment=ycomment,hdir=ydir)
718  ELSE
719  dti%XPAR_ALBUV_VEG(:,jt,:) = xundef
720  ENDIF
721  ELSE
722  IF (jt==1) THEN
723  yrecfm='D_ALBUV_VEG'
724  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
725  iversion, ibugfix, dti%LDATA_ALBUV_VEG,dti%XPAR_ALBUV_VEG(:,1,:),iresp,&
726  hcomment=ycomment,hdir=ydir)
727  ELSE
728  dti%XPAR_ALBUV_VEG(:,jt,:) = dti%XPAR_ALBUV_VEG(:,1,:)
729  ENDIF
730  ENDIF
731  ENDDO
732  ENDIF
733 !
734  IF (any(dti%LDATA_ALBNIR_SOIL)) THEN
735  ALLOCATE(dti%XPAR_ALBNIR_SOIL(kdim,dti%NTIME,nvegtype))
736  DO jt=1,itime
737  id1 = (jt-1)*nvegtype + 1
738  id2 = jt*nvegtype
739  IF (gdim) THEN
740  IF (gtime(jt)) THEN
741  WRITE(yrecfm,fmt='(A7,I2.2)') 'D_ANS_T',jt
742  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
743  iversion, ibugfix, dti%LDATA_ALBNIR_SOIL(id1:id2),dti%XPAR_ALBNIR_SOIL(:,jt,:),iresp,&
744  hcomment=ycomment,hdir=ydir)
745  ELSE
746  dti%XPAR_ALBNIR_SOIL(:,jt,:) = xundef
747  ENDIF
748  ELSE
749  IF (jt==1) THEN
750  yrecfm='D_ALBNIR_SOI'
751  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
752  iversion, ibugfix, dti%LDATA_ALBNIR_SOIL,dti%XPAR_ALBNIR_SOIL(:,1,:),iresp,&
753  hcomment=ycomment,hdir=ydir)
754  ELSE
755  dti%XPAR_ALBNIR_SOIL(:,jt,:) = dti%XPAR_ALBNIR_SOIL(:,1,:)
756  ENDIF
757  ENDIF
758  ENDDO
759  ENDIF
760 !
761  IF (any(dti%LDATA_ALBVIS_SOIL)) THEN
762  ALLOCATE(dti%XPAR_ALBVIS_SOIL(kdim,dti%NTIME,nvegtype))
763  DO jt=1,itime
764  id1 = (jt-1)*nvegtype + 1
765  id2 = jt*nvegtype
766  IF (gdim) THEN
767  IF (gtime(jt)) THEN
768  WRITE(yrecfm,fmt='(A7,I2.2)') 'D_AVS_T',jt
769  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
770  iversion, ibugfix, dti%LDATA_ALBVIS_SOIL(id1:id2),dti%XPAR_ALBVIS_SOIL(:,jt,:),iresp,&
771  hcomment=ycomment,hdir=ydir)
772  ELSE
773  dti%XPAR_ALBVIS_SOIL(:,jt,:) = xundef
774  ENDIF
775  ELSE
776  IF (jt==1) THEN
777  yrecfm='D_ALBVIS_SOI'
778  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
779  iversion, ibugfix, dti%LDATA_ALBVIS_SOIL,dti%XPAR_ALBVIS_SOIL(:,1,:),iresp,&
780  hcomment=ycomment,hdir=ydir)
781  ELSE
782  dti%XPAR_ALBVIS_SOIL(:,jt,:) = dti%XPAR_ALBVIS_SOIL(:,1,:)
783  ENDIF
784  ENDIF
785  ENDDO
786  ENDIF
787 !
788  IF (any(dti%LDATA_ALBUV_SOIL)) THEN
789  ALLOCATE(dti%XPAR_ALBUV_SOIL(kdim,dti%NTIME,nvegtype))
790  DO jt=1,itime
791  id1 = (jt-1)*nvegtype + 1
792  id2 = jt*nvegtype
793  IF (gdim) THEN
794  IF (gtime(jt)) THEN
795  WRITE(yrecfm,fmt='(A7,I2.2)') 'D_AUS_T',jt
796  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
797  iversion, ibugfix, dti%LDATA_ALBUV_SOIL(id1:id2),dti%XPAR_ALBUV_SOIL(:,jt,:),iresp,&
798  hcomment=ycomment,hdir=ydir)
799  ELSE
800  dti%XPAR_ALBUV_SOIL(:,jt,:) = xundef
801  ENDIF
802  ELSE
803  IF (jt==1) THEN
804  yrecfm='D_ALBUV_SOI'
805  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
806  iversion, ibugfix, dti%LDATA_ALBUV_SOIL,dti%XPAR_ALBUV_SOIL(:,1,:),iresp,&
807  hcomment=ycomment,hdir=ydir)
808  ELSE
809  dti%XPAR_ALBUV_SOIL(:,jt,:) = dti%XPAR_ALBUV_SOIL(:,1,:)
810  ENDIF
811  ENDIF
812  ENDDO
813  ENDIF
814 !
815  IF (any(dti%LDATA_RSMIN)) THEN
816  ALLOCATE(dti%XPAR_RSMIN (kdim,nvegtype))
817  IF (gdim) THEN
818  yrecfm='D_RSMIN_'
819  ELSE
820  yrecfm='D_RSMIN'
821  ENDIF
822  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
823  iversion, ibugfix, dti%LDATA_RSMIN,dti%XPAR_RSMIN(:,:),iresp,&
824  hcomment=ycomment,hdir=ydir)
825  ENDIF
826 !
827  IF (any(dti%LDATA_GAMMA)) THEN
828  ALLOCATE(dti%XPAR_GAMMA (kdim,nvegtype))
829  IF (gdim) THEN
830  yrecfm='D_GAMMA_'
831  ELSE
832  yrecfm='D_GAMMA'
833  ENDIF
834  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
835  iversion, ibugfix, dti%LDATA_GAMMA,dti%XPAR_GAMMA(:,:),iresp,&
836  hcomment=ycomment,hdir=ydir)
837  ENDIF
838 !
839  IF (any(dti%LDATA_WRMAX_CF)) THEN
840  ALLOCATE(dti%XPAR_WRMAX_CF (kdim,nvegtype))
841  IF (gdim) THEN
842  yrecfm='D_WRMAX_'
843  ELSE
844  yrecfm='D_WRMAX_CF'
845  ENDIF
846  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
847  iversion, ibugfix, dti%LDATA_WRMAX_CF,dti%XPAR_WRMAX_CF(:,:),iresp,&
848  hcomment=ycomment,hdir=ydir)
849  ENDIF
850 !
851  IF (any(dti%LDATA_RGL)) THEN
852  ALLOCATE(dti%XPAR_RGL (kdim,nvegtype))
853  IF (gdim) THEN
854  yrecfm='D_RGL_'
855  ELSE
856  yrecfm='D_RGL'
857  ENDIF
858  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
859  iversion, ibugfix, dti%LDATA_RGL,dti%XPAR_RGL(:,:),iresp,&
860  hcomment=ycomment,hdir=ydir)
861  ENDIF
862 !
863  IF (any(dti%LDATA_CV)) THEN
864  ALLOCATE(dti%XPAR_CV (kdim,nvegtype))
865  IF (gdim) THEN
866  yrecfm='D_CV_'
867  ELSE
868  yrecfm='D_CV'
869  ENDIF
870  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
871  iversion, ibugfix, dti%LDATA_CV,dti%XPAR_CV(:,:),iresp,&
872  hcomment=ycomment,hdir=ydir)
873  ENDIF
874 !
875  IF (any(dti%LDATA_Z0_O_Z0H)) THEN
876  ALLOCATE(dti%XPAR_Z0_O_Z0H (kdim,nvegtype))
877  IF (gdim) THEN
878  yrecfm='D_Z0H_'
879  ELSE
880  yrecfm='D_Z0_O_Z0H'
881  ENDIF
882  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
883  iversion, ibugfix, dti%LDATA_Z0_O_Z0H,dti%XPAR_Z0_O_Z0H(:,:),iresp,&
884  hcomment=ycomment,hdir=ydir)
885  ENDIF
886 !
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)
890  IF (gdim) THEN
891  WRITE(yrecfm,fmt='(A6,I2.2)') 'D_DG_L',jl
892  ELSE
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
895  ENDIF
896  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
897  iversion, ibugfix, dti%LDATA_DG,dti%XPAR_DG(:,jl,:),iresp,&
898  hcomment=ycomment,hdir=ydir)
899  END DO
900  ENDIF
901 !
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)
905  IF (gdim) THEN
906  WRITE(yrecfm,fmt='(A6,I2.2)') 'D_RTF_L',jl
907  ELSE
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
910  ENDIF
911  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
912  iversion, ibugfix, dti%LDATA_ROOTFRAC,dti%XPAR_ROOTFRAC(:,jl,:),iresp,&
913  hcomment=ycomment,hdir=ydir)
914  END DO
915  ENDIF
916 !
917  IF (any(dti%LDATA_GROUND_DEPTH)) THEN
918  ALLOCATE(dti%XPAR_GROUND_DEPTH(kdim,nvegtype))
919  IF (gdim) THEN
920  yrecfm2='D_GRDPT_'
921  ELSE
922  yrecfm2='D_GROUND_DEPTH'
923  IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm2='D_GROUND_DPT'
924  ENDIF
925  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm2, iluout, ksize, &
926  iversion, ibugfix, dti%LDATA_GROUND_DEPTH,dti%XPAR_GROUND_DEPTH(:,:),iresp,&
927  hcomment=ycomment,hdir=ydir)
928  ENDIF
929 !
930  IF (any(dti%LDATA_ROOT_DEPTH)) THEN
931  ALLOCATE(dti%XPAR_ROOT_DEPTH(kdim,nvegtype))
932  IF (gdim) THEN
933  yrecfm='D_RTDPT_'
934  ELSE
935  yrecfm='D_ROOT_DEPTH'
936  ENDIF
937  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
938  iversion, ibugfix, dti%LDATA_ROOT_DEPTH,dti%XPAR_ROOT_DEPTH(:,:),iresp,&
939  hcomment=ycomment,hdir=ydir)
940  ENDIF
941 !
942  IF (any(dti%LDATA_ROOT_EXTINCTION)) THEN
943  ALLOCATE(dti%XPAR_ROOT_EXTINCTION(kdim,nvegtype))
944  IF (gdim) THEN
945  yrecfm='D_RTEXT_'
946  ELSE
947  yrecfm='D_ROOT_EXT'
948  ENDIF
949  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
950  iversion, ibugfix, dti%LDATA_ROOT_EXTINCTION,dti%XPAR_ROOT_EXTINCTION(:,:),iresp,&
951  hcomment=ycomment,hdir=ydir)
952  ENDIF
953 
954  IF (any(dti%LDATA_ROOT_LIN)) THEN
955  ALLOCATE(dti%XPAR_ROOT_LIN(kdim,nvegtype))
956  IF (gdim) THEN
957  yrecfm='D_RTLIN_'
958  ELSE
959  yrecfm='D_ROOT_LIN'
960  ENDIF
961  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
962  iversion, ibugfix, dti%LDATA_ROOT_LIN,dti%XPAR_ROOT_LIN(:,:),iresp,&
963  hcomment=ycomment,hdir=ydir)
964  ENDIF
965 !
966  IF (any(dti%LDATA_DICE)) THEN
967  ALLOCATE(dti%XPAR_DICE (kdim,nvegtype))
968  IF (gdim) THEN
969  yrecfm='D_DICE_'
970  ELSE
971  yrecfm='D_DICE'
972  ENDIF
973  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
974  iversion, ibugfix, dti%LDATA_DICE,dti%XPAR_DICE(:,:),iresp,&
975  hcomment=ycomment,hdir=ydir)
976  ENDIF
977 !
978  IF (any(dti%LDATA_GMES)) THEN
979  ALLOCATE(dti%XPAR_GMES (kdim,nvegtype))
980  IF (gdim) THEN
981  yrecfm='D_GMES_'
982  ELSE
983  yrecfm='D_GMES'
984  ENDIF
985  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
986  iversion, ibugfix, dti%LDATA_GMES,dti%XPAR_GMES(:,:),iresp,&
987  hcomment=ycomment,hdir=ydir)
988  ENDIF
989 !
990  IF (any(dti%LDATA_BSLAI)) THEN
991  ALLOCATE(dti%XPAR_BSLAI (kdim,nvegtype))
992  IF (gdim) THEN
993  yrecfm='D_BSLAI_'
994  ELSE
995  yrecfm='D_BSLAI'
996  ENDIF
997  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
998  iversion, ibugfix, dti%LDATA_BSLAI,dti%XPAR_BSLAI(:,:),iresp,&
999  hcomment=ycomment,hdir=ydir)
1000  ENDIF
1001 !
1002  IF (any(dti%LDATA_LAIMIN)) THEN
1003  ALLOCATE(dti%XPAR_LAIMIN (kdim,nvegtype))
1004  IF (gdim) THEN
1005  yrecfm='D_LAIMIN_'
1006  ELSE
1007  yrecfm='D_LAIMIN'
1008  ENDIF
1009  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1010  iversion, ibugfix, dti%LDATA_LAIMIN,dti%XPAR_LAIMIN(:,:),iresp,&
1011  hcomment=ycomment,hdir=ydir)
1012  ENDIF
1013 !
1014  IF (any(dti%LDATA_SEFOLD)) THEN
1015  ALLOCATE(dti%XPAR_SEFOLD (kdim,nvegtype))
1016  IF (gdim) THEN
1017  yrecfm='D_SEFOLD_'
1018  ELSE
1019  yrecfm='D_SEFOLD'
1020  ENDIF
1021  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1022  iversion, ibugfix, dti%LDATA_SEFOLD,dti%XPAR_SEFOLD(:,:),iresp,&
1023  hcomment=ycomment,hdir=ydir)
1024  ENDIF
1025 !
1026  IF (any(dti%LDATA_GC)) THEN
1027  ALLOCATE(dti%XPAR_GC (kdim,nvegtype))
1028  IF (gdim) THEN
1029  yrecfm='D_GC_'
1030  ELSE
1031  yrecfm='D_GC'
1032  ENDIF
1033  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1034  iversion, ibugfix, dti%LDATA_GC,dti%XPAR_GC(:,:),iresp,&
1035  hcomment=ycomment,hdir=ydir)
1036  ENDIF
1037 !
1038  IF (any(dti%LDATA_DMAX)) THEN
1039  ALLOCATE(dti%XPAR_DMAX (kdim,nvegtype))
1040  IF (gdim) THEN
1041  yrecfm='D_DMAX_'
1042  ELSE
1043  yrecfm='D_DMAX'
1044  ENDIF
1045  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1046  iversion, ibugfix, dti%LDATA_DMAX,dti%XPAR_DMAX(:,:),iresp,&
1047  hcomment=ycomment,hdir=ydir)
1048  ENDIF
1049 !
1050  IF (any(dti%LDATA_F2I)) THEN
1051  ALLOCATE(dti%XPAR_F2I (kdim,nvegtype))
1052  yrecfm='D_F2I'
1053  IF (gdim) THEN
1054  yrecfm='D_F2I_'
1055  ELSE
1056  yrecfm='D_F2I'
1057  ENDIF
1058  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1059  iversion, ibugfix, dti%LDATA_F2I,dti%XPAR_F2I(:,:),iresp,&
1060  hcomment=ycomment,hdir=ydir)
1061  ENDIF
1062 !
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)))
1066  yrecfm='D_STRESS'
1067  IF (gdim) THEN
1068  yrecfm='D_STRESS_'
1069  ELSE
1070  yrecfm='D_STRESS'
1071  ENDIF
1072  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1073  iversion, ibugfix, dti%LDATA_STRESS,zwork(:,:),iresp,&
1074  hcomment=ycomment,hdir=ydir)
1075  dti%LPAR_STRESS = .false.
1076  WHERE(zwork==1.) dti%LPAR_STRESS = .true.
1077  DEALLOCATE(zwork)
1078  ENDIF
1079 !
1080  IF (any(dti%LDATA_H_TREE)) THEN
1081  ALLOCATE(dti%XPAR_H_TREE (kdim,nvegtype))
1082  IF (gdim) THEN
1083  yrecfm='D_H_TREE_'
1084  ELSE
1085  yrecfm='D_H_TREE'
1086  ENDIF
1087  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1088  iversion, ibugfix, dti%LDATA_H_TREE,dti%XPAR_H_TREE(:,:),iresp,&
1089  hcomment=ycomment,hdir=ydir)
1090  ENDIF
1091 !
1092  IF (any(dti%LDATA_RE25)) THEN
1093  ALLOCATE(dti%XPAR_RE25 (kdim,nvegtype))
1094  IF (gdim) THEN
1095  yrecfm='D_RE25_'
1096  ELSE
1097  yrecfm='D_RE25'
1098  ENDIF
1099  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1100  iversion, ibugfix, dti%LDATA_RE25,dti%XPAR_RE25(:,:),iresp,&
1101  hcomment=ycomment,hdir=ydir)
1102  ENDIF
1103 !
1104  IF (any(dti%LDATA_CE_NITRO)) THEN
1105  ALLOCATE(dti%XPAR_CE_NITRO (kdim,nvegtype))
1106  IF (gdim) THEN
1107  yrecfm='D_CENITR_'
1108  ELSE
1109  yrecfm='D_CE_NITRO'
1110  ENDIF
1111  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1112  iversion, ibugfix, dti%LDATA_CE_NITRO,dti%XPAR_CE_NITRO(:,:),iresp,&
1113  hcomment=ycomment,hdir=ydir)
1114  ENDIF
1115 !
1116  IF (any(dti%LDATA_CF_NITRO)) THEN
1117  ALLOCATE(dti%XPAR_CF_NITRO (kdim,nvegtype))
1118  IF (gdim) THEN
1119  yrecfm='D_CFNITR_'
1120  ELSE
1121  yrecfm='D_CF_NITRO'
1122  ENDIF
1123  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1124  iversion, ibugfix, dti%LDATA_CF_NITRO,dti%XPAR_CF_NITRO(:,:),iresp,&
1125  hcomment=ycomment,hdir=ydir)
1126  ENDIF
1127 !
1128  IF (any(dti%LDATA_CNA_NITRO)) THEN
1129  ALLOCATE(dti%XPAR_CNA_NITRO (kdim,nvegtype))
1130  IF (gdim) THEN
1131  yrecfm='D_CNANIT_'
1132  ELSE
1133  yrecfm='D_CNA_NITRO'
1134  ENDIF
1135  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1136  iversion, ibugfix, dti%LDATA_CNA_NITRO,dti%XPAR_CNA_NITRO(:,:),iresp,&
1137  hcomment=ycomment,hdir=ydir)
1138  ENDIF
1139 !
1140  IF (any(dti%LDATA_IRRIG)) THEN
1141  ALLOCATE(dti%XPAR_IRRIG (kdim,dti%NTIME,nvegtype))
1142  DO jt=1,itime
1143  id1 = (jt-1)*nvegtype + 1
1144  id2 = jt*nvegtype
1145  IF (gdim) THEN
1146  WRITE(yrecfm,fmt='(A9,I2.2)') 'D_IRR_T',jt
1147  ELSE
1148  WRITE(yrecfm,fmt='(A9,I2.2)') 'D_IRRIG_T',jt
1149  ENDIF
1150  IF (gtime(jt)) THEN
1151  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1152  iversion, ibugfix, dti%LDATA_IRRIG(id1:id2),dti%XPAR_IRRIG(:,jt,:),iresp,&
1153  hcomment=ycomment,hdir=ydir)
1154  ELSE
1155  dti%XPAR_IRRIG(:,jt,:) = xundef
1156  ENDIF
1157  END DO
1158  ENDIF
1159 !
1160  IF (any(dti%LDATA_WATSUP)) THEN
1161  ALLOCATE(dti%XPAR_WATSUP (kdim,dti%NTIME,nvegtype))
1162  DO jt=1,itime
1163  id1 = (jt-1)*nvegtype + 1
1164  id2 = jt*nvegtype
1165  IF (gdim) THEN
1166  WRITE(yrecfm,fmt='(A10,I2.2)') 'D_WAT_T',jt
1167  ELSE
1168  WRITE(yrecfm,fmt='(A10,I2.2)') 'D_WATSUP_T',jt
1169  ENDIF
1170  IF (gtime(jt)) THEN
1171  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1172  iversion, ibugfix, dti%LDATA_WATSUP(id1:id2),dti%XPAR_WATSUP(:,jt,:),iresp,&
1173  hcomment=ycomment,hdir=ydir)
1174  ELSE
1175  dti%XPAR_WATSUP(:,jt,:) = xundef
1176  ENDIF
1177  END DO
1178  ENDIF
1179 !
1180  IF (gdim) THEN
1181 
1182  IF (any(dti%LDATA_SEED_M)) THEN
1183  ALLOCATE(dti%XPAR_SEED_M (kdim,nvegtype))
1184  yrecfm='D_SEED_M_'
1185  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1186  iversion, ibugfix, dti%LDATA_SEED_M,dti%XPAR_SEED_M(:,:),iresp,&
1187  hcomment=ycomment,hdir=ydir)
1188  ENDIF
1189 
1190 !
1191  IF (any(dti%LDATA_SEED_D)) THEN
1192  ALLOCATE(dti%XPAR_SEED_D (kdim,nvegtype))
1193  yrecfm='D_SEED_D_'
1194  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1195  iversion, ibugfix, dti%LDATA_SEED_D,dti%XPAR_SEED_D(:,:),iresp,&
1196  hcomment=ycomment,hdir=ydir)
1197  ENDIF
1198 !
1199  IF (any(dti%LDATA_REAP_M)) THEN
1200  ALLOCATE(dti%XPAR_REAP_M (kdim,nvegtype))
1201  yrecfm='D_REAP_M_'
1202  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1203  iversion, ibugfix, dti%LDATA_REAP_M,dti%XPAR_REAP_M(:,:),iresp,&
1204  hcomment=ycomment,hdir=ydir)
1205  ENDIF
1206 !
1207  IF (any(dti%LDATA_REAP_D)) THEN
1208  ALLOCATE(dti%XPAR_REAP_D (kdim,nvegtype))
1209  yrecfm='D_REAP_D_'
1210  CALL read_surf_isba_par_n(dtco, u, gcp, io%NPATCH, hprogram, yrecfm, iluout, ksize, &
1211  iversion, ibugfix, dti%LDATA_REAP_D,dti%XPAR_REAP_D(:,:),iresp,&
1212  hcomment=ycomment,hdir=ydir)
1213  ENDIF
1214  !
1215  ALLOCATE(zwork(ksize,io%NGROUND_LAYER))
1216  !
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,hdir=ydir)
1222  ENDDO
1223  IF (kdim/=ksize) THEN
1224  CALL hor_interpol(dtco, u, gcp, iluout,zwork,dti%XPAR_CONDSAT)
1225  ELSE
1226  dti%XPAR_CONDSAT(:,:) = zwork(:,:)
1227  ENDIF
1228  ENDIF
1229  !
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,hdir=ydir)
1235  ENDDO
1236  IF (kdim/=ksize) THEN
1237  CALL hor_interpol(dtco, u, gcp, iluout,zwork,dti%XPAR_MPOTSAT)
1238  ELSE
1239  dti%XPAR_MPOTSAT(:,:) = zwork(:,:)
1240  ENDIF
1241  ENDIF
1242  !
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,hdir=ydir)
1248  ENDDO
1249  IF (kdim/=ksize) THEN
1250  CALL hor_interpol(dtco, u, gcp, iluout,zwork,dti%XPAR_BCOEF)
1251  ELSE
1252  dti%XPAR_BCOEF(:,:) = zwork(:,:)
1253  ENDIF
1254  ENDIF
1255  !
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,hdir=ydir)
1261  ENDDO
1262  IF (kdim/=ksize) THEN
1263  CALL hor_interpol(dtco, u, gcp, iluout,zwork,dti%XPAR_WWILT)
1264  ELSE
1265  dti%XPAR_WWILT(:,:) = zwork(:,:)
1266  ENDIF
1267  ENDIF
1268  !
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,hdir=ydir)
1274  ENDDO
1275  IF (kdim/=ksize) THEN
1276  CALL hor_interpol(dtco, u, gcp, iluout,zwork,dti%XPAR_WFC)
1277  ELSE
1278  dti%XPAR_WFC(:,:) = zwork(:,:)
1279  ENDIF
1280  ENDIF
1281  !
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,hdir=ydir)
1287  ENDDO
1288  IF (kdim/=ksize) THEN
1289  CALL hor_interpol(dtco, u, gcp, iluout,zwork,dti%XPAR_WSAT)
1290  ELSE
1291  dti%XPAR_WSAT(:,:) = zwork(:,:)
1292  ENDIF
1293  ENDIF
1294  !
1295  DEALLOCATE(zwork)
1296  !
1297  ENDIF
1298  !
1299 ENDIF
1300 !
1301 IF (lassim) lread_all = gread_all
1302 !
1303 IF (lhook) CALL dr_hook('READ_PGD_ISBA_PAR_N',1,zhook_handle)
1304 !
1305 !-------------------------------------------------------------------------------
1306 !
1307 END SUBROUTINE read_pgd_isba_par_n
subroutine make_choice_array(HPROGRAM, KNPATCH, ODIM, HRECFM, PWORK, HDIR, KPATCH)
subroutine read_pgd_isba_par_n(DTCO, U, GCP, DTI, KDIM, IO, HPROG
real, parameter xundef
logical, dimension(:), allocatable linterp
Definition: modd_prep.F90:43
subroutine hor_interpol(DTCO, U, GCP, KLUOUT, PFIELDIN, PFIELDOUT)
Definition: hor_interpol.F90:7
integer, parameter jprb
Definition: parkind1.F90:32
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:7
logical lhook
Definition: yomhook.F90:15
subroutine read_surf_isba_par_n(DTCO, U, GCP, KPATCH, HPROGRAM, H
static int count
Definition: memory_hook.c:21