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