SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
average_diag_evap_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 average_diag_evap_isba_n (DGEI, I, &
7  ptstep,prain,psnow)
8 !#############################
9 !
10 !
11 !!**** *AVERAGE_DIAG_EVAP_ISBA_n*
12 !!
13 !! PURPOSE
14 !! -------
15 ! Average the cumulated diagnostics from all ISBA tiles
16 !
17 !!** METHOD
18 !! ------
19 !
20 !! EXTERNAL
21 !! --------
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !!
26 !!
27 !! REFERENCE
28 !! ---------
29 !!
30 !! AUTHOR
31 !! ------
32 !! P. Le Moigne * Meteo-France *
33 !!
34 !! MODIFICATIONS
35 !! -------------
36 !! Original 11/03
37 !! B. Decharme 2008 New diag for the water budget
38 !! B. Decharme 2012 New diag for snow
39 !! carbon
40 !! isab water budget
41 !! 2013 Sublimation
42 !! Subsurface runoff if SGH (DIF option only)
43 !! P. Samuelsson 10/2014: MEB
44 !-------------------------------------------------------------------------------
45 !
46 !* 0. DECLARATIONS
47 ! ------------
48 !
49 !
50 !
52 USE modd_isba_n, ONLY : isba_t
53 !
54 USE yomhook ,ONLY : lhook, dr_hook
55 USE parkind1 ,ONLY : jprb
56 !
57 IMPLICIT NONE
58 !
59 !* 0.1 declarations of arguments
60 !
61 !
62 TYPE(diag_evap_isba_t), INTENT(INOUT) :: dgei
63 TYPE(isba_t), INTENT(INOUT) :: i
64 !
65 REAL, INTENT(IN) :: ptstep ! time step (s)
66 REAL, DIMENSION(:), INTENT(IN) :: prain ! rainfall rate
67 REAL, DIMENSION(:), INTENT(IN) :: psnow ! snowfall rate
68 !
69 !
70 !* 0.2 declarations of local variables
71 !
72 INTEGER :: jpatch ! tile loop counter
73 INTEGER :: jj
74 INTEGER :: isize_lmeb_patch ! Number of patches where multi-energy balance should be applied
75 REAL, DIMENSION(SIZE(I%XPATCH,1)) :: zsumpatch
76 REAL(KIND=JPRB) :: zhook_handle
77 !-------------------------------------------------------------------------------
78 !
79 ! 0. Initialization
80 ! --------------
81 !
82 !
83 IF (lhook) CALL dr_hook('AVERAGE_DIAG_EVAP_ISBA_N',0,zhook_handle)
84 !
85 isize_lmeb_patch=count(i%LMEB_PATCH(:))
86 !
87 zsumpatch(:) = 0.
88 DO jpatch=1,SIZE(i%XPATCH,2)
89  DO jj=1,SIZE(i%XPATCH,1)
90  zsumpatch(jj) = zsumpatch(jj) + i%XPATCH(jj,jpatch)
91  ENDDO
92 ENDDO
93 !
94 ! 1. Surface Energy fluxes
95 ! -----------------------
96 !
97 IF (dgei%LSURF_EVAP_BUDGET) THEN
98 !
99  dgei%XAVG_LEG (:) = 0.
100  dgei%XAVG_LEGI (:) = 0.
101  dgei%XAVG_LEV (:) = 0.
102  dgei%XAVG_LES (:) = 0.
103  dgei%XAVG_LESL (:) = 0.
104  dgei%XAVG_LER (:) = 0.
105  dgei%XAVG_LETR (:) = 0.
106  dgei%XAVG_EVAP (:) = 0.
107  dgei%XAVG_SUBL (:) = 0.
108  dgei%XAVG_SNDRIFT (:) = 0.
109  dgei%XAVG_DRAIN (:) = 0.
110  dgei%XAVG_QSB (:) = 0.
111  dgei%XAVG_RUNOFF (:) = 0.
112  dgei%XAVG_HORT (:) = 0.
113  dgei%XAVG_DRIP (:) = 0.
114  dgei%XAVG_RRVEG (:) = 0.
115  dgei%XAVG_MELT (:) = 0.
116  dgei%XAVG_IFLOOD (:) = 0.
117  dgei%XAVG_PFLOOD (:) = 0.
118  dgei%XAVG_LE_FLOOD (:) = 0.
119  dgei%XAVG_LEI_FLOOD (:) = 0.
120  dgei%XAVG_IRRIG_FLUX (:) = 0.
121  dgei%XAVG_GPP (:) = 0.
122  dgei%XAVG_RESP_AUTO (:) = 0.
123  dgei%XAVG_RESP_ECO (:) = 0.
124 !
125  IF (isize_lmeb_patch>0) THEN
126  dgei%XAVG_LEVCV (:) = 0.
127  dgei%XAVG_LESC (:) = 0.
128  dgei%XAVG_LETRGV (:) = 0.
129  dgei%XAVG_LETRCV (:) = 0.
130  dgei%XAVG_LERGV (:) = 0.
131  dgei%XAVG_LELITTER (:) = 0.
132  dgei%XAVG_LELITTERI (:) = 0.
133  dgei%XAVG_DRIPLIT (:) = 0.
134  dgei%XAVG_RRLIT (:) = 0.
135  dgei%XAVG_LERCV (:) = 0.
136  dgei%XAVG_LE_C_A (:) = 0.
137  dgei%XAVG_LE_V_C (:) = 0.
138  dgei%XAVG_LE_G_C (:) = 0.
139  dgei%XAVG_LE_N_C (:) = 0.
140  !
141  dgei%XAVG_SWNET_V (:) = 0.
142  dgei%XAVG_SWNET_G (:) = 0.
143  dgei%XAVG_SWNET_N (:) = 0.
144  dgei%XAVG_SWNET_NS (:) = 0.
145  dgei%XAVG_LWNET_V (:) = 0.
146  dgei%XAVG_LWNET_G (:) = 0.
147  dgei%XAVG_LWNET_N (:) = 0.
148  dgei%XAVG_SWDOWN_GN (:) = 0.
149  dgei%XAVG_LWDOWN_GN (:) = 0.
150  dgei%XAVG_H_V_C (:) = 0.
151  dgei%XAVG_H_G_C (:) = 0.
152  dgei%XAVG_H_C_A (:) = 0.
153  dgei%XAVG_H_N_C (:) = 0.
154  dgei%XAVG_SR_GN (:) = 0.
155  dgei%XAVG_MELTCV (:) = 0.
156  dgei%XAVG_FRZCV (:) = 0.
157  ENDIF
158 !
159  DO jpatch=1,SIZE(i%XPATCH,2)
160 !cdir nodep
161  DO jj=1,SIZE(zsumpatch)
162  IF (zsumpatch(jj) > 0.) THEN
163 !
164 ! Latent heat of evaporation over the ground
165 !
166  dgei%XAVG_LEG(jj) = dgei%XAVG_LEG(jj) + i%XPATCH(jj,jpatch) * dgei%XLEG(jj,jpatch)
167 !
168 ! Surface soil ice sublimation
169 !
170  dgei%XAVG_LEGI(jj) = dgei%XAVG_LEGI(jj) + i%XPATCH(jj,jpatch) * dgei%XLEGI(jj,jpatch)
171 !
172 ! Latent heat of evaporation over vegetation
173 !
174  dgei%XAVG_LEV(jj) = dgei%XAVG_LEV(jj) + i%XPATCH(jj,jpatch) * dgei%XLEV(jj,jpatch)
175 !
176 ! Latent heat of sublimation over snow
177 !
178  dgei%XAVG_LES(jj) = dgei%XAVG_LES(jj) + i%XPATCH(jj,jpatch) * dgei%XLES(jj,jpatch)
179 !
180 ! Latent heat of evaporation of liquid water over snow
181 !
182  dgei%XAVG_LESL(jj) = dgei%XAVG_LESL(jj) + i%XPATCH(jj,jpatch) * dgei%XLESL(jj,jpatch)
183 !
184 ! Evaporation from canopy water interception
185 !
186  dgei%XAVG_LER(jj) = dgei%XAVG_LER(jj) + i%XPATCH(jj,jpatch) * dgei%XLER(jj,jpatch)
187 !
188 ! Evapotranspiration of the vegetation
189 !
190  dgei%XAVG_LETR(jj) = dgei%XAVG_LETR(jj) + i%XPATCH(jj,jpatch) * dgei%XLETR(jj,jpatch)
191 !
192 ! Evapotranspiration
193 !
194  dgei%XAVG_EVAP(jj) = dgei%XAVG_EVAP(jj) + i%XPATCH(jj,jpatch) * dgei%XEVAP(jj,jpatch)
195 !
196 ! Sublimation
197 !
198  dgei%XAVG_SUBL(jj) = dgei%XAVG_SUBL(jj) + i%XPATCH(jj,jpatch) * dgei%XSUBL(jj,jpatch)
199 !
200 ! Blowing snow sublimation (ES or Crocus)
201 !
202  dgei%XAVG_SNDRIFT(jj) = dgei%XAVG_SNDRIFT(jj) + i%XPATCH(jj,jpatch) * dgei%XSNDRIFT(jj,jpatch)
203 !
204 ! Soil drainage flux
205 !
206  dgei%XAVG_DRAIN(jj) = dgei%XAVG_DRAIN(jj) + i%XPATCH(jj,jpatch) * dgei%XDRAIN(jj,jpatch)
207 !
208 ! Soil lateral subsurface flux
209 !
210  dgei%XAVG_QSB(jj) = dgei%XAVG_QSB(jj) + i%XPATCH(jj,jpatch) * dgei%XQSB(jj,jpatch)
211 !
212 ! Supersaturation runoff
213 !
214  dgei%XAVG_RUNOFF(jj) = dgei%XAVG_RUNOFF(jj) + i%XPATCH(jj,jpatch) * dgei%XRUNOFF(jj,jpatch)
215 !
216 ! Horton runoff
217 !
218  dgei%XAVG_HORT(jj) = dgei%XAVG_HORT(jj) + i%XPATCH(jj,jpatch) * dgei%XHORT(jj,jpatch)
219 !
220 ! Vegetation dripping
221 !
222  dgei%XAVG_DRIP(jj) = dgei%XAVG_DRIP(jj) + i%XPATCH(jj,jpatch) * dgei%XDRIP(jj,jpatch)
223 !
224 ! Precipitation intercepted by the vegetation
225 !
226  dgei%XAVG_RRVEG(jj) = dgei%XAVG_RRVEG(jj) + i%XPATCH(jj,jpatch) * dgei%XRRVEG(jj,jpatch)
227 !
228 ! Snow melt
229 !
230  dgei%XAVG_MELT(jj) = dgei%XAVG_MELT(jj) + i%XPATCH(jj,jpatch) * dgei%XMELT(jj,jpatch)
231 !
232 ! Flood infiltartion
233 !
234  dgei%XAVG_IFLOOD(jj) = dgei%XAVG_IFLOOD(jj) + i%XPATCH(jj,jpatch) * dgei%XIFLOOD(jj,jpatch)
235 !
236 ! Precipitation intercepted by the floodplains
237 !
238  dgei%XAVG_PFLOOD(jj) = dgei%XAVG_PFLOOD(jj) + i%XPATCH(jj,jpatch) * dgei%XPFLOOD(jj,jpatch)
239 !
240 ! Floodplains evaporation
241 !
242  dgei%XAVG_LE_FLOOD (jj) = dgei%XAVG_LE_FLOOD (jj) + i%XPATCH(jj,jpatch) * dgei%XLE_FLOOD (jj,jpatch)
243  dgei%XAVG_LEI_FLOOD(jj) = dgei%XAVG_LEI_FLOOD(jj) + i%XPATCH(jj,jpatch) * dgei%XLEI_FLOOD(jj,jpatch)
244 !
245 ! irrigation rate (as soil input)
246 !
247  dgei%XAVG_IRRIG_FLUX(jj) = dgei%XAVG_IRRIG_FLUX(jj) + i%XPATCH(jj,jpatch) * dgei%XIRRIG_FLUX(jj,jpatch)
248 !
249 ! Gross primary production
250 !
251  dgei%XAVG_GPP(jj) = dgei%XAVG_GPP(jj) + i%XPATCH(jj,jpatch) * dgei%XGPP(jj,jpatch)
252 !
253 ! Autotrophic respiration
254 !
255  dgei%XAVG_RESP_AUTO(jj) = dgei%XAVG_RESP_AUTO(jj) + i%XPATCH(jj,jpatch) * dgei%XRESP_AUTO(jj,jpatch)
256 !
257 ! Ecosystem respiration
258 !
259  dgei%XAVG_RESP_ECO(jj) = dgei%XAVG_RESP_ECO(jj) + i%XPATCH(jj,jpatch) * dgei%XRESP_ECO(jj,jpatch)
260 !
261  IF (isize_lmeb_patch>0) THEN
262  dgei%XAVG_LEVCV(jj) = dgei%XAVG_LEVCV(jj) + i%XPATCH(jj,jpatch) * dgei%XLEVCV(jj,jpatch)
263  dgei%XAVG_LESC(jj) = dgei%XAVG_LESC(jj) + i%XPATCH(jj,jpatch) * dgei%XLESC(jj,jpatch)
264  dgei%XAVG_LETRCV(jj) = dgei%XAVG_LETRCV(jj) + i%XPATCH(jj,jpatch) * dgei%XLETRCV(jj,jpatch)
265  dgei%XAVG_LELITTER(jj) = dgei%XAVG_LELITTER(jj) + i%XPATCH(jj,jpatch) * dgei%XLELITTER(jj,jpatch)
266  dgei%XAVG_LELITTERI(jj) = dgei%XAVG_LELITTERI(jj) + i%XPATCH(jj,jpatch) * dgei%XLELITTERI(jj,jpatch)
267  dgei%XAVG_DRIPLIT(jj) = dgei%XAVG_DRIPLIT(jj) + i%XPATCH(jj,jpatch) * dgei%XDRIPLIT(jj,jpatch)
268  dgei%XAVG_RRLIT(jj) = dgei%XAVG_RRLIT(jj) + i%XPATCH(jj,jpatch) * dgei%XRRLIT(jj,jpatch)
269  dgei%XAVG_LERCV(jj) = dgei%XAVG_LERCV(jj) + i%XPATCH(jj,jpatch) * dgei%XLERCV(jj,jpatch)
270  dgei%XAVG_LE_C_A(jj) = dgei%XAVG_LE_C_A(jj) + i%XPATCH(jj,jpatch) * dgei%XLE_C_A(jj,jpatch)
271  dgei%XAVG_LE_V_C(jj) = dgei%XAVG_LE_V_C(jj) + i%XPATCH(jj,jpatch) * dgei%XLE_V_C(jj,jpatch)
272  dgei%XAVG_LE_G_C(jj) = dgei%XAVG_LE_G_C(jj) + i%XPATCH(jj,jpatch) * dgei%XLE_G_C(jj,jpatch)
273  dgei%XAVG_LE_N_C(jj) = dgei%XAVG_LE_N_C(jj) + i%XPATCH(jj,jpatch) * dgei%XLE_N_C(jj,jpatch)
274  dgei%XAVG_SWNET_V(jj) = dgei%XAVG_SWNET_V(jj) + i%XPATCH(jj,jpatch) * dgei%XSWNET_V(jj,jpatch)
275  dgei%XAVG_SWNET_G(jj) = dgei%XAVG_SWNET_G(jj) + i%XPATCH(jj,jpatch) * dgei%XSWNET_G(jj,jpatch)
276  dgei%XAVG_SWNET_N(jj) = dgei%XAVG_SWNET_N(jj) + i%XPATCH(jj,jpatch) * dgei%XSWNET_N(jj,jpatch)
277  dgei%XAVG_SWNET_NS(jj) = dgei%XAVG_SWNET_NS(jj) + i%XPATCH(jj,jpatch) * dgei%XSWNET_NS(jj,jpatch)
278  dgei%XAVG_LWNET_V(jj) = dgei%XAVG_LWNET_V(jj) + i%XPATCH(jj,jpatch) * dgei%XLWNET_V(jj,jpatch)
279  dgei%XAVG_LWNET_G(jj) = dgei%XAVG_LWNET_G(jj) + i%XPATCH(jj,jpatch) * dgei%XLWNET_G(jj,jpatch)
280  dgei%XAVG_LWNET_N(jj) = dgei%XAVG_LWNET_N(jj) + i%XPATCH(jj,jpatch) * dgei%XLWNET_N(jj,jpatch)
281  dgei%XAVG_SWDOWN_GN(jj) = dgei%XAVG_SWDOWN_GN(jj) + i%XPATCH(jj,jpatch) * dgei%XSWDOWN_GN(jj,jpatch)
282  dgei%XAVG_LWDOWN_GN(jj) = dgei%XAVG_LWDOWN_GN(jj) + i%XPATCH(jj,jpatch) * dgei%XLWDOWN_GN(jj,jpatch)
283  dgei%XAVG_H_V_C(jj) = dgei%XAVG_H_V_C(jj) + i%XPATCH(jj,jpatch) * dgei%XH_V_C(jj,jpatch)
284  dgei%XAVG_H_G_C(jj) = dgei%XAVG_H_G_C(jj) + i%XPATCH(jj,jpatch) * dgei%XH_G_C(jj,jpatch)
285  dgei%XAVG_H_C_A(jj) = dgei%XAVG_H_C_A(jj) + i%XPATCH(jj,jpatch) * dgei%XH_C_A(jj,jpatch)
286  dgei%XAVG_H_N_C(jj) = dgei%XAVG_H_N_C(jj) + i%XPATCH(jj,jpatch) * dgei%XH_N_C(jj,jpatch)
287  dgei%XAVG_SR_GN(jj) = dgei%XAVG_SR_GN(jj) + i%XPATCH(jj,jpatch) * dgei%XSR_GN(jj,jpatch)
288  dgei%XAVG_MELTCV(jj) = dgei%XAVG_MELTCV(jj) + i%XPATCH(jj,jpatch) * dgei%XMELTCV(jj,jpatch)
289  dgei%XAVG_FRZCV(jj) = dgei%XAVG_FRZCV(jj) + i%XPATCH(jj,jpatch) * dgei%XFRZCV(jj,jpatch)
290  ENDIF
291  !
292  ENDIF
293  END DO
294  ENDDO
295 !
296 ! Isba water budget and reservoir time tendencies
297 !
298  IF(dgei%LWATER_BUDGET)THEN
299 !
300  dgei%XRAINFALL (:) = prain(:) * ptstep
301  dgei%XSNOWFALL (:) = psnow(:) * ptstep
302  dgei%XAVG_DWG (:) = 0.0
303  dgei%XAVG_DWGI (:) = 0.0
304  dgei%XAVG_DWR (:) = 0.0
305  dgei%XAVG_DSWE (:) = 0.0
306  dgei%XAVG_WATBUD(:) = 0.0
307 !
308  DO jpatch=1,SIZE(i%XPATCH,2)
309 ! cdir nodep
310  DO jj=1,SIZE(zsumpatch)
311  IF (zsumpatch(jj) > 0.) THEN
312 !
313  dgei%XAVG_DWG (jj) = dgei%XAVG_DWG (jj) + i%XPATCH(jj,jpatch) * dgei%XDWG (jj,jpatch)
314  dgei%XAVG_DWGI (jj) = dgei%XAVG_DWGI (jj) + i%XPATCH(jj,jpatch) * dgei%XDWGI (jj,jpatch)
315  dgei%XAVG_DWR (jj) = dgei%XAVG_DWR (jj) + i%XPATCH(jj,jpatch) * dgei%XDWR (jj,jpatch)
316  dgei%XAVG_DSWE (jj) = dgei%XAVG_DSWE (jj) + i%XPATCH(jj,jpatch) * dgei%XDSWE (jj,jpatch)
317  dgei%XAVG_WATBUD(jj) = dgei%XAVG_WATBUD(jj) + i%XPATCH(jj,jpatch) * dgei%XWATBUD(jj,jpatch)
318 !
319  ENDIF
320  ENDDO
321  ENDDO
322 !
323  ENDIF
324 !
325 END IF
326 !
327 !
328 ! 2. Surface Cumulated Energy fluxes
329 ! -------------------------------
330 !
331 IF (dgei%LSURF_BUDGETC) THEN
332  dgei%XAVG_RNC (:) = 0.
333  dgei%XAVG_HC (:) = 0.
334  dgei%XAVG_LEC (:) = 0.
335  dgei%XAVG_GFLUXC (:) = 0.
336  dgei%XAVG_LEIC (:) = 0.
337  dgei%XAVG_LEGC (:) = 0.
338  dgei%XAVG_LEGIC (:) = 0.
339  dgei%XAVG_LEVC (:) = 0.
340  dgei%XAVG_LESAC (:) = 0.
341  dgei%XAVG_LESLC (:) = 0.
342  dgei%XAVG_LERC (:) = 0.
343  dgei%XAVG_LETRC (:) = 0.
344  dgei%XAVG_EVAPC (:) = 0.
345  dgei%XAVG_SUBLC (:) = 0.
346  dgei%XAVG_SNDRIFTC (:) = 0.
347  dgei%XAVG_DRAINC (:) = 0.
348  dgei%XAVG_QSBC (:) = 0.
349  dgei%XAVG_RUNOFFC (:) = 0.
350  dgei%XAVG_HORTC (:) = 0.
351  dgei%XAVG_DRIPC (:) = 0.
352  dgei%XAVG_RRVEGC (:) = 0.
353  dgei%XAVG_MELTC (:) = 0.
354  dgei%XAVG_IFLOODC (:) = 0.
355  dgei%XAVG_PFLOODC (:) = 0.
356  dgei%XAVG_LE_FLOODC (:) = 0.
357  dgei%XAVG_LEI_FLOODC (:) = 0.
358  dgei%XAVG_IRRIG_FLUXC(:) = 0.
359  dgei%XAVG_GPPC (:) = 0.
360  dgei%XAVG_RESPC_AUTO (:) = 0.
361  dgei%XAVG_RESPC_ECO (:) = 0.
362 !
363  IF (isize_lmeb_patch>0) THEN
364  dgei%XAVG_LEVCVC (:) = 0.
365  dgei%XAVG_LESCC (:) = 0.
366  dgei%XAVG_LETRGVC (:) = 0.
367  dgei%XAVG_LETRCVC (:) = 0.
368  dgei%XAVG_LERGVC (:) = 0.
369  dgei%XAVG_LERCVC (:) = 0.
370  dgei%XAVG_LE_C_AC (:) = 0.
371  dgei%XAVG_LE_V_CC (:) = 0.
372  dgei%XAVG_LE_G_CC (:) = 0.
373  dgei%XAVG_LE_N_CC (:) = 0.
374  dgei%XAVG_SWNET_VC (:) = 0.
375  dgei%XAVG_SWNET_GC (:) = 0.
376  dgei%XAVG_SWNET_NC (:) = 0.
377  dgei%XAVG_SWNET_NSC (:) = 0.
378  dgei%XAVG_LWNET_VC (:) = 0.
379  dgei%XAVG_LWNET_GC (:) = 0.
380  dgei%XAVG_LWNET_NC (:) = 0.
381  dgei%XAVG_SWDOWN_GNC (:) = 0.
382  dgei%XAVG_LWDOWN_GNC (:) = 0.
383  dgei%XAVG_H_V_CC (:) = 0.
384  dgei%XAVG_H_G_CC (:) = 0.
385  dgei%XAVG_H_C_AC (:) = 0.
386  dgei%XAVG_H_N_CC (:) = 0.
387  dgei%XAVG_SR_GNC (:) = 0.
388  dgei%XAVG_MELTCVC (:) = 0.
389  dgei%XAVG_FRZCVC (:) = 0.
390  ENDIF
391 !
392  DO jpatch=1,SIZE(i%XPATCH,2)
393 !cdir nodep
394  DO jj=1,SIZE(zsumpatch)
395  IF (zsumpatch(jj) > 0.) THEN
396 !
397 ! Net radiation
398 !
399  dgei%XAVG_RNC(jj) = dgei%XAVG_RNC(jj) + i%XPATCH(jj,jpatch) * dgei%XRNC(jj,jpatch)
400 !
401 ! Sensible heat flux
402 !
403  dgei%XAVG_HC(jj) = dgei%XAVG_HC(jj) + i%XPATCH(jj,jpatch) * dgei%XHC(jj,jpatch)
404 !
405 ! Total latent heat flux
406 !
407  dgei%XAVG_LEC(jj) = dgei%XAVG_LEC(jj) + i%XPATCH(jj,jpatch) * dgei%XLEC(jj,jpatch)
408 !
409 ! Storage flux
410 !
411  dgei%XAVG_GFLUXC(jj) = dgei%XAVG_GFLUXC(jj) + i%XPATCH(jj,jpatch) * dgei%XGFLUXC(jj,jpatch)
412 !
413 ! Total surface sublimation
414 !
415  dgei%XAVG_LEIC(jj) = dgei%XAVG_LEIC(jj) + i%XPATCH(jj,jpatch) * dgei%XLEIC(jj,jpatch)
416 !
417 ! Latent heat of evaporation over the ground
418 !
419  dgei%XAVG_LEGC(jj) = dgei%XAVG_LEGC(jj) + i%XPATCH(jj,jpatch) * dgei%XLEGC(jj,jpatch)
420 !
421 ! Surface soil ice sublimation
422 !
423  dgei%XAVG_LEGIC(jj) = dgei%XAVG_LEGIC(jj) + i%XPATCH(jj,jpatch) * dgei%XLEGIC(jj,jpatch)
424 !
425 ! Latent heat of evaporation over vegetation
426 !
427  dgei%XAVG_LEVC(jj) = dgei%XAVG_LEVC(jj) + i%XPATCH(jj,jpatch) * dgei%XLEVC(jj,jpatch)
428 !
429 ! Latent heat of sublimation over snow
430 !
431  dgei%XAVG_LESAC(jj) = dgei%XAVG_LESAC(jj) + i%XPATCH(jj,jpatch) * dgei%XLESAC(jj,jpatch)
432 !
433 ! Latent heat of evaporation of liquid water over snow
434 !
435  dgei%XAVG_LESLC(jj) = dgei%XAVG_LESLC(jj) + i%XPATCH(jj,jpatch) * dgei%XLESLC(jj,jpatch)
436 !
437 ! Evaporation from canopy water interception
438 !
439  dgei%XAVG_LERC(jj) = dgei%XAVG_LERC(jj) + i%XPATCH(jj,jpatch) * dgei%XLERC(jj,jpatch)
440 !
441 ! Evapotranspiration of the vegetation
442 !
443  dgei%XAVG_LETRC(jj) = dgei%XAVG_LETRC(jj) + i%XPATCH(jj,jpatch) * dgei%XLETRC(jj,jpatch)
444 !
445 ! Evapotranspiration
446 !
447  dgei%XAVG_EVAPC(jj) = dgei%XAVG_EVAPC(jj) + i%XPATCH(jj,jpatch) * dgei%XEVAPC(jj,jpatch)
448 !
449 ! Sublimation
450 !
451  dgei%XAVG_SUBLC(jj) = dgei%XAVG_SUBLC(jj) + i%XPATCH(jj,jpatch) * dgei%XSUBLC(jj,jpatch)
452 !
453 ! Blowing snow sublimation (ES or Crocus)
454 !
455  dgei%XAVG_SNDRIFTC(jj) = dgei%XAVG_SNDRIFTC(jj) + i%XPATCH(jj,jpatch) * dgei%XSNDRIFTC(jj,jpatch)
456 !
457 ! Soil drainage flux
458 !
459  dgei%XAVG_DRAINC(jj) = dgei%XAVG_DRAINC(jj) + i%XPATCH(jj,jpatch) * dgei%XDRAINC(jj,jpatch)
460 !
461 ! Soil lateral subsurface flux
462 !
463  dgei%XAVG_QSBC(jj) = dgei%XAVG_QSBC(jj) + i%XPATCH(jj,jpatch) * dgei%XQSBC(jj,jpatch)
464 !
465 ! Supersaturation runoff
466 !
467  dgei%XAVG_RUNOFFC(jj) = dgei%XAVG_RUNOFFC(jj) + i%XPATCH(jj,jpatch) * dgei%XRUNOFFC(jj,jpatch)
468 !
469 ! Horton runoff
470 !
471  dgei%XAVG_HORTC(jj) = dgei%XAVG_HORTC(jj) + i%XPATCH(jj,jpatch) * dgei%XHORTC(jj,jpatch)
472 !
473 ! Vegetation dripping
474 !
475  dgei%XAVG_DRIPC(jj) = dgei%XAVG_DRIPC(jj) + i%XPATCH(jj,jpatch) * dgei%XDRIPC(jj,jpatch)
476 !
477 ! precipitation intercepted by the vegetation
478 !
479  dgei%XAVG_RRVEGC(jj) = dgei%XAVG_RRVEGC(jj) + i%XPATCH(jj,jpatch) * dgei%XRRVEGC(jj,jpatch)
480 !
481 ! Snow melt
482 !
483  dgei%XAVG_MELTC(jj) = dgei%XAVG_MELTC(jj) + i%XPATCH(jj,jpatch) * dgei%XMELTC(jj,jpatch)
484 !
485 ! Flood infiltartion
486 !
487  dgei%XAVG_IFLOODC(jj) = dgei%XAVG_IFLOODC(jj) + i%XPATCH(jj,jpatch) * dgei%XIFLOODC(jj,jpatch)
488 !
489 ! Precipitation intercepted by the floodplains
490 !
491  dgei%XAVG_PFLOODC(jj) = dgei%XAVG_PFLOODC(jj) + i%XPATCH(jj,jpatch) * dgei%XPFLOODC(jj,jpatch)
492 !
493 ! Floodplains evaporation
494 !
495  dgei%XAVG_LE_FLOODC (jj) = dgei%XAVG_LE_FLOODC (jj) + i%XPATCH(jj,jpatch) * dgei%XLE_FLOODC (jj,jpatch)
496  dgei%XAVG_LEI_FLOODC(jj) = dgei%XAVG_LEI_FLOODC(jj) + i%XPATCH(jj,jpatch) * dgei%XLEI_FLOODC(jj,jpatch)
497 !
498 ! irrigation rate (as soil input)
499 !
500  dgei%XAVG_IRRIG_FLUXC(jj) = dgei%XAVG_IRRIG_FLUXC(jj) + i%XPATCH(jj,jpatch) * dgei%XIRRIG_FLUXC(jj,jpatch)
501 !
502 ! Gross primary production
503 !
504  dgei%XAVG_GPPC(jj) = dgei%XAVG_GPPC(jj) + i%XPATCH(jj,jpatch) * dgei%XGPPC(jj,jpatch)
505 !
506 ! Autotrophic respiration
507 !
508  dgei%XAVG_RESPC_AUTO(jj) = dgei%XAVG_RESPC_AUTO(jj) + i%XPATCH(jj,jpatch) * dgei%XRESPC_AUTO(jj,jpatch)
509 !
510 ! Ecosystem respiration
511 !
512  dgei%XAVG_RESPC_ECO(jj) = dgei%XAVG_RESPC_ECO(jj) + i%XPATCH(jj,jpatch) * dgei%XRESPC_ECO(jj,jpatch)
513 !
514  IF (isize_lmeb_patch>0) THEN
515  dgei%XAVG_LEVCVC(jj) = dgei%XAVG_LEVCVC(jj) + i%XPATCH(jj,jpatch) * dgei%XLEVCVC(jj,jpatch)
516  dgei%XAVG_LESCC(jj) = dgei%XAVG_LESCC(jj) + i%XPATCH(jj,jpatch) * dgei%XLESCC(jj,jpatch)
517 ! DGEI%XAVG_LETRGVC(JJ) = DGEI%XAVG_LETRGVC(JJ) + I%XPATCH(JJ,JPATCH) * DGEI%XLETRGVC(JJ,JPATCH)
518  dgei%XAVG_LETRCVC(jj) = dgei%XAVG_LETRCVC(jj) + i%XPATCH(jj,jpatch) * dgei%XLETRCVC(jj,jpatch)
519 ! DGEI%XAVG_LERGVC(JJ) = DGEI%XAVG_LERGVC(JJ) + I%XPATCH(JJ,JPATCH) * DGEI%XLERGVC(JJ,JPATCH)
520  dgei%XAVG_LERCVC(jj) = dgei%XAVG_LERCVC(jj) + i%XPATCH(jj,jpatch) * dgei%XLERCVC(jj,jpatch)
521  dgei%XAVG_LE_C_AC(jj) = dgei%XAVG_LE_C_AC(jj) + i%XPATCH(jj,jpatch) * dgei%XLE_C_AC(jj,jpatch)
522  dgei%XAVG_LE_V_CC(jj) = dgei%XAVG_LE_V_CC(jj) + i%XPATCH(jj,jpatch) * dgei%XLE_V_CC(jj,jpatch)
523  dgei%XAVG_LE_G_CC(jj) = dgei%XAVG_LE_G_CC(jj) + i%XPATCH(jj,jpatch) * dgei%XLE_G_CC(jj,jpatch)
524  dgei%XAVG_LE_N_CC(jj) = dgei%XAVG_LE_N_CC(jj) + i%XPATCH(jj,jpatch) * dgei%XLE_N_CC(jj,jpatch)
525  dgei%XAVG_SWNET_VC(jj) = dgei%XAVG_SWNET_VC(jj) + i%XPATCH(jj,jpatch) * dgei%XSWNET_VC(jj,jpatch)
526  dgei%XAVG_SWNET_GC(jj) = dgei%XAVG_SWNET_GC(jj) + i%XPATCH(jj,jpatch) * dgei%XSWNET_GC(jj,jpatch)
527  dgei%XAVG_SWNET_NC(jj) = dgei%XAVG_SWNET_NC(jj) + i%XPATCH(jj,jpatch) * dgei%XSWNET_NC(jj,jpatch)
528  dgei%XAVG_SWNET_NSC(jj) = dgei%XAVG_SWNET_NSC(jj) + i%XPATCH(jj,jpatch) * dgei%XSWNET_NSC(jj,jpatch)
529  dgei%XAVG_LWNET_VC(jj) = dgei%XAVG_LWNET_VC(jj) + i%XPATCH(jj,jpatch) * dgei%XLWNET_VC(jj,jpatch)
530  dgei%XAVG_LWNET_GC(jj) = dgei%XAVG_LWNET_GC(jj) + i%XPATCH(jj,jpatch) * dgei%XLWNET_GC(jj,jpatch)
531  dgei%XAVG_LWNET_NC(jj) = dgei%XAVG_LWNET_NC(jj) + i%XPATCH(jj,jpatch) * dgei%XLWNET_NC(jj,jpatch)
532  dgei%XAVG_SWDOWN_GNC(jj) = dgei%XAVG_SWDOWN_GNC(jj) + i%XPATCH(jj,jpatch) * dgei%XSWDOWN_GNC(jj,jpatch)
533  dgei%XAVG_LWDOWN_GNC(jj) = dgei%XAVG_LWDOWN_GNC(jj) + i%XPATCH(jj,jpatch) * dgei%XLWDOWN_GNC(jj,jpatch)
534  dgei%XAVG_H_V_CC(jj) = dgei%XAVG_H_V_CC(jj) + i%XPATCH(jj,jpatch) * dgei%XH_V_CC(jj,jpatch)
535  dgei%XAVG_H_G_CC(jj) = dgei%XAVG_H_G_CC(jj) + i%XPATCH(jj,jpatch) * dgei%XH_G_CC(jj,jpatch)
536  dgei%XAVG_H_C_AC(jj) = dgei%XAVG_H_C_AC(jj) + i%XPATCH(jj,jpatch) * dgei%XH_C_AC(jj,jpatch)
537  dgei%XAVG_H_N_CC(jj) = dgei%XAVG_H_N_CC(jj) + i%XPATCH(jj,jpatch) * dgei%XH_N_CC(jj,jpatch)
538  dgei%XAVG_SR_GNC(jj) = dgei%XAVG_SR_GNC(jj) + i%XPATCH(jj,jpatch) * dgei%XSR_GNC(jj,jpatch)
539  dgei%XAVG_MELTCVC(jj) = dgei%XAVG_MELTCVC(jj) + i%XPATCH(jj,jpatch) * dgei%XMELTCVC(jj,jpatch)
540  dgei%XAVG_FRZCVC(jj) = dgei%XAVG_FRZCVC(jj) + i%XPATCH(jj,jpatch) * dgei%XFRZCVC(jj,jpatch)
541  ENDIF
542  !
543  ENDIF
544  ENDDO
545  END DO
546 !
547 ! Isba water budget and reservoir time tendencies
548 !
549  IF(dgei%LWATER_BUDGET)THEN
550 !
551  dgei%XRAINFALLC (:) = dgei%XRAINFALLC (:) + prain(:) * ptstep
552  dgei%XSNOWFALLC (:) = dgei%XSNOWFALLC (:) + psnow(:) * ptstep
553  dgei%XAVG_DWGC (:) = 0.0
554  dgei%XAVG_DWGIC (:) = 0.0
555  dgei%XAVG_DWRC (:) = 0.0
556  dgei%XAVG_DSWEC (:) = 0.0
557  dgei%XAVG_WATBUDC(:) = 0.0
558 !
559  DO jpatch=1,SIZE(i%XPATCH,2)
560 ! cdir nodep
561  DO jj=1,SIZE(zsumpatch)
562  IF (zsumpatch(jj) > 0.) THEN
563 !
564  dgei%XAVG_DWGC (jj) = dgei%XAVG_DWGC (jj) + i%XPATCH(jj,jpatch) * dgei%XDWGC (jj,jpatch)
565  dgei%XAVG_DWGIC (jj) = dgei%XAVG_DWGIC (jj) + i%XPATCH(jj,jpatch) * dgei%XDWGIC (jj,jpatch)
566  dgei%XAVG_DWRC (jj) = dgei%XAVG_DWRC (jj) + i%XPATCH(jj,jpatch) * dgei%XDWRC (jj,jpatch)
567  dgei%XAVG_DSWEC (jj) = dgei%XAVG_DSWEC (jj) + i%XPATCH(jj,jpatch) * dgei%XDSWEC (jj,jpatch)
568  dgei%XAVG_WATBUDC(jj) = dgei%XAVG_WATBUDC(jj) + i%XPATCH(jj,jpatch) * dgei%XWATBUDC(jj,jpatch)
569 !
570  ENDIF
571  ENDDO
572  ENDDO
573 !
574  ENDIF
575 !
576 ! Ice calving flux
577 !
578  IF(i%LGLACIER)THEN
579  dgei%XAVG_ICEFLUXC(:)= 0.
580  DO jpatch=1,SIZE(i%XPATCH,2)
581 ! cdir nodep
582  DO jj=1,SIZE(zsumpatch)
583  IF(zsumpatch(jj) > 0.)THEN
584  dgei%XAVG_ICEFLUXC(jj) = dgei%XAVG_ICEFLUXC(jj) + i%XPATCH(jj,jpatch) * dgei%XICEFLUXC(jj,jpatch)
585  ENDIF
586  END DO
587  END DO
588  END IF
589 !
590 END IF
591 !
592 IF (lhook) CALL dr_hook('AVERAGE_DIAG_EVAP_ISBA_N',1,zhook_handle)
593 !
594 !-------------------------------------------------------------------------------
595 !
596 END SUBROUTINE average_diag_evap_isba_n
subroutine average_diag_evap_isba_n(DGEI, I, PTSTEP, PRAIN, PSNOW)