SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
diag_isba_initn.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 diag_isba_init_n (&
7  chi, dgei, dgi, dgmi, dgu, gb, i, &
8  hprogram,klu,ksw)
9 ! #####################
10 !
11 !!**** *DIAG_ISBA_INIT_n* - routine to initialize ISBA-AGS diagnostic variables
12 !!
13 !! PURPOSE
14 !! -------
15 !!
16 !!** METHOD
17 !! ------
18 !!
19 !! EXTERNAL
20 !! --------
21 !!
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !!
26 !! REFERENCE
27 !! ---------
28 !!
29 !!
30 !! AUTHOR
31 !! ------
32 !! V. Masson *Meteo France*
33 !!
34 !! MODIFICATIONS
35 !! -------------
36 !! Original 02/2003
37 !! modified 11/2003 by P. LeMoigne: surface cumulated energy budget
38 !! modified 10/2004 by P. LeMoigne: surface miscellaneous fields
39 !! B. Decharme 2008 New diag for water budget and allow to reset
40 ! cumulatives variables at the beginning of a run
41 !! B. Decharme 06/2009 add patch budget switch
42 !! B. Decharme 08/2009 add cummulative diag
43 !! A.L. Gibelin 04/2009 : Add respiration diagnostics
44 !! A.L. Gibelin 05/2009 : Add carbon spinup
45 !! A.L. Gibelin 07/2009 : Suppress RDK and transform GPP as a diagnostic
46 !! B. Decharme 05/12 : Carbon fluxes in diag_evap
47 !! B. Decharme 10/12 Isba water budget diag
48 !! B. Decharme 10/12 New diag for DIF:
49 !! F2 stress
50 !! Root zone swi, wg and wgi
51 !! swi, wg and wgi comparable to ISBA-FR-DG2 and DG3 layers
52 !! active layer thickness over permafrost
53 !! frozen layer thickness over non-permafrost
54 !! B. Vincendon 02/2014 : condition added for RAD_BUDGET variables (needed for
55 !! restart mode)
56 ! B. decharme 04/2013 : Add new diag for coupling
57 ! Delete XAVG_TSRAD (because same than XTSRAD_NAT)
58 !! P. Samuelsson 10/2014: MEB
59 !-------------------------------------------------------------------------------
60 !
61 !* 0.0 DECLARATIONS
62 ! ------------
63 !
64 !
65 !
66 USE modd_ch_isba_n, ONLY : ch_isba_t
68 USE modd_diag_isba_n, ONLY : diag_isba_t
71 USE modd_gr_biog_n, ONLY : gr_biog_t
72 USE modd_isba_n, ONLY : isba_t
73 !
74 !
75 !
76 #ifdef SFX_OL
77 USE modn_io_offline, ONLY : lrestart
78 #endif
79 USE modd_surf_par, ONLY : xundef
81 USE modd_agri, ONLY : lagrip
82 !
83 !
84 !
85 !
87 !
88 !
89 USE yomhook ,ONLY : lhook, dr_hook
90 USE parkind1 ,ONLY : jprb
91 !
92 IMPLICIT NONE
93 !
94 !* 0.01 Declarations of arguments
95 ! -------------------------
96 !
97 !
98 !
99 !
100 TYPE(ch_isba_t), INTENT(INOUT) :: chi
101 TYPE(diag_evap_isba_t), INTENT(INOUT) :: dgei
102 TYPE(diag_isba_t), INTENT(INOUT) :: dgi
103 TYPE(diag_misc_isba_t), INTENT(INOUT) :: dgmi
104 TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
105 TYPE(gr_biog_t), INTENT(INOUT) :: gb
106 TYPE(isba_t), INTENT(INOUT) :: i
107 !
108 INTEGER, INTENT(IN) :: klu ! size of arrays
109 INTEGER, INTENT(IN) :: ksw ! spectral bands
110  CHARACTER(LEN=6), INTENT(IN):: hprogram ! program calling
111 !
112 !* 0.02 Declarations of local variables
113 ! -------------------------------
114 !
115 INTEGER :: iversion, ibug
116 INTEGER :: iresp ! IRESP : return-code if a problem appears
117 INTEGER :: isize_lmeb_patch ! Number of patches where multi-energy balance should be applied
118  CHARACTER(LEN=12) :: yrec ! Name of the article to be read
119  CHARACTER(LEN=4) :: yrec2
120 REAL(KIND=JPRB) :: zhook_handle
121 !
122 !-------------------------------------------------------------------------------
123 !
124 !* surface energy budget
125 !
126 IF (lhook) CALL dr_hook('DIAG_ISBA_INIT_N',0,zhook_handle)
127 !
128 isize_lmeb_patch=count(i%LMEB_PATCH(:))
129 !
130 IF (dgi%LSURF_BUDGET) THEN
131  ALLOCATE(dgi%XAVG_RN (klu))
132  ALLOCATE(dgi%XAVG_H (klu))
133  ALLOCATE(dgi%XAVG_LE (klu))
134  ALLOCATE(dgi%XAVG_LEI (klu))
135  ALLOCATE(dgi%XAVG_GFLUX (klu))
136  ALLOCATE(dgi%XAVG_SWD (klu))
137  ALLOCATE(dgi%XAVG_SWU (klu))
138  ALLOCATE(dgi%XAVG_SWBD (klu,ksw))
139  ALLOCATE(dgi%XAVG_SWBU (klu,ksw))
140  ALLOCATE(dgi%XAVG_LWD (klu))
141  ALLOCATE(dgi%XAVG_LWU (klu))
142  ALLOCATE(dgi%XAVG_FMU (klu))
143  ALLOCATE(dgi%XAVG_FMV (klu))
144  !
145  dgi%XAVG_RN = xundef
146  dgi%XAVG_H = xundef
147  dgi%XAVG_LE = xundef
148  dgi%XAVG_LEI = xundef
149  dgi%XAVG_GFLUX = xundef
150  dgi%XAVG_SWD = xundef
151  dgi%XAVG_SWU = xundef
152  dgi%XAVG_SWBD = xundef
153  dgi%XAVG_SWBU = xundef
154  dgi%XAVG_LWD = xundef
155  dgi%XAVG_LWU = xundef
156  dgi%XAVG_FMU = xundef
157  dgi%XAVG_FMV = xundef
158  !
159  ALLOCATE(dgi%XRN (klu,i%NPATCH))
160  ALLOCATE(dgi%XH (klu,i%NPATCH))
161  ALLOCATE(dgi%XGFLUX (klu,i%NPATCH))
162  ALLOCATE(dgi%XLEI (klu,i%NPATCH))
163  ALLOCATE(dgi%XSWD (klu,i%NPATCH))
164  ALLOCATE(dgi%XSWU (klu,i%NPATCH))
165  ALLOCATE(dgi%XSWBD (klu,ksw,i%NPATCH))
166  ALLOCATE(dgi%XSWBU (klu,ksw,i%NPATCH))
167  ALLOCATE(dgi%XLWD (klu,i%NPATCH))
168  ALLOCATE(dgi%XLWU (klu,i%NPATCH))
169  ALLOCATE(dgi%XFMU (klu,i%NPATCH))
170  ALLOCATE(dgi%XFMV (klu,i%NPATCH))
171  !
172  dgi%XRN = xundef
173  dgi%XH = xundef
174  dgi%XGFLUX = xundef
175  dgi%XLEI = xundef
176  dgi%XSWD = xundef
177  dgi%XSWU = xundef
178  dgi%XSWBD = xundef
179  dgi%XSWBU = xundef
180  dgi%XLWD = xundef
181  dgi%XLWU = xundef
182  dgi%XFMU = xundef
183  dgi%XFMV = xundef
184  !
185 ELSE
186  ALLOCATE(dgi%XAVG_RN (0))
187  ALLOCATE(dgi%XAVG_H (0))
188  ALLOCATE(dgi%XAVG_LE (0))
189  ALLOCATE(dgi%XAVG_LEI (0))
190  ALLOCATE(dgi%XAVG_GFLUX (0))
191  ALLOCATE(dgi%XAVG_SWD (0))
192  ALLOCATE(dgi%XAVG_SWU (0))
193  ALLOCATE(dgi%XAVG_SWBD (0,0))
194  ALLOCATE(dgi%XAVG_SWBU (0,0))
195  ALLOCATE(dgi%XAVG_LWD (0))
196  ALLOCATE(dgi%XAVG_LWU (0))
197  ALLOCATE(dgi%XAVG_FMU (0))
198  ALLOCATE(dgi%XAVG_FMV (0))
199 !
200  ALLOCATE(dgi%XRN (0,0))
201  ALLOCATE(dgi%XH (0,0))
202  ALLOCATE(dgi%XGFLUX (0,0))
203  ALLOCATE(dgi%XLEI (0,0))
204  ALLOCATE(dgi%XSWD (0,0))
205  ALLOCATE(dgi%XSWU (0,0))
206  ALLOCATE(dgi%XSWBD (0,0,0))
207  ALLOCATE(dgi%XSWBU (0,0,0))
208  ALLOCATE(dgi%XLWD (0,0))
209  ALLOCATE(dgi%XLWU (0,0))
210  ALLOCATE(dgi%XFMU (0,0))
211  ALLOCATE(dgi%XFMV (0,0))
212 END IF
213 !
214 !* detailed surface energy budget
215 !
216 IF (dgei%LSURF_EVAP_BUDGET) THEN
217  ALLOCATE(dgei%XAVG_LEG (klu))
218  ALLOCATE(dgei%XAVG_LEGI (klu))
219  ALLOCATE(dgei%XAVG_LEV (klu))
220  ALLOCATE(dgei%XAVG_LES (klu))
221  ALLOCATE(dgei%XAVG_LESL (klu))
222  ALLOCATE(dgei%XAVG_LER (klu))
223  ALLOCATE(dgei%XAVG_LETR (klu))
224  ALLOCATE(dgei%XAVG_EVAP (klu))
225  ALLOCATE(dgei%XAVG_SUBL (klu))
226  ALLOCATE(dgei%XAVG_SNDRIFT (klu))
227  ALLOCATE(dgei%XAVG_DRAIN (klu))
228  ALLOCATE(dgei%XAVG_QSB (klu))
229  ALLOCATE(dgei%XAVG_RUNOFF (klu))
230  ALLOCATE(dgei%XAVG_HORT (klu))
231  ALLOCATE(dgei%XAVG_DRIP (klu))
232  ALLOCATE(dgei%XAVG_RRVEG (klu))
233  ALLOCATE(dgei%XAVG_MELT (klu))
234  ALLOCATE(dgei%XAVG_IRRIG_FLUX(klu))
235  ALLOCATE(dgei%XAVG_GPP (klu))
236  ALLOCATE(dgei%XAVG_RESP_AUTO (klu))
237  ALLOCATE(dgei%XAVG_RESP_ECO (klu))
238  !
239  dgei%XAVG_LEG = xundef
240  dgei%XAVG_LEGI = xundef
241  dgei%XAVG_LEV = xundef
242  dgei%XAVG_LES = xundef
243  dgei%XAVG_LESL = xundef
244  dgei%XAVG_LER = xundef
245  dgei%XAVG_LETR = xundef
246  dgei%XAVG_EVAP = xundef
247  dgei%XAVG_SUBL = xundef
248  dgei%XAVG_SNDRIFT = xundef
249  dgei%XAVG_DRAIN = xundef
250  dgei%XAVG_QSB = xundef
251  dgei%XAVG_RUNOFF = xundef
252  dgei%XAVG_HORT = xundef
253  dgei%XAVG_DRIP = xundef
254  dgei%XAVG_RRVEG = xundef
255  dgei%XAVG_MELT = xundef
256  dgei%XAVG_IRRIG_FLUX = xundef
257  dgei%XAVG_GPP = xundef
258  dgei%XAVG_RESP_AUTO = xundef
259  dgei%XAVG_RESP_ECO = xundef
260  !
261  ALLOCATE(dgei%XAVG_IFLOOD (klu))
262  ALLOCATE(dgei%XAVG_PFLOOD (klu))
263  ALLOCATE(dgei%XAVG_LE_FLOOD (klu))
264  ALLOCATE(dgei%XAVG_LEI_FLOOD(klu))
265  dgei%XAVG_IFLOOD = xundef
266  dgei%XAVG_PFLOOD = xundef
267  dgei%XAVG_LE_FLOOD = xundef
268  dgei%XAVG_LEI_FLOOD = xundef
269  !
270  ALLOCATE(dgei%XLEG (klu,i%NPATCH))
271  ALLOCATE(dgei%XLEGI (klu,i%NPATCH))
272  ALLOCATE(dgei%XLEV (klu,i%NPATCH))
273  ALLOCATE(dgei%XLES (klu,i%NPATCH))
274  ALLOCATE(dgei%XLESL (klu,i%NPATCH))
275  ALLOCATE(dgei%XLER (klu,i%NPATCH))
276  ALLOCATE(dgei%XLETR (klu,i%NPATCH))
277  ALLOCATE(dgei%XEVAP (klu,i%NPATCH))
278  ALLOCATE(dgei%XSUBL (klu,i%NPATCH))
279  ALLOCATE(dgei%XSNDRIFT (klu,i%NPATCH))
280  ALLOCATE(dgei%XDRAIN (klu,i%NPATCH))
281  ALLOCATE(dgei%XQSB (klu,i%NPATCH))
282  ALLOCATE(dgei%XRUNOFF (klu,i%NPATCH))
283  ALLOCATE(dgei%XHORT (klu,i%NPATCH))
284  ALLOCATE(dgei%XDRIP (klu,i%NPATCH))
285  ALLOCATE(dgei%XRRVEG (klu,i%NPATCH))
286  ALLOCATE(dgei%XMELT (klu,i%NPATCH))
287  ALLOCATE(dgei%XIRRIG_FLUX(klu,i%NPATCH))
288  ALLOCATE(dgei%XGPP (klu,i%NPATCH))
289  ALLOCATE(dgei%XRESP_AUTO (klu,i%NPATCH))
290  ALLOCATE(dgei%XRESP_ECO (klu,i%NPATCH))
291  !
292  dgei%XLEG = xundef
293  dgei%XLEGI = xundef
294  dgei%XLEV = xundef
295  dgei%XLES = xundef
296  dgei%XLESL = xundef
297  dgei%XLER = xundef
298  dgei%XLETR = xundef
299  dgei%XEVAP = xundef
300  dgei%XSUBL = xundef
301  dgei%XSNDRIFT = xundef
302  dgei%XDRAIN = xundef
303  dgei%XQSB = xundef
304  dgei%XRUNOFF = xundef
305  dgei%XHORT = xundef
306  dgei%XDRIP = xundef
307  dgei%XRRVEG = xundef
308  dgei%XMELT = xundef
309  dgei%XIRRIG_FLUX = xundef
310  dgei%XGPP = xundef
311  dgei%XRESP_AUTO = xundef
312  dgei%XRESP_ECO = xundef
313  !
314  ALLOCATE(dgei%XIFLOOD (klu,i%NPATCH))
315  ALLOCATE(dgei%XPFLOOD (klu,i%NPATCH))
316  ALLOCATE(dgei%XLE_FLOOD(klu,i%NPATCH))
317  ALLOCATE(dgei%XLEI_FLOOD(klu,i%NPATCH))
318  dgei%XIFLOOD = xundef
319  dgei%XPFLOOD = xundef
320  dgei%XLE_FLOOD = xundef
321  dgei%XLEI_FLOOD = xundef
322  !
323  IF (isize_lmeb_patch>0) THEN
324  ALLOCATE(dgei%XAVG_LEVCV (klu))
325  ALLOCATE(dgei%XAVG_LESC (klu))
326  ALLOCATE(dgei%XAVG_LETRGV (klu))
327  ALLOCATE(dgei%XAVG_LETRCV (klu))
328  ALLOCATE(dgei%XAVG_LERGV (klu))
329  ALLOCATE(dgei%XAVG_LELITTER (klu))
330  ALLOCATE(dgei%XAVG_LELITTERI(klu))
331  ALLOCATE(dgei%XAVG_DRIPLIT (klu))
332  ALLOCATE(dgei%XAVG_RRLIT (klu))
333  ALLOCATE(dgei%XAVG_LERCV (klu))
334  ALLOCATE(dgei%XAVG_LE_C_A (klu))
335  ALLOCATE(dgei%XAVG_LE_V_C (klu))
336  ALLOCATE(dgei%XAVG_LE_G_C (klu))
337  ALLOCATE(dgei%XAVG_LE_N_C (klu))
338  !
339  ALLOCATE(dgei%XAVG_SWNET_V (klu))
340  ALLOCATE(dgei%XAVG_SWNET_G (klu))
341  ALLOCATE(dgei%XAVG_SWNET_N (klu))
342  ALLOCATE(dgei%XAVG_SWNET_NS (klu))
343  ALLOCATE(dgei%XAVG_LWNET_V (klu))
344  ALLOCATE(dgei%XAVG_LWNET_G (klu))
345  ALLOCATE(dgei%XAVG_LWNET_N (klu))
346  ALLOCATE(dgei%XAVG_SWDOWN_GN (klu))
347  ALLOCATE(dgei%XAVG_LWDOWN_GN (klu))
348  ALLOCATE(dgei%XAVG_H_V_C (klu))
349  ALLOCATE(dgei%XAVG_H_G_C (klu))
350  ALLOCATE(dgei%XAVG_H_C_A (klu))
351  ALLOCATE(dgei%XAVG_H_N_C (klu))
352  ALLOCATE(dgei%XAVG_SR_GN (klu))
353  ALLOCATE(dgei%XAVG_MELTCV (klu))
354  ALLOCATE(dgei%XAVG_FRZCV (klu))
355 !
356  dgei%XAVG_LEVCV = xundef
357  dgei%XAVG_LESC = xundef
358  dgei%XAVG_LETRGV = xundef
359  dgei%XAVG_LETRCV = xundef
360  dgei%XAVG_LERGV = xundef
361  dgei%XAVG_LELITTER = xundef
362  dgei%XAVG_LELITTERI = xundef
363  dgei%XAVG_DRIPLIT = xundef
364  dgei%XAVG_RRLIT = xundef
365  dgei%XAVG_LERCV = xundef
366  dgei%XAVG_LE_C_A = xundef
367  dgei%XAVG_LE_V_C = xundef
368  dgei%XAVG_LE_G_C = xundef
369  dgei%XAVG_LE_N_C = xundef
370  !
371  dgei%XAVG_SWNET_V = xundef
372  dgei%XAVG_SWNET_G = xundef
373  dgei%XAVG_SWNET_N = xundef
374  dgei%XAVG_SWNET_NS = xundef
375  dgei%XAVG_LWNET_V = xundef
376  dgei%XAVG_LWNET_G = xundef
377  dgei%XAVG_LWNET_N = xundef
378  dgei%XAVG_SWDOWN_GN = xundef
379  dgei%XAVG_LWDOWN_GN = xundef
380  dgei%XAVG_H_V_C = xundef
381  dgei%XAVG_H_G_C = xundef
382  dgei%XAVG_H_C_A = xundef
383  dgei%XAVG_H_N_C = xundef
384  dgei%XAVG_SR_GN = xundef
385  dgei%XAVG_MELTCV = xundef
386  dgei%XAVG_FRZCV = xundef
387  !
388  ALLOCATE(dgei%XLEVCV (klu,i%NPATCH))
389  ALLOCATE(dgei%XLESC (klu,i%NPATCH))
390 ! ALLOCATE(XLETRGV (KLU,NPATCH))
391  ALLOCATE(dgei%XLETRCV (klu,i%NPATCH))
392 ! ALLOCATE(XLERGV (KLU,NPATCH))
393  ALLOCATE(dgei%XLELITTER (klu,i%NPATCH))
394  ALLOCATE(dgei%XLELITTERI(klu,i%NPATCH))
395  ALLOCATE(dgei%XDRIPLIT (klu,i%NPATCH))
396  ALLOCATE(dgei%XRRLIT (klu,i%NPATCH))
397  ALLOCATE(dgei%XLERCV (klu,i%NPATCH))
398  ALLOCATE(dgei%XLE_C_A (klu,i%NPATCH))
399  ALLOCATE(dgei%XLE_V_C (klu,i%NPATCH))
400  ALLOCATE(dgei%XLE_G_C (klu,i%NPATCH))
401  ALLOCATE(dgei%XLE_N_C (klu,i%NPATCH))
402  !
403  ALLOCATE(dgei%XSWNET_V (klu,i%NPATCH))
404  ALLOCATE(dgei%XSWNET_G (klu,i%NPATCH))
405  ALLOCATE(dgei%XSWNET_N (klu,i%NPATCH))
406  ALLOCATE(dgei%XSWNET_NS (klu,i%NPATCH))
407  ALLOCATE(dgei%XLWNET_V (klu,i%NPATCH))
408  ALLOCATE(dgei%XLWNET_G (klu,i%NPATCH))
409  ALLOCATE(dgei%XLWNET_N (klu,i%NPATCH))
410  ALLOCATE(dgei%XSWDOWN_GN (klu,i%NPATCH))
411  ALLOCATE(dgei%XLWDOWN_GN (klu,i%NPATCH))
412  ALLOCATE(dgei%XH_V_C (klu,i%NPATCH))
413  ALLOCATE(dgei%XH_G_C (klu,i%NPATCH))
414  ALLOCATE(dgei%XH_C_A (klu,i%NPATCH))
415  ALLOCATE(dgei%XH_N_C (klu,i%NPATCH))
416  ALLOCATE(dgei%XSR_GN (klu,i%NPATCH))
417  ALLOCATE(dgei%XMELTCV (klu,i%NPATCH))
418  ALLOCATE(dgei%XFRZCV (klu,i%NPATCH))
419 !
420  dgei%XLEVCV = xundef
421  dgei%XLESC = xundef
422 ! XLETRGV = XUNDEF
423  dgei%XLETRCV = xundef
424 ! XLERGV = XUNDEF
425  dgei%XLELITTER = xundef
426  dgei%XLELITTERI = xundef
427  dgei%XDRIPLIT = xundef
428  dgei%XRRLIT = xundef
429  dgei%XLERCV = xundef
430  dgei%XLE_C_A = xundef
431  dgei%XLE_V_C = xundef
432  dgei%XLE_G_C = xundef
433  dgei%XLE_N_C = xundef
434  !
435  dgei%XSWNET_V = xundef
436  dgei%XSWNET_G = xundef
437  dgei%XSWNET_N = xundef
438  dgei%XSWNET_NS = xundef
439  dgei%XLWNET_V = xundef
440  dgei%XLWNET_G = xundef
441  dgei%XLWNET_N = xundef
442  dgei%XSWDOWN_GN = xundef
443  dgei%XLWDOWN_GN = xundef
444  dgei%XH_V_C = xundef
445  dgei%XH_G_C = xundef
446  dgei%XH_C_A = xundef
447  dgei%XH_N_C = xundef
448  dgei%XSR_GN = xundef
449  dgei%XMELTCV = xundef
450  dgei%XFRZCV = xundef
451  ELSE
452  ALLOCATE(dgei%XAVG_LEVCV (0))
453  ALLOCATE(dgei%XAVG_LESC (0))
454  ALLOCATE(dgei%XAVG_LETRGV (0))
455  ALLOCATE(dgei%XAVG_LELITTER (0))
456  ALLOCATE(dgei%XAVG_LELITTERI(0))
457  ALLOCATE(dgei%XAVG_DRIPLIT (0))
458  ALLOCATE(dgei%XAVG_RRLIT (0))
459  ALLOCATE(dgei%XAVG_LETRCV (0))
460  ALLOCATE(dgei%XAVG_LERGV (0))
461  ALLOCATE(dgei%XAVG_LERCV (0))
462  ALLOCATE(dgei%XAVG_LE_C_A (0))
463  ALLOCATE(dgei%XAVG_LE_V_C (0))
464  ALLOCATE(dgei%XAVG_LE_G_C (0))
465  ALLOCATE(dgei%XAVG_LE_N_C (0))
466  !
467  ALLOCATE(dgei%XAVG_SWNET_V (0))
468  ALLOCATE(dgei%XAVG_SWNET_G (0))
469  ALLOCATE(dgei%XAVG_SWNET_N (0))
470  ALLOCATE(dgei%XAVG_SWNET_NS (0))
471  ALLOCATE(dgei%XAVG_LWNET_V (0))
472  ALLOCATE(dgei%XAVG_LWNET_G (0))
473  ALLOCATE(dgei%XAVG_LWNET_N (0))
474  ALLOCATE(dgei%XAVG_SWDOWN_GN (0))
475  ALLOCATE(dgei%XAVG_LWDOWN_GN (0))
476  ALLOCATE(dgei%XAVG_H_V_C (0))
477  ALLOCATE(dgei%XAVG_H_G_C (0))
478  ALLOCATE(dgei%XAVG_H_C_A (0))
479  ALLOCATE(dgei%XAVG_H_N_C (0))
480  ALLOCATE(dgei%XAVG_SR_GN (0))
481  ALLOCATE(dgei%XAVG_MELTCV (0))
482  ALLOCATE(dgei%XAVG_FRZCV (0))
483 !
484  ALLOCATE(dgei%XLEVCV (0,0))
485  ALLOCATE(dgei%XLESC (0,0))
486 ! ALLOCATE(XLETRGV (0,0))
487  ALLOCATE(dgei%XLETRCV (0,0))
488 ! ALLOCATE(XLERGV (0,0))
489  ALLOCATE(dgei%XLELITTER (0,0))
490  ALLOCATE(dgei%XLELITTERI(0,0))
491  ALLOCATE(dgei%XDRIPLIT (0,0))
492  ALLOCATE(dgei%XRRLIT (0,0))
493  ALLOCATE(dgei%XLERCV (0,0))
494  ALLOCATE(dgei%XLE_C_A (0,0))
495  ALLOCATE(dgei%XLE_V_C (0,0))
496  ALLOCATE(dgei%XLE_G_C (0,0))
497  ALLOCATE(dgei%XLE_N_C (0,0))
498  !
499  ALLOCATE(dgei%XSWNET_V (0,0))
500  ALLOCATE(dgei%XSWNET_G (0,0))
501  ALLOCATE(dgei%XSWNET_N (0,0))
502  ALLOCATE(dgei%XSWNET_NS (0,0))
503  ALLOCATE(dgei%XLWNET_V (0,0))
504  ALLOCATE(dgei%XLWNET_G (0,0))
505  ALLOCATE(dgei%XLWNET_N (0,0))
506  ALLOCATE(dgei%XSWDOWN_GN (0,0))
507  ALLOCATE(dgei%XLWDOWN_GN (0,0))
508  ALLOCATE(dgei%XH_V_C (0,0))
509  ALLOCATE(dgei%XH_G_C (0,0))
510  ALLOCATE(dgei%XH_C_A (0,0))
511  ALLOCATE(dgei%XH_N_C (0,0))
512  ALLOCATE(dgei%XSR_GN (0,0))
513  ALLOCATE(dgei%XMELTCV (0,0))
514  ALLOCATE(dgei%XFRZCV (0,0))
515 
516  ENDIF
517  !
518  IF(dgei%LWATER_BUDGET)THEN
519  !
520  ALLOCATE(dgei%XRAINFALL (klu))
521  ALLOCATE(dgei%XSNOWFALL (klu))
522  ALLOCATE(dgei%XAVG_DWG (klu))
523  ALLOCATE(dgei%XAVG_DWGI (klu))
524  ALLOCATE(dgei%XAVG_DWR (klu))
525  ALLOCATE(dgei%XAVG_DSWE (klu))
526  ALLOCATE(dgei%XAVG_WATBUD(klu))
527  dgei%XRAINFALL = xundef
528  dgei%XSNOWFALL = xundef
529  dgei%XAVG_DWG = xundef
530  dgei%XAVG_DWGI = xundef
531  dgei%XAVG_DWR = xundef
532  dgei%XAVG_DSWE = xundef
533  dgei%XAVG_WATBUD = xundef
534  !
535  ALLOCATE(dgei%XDWG (klu,i%NPATCH))
536  ALLOCATE(dgei%XDWGI (klu,i%NPATCH))
537  ALLOCATE(dgei%XDWR (klu,i%NPATCH))
538  ALLOCATE(dgei%XDSWE (klu,i%NPATCH))
539  ALLOCATE(dgei%XWATBUD(klu,i%NPATCH))
540  dgei%XDWG = xundef
541  dgei%XDWGI = xundef
542  dgei%XDWR = xundef
543  dgei%XDSWE = xundef
544  dgei%XWATBUD = xundef
545  !
546  ELSE
547  !
548  ALLOCATE(dgei%XRAINFALL (0))
549  ALLOCATE(dgei%XSNOWFALL (0))
550  ALLOCATE(dgei%XAVG_DWG (0))
551  ALLOCATE(dgei%XAVG_DWGI (0))
552  ALLOCATE(dgei%XAVG_DWR (0))
553  ALLOCATE(dgei%XAVG_DSWE (0))
554  ALLOCATE(dgei%XAVG_WATBUD(0))
555  !
556  ALLOCATE(dgei%XDWG (0,0))
557  ALLOCATE(dgei%XDWGI (0,0))
558  ALLOCATE(dgei%XDWR (0,0))
559  ALLOCATE(dgei%XDSWE (0,0))
560  ALLOCATE(dgei%XWATBUD(0,0))
561  !
562  ENDIF
563  !
564 ELSE
565  ALLOCATE(dgei%XAVG_LEG (0))
566  ALLOCATE(dgei%XAVG_LEGI (0))
567  ALLOCATE(dgei%XAVG_LEV (0))
568  ALLOCATE(dgei%XAVG_LES (0))
569  ALLOCATE(dgei%XAVG_LESL (0))
570  ALLOCATE(dgei%XAVG_LER (0))
571  ALLOCATE(dgei%XAVG_LETR (0))
572  ALLOCATE(dgei%XAVG_EVAP (0))
573  ALLOCATE(dgei%XAVG_SUBL (0))
574  ALLOCATE(dgei%XAVG_SNDRIFT (0))
575  ALLOCATE(dgei%XAVG_DRAIN (0))
576  ALLOCATE(dgei%XAVG_QSB (0))
577  ALLOCATE(dgei%XAVG_RUNOFF (0))
578  ALLOCATE(dgei%XAVG_HORT (0))
579  ALLOCATE(dgei%XAVG_DRIP (0))
580  ALLOCATE(dgei%XAVG_RRVEG (0))
581  ALLOCATE(dgei%XAVG_MELT (0))
582  ALLOCATE(dgei%XAVG_IRRIG_FLUX(0))
583  ALLOCATE(dgei%XAVG_GPP (0))
584  ALLOCATE(dgei%XAVG_RESP_AUTO (0))
585  ALLOCATE(dgei%XAVG_RESP_ECO (0))
586  ALLOCATE(dgei%XAVG_IFLOOD (0))
587  ALLOCATE(dgei%XAVG_PFLOOD (0))
588  ALLOCATE(dgei%XAVG_LE_FLOOD (0))
589  ALLOCATE(dgei%XAVG_LEI_FLOOD (0))
590 !
591  ALLOCATE(dgei%XLEG (0,0))
592  ALLOCATE(dgei%XLEGI (0,0))
593  ALLOCATE(dgei%XLEV (0,0))
594  ALLOCATE(dgei%XLES (0,0))
595  ALLOCATE(dgei%XLESL (0,0))
596  ALLOCATE(dgei%XLER (0,0))
597  ALLOCATE(dgei%XLETR (0,0))
598  ALLOCATE(dgei%XEVAP (0,0))
599  ALLOCATE(dgei%XSUBL (0,0))
600  ALLOCATE(dgei%XSNDRIFT (0,0))
601  ALLOCATE(dgei%XDRAIN (0,0))
602  ALLOCATE(dgei%XQSB (0,0))
603  ALLOCATE(dgei%XRUNOFF (0,0))
604  ALLOCATE(dgei%XHORT (0,0))
605  ALLOCATE(dgei%XDRIP (0,0))
606  ALLOCATE(dgei%XRRVEG (0,0))
607  ALLOCATE(dgei%XMELT (0,0))
608  ALLOCATE(dgei%XIRRIG_FLUX(0,0))
609  ALLOCATE(dgei%XGPP (0,0))
610  ALLOCATE(dgei%XRESP_AUTO (0,0))
611  ALLOCATE(dgei%XRESP_ECO (0,0))
612  ALLOCATE(dgei%XIFLOOD (0,0))
613  ALLOCATE(dgei%XPFLOOD (0,0))
614  ALLOCATE(dgei%XLE_FLOOD (0,0))
615  ALLOCATE(dgei%XLEI_FLOOD (0,0))
616  !
617  ALLOCATE(dgei%XRAINFALL (0))
618  ALLOCATE(dgei%XSNOWFALL (0))
619  ALLOCATE(dgei%XAVG_DWG (0))
620  ALLOCATE(dgei%XAVG_DWGI (0))
621  ALLOCATE(dgei%XAVG_DWR (0))
622  ALLOCATE(dgei%XAVG_DSWE (0))
623  ALLOCATE(dgei%XAVG_WATBUD(0))
624  !
625  ALLOCATE(dgei%XDWG (0,0))
626  ALLOCATE(dgei%XDWGI (0,0))
627  ALLOCATE(dgei%XDWR (0,0))
628  ALLOCATE(dgei%XDSWE (0,0))
629  ALLOCATE(dgei%XWATBUD(0,0))
630  !
631  ALLOCATE(dgei%XAVG_LEVCV (0))
632  ALLOCATE(dgei%XAVG_LESC (0))
633  ALLOCATE(dgei%XAVG_LETRGV (0))
634  ALLOCATE(dgei%XAVG_LETRCV (0))
635  ALLOCATE(dgei%XAVG_LERGV (0))
636  ALLOCATE(dgei%XAVG_LELITTER (0))
637  ALLOCATE(dgei%XAVG_LELITTERI(0))
638  ALLOCATE(dgei%XAVG_DRIPLIT (0))
639  ALLOCATE(dgei%XAVG_RRLIT (0))
640  ALLOCATE(dgei%XAVG_LERCV (0))
641  ALLOCATE(dgei%XAVG_LE_C_A (0))
642  ALLOCATE(dgei%XAVG_LE_V_C (0))
643  ALLOCATE(dgei%XAVG_LE_G_C (0))
644  ALLOCATE(dgei%XAVG_LE_N_C (0))
645  !
646  ALLOCATE(dgei%XAVG_SWNET_V (0))
647  ALLOCATE(dgei%XAVG_SWNET_G (0))
648  ALLOCATE(dgei%XAVG_SWNET_N (0))
649  ALLOCATE(dgei%XAVG_SWNET_NS (0))
650  ALLOCATE(dgei%XAVG_LWNET_V (0))
651  ALLOCATE(dgei%XAVG_LWNET_G (0))
652  ALLOCATE(dgei%XAVG_LWNET_N (0))
653  ALLOCATE(dgei%XAVG_SWDOWN_GN (0))
654  ALLOCATE(dgei%XAVG_LWDOWN_GN (0))
655  ALLOCATE(dgei%XAVG_H_V_C (0))
656  ALLOCATE(dgei%XAVG_H_G_C (0))
657  ALLOCATE(dgei%XAVG_H_C_A (0))
658  ALLOCATE(dgei%XAVG_H_N_C (0))
659  ALLOCATE(dgei%XAVG_SR_GN (0))
660  ALLOCATE(dgei%XAVG_MELTCV (0))
661  ALLOCATE(dgei%XAVG_FRZCV (0))
662 !
663  ALLOCATE(dgei%XLEVCV (0,0))
664  ALLOCATE(dgei%XLESC (0,0))
665 ! ALLOCATE(XLETRGV (0,0))
666  ALLOCATE(dgei%XLETRCV (0,0))
667 ! ALLOCATE(XLERGV (0,0))
668  ALLOCATE(dgei%XLELITTER (0,0))
669  ALLOCATE(dgei%XLELITTERI(0,0))
670  ALLOCATE(dgei%XDRIPLIT (0,0))
671  ALLOCATE(dgei%XRRLIT (0,0))
672  ALLOCATE(dgei%XLERCV (0,0))
673  ALLOCATE(dgei%XLE_C_A (0,0))
674  ALLOCATE(dgei%XLE_V_C (0,0))
675  ALLOCATE(dgei%XLE_G_C (0,0))
676  ALLOCATE(dgei%XLE_N_C (0,0))
677  !
678  ALLOCATE(dgei%XSWNET_V (0,0))
679  ALLOCATE(dgei%XSWNET_G (0,0))
680  ALLOCATE(dgei%XSWNET_N (0,0))
681  ALLOCATE(dgei%XSWNET_NS (0,0))
682  ALLOCATE(dgei%XLWNET_V (0,0))
683  ALLOCATE(dgei%XLWNET_G (0,0))
684  ALLOCATE(dgei%XLWNET_N (0,0))
685  ALLOCATE(dgei%XSWDOWN_GN (0,0))
686  ALLOCATE(dgei%XLWDOWN_GN (0,0))
687  ALLOCATE(dgei%XH_V_C (0,0))
688  ALLOCATE(dgei%XH_G_C (0,0))
689  ALLOCATE(dgei%XH_C_A (0,0))
690  ALLOCATE(dgei%XH_N_C (0,0))
691  ALLOCATE(dgei%XSR_GN (0,0))
692  ALLOCATE(dgei%XMELTCV (0,0))
693  ALLOCATE(dgei%XFRZCV (0,0))
694  !
695 END IF
696 !
697 !* surface cumulated energy budget
698 !
699 #ifdef SFX_OL
700 IF (dgei%LSURF_BUDGETC .OR. (lrestart .AND. .NOT.dgei%LRESET_BUDGETC)) THEN
701 #else
702 IF (dgei%LSURF_BUDGETC .OR. .NOT.dgei%LRESET_BUDGETC) THEN
703 #endif
704  ALLOCATE(dgei%XAVG_RNC (klu))
705  ALLOCATE(dgei%XAVG_HC (klu))
706  ALLOCATE(dgei%XAVG_LEC (klu))
707  ALLOCATE(dgei%XAVG_LEIC (klu))
708  ALLOCATE(dgei%XAVG_GFLUXC (klu))
709  ALLOCATE(dgei%XAVG_LEGC (klu))
710  ALLOCATE(dgei%XAVG_LEGIC (klu))
711  ALLOCATE(dgei%XAVG_LEVC (klu))
712  ALLOCATE(dgei%XAVG_LESAC (klu))
713  ALLOCATE(dgei%XAVG_LESLC (klu))
714  ALLOCATE(dgei%XAVG_LERC (klu))
715  ALLOCATE(dgei%XAVG_LETRC (klu))
716  ALLOCATE(dgei%XAVG_EVAPC (klu))
717  ALLOCATE(dgei%XAVG_SUBLC (klu))
718  ALLOCATE(dgei%XAVG_SNDRIFTC (klu))
719  ALLOCATE(dgei%XAVG_DRAINC (klu))
720  ALLOCATE(dgei%XAVG_QSBC (klu))
721  ALLOCATE(dgei%XAVG_RUNOFFC (klu))
722  ALLOCATE(dgei%XAVG_HORTC (klu))
723  ALLOCATE(dgei%XAVG_DRIPC (klu))
724  ALLOCATE(dgei%XAVG_RRVEGC (klu))
725  ALLOCATE(dgei%XAVG_MELTC (klu))
726  ALLOCATE(dgei%XAVG_IRRIG_FLUXC(klu))
727  ALLOCATE(dgei%XAVG_GPPC (klu))
728  ALLOCATE(dgei%XAVG_RESPC_AUTO (klu))
729  ALLOCATE(dgei%XAVG_RESPC_ECO (klu))
730  ALLOCATE(dgei%XAVG_IFLOODC (klu))
731  ALLOCATE(dgei%XAVG_PFLOODC (klu))
732  ALLOCATE(dgei%XAVG_LE_FLOODC (klu))
733  ALLOCATE(dgei%XAVG_LEI_FLOODC (klu))
734  !
735  ALLOCATE(dgei%XRNC (klu,i%NPATCH))
736  ALLOCATE(dgei%XHC (klu,i%NPATCH))
737  ALLOCATE(dgei%XLEC (klu,i%NPATCH))
738  ALLOCATE(dgei%XLEIC (klu,i%NPATCH))
739  ALLOCATE(dgei%XGFLUXC (klu,i%NPATCH))
740  ALLOCATE(dgei%XLEGC (klu,i%NPATCH))
741  ALLOCATE(dgei%XLEGIC (klu,i%NPATCH))
742  ALLOCATE(dgei%XLEVC (klu,i%NPATCH))
743  ALLOCATE(dgei%XLESAC (klu,i%NPATCH))
744  ALLOCATE(dgei%XLESLC (klu,i%NPATCH))
745  ALLOCATE(dgei%XLERC (klu,i%NPATCH))
746  ALLOCATE(dgei%XLETRC (klu,i%NPATCH))
747  ALLOCATE(dgei%XEVAPC (klu,i%NPATCH))
748  ALLOCATE(dgei%XSUBLC (klu,i%NPATCH))
749  ALLOCATE(dgei%XSNDRIFTC (klu,i%NPATCH))
750  ALLOCATE(dgei%XDRAINC (klu,i%NPATCH))
751  ALLOCATE(dgei%XQSBC (klu,i%NPATCH))
752  ALLOCATE(dgei%XRUNOFFC (klu,i%NPATCH))
753  ALLOCATE(dgei%XHORTC (klu,i%NPATCH))
754  ALLOCATE(dgei%XDRIPC (klu,i%NPATCH))
755  ALLOCATE(dgei%XRRVEGC (klu,i%NPATCH))
756  ALLOCATE(dgei%XMELTC (klu,i%NPATCH))
757  ALLOCATE(dgei%XIRRIG_FLUXC(klu,i%NPATCH))
758  ALLOCATE(dgei%XGPPC (klu,i%NPATCH))
759  ALLOCATE(dgei%XRESPC_AUTO (klu,i%NPATCH))
760  ALLOCATE(dgei%XRESPC_ECO (klu,i%NPATCH))
761  ALLOCATE(dgei%XIFLOODC (klu,i%NPATCH))
762  ALLOCATE(dgei%XPFLOODC (klu,i%NPATCH))
763  ALLOCATE(dgei%XLE_FLOODC (klu,i%NPATCH))
764  ALLOCATE(dgei%XLEI_FLOODC (klu,i%NPATCH))
765  !
766  IF (isize_lmeb_patch>0) THEN
767  ALLOCATE(dgei%XAVG_LEVCVC (klu))
768  ALLOCATE(dgei%XAVG_LESCC (klu))
769  ALLOCATE(dgei%XAVG_LETRGVC (klu))
770  ALLOCATE(dgei%XAVG_LETRCVC (klu))
771  ALLOCATE(dgei%XAVG_LERGVC (klu))
772  ALLOCATE(dgei%XAVG_LERCVC (klu))
773  ALLOCATE(dgei%XAVG_LE_C_AC (klu))
774  ALLOCATE(dgei%XAVG_LE_V_CC (klu))
775  ALLOCATE(dgei%XAVG_LE_G_CC (klu))
776  ALLOCATE(dgei%XAVG_LE_N_CC (klu))
777  !
778  ALLOCATE(dgei%XAVG_SWNET_VC (klu))
779  ALLOCATE(dgei%XAVG_SWNET_GC (klu))
780  ALLOCATE(dgei%XAVG_SWNET_NC (klu))
781  ALLOCATE(dgei%XAVG_SWNET_NSC (klu))
782  ALLOCATE(dgei%XAVG_LWNET_VC (klu))
783  ALLOCATE(dgei%XAVG_LWNET_GC (klu))
784  ALLOCATE(dgei%XAVG_LWNET_NC (klu))
785  ALLOCATE(dgei%XAVG_SWDOWN_GNC (klu))
786  ALLOCATE(dgei%XAVG_LWDOWN_GNC (klu))
787  ALLOCATE(dgei%XAVG_H_V_CC (klu))
788  ALLOCATE(dgei%XAVG_H_G_CC (klu))
789  ALLOCATE(dgei%XAVG_H_C_AC (klu))
790  ALLOCATE(dgei%XAVG_H_N_CC (klu))
791  ALLOCATE(dgei%XAVG_SR_GNC (klu))
792  ALLOCATE(dgei%XAVG_MELTCVC (klu))
793  ALLOCATE(dgei%XAVG_FRZCVC (klu))
794  !
795  ALLOCATE(dgei%XLEVCVC (klu,i%NPATCH))
796  ALLOCATE(dgei%XLESCC (klu,i%NPATCH))
797 ! ALLOCATE(XLETRGVC (KLU,NPATCH))
798  ALLOCATE(dgei%XLETRCVC (klu,i%NPATCH))
799 ! ALLOCATE(XLERGVC (KLU,NPATCH))
800  ALLOCATE(dgei%XLERCVC (klu,i%NPATCH))
801  ALLOCATE(dgei%XLE_C_AC (klu,i%NPATCH))
802  ALLOCATE(dgei%XLE_V_CC (klu,i%NPATCH))
803  ALLOCATE(dgei%XLE_G_CC (klu,i%NPATCH))
804  ALLOCATE(dgei%XLE_N_CC (klu,i%NPATCH))
805  !
806  ALLOCATE(dgei%XSWNET_VC (klu,i%NPATCH))
807  ALLOCATE(dgei%XSWNET_GC (klu,i%NPATCH))
808  ALLOCATE(dgei%XSWNET_NC (klu,i%NPATCH))
809  ALLOCATE(dgei%XSWNET_NSC (klu,i%NPATCH))
810  ALLOCATE(dgei%XLWNET_VC (klu,i%NPATCH))
811  ALLOCATE(dgei%XLWNET_GC (klu,i%NPATCH))
812  ALLOCATE(dgei%XLWNET_NC (klu,i%NPATCH))
813  ALLOCATE(dgei%XSWDOWN_GNC (klu,i%NPATCH))
814  ALLOCATE(dgei%XLWDOWN_GNC (klu,i%NPATCH))
815  ALLOCATE(dgei%XH_V_CC (klu,i%NPATCH))
816  ALLOCATE(dgei%XH_G_CC (klu,i%NPATCH))
817  ALLOCATE(dgei%XH_C_AC (klu,i%NPATCH))
818  ALLOCATE(dgei%XH_N_CC (klu,i%NPATCH))
819  ALLOCATE(dgei%XSR_GNC (klu,i%NPATCH))
820  ALLOCATE(dgei%XMELTCVC (klu,i%NPATCH))
821  ALLOCATE(dgei%XFRZCVC (klu,i%NPATCH))
822  ELSE
823  ALLOCATE(dgei%XAVG_LEVCVC (0))
824  ALLOCATE(dgei%XAVG_LESCC (0))
825  ALLOCATE(dgei%XAVG_LETRGVC (0))
826  ALLOCATE(dgei%XAVG_LETRCVC (0))
827  ALLOCATE(dgei%XAVG_LERGVC (0))
828  ALLOCATE(dgei%XAVG_LERCVC (0))
829  ALLOCATE(dgei%XAVG_LE_C_AC (0))
830  ALLOCATE(dgei%XAVG_LE_V_CC (0))
831  ALLOCATE(dgei%XAVG_LE_G_CC (0))
832  ALLOCATE(dgei%XAVG_LE_N_CC (0))
833  !
834  ALLOCATE(dgei%XAVG_SWNET_VC (0))
835  ALLOCATE(dgei%XAVG_SWNET_GC (0))
836  ALLOCATE(dgei%XAVG_SWNET_NC (0))
837  ALLOCATE(dgei%XAVG_SWNET_NSC (0))
838  ALLOCATE(dgei%XAVG_LWNET_VC (0))
839  ALLOCATE(dgei%XAVG_LWNET_GC (0))
840  ALLOCATE(dgei%XAVG_LWNET_NC (0))
841  ALLOCATE(dgei%XAVG_SWDOWN_GNC (0))
842  ALLOCATE(dgei%XAVG_LWDOWN_GNC (0))
843  ALLOCATE(dgei%XAVG_H_V_CC (0))
844  ALLOCATE(dgei%XAVG_H_G_CC (0))
845  ALLOCATE(dgei%XAVG_H_C_AC (0))
846  ALLOCATE(dgei%XAVG_H_N_CC (0))
847  ALLOCATE(dgei%XAVG_SR_GNC (0))
848  ALLOCATE(dgei%XAVG_MELTCVC (0))
849  ALLOCATE(dgei%XAVG_FRZCVC (0))
850  !
851  ALLOCATE(dgei%XLEVCVC (0,0))
852  ALLOCATE(dgei%XLESCC (0,0))
853 ! ALLOCATE(XLETRGVC (0,0))
854  ALLOCATE(dgei%XLETRCVC (0,0))
855 ! ALLOCATE(XLERGVC (0,0))
856  ALLOCATE(dgei%XLERCVC (0,0))
857  ALLOCATE(dgei%XLE_C_AC (0,0))
858  ALLOCATE(dgei%XLE_V_CC (0,0))
859  ALLOCATE(dgei%XLE_G_CC (0,0))
860  ALLOCATE(dgei%XLE_N_CC (0,0))
861  !
862  ALLOCATE(dgei%XSWNET_VC (0,0))
863  ALLOCATE(dgei%XSWNET_GC (0,0))
864  ALLOCATE(dgei%XSWNET_NC (0,0))
865  ALLOCATE(dgei%XSWNET_NSC (0,0))
866  ALLOCATE(dgei%XLWNET_VC (0,0))
867  ALLOCATE(dgei%XLWNET_GC (0,0))
868  ALLOCATE(dgei%XLWNET_NC (0,0))
869  ALLOCATE(dgei%XSWDOWN_GNC (0,0))
870  ALLOCATE(dgei%XLWDOWN_GNC (0,0))
871  ALLOCATE(dgei%XH_V_CC (0,0))
872  ALLOCATE(dgei%XH_G_CC (0,0))
873  ALLOCATE(dgei%XH_C_AC (0,0))
874  ALLOCATE(dgei%XH_N_CC (0,0))
875  ALLOCATE(dgei%XSR_GNC (0,0))
876  ALLOCATE(dgei%XMELTCVC (0,0))
877  ALLOCATE(dgei%XFRZCVC (0,0))
878  ENDIF
879  !
880  ALLOCATE(dgi%XAVG_SWDC (klu))
881  ALLOCATE(dgi%XAVG_SWUC (klu))
882  ALLOCATE(dgi%XAVG_LWDC (klu))
883  ALLOCATE(dgi%XAVG_LWUC (klu))
884  ALLOCATE(dgi%XAVG_FMUC (klu))
885  ALLOCATE(dgi%XAVG_FMVC (klu))
886  ALLOCATE(dgi%XSWDC (klu,i%NPATCH))
887  ALLOCATE(dgi%XSWUC (klu,i%NPATCH))
888  ALLOCATE(dgi%XLWDC (klu,i%NPATCH))
889  ALLOCATE(dgi%XLWUC (klu,i%NPATCH))
890  ALLOCATE(dgi%XFMUC (klu,i%NPATCH))
891  ALLOCATE(dgi%XFMVC (klu,i%NPATCH))
892  !
893  IF(i%LGLACIER)THEN
894  ALLOCATE(dgei%XAVG_ICEFLUXC(klu))
895  ALLOCATE(dgei%XICEFLUXC(klu,i%NPATCH))
896  ENDIF
897  !
898 #ifdef SFX_OL
899  IF(dgei%LWATER_BUDGET .OR. (lrestart .AND. .NOT.dgei%LRESET_BUDGETC))THEN
900 #else
901  IF(dgei%LWATER_BUDGET .OR. .NOT.dgei%LRESET_BUDGETC)THEN
902 #endif
903  !
904  ALLOCATE(dgei%XRAINFALLC (klu))
905  ALLOCATE(dgei%XSNOWFALLC (klu))
906  ALLOCATE(dgei%XAVG_DWGC (klu))
907  ALLOCATE(dgei%XAVG_DWGIC (klu))
908  ALLOCATE(dgei%XAVG_DWRC (klu))
909  ALLOCATE(dgei%XAVG_DSWEC (klu))
910  ALLOCATE(dgei%XAVG_WATBUDC(klu))
911  !
912  ALLOCATE(dgei%XDWGC (klu,i%NPATCH))
913  ALLOCATE(dgei%XDWGIC (klu,i%NPATCH))
914  ALLOCATE(dgei%XDWRC (klu,i%NPATCH))
915  ALLOCATE(dgei%XDSWEC (klu,i%NPATCH))
916  ALLOCATE(dgei%XWATBUDC(klu,i%NPATCH))
917  !
918  ELSE
919  !
920  ALLOCATE(dgei%XRAINFALLC (0))
921  ALLOCATE(dgei%XSNOWFALLC (0))
922  ALLOCATE(dgei%XAVG_DWGC (0))
923  ALLOCATE(dgei%XAVG_DWGIC (0))
924  ALLOCATE(dgei%XAVG_DWRC (0))
925  ALLOCATE(dgei%XAVG_DSWEC (0))
926  ALLOCATE(dgei%XAVG_WATBUDC(0))
927  !
928  ALLOCATE(dgei%XDWGC (0,0))
929  ALLOCATE(dgei%XDWGIC (0,0))
930  ALLOCATE(dgei%XDWRC (0,0))
931  ALLOCATE(dgei%XDSWEC (0,0))
932  ALLOCATE(dgei%XWATBUDC(0,0))
933  !
934  ENDIF
935  !
936  IF (.NOT.dgu%LREAD_BUDGETC) THEN
937  dgei%XAVG_RNC = 0.0
938  dgei%XAVG_HC = 0.0
939  dgei%XAVG_LEC = 0.0
940  dgei%XAVG_LEIC = 0.0
941  dgei%XAVG_GFLUXC = 0.0
942  dgei%XAVG_LEGC = 0.0
943  dgei%XAVG_LEGIC = 0.0
944  dgei%XAVG_LEVC = 0.0
945  dgei%XAVG_LESAC = 0.0
946  dgei%XAVG_LESLC = 0.0
947  dgei%XAVG_LERC = 0.0
948  dgei%XAVG_LETRC = 0.0
949  dgei%XAVG_EVAPC = 0.0
950  dgei%XAVG_SUBLC = 0.0
951  dgei%XAVG_SNDRIFTC = 0.0
952  dgei%XAVG_DRAINC = 0.0
953  dgei%XAVG_QSBC = 0.0
954  dgei%XAVG_RUNOFFC = 0.0
955  dgei%XAVG_HORTC = 0.0
956  dgei%XAVG_DRIPC = 0.0
957  dgei%XAVG_RRVEGC = 0.0
958  dgei%XAVG_MELTC = 0.0
959  dgei%XAVG_IRRIG_FLUXC = 0.0
960  dgei%XAVG_GPPC = 0.0
961  dgei%XAVG_RESPC_AUTO = 0.0
962  dgei%XAVG_RESPC_ECO = 0.0
963  dgei%XAVG_IFLOODC = 0.0
964  dgei%XAVG_PFLOODC = 0.0
965  dgei%XAVG_LE_FLOODC = 0.0
966  dgei%XAVG_LEI_FLOODC = 0.0
967  !
968  dgei%XRNC = 0.0
969  dgei%XHC = 0.0
970  dgei%XLEC = 0.0
971  dgei%XLEIC = 0.0
972  dgei%XGFLUXC = 0.0
973  dgei%XLEGC = 0.0
974  dgei%XLEGIC = 0.0
975  dgei%XLEVC = 0.0
976  dgei%XLESAC = 0.0
977  dgei%XLESLC = 0.0
978  dgei%XLERC = 0.0
979  dgei%XLETRC = 0.0
980  dgei%XEVAPC = 0.0
981  dgei%XSUBLC = 0.0
982  dgei%XSNDRIFTC = 0.0
983  dgei%XDRAINC = 0.0
984  dgei%XQSBC = 0.0
985  dgei%XRUNOFFC = 0.0
986  dgei%XHORTC = 0.0
987  dgei%XDRIPC = 0.0
988  dgei%XRRVEGC = 0.0
989  dgei%XMELTC = 0.0
990  dgei%XIRRIG_FLUXC = 0.0
991  dgei%XGPPC = 0.0
992  dgei%XRESPC_AUTO = 0.0
993  dgei%XRESPC_ECO = 0.0
994  dgei%XIFLOODC = 0.0
995  dgei%XPFLOODC = 0.0
996  dgei%XLE_FLOODC = 0.0
997  dgei%XLEI_FLOODC = 0.0
998  !
999  IF (isize_lmeb_patch>0) THEN
1000  dgei%XAVG_LEVCVC = 0.0
1001  dgei%XAVG_LESCC = 0.0
1002  dgei%XAVG_LETRGVC = 0.0
1003  dgei%XAVG_LETRCVC = 0.0
1004  dgei%XAVG_LERGVC = 0.0
1005  dgei%XAVG_LERCVC = 0.0
1006  dgei%XAVG_LE_C_AC = 0.0
1007  dgei%XAVG_LE_V_CC = 0.0
1008  dgei%XAVG_LE_G_CC = 0.0
1009  dgei%XAVG_LE_N_CC = 0.0
1010  !
1011  dgei%XAVG_SWNET_VC = 0.0
1012  dgei%XAVG_SWNET_GC = 0.0
1013  dgei%XAVG_SWNET_NC = 0.0
1014  dgei%XAVG_SWNET_NSC = 0.0
1015  dgei%XAVG_LWNET_VC = 0.0
1016  dgei%XAVG_LWNET_GC = 0.0
1017  dgei%XAVG_LWNET_NC = 0.0
1018  dgei%XAVG_SWDOWN_GNC = 0.0
1019  dgei%XAVG_LWDOWN_GNC = 0.0
1020  dgei%XAVG_H_V_CC = 0.0
1021  dgei%XAVG_H_G_CC = 0.0
1022  dgei%XAVG_H_C_AC = 0.0
1023  dgei%XAVG_H_N_CC = 0.0
1024  dgei%XAVG_SR_GNC = 0.0
1025  dgei%XAVG_MELTCVC = 0.0
1026  dgei%XAVG_FRZCVC = 0.0
1027 !
1028  dgei%XLEVCVC = 0.0
1029  dgei%XLESCC = 0.0
1030 ! XLETRGVC = 0.0
1031  dgei%XLETRCVC = 0.0
1032 ! XLERGVC = 0.0
1033  dgei%XLERCVC = 0.0
1034  dgei%XLE_C_AC = 0.0
1035  dgei%XLE_V_CC = 0.0
1036  dgei%XLE_G_CC = 0.0
1037  dgei%XLE_N_CC = 0.0
1038  !
1039  dgei%XSWNET_VC = 0.0
1040  dgei%XSWNET_GC = 0.0
1041  dgei%XSWNET_NC = 0.0
1042  dgei%XSWNET_NSC = 0.0
1043  dgei%XLWNET_VC = 0.0
1044  dgei%XLWNET_GC = 0.0
1045  dgei%XLWNET_NC = 0.0
1046  dgei%XSWDOWN_GNC = 0.0
1047  dgei%XLWDOWN_GNC = 0.0
1048  dgei%XH_V_CC = 0.0
1049  dgei%XH_G_CC = 0.0
1050  dgei%XH_C_AC = 0.0
1051  dgei%XH_N_CC = 0.0
1052  dgei%XSR_GNC = 0.0
1053  dgei%XMELTCVC = 0.0
1054  dgei%XFRZCVC = 0.0
1055  ENDIF
1056  !
1057  dgi%XAVG_SWDC = 0.0
1058  dgi%XAVG_SWUC = 0.0
1059  dgi%XAVG_LWDC = 0.0
1060  dgi%XAVG_LWUC = 0.0
1061  dgi%XAVG_FMUC = 0.0
1062  dgi%XAVG_FMVC = 0.0
1063  dgi%XSWDC = 0.0
1064  dgi%XSWUC = 0.0
1065  dgi%XLWDC = 0.0
1066  dgi%XLWUC = 0.0
1067  dgi%XFMUC = 0.0
1068  dgi%XFMVC = 0.0
1069  !
1070  IF(i%LGLACIER)THEN
1071  dgei%XAVG_ICEFLUXC = 0.0
1072  dgei%XICEFLUXC = 0.0
1073  ENDIF
1074  !
1075  IF(dgei%LWATER_BUDGET)THEN
1076  !
1077  dgei%XRAINFALLC = 0.0
1078  dgei%XSNOWFALLC = 0.0
1079  dgei%XAVG_DWGC = 0.0
1080  dgei%XAVG_DWGIC = 0.0
1081  dgei%XAVG_DWRC = 0.0
1082  dgei%XAVG_DSWEC = 0.0
1083  dgei%XAVG_WATBUDC = 0.0
1084  !
1085  dgei%XDWGC = 0.0
1086  dgei%XDWGIC = 0.0
1087  dgei%XDWRC = 0.0
1088  dgei%XDSWEC = 0.0
1089  dgei%XWATBUDC = 0.0
1090  !
1091  ENDIF
1092  !
1093  ELSEIF (dgu%LREAD_BUDGETC.AND.dgei%LRESET_BUDGETC) THEN
1094  !
1095  dgei%XAVG_RNC = 0.0
1096  dgei%XAVG_HC = 0.0
1097  dgei%XAVG_LEC = 0.0
1098  dgei%XAVG_LEIC = 0.0
1099  dgei%XAVG_GFLUXC = 0.0
1100  dgei%XAVG_LEGC = 0.0
1101  dgei%XAVG_LEGIC = 0.0
1102  dgei%XAVG_LEVC = 0.0
1103  dgei%XAVG_LESAC = 0.0
1104  dgei%XAVG_LESLC = 0.0
1105  dgei%XAVG_LERC = 0.0
1106  dgei%XAVG_LETRC = 0.0
1107  dgei%XAVG_EVAPC = 0.0
1108  dgei%XAVG_SUBLC = 0.0
1109  dgei%XAVG_SNDRIFTC = 0.0
1110  dgei%XAVG_DRAINC = 0.0
1111  dgei%XAVG_QSBC = 0.0
1112  dgei%XAVG_RUNOFFC = 0.0
1113  dgei%XAVG_HORTC = 0.0
1114  dgei%XAVG_DRIPC = 0.0
1115  dgei%XAVG_RRVEGC = 0.0
1116  dgei%XAVG_MELTC = 0.0
1117  dgei%XAVG_IRRIG_FLUXC = 0.0
1118  dgei%XAVG_GPPC = 0.0
1119  dgei%XAVG_RESPC_AUTO = 0.0
1120  dgei%XAVG_RESPC_ECO = 0.0
1121  dgei%XAVG_IFLOODC = 0.0
1122  dgei%XAVG_PFLOODC = 0.0
1123  dgei%XAVG_LE_FLOODC = 0.0
1124  dgei%XAVG_LEI_FLOODC = 0.0
1125  !
1126  IF (isize_lmeb_patch>0) THEN
1127  dgei%XAVG_LEVCVC = 0.0
1128  dgei%XAVG_LESCC = 0.0
1129  dgei%XAVG_LETRGVC = 0.0
1130  dgei%XAVG_LETRCVC = 0.0
1131  dgei%XAVG_LERGVC = 0.0
1132  dgei%XAVG_LERCVC = 0.0
1133  dgei%XAVG_LE_C_AC = 0.0
1134  dgei%XAVG_LE_V_CC = 0.0
1135  dgei%XAVG_LE_G_CC = 0.0
1136  dgei%XAVG_LE_N_CC = 0.0
1137  !
1138  dgei%XAVG_SWNET_VC = 0.0
1139  dgei%XAVG_SWNET_GC = 0.0
1140  dgei%XAVG_SWNET_NC = 0.0
1141  dgei%XAVG_SWNET_NSC = 0.0
1142  dgei%XAVG_LWNET_VC = 0.0
1143  dgei%XAVG_LWNET_GC = 0.0
1144  dgei%XAVG_LWNET_NC = 0.0
1145  dgei%XAVG_SWDOWN_GNC = 0.0
1146  dgei%XAVG_LWDOWN_GNC = 0.0
1147  dgei%XAVG_H_V_CC = 0.0
1148  dgei%XAVG_H_G_CC = 0.0
1149  dgei%XAVG_H_C_AC = 0.0
1150  dgei%XAVG_H_N_CC = 0.0
1151  dgei%XAVG_SR_GNC = 0.0
1152  dgei%XAVG_MELTCVC = 0.0
1153  dgei%XAVG_FRZCVC = 0.0
1154  !
1155  dgei%XLEVCVC = 0.0
1156  dgei%XLESCC = 0.0
1157 ! XLETRGVC = 0.0
1158  dgei%XLETRCVC = 0.0
1159 ! XLERGVC = 0.0
1160  dgei%XLERCVC = 0.0
1161  dgei%XLE_C_AC = 0.0
1162  dgei%XLE_V_CC = 0.0
1163  dgei%XLE_G_CC = 0.0
1164  dgei%XLE_N_CC = 0.0
1165  !
1166  dgei%XSWNET_VC = 0.0
1167  dgei%XSWNET_GC = 0.0
1168  dgei%XSWNET_NC = 0.0
1169  dgei%XSWNET_NSC = 0.0
1170  dgei%XLWNET_VC = 0.0
1171  dgei%XLWNET_GC = 0.0
1172  dgei%XLWNET_NC = 0.0
1173  dgei%XSWDOWN_GNC = 0.0
1174  dgei%XLWDOWN_GNC = 0.0
1175  dgei%XH_V_CC = 0.0
1176  dgei%XH_G_CC = 0.0
1177  dgei%XH_C_AC = 0.0
1178  dgei%XH_N_CC = 0.0
1179  dgei%XSR_GNC = 0.0
1180  dgei%XMELTCVC = 0.0
1181  dgei%XFRZCVC = 0.0
1182  ENDIF
1183  !
1184  dgei%XRNC = 0.0
1185  dgei%XHC = 0.0
1186  dgei%XLEC = 0.0
1187  dgei%XLEIC = 0.0
1188  dgei%XGFLUXC = 0.0
1189  dgei%XLEGC = 0.0
1190  dgei%XLEGIC = 0.0
1191  dgei%XLEVC = 0.0
1192  dgei%XLESAC = 0.0
1193  dgei%XLESLC = 0.0
1194  dgei%XLERC = 0.0
1195  dgei%XLETRC = 0.0
1196  dgei%XEVAPC = 0.0
1197  dgei%XSUBLC = 0.0
1198  dgei%XSNDRIFTC = 0.0
1199  dgei%XDRAINC = 0.0
1200  dgei%XQSBC = 0.0
1201  dgei%XRUNOFFC = 0.0
1202  dgei%XHORTC = 0.0
1203  dgei%XDRIPC = 0.0
1204  dgei%XRRVEGC = 0.0
1205  dgei%XMELTC = 0.0
1206  dgei%XIRRIG_FLUXC = 0.0
1207  dgei%XGPPC = 0.0
1208  dgei%XRESPC_AUTO = 0.0
1209  dgei%XRESPC_ECO = 0.0
1210  dgei%XIFLOODC = 0.0
1211  dgei%XPFLOODC = 0.0
1212  dgei%XLE_FLOODC = 0.0
1213  dgei%XLEI_FLOODC = 0.0
1214  !
1215  dgi%XAVG_SWDC = 0.0
1216  dgi%XAVG_SWUC = 0.0
1217  dgi%XAVG_LWDC = 0.0
1218  dgi%XAVG_LWUC = 0.0
1219  dgi%XAVG_FMUC = 0.0
1220  dgi%XAVG_FMVC = 0.0
1221  dgi%XSWDC = 0.0
1222  dgi%XSWUC = 0.0
1223  dgi%XLWDC = 0.0
1224  dgi%XLWUC = 0.0
1225  dgi%XFMUC = 0.0
1226  dgi%XFMVC = 0.0
1227  !
1228  IF(i%LGLACIER)THEN
1229  dgei%XAVG_ICEFLUXC = 0.0
1230  dgei%XICEFLUXC = 0.0
1231  ENDIF
1232  !
1233  IF(dgei%LWATER_BUDGET)THEN
1234  !
1235  dgei%XRAINFALLC = 0.0
1236  dgei%XSNOWFALLC = 0.0
1237  dgei%XAVG_DWGC = 0.0
1238  dgei%XAVG_DWGIC = 0.0
1239  dgei%XAVG_DWRC = 0.0
1240  dgei%XAVG_DSWEC = 0.0
1241  dgei%XAVG_WATBUDC = 0.0
1242  !
1243  dgei%XDWGC = 0.0
1244  dgei%XDWGIC = 0.0
1245  dgei%XDWRC = 0.0
1246  dgei%XDSWEC = 0.0
1247  dgei%XWATBUDC = 0.0
1248  !
1249  ENDIF
1250  !
1251  ELSE
1252  !
1253  CALL read_surf(&
1254  hprogram,'VERSION',iversion,iresp)
1255  CALL read_surf(&
1256  hprogram,'BUG ',ibug,iresp)
1257  !
1258  yrec='RNC_ISBA'
1259  CALL read_surf(&
1260  hprogram,yrec,dgei%XAVG_RNC ,iresp)
1261  yrec='HC_ISBA'
1262  CALL read_surf(&
1263  hprogram,yrec,dgei%XAVG_HC ,iresp)
1264  yrec='LEC_ISBA'
1265  CALL read_surf(&
1266  hprogram,yrec,dgei%XAVG_LEC ,iresp)
1267  yrec='LEIC_ISBA'
1268  CALL read_surf(&
1269  hprogram,yrec,dgei%XAVG_LEIC ,iresp)
1270  yrec='GFLUXC_ISBA'
1271  CALL read_surf(&
1272  hprogram,yrec,dgei%XAVG_GFLUXC ,iresp)
1273  yrec='LEGC_ISBA'
1274  CALL read_surf(&
1275  hprogram,yrec,dgei%XAVG_LEGC ,iresp)
1276  yrec='LEGIC_ISBA'
1277  CALL read_surf(&
1278  hprogram,yrec,dgei%XAVG_LEGIC ,iresp)
1279  yrec='LEVC_ISBA'
1280  CALL read_surf(&
1281  hprogram,yrec,dgei%XAVG_LEVC ,iresp)
1282  yrec='LESC_ISBA'
1283  CALL read_surf(&
1284  hprogram,yrec,dgei%XAVG_LESAC ,iresp)
1285  IF(i%TSNOW%SCHEME=='3-L' .OR. i%TSNOW%SCHEME=='CRO')THEN
1286  IF(iversion>7 .OR. iversion==7 .AND. ibug>=3)THEN
1287  yrec='LESLC_ISBA'
1288  CALL read_surf(&
1289  hprogram,yrec,dgei%XAVG_LESLC,iresp)
1290  ELSE
1291  dgei%XAVG_LESLC=0.0
1292  ENDIF
1293  IF(iversion>=8)THEN
1294  yrec='SNDRIFC_ISBA'
1295  CALL read_surf(&
1296  hprogram,yrec,dgei%XAVG_SNDRIFTC,iresp)
1297  ELSE
1298  dgei%XAVG_SNDRIFTC = 0.0
1299  ENDIF
1300  ELSE
1301  dgei%XAVG_LESLC = 0.0
1302  dgei%XAVG_SNDRIFTC = 0.0
1303  ENDIF
1304  yrec='LERC_ISBA'
1305  CALL read_surf(&
1306  hprogram,yrec,dgei%XAVG_LERC ,iresp)
1307  yrec='LETRC_ISBA'
1308  CALL read_surf(&
1309  hprogram,yrec,dgei%XAVG_LETRC ,iresp)
1310  yrec='EVAPC_ISBA'
1311  CALL read_surf(&
1312  hprogram,yrec,dgei%XAVG_EVAPC ,iresp)
1313  IF (iversion<8)THEN
1314  dgei%XAVG_SUBLC = 0.0
1315  ELSE
1316  yrec='SUBLC_ISBA'
1317  CALL read_surf(&
1318  hprogram,yrec,dgei%XAVG_SUBLC ,iresp)
1319  ENDIF
1320  yrec='DRAINC_ISBA'
1321  CALL read_surf(&
1322  hprogram,yrec,dgei%XAVG_DRAINC ,iresp)
1323  yrec='RUNOFFC_ISBA'
1324  CALL read_surf(&
1325  hprogram,yrec,dgei%XAVG_RUNOFFC,iresp)
1326  yrec='DRIVEGC_ISBA'
1327  CALL read_surf(&
1328  hprogram,yrec,dgei%XAVG_DRIPC ,iresp)
1329  yrec='RRVEGC_ISBA'
1330  CALL read_surf(&
1331  hprogram,yrec,dgei%XAVG_RRVEGC ,iresp)
1332  yrec='SNOMLTC_ISBA'
1333  CALL read_surf(&
1334  hprogram,yrec,dgei%XAVG_MELTC,iresp)
1335  !
1336  IF (isize_lmeb_patch>0) THEN
1337  yrec='LEVCVC_ISBA'
1338  CALL read_surf(&
1339  hprogram,yrec,dgei%XAVG_LEVCVC ,iresp)
1340  yrec='LESCC_ISBA'
1341  CALL read_surf(&
1342  hprogram,yrec,dgei%XAVG_LESCC ,iresp)
1343  yrec='LETRGVC_ISBA'
1344  CALL read_surf(&
1345  hprogram,yrec,dgei%XAVG_LETRGVC ,iresp)
1346  yrec='LETRCVC_ISBA'
1347  CALL read_surf(&
1348  hprogram,yrec,dgei%XAVG_LETRCVC ,iresp)
1349  yrec='LERGVC_ISBA'
1350  CALL read_surf(&
1351  hprogram,yrec,dgei%XAVG_LERGVC ,iresp)
1352  yrec='LERCVC_ISBA'
1353  CALL read_surf(&
1354  hprogram,yrec,dgei%XAVG_LERCVC ,iresp)
1355  yrec='LE_C_AC_ISBA'
1356  CALL read_surf(&
1357  hprogram,yrec,dgei%XAVG_LE_C_AC ,iresp)
1358  yrec='LE_V_CC_ISBA'
1359  CALL read_surf(&
1360  hprogram,yrec,dgei%XAVG_LE_V_CC ,iresp)
1361  yrec='LE_G_CC_ISBA'
1362  CALL read_surf(&
1363  hprogram,yrec,dgei%XAVG_LE_G_CC ,iresp)
1364  yrec='LE_N_CC_ISBA'
1365  CALL read_surf(&
1366  hprogram,yrec,dgei%XAVG_LE_N_CC ,iresp)
1367  !
1368  yrec='SWNT_VC_ISBA'
1369  CALL read_surf(&
1370  hprogram,yrec,dgei%XAVG_SWNET_VC ,iresp)
1371  yrec='SWNT_GC_ISBA'
1372  CALL read_surf(&
1373  hprogram,yrec,dgei%XAVG_SWNET_GC ,iresp)
1374  yrec='SWNT_NC_ISBA'
1375  CALL read_surf(&
1376  hprogram,yrec,dgei%XAVG_SWNET_NC ,iresp)
1377  yrec='SWNT_NSC_ISBA'
1378  CALL read_surf(&
1379  hprogram,yrec,dgei%XAVG_SWNET_NSC ,iresp)
1380  yrec='LWNT_VC_ISBA'
1381  CALL read_surf(&
1382  hprogram,yrec,dgei%XAVG_LWNET_VC ,iresp)
1383  yrec='LWNT_GC_ISBA'
1384  CALL read_surf(&
1385  hprogram,yrec,dgei%XAVG_LWNET_GC ,iresp)
1386  yrec='LWNT_NC_ISBA'
1387  CALL read_surf(&
1388  hprogram,yrec,dgei%XAVG_LWNET_NC ,iresp)
1389  yrec='SWDN_GNC_ISBA'
1390  CALL read_surf(&
1391  hprogram,yrec,dgei%XAVG_SWDOWN_GNC ,iresp)
1392  yrec='LWDN_GNC_ISBA'
1393  CALL read_surf(&
1394  hprogram,yrec,dgei%XAVG_LWDOWN_GNC ,iresp)
1395  yrec='H_V_CC_ISBA'
1396  CALL read_surf(&
1397  hprogram,yrec,dgei%XAVG_H_V_CC ,iresp)
1398  yrec='H_G_CC_ISBA'
1399  CALL read_surf(&
1400  hprogram,yrec,dgei%XAVG_H_G_CC ,iresp)
1401  yrec='H_C_AC_ISBA'
1402  CALL read_surf(&
1403  hprogram,yrec,dgei%XAVG_H_C_AC ,iresp)
1404  yrec='H_N_CC_ISBA'
1405  CALL read_surf(&
1406  hprogram,yrec,dgei%XAVG_H_N_CC ,iresp)
1407  yrec='SR_GNC_ISBA'
1408  CALL read_surf(&
1409  hprogram,yrec,dgei%XAVG_SR_GNC ,iresp)
1410  yrec='MELTCVC_ISBA'
1411  CALL read_surf(&
1412  hprogram,yrec,dgei%XAVG_MELTCVC ,iresp)
1413  yrec='FRZCVC_ISBA'
1414  CALL read_surf(&
1415  hprogram,yrec,dgei%XAVG_FRZCVC ,iresp)
1416  ENDIF
1417  !
1418  IF (lagrip) THEN
1419  yrec='IRRIGC_ISBA'
1420  CALL read_surf(&
1421  hprogram,yrec,dgei%XAVG_IRRIG_FLUXC,iresp)
1422  ELSE
1423  dgei%XAVG_IRRIG_FLUXC = 0.0
1424  ENDIF
1425  !
1426  IF(i%CPHOTO/='NON' .AND. (iversion>7 .OR. iversion==7 .AND. ibug>=3))THEN
1427  yrec='GPPC_ISBA'
1428  CALL read_surf(&
1429  hprogram,yrec,dgei%XAVG_GPPC,iresp)
1430  yrec='RC_AUTO_ISBA'
1431  CALL read_surf(&
1432  hprogram,yrec,dgei%XAVG_RESPC_AUTO,iresp)
1433  yrec='RC_ECO_ISBA'
1434  CALL read_surf(&
1435  hprogram,yrec,dgei%XAVG_RESPC_ECO,iresp)
1436  ELSE
1437  dgei%XAVG_GPPC = 0.0
1438  dgei%XAVG_RESPC_AUTO = 0.0
1439  dgei%XAVG_RESPC_ECO = 0.0
1440  ENDIF
1441  !
1442  IF((i%CRUNOFF=='SGH'.AND.i%CISBA=='DIF').AND.iversion>=8)THEN
1443  yrec='QSBC_ISBA'
1444  CALL read_surf(&
1445  hprogram,yrec,dgei%XAVG_QSBC,iresp)
1446  ELSE
1447  dgei%XAVG_QSBC = 0.0
1448  ENDIF
1449  !
1450  IF(i%CHORT=='SGH'.OR.i%CISBA=='DIF')THEN
1451  yrec='HORTONC_ISBA'
1452  CALL read_surf(&
1453  hprogram,yrec,dgei%XAVG_HORTC,iresp)
1454  ELSE
1455  dgei%XAVG_HORTC = 0.0
1456  ENDIF
1457  !
1458  IF(i%LFLOOD)THEN
1459  yrec='IFLOODC_ISBA'
1460  CALL read_surf(&
1461  hprogram,yrec,dgei%XAVG_IFLOODC,iresp)
1462  yrec='PFLOODC_ISBA'
1463  CALL read_surf(&
1464  hprogram,yrec,dgei%XAVG_PFLOODC,iresp)
1465  yrec='LEFC_ISBA'
1466  CALL read_surf(&
1467  hprogram,yrec,dgei%XAVG_LE_FLOODC,iresp)
1468  yrec='LEIFC_ISBA'
1469  CALL read_surf(&
1470  hprogram,yrec,dgei%XAVG_LEI_FLOODC,iresp)
1471  ELSE
1472  dgei%XAVG_IFLOODC = 0.0
1473  dgei%XAVG_PFLOODC = 0.0
1474  dgei%XAVG_LE_FLOODC = 0.0
1475  dgei%XAVG_LEI_FLOODC = 0.0
1476  ENDIF
1477 !
1478  IF (dgi%LRAD_BUDGET) THEN
1479  yrec='SWDC_ISBA'
1480  CALL read_surf(&
1481  hprogram,yrec,dgi%XAVG_SWDC,iresp)
1482  yrec='SWUC_ISBA'
1483  CALL read_surf(&
1484  hprogram,yrec,dgi%XAVG_SWUC,iresp)
1485  yrec='LWDC_ISBA'
1486  CALL read_surf(&
1487  hprogram,yrec,dgi%XAVG_LWDC,iresp)
1488  yrec='LWUC_ISBA'
1489  CALL read_surf(&
1490  hprogram,yrec,dgi%XAVG_LWUC,iresp)
1491  ENDIF
1492  yrec='FMUC_ISBA'
1493  CALL read_surf(&
1494  hprogram,yrec,dgi%XAVG_FMUC,iresp)
1495  yrec='FMVC_ISBA'
1496  CALL read_surf(&
1497  hprogram,yrec,dgi%XAVG_FMVC,iresp)
1498  !
1499  IF(i%LGLACIER)THEN
1500  yrec='ICE_FC_ISBA'
1501  CALL read_surf(&
1502  hprogram,yrec,dgei%XAVG_ICEFLUXC,iresp)
1503  ENDIF
1504  !
1505  IF(dgei%LWATER_BUDGET .AND. (iversion>7 .OR. iversion==7 .AND. ibug>=3))THEN
1506  yrec='RAINFC_ISBA'
1507  CALL read_surf(&
1508  hprogram,yrec,dgei%XRAINFALLC,iresp)
1509  yrec='SNOWFC_ISBA'
1510  CALL read_surf(&
1511  hprogram,yrec,dgei%XSNOWFALLC,iresp)
1512  yrec='DWGC_ISBA'
1513  CALL read_surf(&
1514  hprogram,yrec,dgei%XAVG_DWGC,iresp)
1515  yrec='DWGIC_ISBA'
1516  CALL read_surf(&
1517  hprogram,yrec,dgei%XAVG_DWGIC,iresp)
1518  yrec='DWRC_ISBA'
1519  CALL read_surf(&
1520  hprogram,yrec,dgei%XAVG_DWRC,iresp)
1521  yrec='DSWEC_ISBA'
1522  CALL read_surf(&
1523  hprogram,yrec,dgei%XAVG_DSWEC,iresp)
1524  yrec='WATBUDC_ISBA'
1525  CALL read_surf(&
1526  hprogram,yrec,dgei%XAVG_WATBUDC,iresp)
1527  ELSE
1528  dgei%XRAINFALLC = 0.0
1529  dgei%XSNOWFALLC = 0.0
1530  dgei%XAVG_DWGC = 0.0
1531  dgei%XAVG_DWGIC = 0.0
1532  dgei%XAVG_DWRC = 0.0
1533  dgei%XAVG_DSWEC = 0.0
1534  dgei%XAVG_WATBUDC = 0.0
1535  ENDIF
1536  !
1537  IF(dgi%LPATCH_BUDGET .AND. i%NPATCH>1)THEN
1538  !
1539  CALL read_surf(&
1540  hprogram,'VERSION',iversion,iresp)
1541  CALL read_surf(&
1542  hprogram,'BUG ',ibug,iresp)
1543  yrec2=''
1544  IF (iversion<7 .OR. iversion==7 .AND. ibug<3) yrec2='ATCH'
1545  yrec='RNC_P'
1546  CALL read_surf(&
1547  hprogram,trim(yrec)//yrec2,dgei%XRNC ,iresp)
1548  yrec='HC_P'
1549  CALL read_surf(&
1550  hprogram,trim(yrec)//yrec2,dgei%XHC ,iresp)
1551  yrec='LEC_P'
1552  CALL read_surf(&
1553  hprogram,trim(yrec)//yrec2,dgei%XLEC ,iresp)
1554  yrec='LEIC_P'
1555  CALL read_surf(&
1556  hprogram,trim(yrec)//yrec2,dgei%XLEIC ,iresp)
1557  yrec='GFLUXC_P'
1558  CALL read_surf(&
1559  hprogram,trim(yrec)//yrec2,dgei%XGFLUXC ,iresp)
1560  yrec='LEGC_P'
1561  CALL read_surf(&
1562  hprogram,trim(yrec)//yrec2,dgei%XLEGC ,iresp)
1563  yrec='LEGIC_P'
1564  CALL read_surf(&
1565  hprogram,trim(yrec)//yrec2,dgei%XLEGIC ,iresp)
1566  yrec='LEVC_P'
1567  CALL read_surf(&
1568  hprogram,trim(yrec)//yrec2,dgei%XLEVC ,iresp)
1569  yrec='LESC_P'
1570  CALL read_surf(&
1571  hprogram,trim(yrec)//yrec2,dgei%XLESAC ,iresp)
1572  IF(i%TSNOW%SCHEME=='3-L' .OR. i%TSNOW%SCHEME=='CRO')THEN
1573  IF(iversion>7 .OR. iversion==7 .AND. ibug>=3)THEN
1574  yrec='LESLC_P'
1575  CALL read_surf(&
1576  hprogram,trim(yrec)//yrec2,dgei%XLESLC,iresp)
1577  ELSE
1578  dgei%XLESLC = 0.0
1579  ENDIF
1580  IF(iversion>=8)THEN
1581  yrec='SNDRIFC_P'
1582  CALL read_surf(&
1583  hprogram,trim(yrec)//yrec2,dgei%XSNDRIFTC,iresp)
1584  ELSE
1585  dgei%XSNDRIFTC = 0.0
1586  ENDIF
1587  ELSE
1588  dgei%XLESLC = 0.0
1589  dgei%XSNDRIFTC = 0.0
1590  ENDIF
1591  yrec='LERC_P'
1592  CALL read_surf(&
1593  hprogram,trim(yrec)//yrec2,dgei%XLERC ,iresp)
1594  yrec='LETRC_P'
1595  CALL read_surf(&
1596  hprogram,trim(yrec)//yrec2,dgei%XLETRC ,iresp)
1597  yrec='EVAPC_P'
1598  CALL read_surf(&
1599  hprogram,trim(yrec)//yrec2,dgei%XEVAPC ,iresp)
1600  IF (iversion<8)THEN
1601  dgei%XSUBLC = 0.0
1602  ELSE
1603  yrec='SUBLC_P'
1604  CALL read_surf(&
1605  hprogram,yrec,dgei%XSUBLC,iresp)
1606  ENDIF
1607  yrec='DRAINC_P'
1608  CALL read_surf(&
1609  hprogram,trim(yrec)//yrec2,dgei%XDRAINC ,iresp)
1610  yrec='RUNOFFC_P'
1611  CALL read_surf(&
1612  hprogram,trim(yrec)//yrec2,dgei%XRUNOFFC,iresp)
1613  yrec='DRIVEGC_P'
1614  CALL read_surf(&
1615  hprogram,trim(yrec)//yrec2,dgei%XDRIPC,iresp)
1616  yrec='RRVEGC_P'
1617  CALL read_surf(&
1618  hprogram,trim(yrec)//yrec2,dgei%XRRVEGC,iresp)
1619  yrec='SNOMLTC_P'
1620  CALL read_surf(&
1621  hprogram,trim(yrec)//yrec2,dgei%XMELTC,iresp)
1622  !
1623  IF (isize_lmeb_patch>0) THEN
1624  yrec='LEVCVC_P'
1625  CALL read_surf(&
1626  hprogram,yrec,dgei%XLEVCVC ,iresp)
1627  yrec='LESCC_P'
1628  CALL read_surf(&
1629  hprogram,yrec,dgei%XLESCC ,iresp)
1630 ! YREC='LETRGVC_P'
1631 ! CALL READ_SURF(HPROGRAM,YREC,XLETRGVC ,IRESP)
1632  yrec='LETRCVC_P'
1633  CALL read_surf(&
1634  hprogram,yrec,dgei%XLETRCVC ,iresp)
1635 ! YREC='LERGVC_P'
1636 ! CALL READ_SURF(HPROGRAM,YREC,XLERGVC ,IRESP)
1637  yrec='LERCVC_P'
1638  CALL read_surf(&
1639  hprogram,yrec,dgei%XLERCVC ,iresp)
1640  yrec='LE_C_AC_P'
1641  CALL read_surf(&
1642  hprogram,yrec,dgei%XLE_C_AC ,iresp)
1643  yrec='LE_V_CC_P'
1644  CALL read_surf(&
1645  hprogram,yrec,dgei%XLE_V_CC ,iresp)
1646  yrec='LE_G_CC_P'
1647  CALL read_surf(&
1648  hprogram,yrec,dgei%XLE_G_CC ,iresp)
1649  yrec='LE_N_CC_P'
1650  CALL read_surf(&
1651  hprogram,yrec,dgei%XLE_N_CC ,iresp)
1652  !
1653  yrec='SWNT_VC_P'
1654  CALL read_surf(&
1655  hprogram,yrec,dgei%XSWNET_VC ,iresp)
1656  yrec='SWNT_GC_P'
1657  CALL read_surf(&
1658  hprogram,yrec,dgei%XSWNET_GC ,iresp)
1659  yrec='SWNT_NC_P'
1660  CALL read_surf(&
1661  hprogram,yrec,dgei%XSWNET_NC ,iresp)
1662  yrec='SWNT_NSC_P'
1663  CALL read_surf(&
1664  hprogram,yrec,dgei%XSWNET_NSC ,iresp)
1665  yrec='LWNT_VC_P'
1666  CALL read_surf(&
1667  hprogram,yrec,dgei%XLWNET_VC ,iresp)
1668  yrec='LWNT_GC_P'
1669  CALL read_surf(&
1670  hprogram,yrec,dgei%XLWNET_GC ,iresp)
1671  yrec='LWNT_NC_P'
1672  CALL read_surf(&
1673  hprogram,yrec,dgei%XLWNET_NC ,iresp)
1674  yrec='SWDN_GNC_P'
1675  CALL read_surf(&
1676  hprogram,yrec,dgei%XSWDOWN_GNC ,iresp)
1677  yrec='LWDN_GNC_P'
1678  CALL read_surf(&
1679  hprogram,yrec,dgei%XLWDOWN_GNC ,iresp)
1680  yrec='H_V_CC_P'
1681  CALL read_surf(&
1682  hprogram,yrec,dgei%XH_V_CC ,iresp)
1683  yrec='H_G_CC_P'
1684  CALL read_surf(&
1685  hprogram,yrec,dgei%XH_G_CC ,iresp)
1686  yrec='H_C_AC_P'
1687  CALL read_surf(&
1688  hprogram,yrec,dgei%XH_C_AC ,iresp)
1689  yrec='H_N_CC_P'
1690  CALL read_surf(&
1691  hprogram,yrec,dgei%XH_N_CC ,iresp)
1692  yrec='SR_GNC_P'
1693  CALL read_surf(&
1694  hprogram,yrec,dgei%XSR_GNC ,iresp)
1695  yrec='MELTCVC_P'
1696  CALL read_surf(&
1697  hprogram,yrec,dgei%XMELTCVC ,iresp)
1698  yrec='FRZCVC_P'
1699  CALL read_surf(&
1700  hprogram,yrec,dgei%XFRZCVC ,iresp)
1701  ENDIF
1702  !
1703  IF((i%CRUNOFF=='SGH'.AND.i%CISBA=='DIF').AND.iversion>=8)THEN
1704  yrec='QSBC_P'
1705  CALL read_surf(&
1706  hprogram,trim(yrec)//yrec2,dgei%XQSBC,iresp)
1707  ELSE
1708  dgei%XQSBC = 0.0
1709  ENDIF
1710  !
1711  IF (lagrip) THEN
1712  yrec='IRRIGC_P'
1713  CALL read_surf(&
1714  hprogram,trim(yrec)//yrec2,dgei%XIRRIG_FLUXC,iresp)
1715  ELSE
1716  dgei%XIRRIG_FLUXC = 0.0
1717  ENDIF
1718  !
1719  IF(i%CPHOTO/='NON' .AND. (iversion>7 .OR. iversion==7 .AND. ibug>=3))THEN
1720  yrec='GPPC_P'
1721  CALL read_surf(&
1722  hprogram,trim(yrec)//yrec2,dgei%XGPPC,iresp)
1723  yrec='RC_AUTO_P'
1724  CALL read_surf(&
1725  hprogram,trim(yrec)//yrec2,dgei%XRESPC_AUTO,iresp)
1726  yrec='RC_ECO_P'
1727  CALL read_surf(&
1728  hprogram,trim(yrec)//yrec2,dgei%XRESPC_ECO,iresp)
1729  ELSE
1730  dgei%XGPPC =0.0
1731  dgei%XRESPC_AUTO=0.0
1732  dgei%XRESPC_ECO =0.0
1733  ENDIF
1734  !
1735  IF (dgi%LRAD_BUDGET) THEN
1736  yrec='SWDC_P'
1737  CALL read_surf(&
1738  hprogram,trim(yrec)//yrec2,dgi%XSWDC,iresp)
1739  yrec='SWUC_P'
1740  CALL read_surf(&
1741  hprogram,trim(yrec)//yrec2,dgi%XSWUC,iresp)
1742  yrec='LWDC_P'
1743  CALL read_surf(&
1744  hprogram,trim(yrec)//yrec2,dgi%XLWDC,iresp)
1745  yrec='LWUC_P'
1746  CALL read_surf(&
1747  hprogram,trim(yrec)//yrec2,dgi%XLWUC,iresp)
1748  ENDIF
1749  yrec='FMUC_P'
1750  CALL read_surf(&
1751  hprogram,trim(yrec)//yrec2,dgi%XFMUC,iresp)
1752  yrec='FMVC_P'
1753  CALL read_surf(&
1754  hprogram,trim(yrec)//yrec2,dgi%XFMVC,iresp)
1755  !
1756  IF(i%LGLACIER)THEN
1757  yrec='ICE_FC_P'
1758  CALL read_surf(&
1759  hprogram,trim(yrec)//yrec2,dgei%XICEFLUXC,iresp)
1760  ENDIF
1761  !
1762  IF(i%CHORT=='SGH'.OR.i%CISBA=='DIF')THEN
1763  yrec='HORTONC_P'
1764  CALL read_surf(&
1765  hprogram,trim(yrec)//yrec2,dgei%XHORTC ,iresp)
1766  ELSE
1767  dgei%XHORTC = 0.0
1768  ENDIF
1769  !
1770  IF(i%LFLOOD)THEN
1771  yrec='IFLOODC_P'
1772  CALL read_surf(&
1773  hprogram,trim(yrec)//yrec2,dgei%XIFLOODC,iresp)
1774  yrec='PFLOODC_P'
1775  CALL read_surf(&
1776  hprogram,trim(yrec)//yrec2,dgei%XPFLOODC,iresp)
1777  yrec='LEFC_P'
1778  CALL read_surf(&
1779  hprogram,trim(yrec)//yrec2,dgei%XLE_FLOODC,iresp)
1780  yrec='LEIFC_P'
1781  CALL read_surf(&
1782  hprogram,trim(yrec)//yrec2,dgei%XLEI_FLOODC,iresp)
1783  ELSE
1784  dgei%XIFLOODC = 0.0
1785  dgei%XPFLOODC = 0.0
1786  dgei%XLE_FLOODC = 0.0
1787  dgei%XLEI_FLOODC = 0.0
1788  ENDIF
1789  !
1790  IF(dgei%LWATER_BUDGET .AND. (iversion>7 .OR. iversion==7 .AND. ibug>=3))THEN
1791  yrec='DWGC_P'
1792  CALL read_surf(&
1793  hprogram,trim(yrec)//yrec2,dgei%XDWGC,iresp)
1794  yrec='DWGIC_P'
1795  CALL read_surf(&
1796  hprogram,trim(yrec)//yrec2,dgei%XDWGIC,iresp)
1797  yrec='DWRC_P'
1798  CALL read_surf(&
1799  hprogram,trim(yrec)//yrec2,dgei%XDWRC,iresp)
1800  yrec='DSWEC_P'
1801  CALL read_surf(&
1802  hprogram,trim(yrec)//yrec2,dgei%XDSWEC,iresp)
1803  yrec='WATBUDC_P'
1804  CALL read_surf(&
1805  hprogram,trim(yrec)//yrec2,dgei%XWATBUDC,iresp)
1806  ELSE
1807  dgei%XDWGC = 0.0
1808  dgei%XDWGIC = 0.0
1809  dgei%XDWRC = 0.0
1810  dgei%XDSWEC = 0.0
1811  dgei%XWATBUDC = 0.0
1812  ENDIF
1813  !
1814  ELSE
1815  !
1816  dgei%XRNC = 0.0
1817  dgei%XHC = 0.0
1818  dgei%XLEC = 0.0
1819  dgei%XLEIC = 0.0
1820  dgei%XGFLUXC = 0.0
1821  dgei%XLEGC = 0.0
1822  dgei%XLEGIC = 0.0
1823  dgei%XLEVC = 0.0
1824  dgei%XLESAC = 0.0
1825  dgei%XLESLC = 0.0
1826  dgei%XLERC = 0.0
1827  dgei%XLETRC = 0.0
1828  dgei%XEVAPC = 0.0
1829  dgei%XSUBLC = 0.0
1830  dgei%XSNDRIFTC = 0.0
1831  dgei%XDRAINC = 0.0
1832  dgei%XQSBC = 0.0
1833  dgei%XRUNOFFC = 0.0
1834  dgei%XHORTC = 0.0
1835  dgei%XDRIPC = 0.0
1836  dgei%XRRVEGC = 0.0
1837  dgei%XMELTC = 0.0
1838  dgei%XIRRIG_FLUXC = 0.0
1839  dgei%XGPPC = 0.0
1840  dgei%XRESPC_AUTO = 0.0
1841  dgei%XRESPC_ECO = 0.0
1842  dgei%XIFLOODC = 0.0
1843  dgei%XPFLOODC = 0.0
1844  dgei%XLE_FLOODC = 0.0
1845  dgei%XLEI_FLOODC = 0.0
1846  !
1847  IF (isize_lmeb_patch>0) THEN
1848  dgei%XLEVCVC = 0.0
1849  dgei%XLESCC = 0.0
1850 ! XLETRGVC = 0.0
1851  dgei%XLETRCVC = 0.0
1852 ! XLERGVC = 0.0
1853  dgei%XLERCVC = 0.0
1854  dgei%XLE_C_AC = 0.0
1855  dgei%XLE_V_CC = 0.0
1856  dgei%XLE_G_CC = 0.0
1857  dgei%XLE_N_CC = 0.0
1858  !
1859  dgei%XSWNET_VC = 0.0
1860  dgei%XSWNET_GC = 0.0
1861  dgei%XSWNET_NC = 0.0
1862  dgei%XSWNET_NSC = 0.0
1863  dgei%XLWNET_VC = 0.0
1864  dgei%XLWNET_GC = 0.0
1865  dgei%XLWNET_NC = 0.0
1866  dgei%XSWDOWN_GNC = 0.0
1867  dgei%XLWDOWN_GNC = 0.0
1868  dgei%XH_V_CC = 0.0
1869  dgei%XH_G_CC = 0.0
1870  dgei%XH_C_AC = 0.0
1871  dgei%XH_N_CC = 0.0
1872  dgei%XSR_GNC = 0.0
1873  dgei%XMELTCVC = 0.0
1874  dgei%XFRZCVC = 0.0
1875  ENDIF
1876  !
1877  dgi%XSWDC = 0.0
1878  dgi%XSWUC = 0.0
1879  dgi%XLWDC = 0.0
1880  dgi%XLWUC = 0.0
1881  dgi%XFMUC = 0.0
1882  dgi%XFMVC = 0.0
1883  !
1884  IF(i%LGLACIER)THEN
1885  dgei%XICEFLUXC=0.0
1886  ENDIF
1887  !
1888  IF(dgei%LWATER_BUDGET)THEN
1889  dgei%XDWGC = 0.0
1890  dgei%XDWGIC = 0.0
1891  dgei%XDWRC = 0.0
1892  dgei%XDSWEC = 0.0
1893  dgei%XWATBUDC = 0.0
1894  ENDIF
1895  !
1896  ENDIF
1897  !
1898  ENDIF
1899 ELSE
1900  ALLOCATE(dgei%XAVG_RNC (0))
1901  ALLOCATE(dgei%XAVG_HC (0))
1902  ALLOCATE(dgei%XAVG_LEC (0))
1903  ALLOCATE(dgei%XAVG_LEIC (0))
1904  ALLOCATE(dgei%XAVG_GFLUXC (0))
1905  ALLOCATE(dgei%XAVG_LEGC (0))
1906  ALLOCATE(dgei%XAVG_LEGIC (0))
1907  ALLOCATE(dgei%XAVG_LEVC (0))
1908  ALLOCATE(dgei%XAVG_LESAC (0))
1909  ALLOCATE(dgei%XAVG_LESLC (0))
1910  ALLOCATE(dgei%XAVG_LERC (0))
1911  ALLOCATE(dgei%XAVG_LETRC (0))
1912  ALLOCATE(dgei%XAVG_EVAPC (0))
1913  ALLOCATE(dgei%XAVG_SUBLC (0))
1914  ALLOCATE(dgei%XAVG_SNDRIFTC (0))
1915  ALLOCATE(dgei%XAVG_DRAINC (0))
1916  ALLOCATE(dgei%XAVG_QSBC (0))
1917  ALLOCATE(dgei%XAVG_RUNOFFC (0))
1918  ALLOCATE(dgei%XAVG_HORTC (0))
1919  ALLOCATE(dgei%XAVG_DRIPC (0))
1920  ALLOCATE(dgei%XAVG_RRVEGC (0))
1921  ALLOCATE(dgei%XAVG_MELTC (0))
1922  ALLOCATE(dgei%XAVG_IRRIG_FLUXC(0))
1923  ALLOCATE(dgei%XAVG_GPPC (0))
1924  ALLOCATE(dgei%XAVG_RESPC_AUTO (0))
1925  ALLOCATE(dgei%XAVG_RESPC_ECO (0))
1926  ALLOCATE(dgei%XAVG_IFLOODC (0))
1927  ALLOCATE(dgei%XAVG_PFLOODC (0))
1928  ALLOCATE(dgei%XAVG_LE_FLOODC (0))
1929  ALLOCATE(dgei%XAVG_LEI_FLOODC (0))
1930 
1931 !
1932  ALLOCATE(dgei%XRNC (0,0))
1933  ALLOCATE(dgei%XHC (0,0))
1934  ALLOCATE(dgei%XLEC (0,0))
1935  ALLOCATE(dgei%XLEIC (0,0))
1936  ALLOCATE(dgei%XGFLUXC (0,0))
1937  ALLOCATE(dgei%XLEGC (0,0))
1938  ALLOCATE(dgei%XLEGIC (0,0))
1939  ALLOCATE(dgei%XLEVC (0,0))
1940  ALLOCATE(dgei%XLESAC (0,0))
1941  ALLOCATE(dgei%XLESLC (0,0))
1942  ALLOCATE(dgei%XLERC (0,0))
1943  ALLOCATE(dgei%XLETRC (0,0))
1944  ALLOCATE(dgei%XEVAPC (0,0))
1945  ALLOCATE(dgei%XSUBLC (0,0))
1946  ALLOCATE(dgei%XSNDRIFTC (0,0))
1947  ALLOCATE(dgei%XDRAINC (0,0))
1948  ALLOCATE(dgei%XQSBC (0,0))
1949  ALLOCATE(dgei%XRUNOFFC (0,0))
1950  ALLOCATE(dgei%XHORTC (0,0))
1951  ALLOCATE(dgei%XDRIPC (0,0))
1952  ALLOCATE(dgei%XRRVEGC (0,0))
1953  ALLOCATE(dgei%XMELTC (0,0))
1954  ALLOCATE(dgei%XIRRIG_FLUXC(0,0))
1955  ALLOCATE(dgei%XGPPC (0,0))
1956  ALLOCATE(dgei%XRESPC_AUTO (0,0))
1957  ALLOCATE(dgei%XRESPC_ECO (0,0))
1958  ALLOCATE(dgei%XIFLOODC (0,0))
1959  ALLOCATE(dgei%XPFLOODC (0,0))
1960  ALLOCATE(dgei%XLE_FLOODC (0,0))
1961  ALLOCATE(dgei%XLEI_FLOODC (0,0))
1962 !
1963  ALLOCATE(dgi%XAVG_SWDC (0))
1964  ALLOCATE(dgi%XAVG_SWUC (0))
1965  ALLOCATE(dgi%XAVG_LWDC (0))
1966  ALLOCATE(dgi%XAVG_LWUC (0))
1967  ALLOCATE(dgi%XAVG_FMUC (0))
1968  ALLOCATE(dgi%XAVG_FMVC (0))
1969  ALLOCATE(dgi%XSWDC (0,0))
1970  ALLOCATE(dgi%XSWUC (0,0))
1971  ALLOCATE(dgi%XLWDC (0,0))
1972  ALLOCATE(dgi%XLWUC (0,0))
1973  ALLOCATE(dgi%XFMUC (0,0))
1974  ALLOCATE(dgi%XFMVC (0,0))
1975  !
1976  ALLOCATE(dgei%XRAINFALLC (0))
1977  ALLOCATE(dgei%XSNOWFALLC (0))
1978  ALLOCATE(dgei%XAVG_DWGC (0))
1979  ALLOCATE(dgei%XAVG_DWGIC (0))
1980  ALLOCATE(dgei%XAVG_DWRC (0))
1981  ALLOCATE(dgei%XAVG_DSWEC (0))
1982  ALLOCATE(dgei%XAVG_WATBUDC(0))
1983  !
1984  ALLOCATE(dgei%XDWGC (0,0))
1985  ALLOCATE(dgei%XDWGIC (0,0))
1986  ALLOCATE(dgei%XDWRC (0,0))
1987  ALLOCATE(dgei%XDSWEC (0,0))
1988  ALLOCATE(dgei%XWATBUDC(0,0))
1989  !
1990  ALLOCATE(dgei%XAVG_LEVCVC (0))
1991  ALLOCATE(dgei%XAVG_LESCC (0))
1992  ALLOCATE(dgei%XAVG_LETRGVC (0))
1993  ALLOCATE(dgei%XAVG_LETRCVC (0))
1994  ALLOCATE(dgei%XAVG_LERGVC (0))
1995  ALLOCATE(dgei%XAVG_LERCVC (0))
1996  ALLOCATE(dgei%XAVG_LE_C_AC (0))
1997  ALLOCATE(dgei%XAVG_LE_V_CC (0))
1998  ALLOCATE(dgei%XAVG_LE_G_CC (0))
1999  ALLOCATE(dgei%XAVG_LE_N_CC (0))
2000  !
2001  ALLOCATE(dgei%XAVG_SWNET_VC (0))
2002  ALLOCATE(dgei%XAVG_SWNET_GC (0))
2003  ALLOCATE(dgei%XAVG_SWNET_NC (0))
2004  ALLOCATE(dgei%XAVG_SWNET_NSC (0))
2005  ALLOCATE(dgei%XAVG_LWNET_VC (0))
2006  ALLOCATE(dgei%XAVG_LWNET_GC (0))
2007  ALLOCATE(dgei%XAVG_LWNET_NC (0))
2008  ALLOCATE(dgei%XAVG_SWDOWN_GNC (0))
2009  ALLOCATE(dgei%XAVG_LWDOWN_GNC (0))
2010  ALLOCATE(dgei%XAVG_H_V_CC (0))
2011  ALLOCATE(dgei%XAVG_H_G_CC (0))
2012  ALLOCATE(dgei%XAVG_H_C_AC (0))
2013  ALLOCATE(dgei%XAVG_H_N_CC (0))
2014  ALLOCATE(dgei%XAVG_SR_GNC (0))
2015  ALLOCATE(dgei%XAVG_MELTCVC (0))
2016  ALLOCATE(dgei%XAVG_FRZCVC (0))
2017  !
2018  ALLOCATE(dgei%XLEVCVC (0,0))
2019  ALLOCATE(dgei%XLESCC (0,0))
2020 ! ALLOCATE(XLETRGVC (0,0))
2021  ALLOCATE(dgei%XLETRCVC (0,0))
2022 ! ALLOCATE(XLERGVC (0,0))
2023  ALLOCATE(dgei%XLERCVC (0,0))
2024  ALLOCATE(dgei%XLE_C_AC (0,0))
2025  ALLOCATE(dgei%XLE_V_CC (0,0))
2026  ALLOCATE(dgei%XLE_G_CC (0,0))
2027  ALLOCATE(dgei%XLE_N_CC (0,0))
2028  !
2029  ALLOCATE(dgei%XSWNET_VC (0,0))
2030  ALLOCATE(dgei%XSWNET_GC (0,0))
2031  ALLOCATE(dgei%XSWNET_NC (0,0))
2032  ALLOCATE(dgei%XSWNET_NSC (0,0))
2033  ALLOCATE(dgei%XLWNET_VC (0,0))
2034  ALLOCATE(dgei%XLWNET_GC (0,0))
2035  ALLOCATE(dgei%XLWNET_NC (0,0))
2036  ALLOCATE(dgei%XSWDOWN_GNC (0,0))
2037  ALLOCATE(dgei%XLWDOWN_GNC (0,0))
2038  ALLOCATE(dgei%XH_V_CC (0,0))
2039  ALLOCATE(dgei%XH_G_CC (0,0))
2040  ALLOCATE(dgei%XH_C_AC (0,0))
2041  ALLOCATE(dgei%XH_N_CC (0,0))
2042  ALLOCATE(dgei%XSR_GNC (0,0))
2043  ALLOCATE(dgei%XMELTCVC (0,0))
2044  ALLOCATE(dgei%XFRZCVC (0,0))
2045  !
2046 ENDIF
2047 !
2048 IF(.NOT.i%LGLACIER)THEN
2049  ALLOCATE(dgei%XAVG_ICEFLUXC(0))
2050  ALLOCATE(dgei%XICEFLUXC(0,0))
2051 ENDIF
2052 !
2053 !
2054 !* surface temperature and parameters at 2m
2055 !
2056 ALLOCATE(dgi%XTS (klu,i%NPATCH))
2057 ALLOCATE(dgi%XAVG_TS(klu))
2058 dgi%XTS = xundef
2059 dgi%XAVG_TS = xundef
2060 ALLOCATE(dgi%XTSRAD (klu,i%NPATCH))
2061 dgi%XTSRAD = xundef
2062 !
2063 IF (dgi%N2M>=1) THEN
2064  ALLOCATE(dgi%XAVG_RI (klu))
2065  ALLOCATE(dgi%XAVG_T2M (klu))
2066  ALLOCATE(dgi%XAVG_T2M_MIN (klu))
2067  ALLOCATE(dgi%XAVG_T2M_MAX (klu))
2068  ALLOCATE(dgi%XAVG_Q2M (klu))
2069  ALLOCATE(dgi%XAVG_HU2M (klu))
2070  ALLOCATE(dgi%XAVG_HU2M_MIN (klu))
2071  ALLOCATE(dgi%XAVG_HU2M_MAX (klu))
2072  ALLOCATE(dgi%XAVG_ZON10M (klu))
2073  ALLOCATE(dgi%XAVG_MER10M (klu))
2074  ALLOCATE(dgi%XAVG_WIND10M (klu))
2075  ALLOCATE(dgi%XAVG_WIND10M_MAX (klu))
2076  ALLOCATE(dgi%XAVG_SFCO2 (klu))
2077  dgi%XAVG_RI = xundef
2078  dgi%XAVG_T2M = xundef
2079  dgi%XAVG_T2M_MIN = xundef
2080  dgi%XAVG_T2M_MAX = -xundef
2081  dgi%XAVG_Q2M = xundef
2082  dgi%XAVG_HU2M = xundef
2083  dgi%XAVG_HU2M_MIN= xundef
2084  dgi%XAVG_HU2M_MAX= -xundef
2085  dgi%XAVG_ZON10M = xundef
2086  dgi%XAVG_MER10M = xundef
2087  dgi%XAVG_WIND10M = xundef
2088  dgi%XAVG_WIND10M_MAX = 0.0
2089  dgi%XAVG_SFCO2 = xundef
2090  !
2091  ALLOCATE(dgi%XRI (klu,i%NPATCH))
2092  ALLOCATE(dgi%XT2M (klu,i%NPATCH))
2093  ALLOCATE(dgi%XQ2M (klu,i%NPATCH))
2094  ALLOCATE(dgi%XHU2M (klu,i%NPATCH))
2095  ALLOCATE(dgi%XZON10M (klu,i%NPATCH))
2096  ALLOCATE(dgi%XMER10M (klu,i%NPATCH))
2097  ALLOCATE(dgi%XWIND10M(klu,i%NPATCH))
2098  ALLOCATE(dgi%XT2M_MIN(klu,i%NPATCH))
2099  ALLOCATE(dgi%XT2M_MAX(klu,i%NPATCH))
2100  !
2101  dgi%XRI = xundef
2102  dgi%XT2M = xundef
2103  dgi%XQ2M = xundef
2104  dgi%XHU2M = xundef
2105  dgi%XZON10M = xundef
2106  dgi%XMER10M = xundef
2107  dgi%XWIND10M = xundef
2108  dgi%XT2M_MIN = xundef
2109  dgi%XT2M_MAX = 0.0
2110 ELSE
2111  ALLOCATE(dgi%XAVG_RI (0))
2112  ALLOCATE(dgi%XAVG_T2M (0))
2113  ALLOCATE(dgi%XAVG_T2M_MIN (0))
2114  ALLOCATE(dgi%XAVG_T2M_MAX (0))
2115  ALLOCATE(dgi%XAVG_Q2M (0))
2116  ALLOCATE(dgi%XAVG_HU2M (0))
2117  ALLOCATE(dgi%XAVG_HU2M_MIN (0))
2118  ALLOCATE(dgi%XAVG_HU2M_MAX (0))
2119  ALLOCATE(dgi%XAVG_ZON10M (0))
2120  ALLOCATE(dgi%XAVG_MER10M (0))
2121  ALLOCATE(dgi%XAVG_WIND10M (0))
2122  ALLOCATE(dgi%XAVG_WIND10M_MAX (0))
2123 !
2124  ALLOCATE(dgi%XRI (0,0))
2125  ALLOCATE(dgi%XT2M (0,0))
2126  ALLOCATE(dgi%XQ2M (0,0))
2127  ALLOCATE(dgi%XHU2M (0,0))
2128  ALLOCATE(dgi%XZON10M (0,0))
2129  ALLOCATE(dgi%XMER10M (0,0))
2130  ALLOCATE(dgi%XWIND10M(0,0))
2131  ALLOCATE(dgi%XT2M_MIN(0,0))
2132  ALLOCATE(dgi%XT2M_MAX(0,0))
2133 END IF
2134 !
2135 !* miscellaneous surface fields
2136 !
2137 IF (dgmi%LSURF_MISC_BUDGET) THEN
2138  ALLOCATE(dgmi%XAVG_HV (klu))
2139  ALLOCATE(dgmi%XAVG_PSNG (klu))
2140  ALLOCATE(dgmi%XAVG_PSNV (klu))
2141  ALLOCATE(dgmi%XAVG_PSN (klu))
2142  ALLOCATE(dgmi%XAVG_ALBT (klu))
2143  ALLOCATE(dgmi%XAVG_LAI (klu))
2144  !
2145  ALLOCATE(dgmi%XAVG_FSAT (klu))
2146  ALLOCATE(dgmi%XAVG_FFG (klu))
2147  ALLOCATE(dgmi%XAVG_FFV (klu))
2148  ALLOCATE(dgmi%XAVG_FF (klu))
2149  !
2150  ALLOCATE(dgmi%XSOIL_TSWI (klu))
2151  ALLOCATE(dgmi%XSOIL_SWI (klu))
2152  ALLOCATE(dgmi%XSOIL_TWG (klu))
2153  ALLOCATE(dgmi%XSOIL_TWGI (klu))
2154  ALLOCATE(dgmi%XSOIL_WG (klu))
2155  ALLOCATE(dgmi%XSOIL_WGI (klu))
2156  ALLOCATE(dgmi%XAVG_SWI (klu,i%NGROUND_LAYER))
2157  ALLOCATE(dgmi%XAVG_TSWI (klu,i%NGROUND_LAYER))
2158  !
2159  ALLOCATE(dgmi%XAVG_TWSNOW (klu))
2160  ALLOCATE(dgmi%XAVG_TDSNOW (klu))
2161  ALLOCATE(dgmi%XAVG_TTSNOW (klu))
2162  !
2163  dgmi%XAVG_HV = xundef
2164  dgmi%XAVG_SWI = xundef
2165  dgmi%XAVG_TSWI = xundef
2166  dgmi%XSOIL_TSWI = xundef
2167  dgmi%XSOIL_SWI = xundef
2168  dgmi%XSOIL_TWG = xundef
2169  dgmi%XSOIL_TWGI = xundef
2170  dgmi%XSOIL_WG = xundef
2171  dgmi%XSOIL_WGI = xundef
2172  dgmi%XAVG_PSNG = xundef
2173  dgmi%XAVG_PSNV = xundef
2174  dgmi%XAVG_PSN = xundef
2175  dgmi%XAVG_ALBT = xundef
2176  dgmi%XAVG_LAI = xundef
2177  dgmi%XAVG_FSAT = xundef
2178  dgmi%XAVG_FFG = xundef
2179  dgmi%XAVG_FFV = xundef
2180  dgmi%XAVG_FF = xundef
2181  dgmi%XAVG_TWSNOW = xundef
2182  dgmi%XAVG_TDSNOW = xundef
2183  dgmi%XAVG_TTSNOW = xundef
2184  !
2185  ALLOCATE(dgmi%XHV (klu,i%NPATCH))
2186  ALLOCATE(dgmi%XSWI (klu,i%NGROUND_LAYER,i%NPATCH))
2187  ALLOCATE(dgmi%XTSWI (klu,i%NGROUND_LAYER,i%NPATCH))
2188  ALLOCATE(dgmi%XTWSNOW (klu,i%NPATCH))
2189  ALLOCATE(dgmi%XTDSNOW (klu,i%NPATCH))
2190  ALLOCATE(dgmi%XTTSNOW (klu,i%NPATCH))
2191  ALLOCATE(dgmi%XDPSNG (klu,i%NPATCH))
2192  ALLOCATE(dgmi%XDPSNV (klu,i%NPATCH))
2193  ALLOCATE(dgmi%XDPSN (klu,i%NPATCH))
2194  ALLOCATE(dgmi%XALBT (klu,i%NPATCH))
2195  !
2196  ALLOCATE(dgmi%XDFSAT (klu,i%NPATCH))
2197  ALLOCATE(dgmi%XDFFG (klu,i%NPATCH))
2198  ALLOCATE(dgmi%XDFFV (klu,i%NPATCH))
2199  ALLOCATE(dgmi%XDFF (klu,i%NPATCH))
2200  !
2201  ALLOCATE(dgmi%XSNOWLIQ (klu,i%TSNOW%NLAYER,i%NPATCH))
2202  ALLOCATE(dgmi%XSNOWTEMP (klu,i%TSNOW%NLAYER,i%NPATCH))
2203  !
2204  dgmi%XHV = xundef
2205  dgmi%XSWI = xundef
2206  dgmi%XTSWI = xundef
2207  dgmi%XTWSNOW = xundef
2208  dgmi%XTDSNOW = xundef
2209  dgmi%XTTSNOW = xundef
2210  dgmi%XDPSNG = xundef
2211  dgmi%XDPSNV = xundef
2212  dgmi%XDPSN = xundef
2213  dgmi%XALBT = xundef
2214  dgmi%XDFSAT = xundef
2215  dgmi%XDFFG = xundef
2216  dgmi%XDFFV = xundef
2217  dgmi%XDFF = xundef
2218  dgmi%XSNOWLIQ = xundef
2219  dgmi%XSNOWTEMP= xundef
2220  !
2221  IF(i%CISBA=='DIF'.AND.dgmi%LSURF_MISC_DIF)THEN
2222  ALLOCATE(dgmi%XFRD2_TSWI(klu))
2223  ALLOCATE(dgmi%XFRD2_TWG (klu))
2224  ALLOCATE(dgmi%XFRD2_TWGI(klu))
2225  ALLOCATE(dgmi%XFRD3_TSWI(klu))
2226  ALLOCATE(dgmi%XFRD3_TWG (klu))
2227  ALLOCATE(dgmi%XFRD3_TWGI(klu))
2228  dgmi%XFRD2_TSWI = xundef
2229  dgmi%XFRD2_TWG = xundef
2230  dgmi%XFRD2_TWGI = xundef
2231  dgmi%XFRD3_TSWI = xundef
2232  dgmi%XFRD3_TWG = xundef
2233  dgmi%XFRD3_TWGI = xundef
2234  ENDIF
2235  !
2236  IF(i%CISBA=='DIF')THEN
2237  ALLOCATE(dgmi%XALT(klu,i%NPATCH))
2238  ALLOCATE(dgmi%XFLT(klu,i%NPATCH))
2239  ALLOCATE(dgmi%XAVG_ALT(klu))
2240  ALLOCATE(dgmi%XAVG_FLT(klu))
2241  dgmi%XALT = xundef
2242  dgmi%XFLT = xundef
2243  dgmi%XAVG_ALT = xundef
2244  dgmi%XAVG_FLT = xundef
2245  ENDIF
2246  !
2247  IF (i%LTR_ML) THEN
2248  ALLOCATE (dgmi%XFAPAR (klu, i%NPATCH))
2249  ALLOCATE (dgmi%XFAPIR (klu, i%NPATCH))
2250  ALLOCATE (dgmi%XFAPAR_BS (klu, i%NPATCH))
2251  ALLOCATE (dgmi%XFAPIR_BS (klu, i%NPATCH))
2252  ALLOCATE (dgmi%XDFAPARC (klu, i%NPATCH))
2253  ALLOCATE (dgmi%XDFAPIRC (klu, i%NPATCH))
2254  ALLOCATE (dgmi%XDLAI_EFFC (klu, i%NPATCH))
2255  !
2256  dgmi%XFAPAR = xundef
2257  dgmi%XFAPIR = xundef
2258  dgmi%XFAPAR_BS = xundef
2259  dgmi%XFAPIR_BS = xundef
2260  dgmi%XDFAPARC = 0.
2261  dgmi%XDFAPIRC = 0.
2262  dgmi%XDLAI_EFFC = 0.
2263  ENDIF
2264  !
2265 ELSE
2266  ALLOCATE(dgmi%XAVG_HV (0))
2267  ALLOCATE(dgmi%XAVG_PSNG (0))
2268  ALLOCATE(dgmi%XAVG_PSNV (0))
2269  ALLOCATE(dgmi%XAVG_PSN (0))
2270  ALLOCATE(dgmi%XAVG_ALBT (0))
2271  ALLOCATE(dgmi%XAVG_LAI (0))
2272 !
2273  ALLOCATE(dgmi%XAVG_FSAT (0))
2274  ALLOCATE(dgmi%XAVG_FFG (0))
2275  ALLOCATE(dgmi%XAVG_FFV (0))
2276  ALLOCATE(dgmi%XAVG_FF (0))
2277 !
2278  ALLOCATE(dgmi%XSOIL_TSWI (0))
2279  ALLOCATE(dgmi%XSOIL_SWI (0))
2280  ALLOCATE(dgmi%XSOIL_TWG (0))
2281  ALLOCATE(dgmi%XSOIL_TWGI (0))
2282  ALLOCATE(dgmi%XSOIL_WG (0))
2283  ALLOCATE(dgmi%XSOIL_WGI (0))
2284  ALLOCATE(dgmi%XAVG_SWI (0,0))
2285  ALLOCATE(dgmi%XAVG_TSWI (0,0))
2286 !
2287  ALLOCATE(dgmi%XAVG_TWSNOW (0))
2288  ALLOCATE(dgmi%XAVG_TDSNOW (0))
2289  ALLOCATE(dgmi%XAVG_TTSNOW (0))
2290 !
2291  ALLOCATE(dgmi%XHV (0,0))
2292  ALLOCATE(dgmi%XSWI (0,0,0))
2293  ALLOCATE(dgmi%XTSWI (0,0,0))
2294  ALLOCATE(dgmi%XTWSNOW (0,0))
2295  ALLOCATE(dgmi%XTDSNOW (0,0))
2296  ALLOCATE(dgmi%XTTSNOW (0,0))
2297  ALLOCATE(dgmi%XDPSNG (0,0))
2298  ALLOCATE(dgmi%XDPSNV (0,0))
2299  ALLOCATE(dgmi%XDPSN (0,0))
2300  ALLOCATE(dgmi%XALBT (0,0))
2301 !
2302  ALLOCATE(dgmi%XDFSAT (0,0))
2303  ALLOCATE(dgmi%XDFFG (0,0))
2304  ALLOCATE(dgmi%XDFFV (0,0))
2305  ALLOCATE(dgmi%XDFF (0,0))
2306 !
2307  ALLOCATE(dgmi%XSNOWLIQ (0,0,0))
2308  ALLOCATE(dgmi%XSNOWTEMP (0,0,0))
2309 END IF
2310 !
2311 IF (i%CISBA/='DIF') THEN
2312  ALLOCATE(dgmi%XFRD2_TSWI(0))
2313  ALLOCATE(dgmi%XFRD2_TWG (0))
2314  ALLOCATE(dgmi%XFRD2_TWGI(0))
2315  ALLOCATE(dgmi%XFRD3_TSWI(0))
2316  ALLOCATE(dgmi%XFRD3_TWG (0))
2317  ALLOCATE(dgmi%XFRD3_TWGI(0))
2318  ALLOCATE(dgmi%XALT(0,0))
2319  ALLOCATE(dgmi%XFLT(0,0))
2320  ALLOCATE(dgmi%XAVG_ALT(0))
2321  ALLOCATE(dgmi%XAVG_FLT(0))
2322 ENDIF
2323 !
2324 IF (.NOT.i%LTR_ML) THEN
2325  ALLOCATE (dgmi%XFAPAR (0, 0))
2326  ALLOCATE (dgmi%XFAPIR (0, 0))
2327  ALLOCATE (dgmi%XFAPAR_BS (0, 0))
2328  ALLOCATE (dgmi%XFAPIR_BS (0, 0))
2329  ALLOCATE (dgmi%XDFAPARC (0, 0))
2330  ALLOCATE (dgmi%XDFAPIRC (0, 0))
2331  ALLOCATE (dgmi%XDLAI_EFFC (0, 0))
2332 ENDIF
2333 !
2334 !* transfer coefficients
2335 !
2336 IF (dgi%LCOEF) THEN
2337  ALLOCATE(dgi%XAVG_CD (klu))
2338  ALLOCATE(dgi%XAVG_CH (klu))
2339  ALLOCATE(dgi%XAVG_CE (klu))
2340  ALLOCATE(dgi%XAVG_Z0 (klu))
2341  ALLOCATE(dgi%XAVG_Z0H (klu))
2342  ALLOCATE(dgi%XAVG_Z0EFF(klu))
2343  !
2344  dgi%XAVG_CD = xundef
2345  dgi%XAVG_CH = xundef
2346  dgi%XAVG_CE = xundef
2347  dgi%XAVG_Z0 = xundef
2348  dgi%XAVG_Z0H = xundef
2349  dgi%XAVG_Z0EFF = xundef
2350  !
2351  ALLOCATE(dgi%XCD (klu,i%NPATCH))
2352  ALLOCATE(dgi%XCH (klu,i%NPATCH))
2353  ALLOCATE(dgi%XCE (klu,i%NPATCH))
2354  ALLOCATE(dgi%XZ0_WITH_SNOW (klu,i%NPATCH))
2355  ALLOCATE(dgi%XZ0H_WITH_SNOW (klu,i%NPATCH))
2356  ALLOCATE(dgi%XZ0EFF (klu,i%NPATCH))
2357  !
2358  dgi%XCD = xundef
2359  dgi%XCH = xundef
2360  dgi%XCE = xundef
2361  dgi%XZ0_WITH_SNOW = xundef
2362  dgi%XZ0H_WITH_SNOW = xundef
2363  dgi%XZ0EFF = xundef
2364 ELSE
2365  ALLOCATE(dgi%XAVG_CD (0))
2366  ALLOCATE(dgi%XAVG_CH (0))
2367  ALLOCATE(dgi%XAVG_CE (0))
2368  ALLOCATE(dgi%XAVG_Z0 (0))
2369  ALLOCATE(dgi%XAVG_Z0H (0))
2370  ALLOCATE(dgi%XAVG_Z0EFF(0))
2371 !
2372  ALLOCATE(dgi%XCD (0,0))
2373  ALLOCATE(dgi%XCH (0,0))
2374  ALLOCATE(dgi%XCE (0,0))
2375  ALLOCATE(dgi%XZ0_WITH_SNOW (0,0))
2376  ALLOCATE(dgi%XZ0H_WITH_SNOW (0,0))
2377  ALLOCATE(dgi%XZ0EFF (0,0))
2378 END IF
2379 !
2380 !
2381 !* surface humidity
2382 !
2383 IF (dgi%LSURF_VARS) THEN
2384  ALLOCATE(dgi%XAVG_QS (klu))
2385  !
2386  dgi%XAVG_QS = xundef
2387  !
2388  ALLOCATE(dgi%XQS (klu,i%NPATCH))
2389  !
2390  dgi%XQS = xundef
2391 ELSE
2392  ALLOCATE(dgi%XQS (0,0))
2393 END IF
2394 !
2395 !* Irrigation threshold
2396 !
2397 IF (lagrip) THEN
2398  ALLOCATE(dgmi%XSEUIL (klu,i%NPATCH))
2399  !
2400  dgmi%XSEUIL = xundef
2401 ELSE
2402  ALLOCATE(dgmi%XSEUIL (0,0))
2403 END IF
2404 !
2405 !* Chemical fluxes
2406 IF (chi%SVI%NBEQ>0 .AND. chi%LCH_BIO_FLUX) THEN
2407  ALLOCATE(gb%XFISO(klu))
2408  ALLOCATE(gb%XFMONO(klu))
2409  !
2410  gb%XFISO = xundef
2411  gb%XFMONO = xundef
2412 ELSE
2413  ALLOCATE(gb%XFISO(0))
2414  ALLOCATE(gb%XFMONO(0))
2415 ENDIF
2416 !
2417 IF (i%CPHOTO/='NON') THEN
2418  ALLOCATE(gb%XIACAN(klu,SIZE(i%XABC),i%NPATCH))
2419  !
2420  gb%XIACAN = xundef
2421  !
2422 ELSE
2423  ALLOCATE(gb%XIACAN(0,0,0))
2424 ENDIF
2425 !
2426 IF (lhook) CALL dr_hook('DIAG_ISBA_INIT_N',1,zhook_handle)
2427 !-------------------------------------------------------------------------------
2428 !
2429 END SUBROUTINE diag_isba_init_n
subroutine diag_isba_init_n(CHI, DGEI, DGI, DGMI, DGU, GB, I, HPROGRAM, KLU, KSW)