SURFEX v8.1
General documentation of Surfex
mode_diag.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 MODULE mode_diag
7 ! #####################
8 !
9 USE yomhook ,ONLY : lhook, dr_hook
10 USE parkind1 ,ONLY : jprb
11 !
12 USE modd_surf_par, ONLY : xundef
15 !
16 IMPLICIT NONE
17 !
18 CONTAINS
19 !
20 SUBROUTINE alloc_surf_bud(DA,KLUA,KLUAC,KSWA)
21 !
22 TYPE(diag_t), INTENT(INOUT) :: DA
23 INTEGER, INTENT(IN) :: KLUA
24 INTEGER, INTENT(IN) :: KLUAC
25 INTEGER, INTENT(IN) :: KSWA
26 REAL(KIND=JPRB) :: ZHOOK_HANDLE
27 !
28 IF (lhook) CALL dr_hook('MODE_DIAG:ALLOC_SURF_BUD',0,zhook_handle)
29 !
30 ALLOCATE(da%XRN (kluac))
31 ALLOCATE(da%XH (kluac))
32 ALLOCATE(da%XLE (kluac))
33 ALLOCATE(da%XLEI (kluac))
34 ALLOCATE(da%XGFLUX (kluac))
35 !
36 ALLOCATE(da%XSWD (kluac))
37 ALLOCATE(da%XSWU (kluac))
38 ALLOCATE(da%XLWD (kluac))
39 ALLOCATE(da%XLWU (kluac))
40 ALLOCATE(da%XFMU (kluac))
41 ALLOCATE(da%XFMV (kluac))
42 !
43 IF (kluac>0) THEN
44  da%XRN = xundef
45  da%XH = xundef
46  da%XLE = xundef
47  da%XLEI = xundef
48  da%XGFLUX = xundef
49 
50  da%XSWD = xundef
51  da%XSWU = xundef
52  da%XLWD = xundef
53  da%XLWU = xundef
54  da%XFMU = xundef
55  da%XFMV = xundef
56 ENDIF
57 !
58 ALLOCATE(da%XSWBD (klua,kswa))
59 ALLOCATE(da%XSWBU (klua,kswa))
60 !
61 IF (klua>0) THEN
62  da%XSWBD = xundef
63  da%XSWBU = xundef
64 ENDIF
65 !
66 IF (lhook) CALL dr_hook('MODE_DIAG:ALLOC_SURF_BUD',1,zhook_handle)
67 !
68 END SUBROUTINE alloc_surf_bud
69 !
70 SUBROUTINE alloc_n2m_bud(DA,KLUA)
71 !
72 TYPE(diag_t), INTENT(INOUT) :: DA
73 INTEGER, INTENT(IN) :: KLUA
74 REAL(KIND=JPRB) :: ZHOOK_HANDLE
75 !
76 IF (lhook) CALL dr_hook('MODE_DIAG:ALLOC_N2M_BUD',0,zhook_handle)
77 !
78 ALLOCATE(da%XRI (klua))
79 ALLOCATE(da%XT2M (klua))
80 ALLOCATE(da%XT2M_MIN (klua))
81 ALLOCATE(da%XT2M_MAX (klua))
82 ALLOCATE(da%XQ2M (klua))
83 ALLOCATE(da%XHU2M (klua))
84 ALLOCATE(da%XHU2M_MIN (klua))
85 ALLOCATE(da%XHU2M_MAX (klua))
86 ALLOCATE(da%XZON10M (klua))
87 ALLOCATE(da%XMER10M (klua))
88 ALLOCATE(da%XWIND10M (klua))
89 ALLOCATE(da%XWIND10M_MAX (klua))
90 !
91 IF (klua>0) THEN
92  da%XRI = xundef
93  da%XT2M = xundef
94  da%XT2M_MIN = xundef
95  da%XT2M_MAX = -xundef
96  da%XQ2M = xundef
97  da%XHU2M = xundef
98  da%XHU2M_MIN= xundef
99  da%XHU2M_MAX= -xundef
100  da%XZON10M = xundef
101  da%XMER10M = xundef
102  da%XWIND10M = xundef
103  da%XWIND10M_MAX = 0.0
104 ENDIF
105 !
106 IF (lhook) CALL dr_hook('MODE_DIAG:ALLOC_N2M_BUD',1,zhook_handle)
107 !
108 END SUBROUTINE alloc_n2m_bud
109 !
110 SUBROUTINE alloc_coef_bud(DA,KLUA)
111 !
112 TYPE(diag_t), INTENT(INOUT) :: DA
113 INTEGER, INTENT(IN) :: KLUA
114 REAL(KIND=JPRB) :: ZHOOK_HANDLE
115 !
116 IF (lhook) CALL dr_hook('MODE_DIAG:ALLOC_COEF_BUD',0,zhook_handle)
117 !
118 ALLOCATE(da%XCD (klua))
119 ALLOCATE(da%XCH (klua))
120 ALLOCATE(da%XCE (klua))
121 ALLOCATE(da%XZ0 (klua))
122 ALLOCATE(da%XZ0H (klua))
123 !
124 IF (klua>0) THEN
125  da%XCD = xundef
126  da%XCH = xundef
127  da%XCE = xundef
128  da%XZ0 = xundef
129  da%XZ0H = xundef
130 ENDIF
131 
132 IF (lhook) CALL dr_hook('MODE_DIAG:ALLOC_COEF_BUD',1,zhook_handle)
133 !
134 END SUBROUTINE alloc_coef_bud
135 !
136 SUBROUTINE alloc_bud(DGO,DA,KLU,KSW)
137 !
138 TYPE(diag_options_t), INTENT(IN) :: DGO
139 TYPE(diag_t), INTENT(INOUT) :: DA
140 INTEGER, INTENT(IN) :: KLU
141 INTEGER, INTENT(IN) :: KSW
142 REAL(KIND=JPRB) :: ZHOOK_HANDLE
143 !
144 IF (lhook) CALL dr_hook('MODE_DIAG:ALLOC_BUD',0,zhook_handle)
145 !
146 IF (dgo%LSURF_BUDGET .OR. dgo%LSURF_BUDGETC) THEN
147  CALL alloc_surf_bud(da,klu,klu,ksw)
148 ELSE
149  CALL alloc_surf_bud(da,0,0,0)
150 END IF
151 !
152 !* parameters at 2m
153 !
154 IF (dgo%N2M>=1) THEN
155  CALL alloc_n2m_bud(da,klu)
156 ELSE
157  CALL alloc_n2m_bud(da,0)
158 END IF
159 !
160 !* transfer coefficients
161 !
162 IF (dgo%LCOEF) THEN
163  CALL alloc_coef_bud(da,klu)
164 ELSE
165  CALL alloc_coef_bud(da,0)
166 END IF
167 !
168 !* surface humidity
169 !
170 IF (dgo%LSURF_VARS) THEN
171  ALLOCATE(da%XQS (klu))
172  da%XQS = xundef
173 ELSE
174  ALLOCATE(da%XQS (0))
175 END IF
176 !
177 ALLOCATE(da%XTS(klu))
178 da%XTS = xundef
179 !
180 IF (lhook) CALL dr_hook('MODE_DIAG:ALLOC_BUD',1,zhook_handle)
181 !
182 END SUBROUTINE alloc_bud
183 !
184 SUBROUTINE init_bud(DGO,DA,DAC,PVAL)
185 !
186 TYPE(diag_options_t), INTENT(IN) :: DGO
187 TYPE(diag_t), INTENT(INOUT) :: DA
188 TYPE(diag_t), INTENT(INOUT) :: DAC
189 REAL, INTENT(IN) :: PVAL
190 REAL(KIND=JPRB) :: ZHOOK_HANDLE
191 !
192 IF (lhook) CALL dr_hook('MODE_DIAG:INIT_BUD',0,zhook_handle)
193 !
194 IF (dgo%LSURF_BUDGET) THEN
195  CALL init_surf_bud(da,pval)
196  da%XEVAP = pval
197  da%XSUBL = pval
198 ENDIF
199 IF (dgo%LSURF_BUDGETC) THEN
200  CALL init_surf_bud(dac,pval)
201  dac%XEVAP = pval
202  dac%XSUBL = pval
203 ENDIF
204 IF (dgo%N2M>=1) CALL init_n2m_bud(da,pval)
205 IF (dgo%LCOEF) CALL init_coef_bud(da,pval)
206 da%XTS = pval
207 !
208 IF (lhook) CALL dr_hook('MODE_DIAG:INIT_BUD',1,zhook_handle)
209 !
210 END SUBROUTINE init_bud
211 !
212 SUBROUTINE init_surf_bud(DA,PVAL)
213 !
214 TYPE(diag_t), INTENT(INOUT) :: DA
215 REAL, INTENT(IN) :: PVAL
216 REAL(KIND=JPRB) :: ZHOOK_HANDLE
217 !
218 IF (lhook) CALL dr_hook('MODE_DIAG:INIT_SURF_BUD',0,zhook_handle)
219 !
220 da%XRN = pval
221 da%XH = pval
222 da%XLE = pval
223 da%XLEI = pval
224 da%XGFLUX = pval
225 !
226 da%XSWD = pval
227 da%XSWU = pval
228 da%XLWD = pval
229 da%XLWU = pval
230 da%XFMU = pval
231 da%XFMV = pval
232 !
233 IF (SIZE(da%XSWBD)>0) THEN
234  da%XSWBD = pval
235  da%XSWBU = pval
236 ENDIF
237 !
238 IF (lhook) CALL dr_hook('MODE_DIAG:INIT_SURF_BUD',1,zhook_handle)
239 !
240 END SUBROUTINE init_surf_bud
241 !
242 SUBROUTINE init_n2m_bud(DA,PVAL)
243 !
244 TYPE(diag_t), INTENT(INOUT) :: DA
245 REAL, INTENT(IN) :: PVAL
246 REAL(KIND=JPRB) :: ZHOOK_HANDLE
247 !
248 IF (lhook) CALL dr_hook('MODE_DIAG:INIT_N2M_BUD',0,zhook_handle)
249 !
250 da%XRI = pval
251 da%XT2M = pval
252 da%XT2M_MIN = pval
253 da%XT2M_MAX = pval
254 da%XQ2M = pval
255 da%XHU2M = pval
256 da%XHU2M_MIN= pval
257 da%XHU2M_MAX= pval
258 da%XZON10M = pval
259 da%XMER10M = pval
260 da%XWIND10M = pval
261 da%XWIND10M_MAX = pval
262 da%XSFCO2 = pval
263 !
264 IF (lhook) CALL dr_hook('MODE_DIAG:INIT_N2M_BUD',1,zhook_handle)
265 !
266 END SUBROUTINE init_n2m_bud
267 !
268 SUBROUTINE init_coef_bud(DA,PVAL)
269 !
270 TYPE(diag_t), INTENT(INOUT) :: DA
271 REAL, INTENT(IN) :: PVAL
272 REAL(KIND=JPRB) :: ZHOOK_HANDLE
273 !
274 IF (lhook) CALL dr_hook('MODE_DIAG:INIT_COEF_BUD',0,zhook_handle)
275 !
276 da%XCD = pval
277 da%XCH = pval
278 da%XCE = pval
279 da%XZ0 = pval
280 da%XZ0H = pval
281 da%XZ0EFF = pval
282 !
283 IF (lhook) CALL dr_hook('MODE_DIAG:INIT_COEF_BUD',1,zhook_handle)
284 !
285 END SUBROUTINE init_coef_bud
286 !
287 SUBROUTINE diag_evap(DGO, DA, DAC, HPROGRAM, DAUP, DAUPC, KMASK )
288 !
289 IMPLICIT NONE
290 !
291 TYPE(diag_options_t), INTENT(IN) :: DGO
292 TYPE(diag_t), INTENT(INOUT) :: DA
293 TYPE(diag_t), INTENT(INOUT) :: DAC
294  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes
295 TYPE(diag_t), INTENT(INOUT) :: DAUP
296 TYPE(diag_t), INTENT(INOUT) :: DAUPC
297 INTEGER, DIMENSION(:), INTENT(IN) :: KMASK
298 !
299 INTEGER :: JJ, ISIZE
300 REAL(KIND=JPRB) :: ZHOOK_HANDLE
301 !
302 IF (lhook) CALL dr_hook('MODE_DIAG:DIAG_EVAP',0,zhook_handle)
303 !
304 isize = SIZE(kmask)
305 !
306  CALL diag_cumul(dgo, da, dac, hprogram, daup, daupc, kmask)
307 !
308 IF (dgo%LSURF_BUDGET) THEN
309  DO jj=1,isize
310  daup%XEVAP (kmask(jj)) = da%XEVAP (jj)
311  daup%XSUBL (kmask(jj)) = da%XSUBL (jj)
312  ENDDO
313 END IF
314 !
315 IF (lhook) CALL dr_hook('MODE_DIAG:DIAG_EVAP',1,zhook_handle)
316 !
317 END SUBROUTINE diag_evap
318 !
319 SUBROUTINE diag_cumul(DGO, DA, DAC, HPROGRAM, DAUP, DAUPC, KMASK )
320 !
321 IMPLICIT NONE
322 !
323 TYPE(diag_options_t), INTENT(IN) :: DGO
324 TYPE(diag_t), INTENT(INOUT) :: DA
325 TYPE(diag_t), INTENT(INOUT) :: DAC
326  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes
327 TYPE(diag_t), INTENT(INOUT) :: DAUP
328 TYPE(diag_t), INTENT(INOUT) :: DAUPC
329 INTEGER, DIMENSION(:), INTENT(IN) :: KMASK
330 !
331 INTEGER :: JJ, ISIZE
332 REAL(KIND=JPRB) :: ZHOOK_HANDLE
333 !
334 IF (lhook) CALL dr_hook('MODE_DIAG:DIAG_CUMUL',0,zhook_handle)
335 !
336 isize = SIZE(kmask)
337 !
338  CALL diag(dgo, da, hprogram, daup, kmask)
339 !
340 IF (dgo%LSURF_BUDGETC) THEN
341  DO jj=1,isize
342  daupc%XRN (kmask(jj)) = dac%XRN (jj)
343  daupc%XH (kmask(jj)) = dac%XH (jj)
344  daupc%XLE (kmask(jj)) = dac%XLE (jj)
345  daupc%XLEI (kmask(jj)) = dac%XLEI (jj)
346  daupc%XGFLUX (kmask(jj)) = dac%XGFLUX (jj)
347  daupc%XEVAP (kmask(jj)) = dac%XEVAP (jj)
348  daupc%XSUBL (kmask(jj)) = dac%XSUBL (jj)
349  daupc%XSWD (kmask(jj)) = dac%XSWD (jj)
350  daupc%XSWU (kmask(jj)) = dac%XSWU (jj)
351  daupc%XLWD (kmask(jj)) = dac%XLWD (jj)
352  daupc%XLWU (kmask(jj)) = dac%XLWU (jj)
353  daupc%XFMU (kmask(jj)) = dac%XFMU (jj)
354  daupc%XFMV (kmask(jj)) = dac%XFMV (jj)
355  ENDDO
356 END IF
357 !
358 IF (lhook) CALL dr_hook('MODE_DIAG:DIAG_CUMUL',1,zhook_handle)
359 !
360 END SUBROUTINE diag_cumul
361 !
362 SUBROUTINE diag(DGO, DA, HPROGRAM, DAUP, KMASK )
363 !
364 IMPLICIT NONE
365 !
366 TYPE(diag_options_t), INTENT(IN) :: DGO
367 TYPE(diag_t), INTENT(INOUT) :: DA
368  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes
369 TYPE(diag_t), INTENT(INOUT) :: DAUP
370 INTEGER, DIMENSION(:), INTENT(IN) :: KMASK
371 !
372 INTEGER :: JJ, ISIZE
373 REAL(KIND=JPRB) :: ZHOOK_HANDLE
374 !
375 IF (lhook) CALL dr_hook('MODE_DIAG:DIAG',0,zhook_handle)
376 !
377 isize = SIZE(kmask)
378 !
379 IF (dgo%LSURF_BUDGET) THEN
380  DO jj=1,isize
381  daup%XRN (kmask(jj)) = da%XRN (jj)
382  daup%XH (kmask(jj)) = da%XH (jj)
383  daup%XLE (kmask(jj)) = da%XLE (jj)
384  daup%XLEI (kmask(jj)) = da%XLEI (jj)
385  daup%XGFLUX (kmask(jj)) = da%XGFLUX (jj)
386  daup%XSWD (kmask(jj)) = da%XSWD (jj)
387  daup%XSWU (kmask(jj)) = da%XSWU (jj)
388  daup%XLWD (kmask(jj)) = da%XLWD (jj)
389  daup%XLWU (kmask(jj)) = da%XLWU (jj)
390  daup%XFMU (kmask(jj)) = da%XFMU (jj)
391  daup%XFMV (kmask(jj)) = da%XFMV (jj)
392  daup%XSWBD (kmask(jj),:) = da%XSWBD (jj,:)
393  daup%XSWBU (kmask(jj),:) = da%XSWBU (jj,:)
394  ENDDO
395 END IF
396 !
397 IF (dgo%N2M>=1 .OR. dgo%LSURF_BUDGET) THEN
398  DO jj=1,isize
399  daup%XTS (kmask(jj)) = da%XTS (jj)
400  ENDDO
401 ENDIF
402 !
403 IF (dgo%N2M>=1) THEN
404  DO jj=1,isize
405  daup%XRI (kmask(jj)) = da%XRI (jj)
406  daup%XT2M (kmask(jj)) = da%XT2M (jj)
407  daup%XT2M_MIN (kmask(jj)) = da%XT2M_MIN (jj)
408  daup%XT2M_MAX (kmask(jj)) = da%XT2M_MAX (jj)
409  daup%XQ2M (kmask(jj)) = da%XQ2M (jj)
410  daup%XHU2M (kmask(jj)) = da%XHU2M (jj)
411  daup%XHU2M_MIN(kmask(jj)) = da%XHU2M_MIN (jj)
412  daup%XHU2M_MAX(kmask(jj)) = da%XHU2M_MAX (jj)
413  daup%XZON10M (kmask(jj)) = da%XZON10M (jj)
414  daup%XMER10M (kmask(jj)) = da%XMER10M (jj)
415  daup%XWIND10M (kmask(jj)) = da%XWIND10M (jj)
416  daup%XWIND10M_MAX (kmask(jj)) = da%XWIND10M_MAX (jj)
417  ENDDO
418 END IF
419 !
420 IF (dgo%LCOEF) THEN
421  DO jj=1,isize
422  daup%XCD (kmask(jj)) = da%XCD (jj)
423  daup%XCH (kmask(jj)) = da%XCH (jj)
424  daup%XCE (kmask(jj)) = da%XCE (jj)
425  daup%XZ0 (kmask(jj)) = da%XZ0 (jj)
426  daup%XZ0H (kmask(jj)) = da%XZ0H (jj)
427  ENDDO
428 END IF
429 !
430 IF (dgo%LSURF_VARS) THEN
431  DO jj=1,isize
432  daup%XQS (kmask(jj)) = da%XQS (jj)
433  ENDDO
434 ENDIF
435 !
436 IF (lhook) CALL dr_hook('MODE_DIAG:DIAG',1,zhook_handle)
437 !
438 END SUBROUTINE diag
439 !
440 SUBROUTINE init_evap_bud(DEA)
441 !
442 TYPE(diag_evap_isba_t), INTENT(INOUT) :: DEA
443 REAL(KIND=JPRB) :: ZHOOK_HANDLE
444 !
445 IF (lhook) CALL dr_hook('MODE_DIAG:INIT_EVAP_BUD',0,zhook_handle)
446 !
447 dea%XLEG = 0.0
448 dea%XLEGI = 0.0
449 dea%XLEV = 0.0
450 dea%XLES = 0.0
451 !
452 dea%XLESL = 0.0
453 dea%XSNDRIFT = 0.0
454 !
455 dea%XLER = 0.0
456 dea%XLETR = 0.0
457 !
458 dea%XDRAIN = 0.0
459 dea%XRUNOFF = 0.0
460 dea%XDRIP = 0.0
461 dea%XRRVEG = 0.0
462 dea%XMELT = 0.0
463 !
464 dea%XIRRIG_FLUX = 0.0
465 !
466 dea%XGPP = 0.0
467 dea%XRESP_AUTO = 0.0
468 dea%XRESP_ECO = 0.0
469 !
470 dea%XQSB = 0.0
471 dea%XHORT = 0.0
472 !
473 dea%XIFLOOD = 0.0
474 dea%XPFLOOD = 0.0
475 dea%XLE_FLOOD = 0.0
476 dea%XLEI_FLOOD = 0.0
477 !
478 dea%XRN_SN_FR = 0.0
479 dea%XH_SN_FR = 0.0
480 dea%XLEI_SN_FR = 0.0
481 dea%XLE_SN_FR = 0.0
482 dea%XGFLUX_SN_FR = 0.0
483 dea%XLEG_SN_FR = 0.0
484 dea%XLEGI_SN_FR = 0.0
485 dea%XLEV_SN_FR = 0.0
486 dea%XLETR_SN_FR = 0.0
487 dea%XUSTAR_SN_FR = 0.0
488 dea%XLER_SN_FR = 0.0
489 !
490 IF (lhook) CALL dr_hook('MODE_DIAG:INIT_EVAP_BUD',1,zhook_handle)
491 !
492 END SUBROUTINE init_evap_bud
493 !
494 SUBROUTINE init_meb_bud(DEA)
495 !
496 TYPE(diag_evap_isba_t), INTENT(INOUT) :: DEA
497 REAL(KIND=JPRB) :: ZHOOK_HANDLE
498 !
499 IF (lhook) CALL dr_hook('MODE_DIAG:INIT_MEB_BUD',0,zhook_handle)
500 !
501 dea%XLELITTER = 0.0
502 dea%XLELITTERI = 0.0
503 dea%XDRIPLIT = 0.0
504 dea%XRRLIT = 0.0
505 !
506 dea%XLEV_CV = 0.0
507 dea%XLES_CV = 0.0
508 dea%XLETR_CV = 0.0
509 dea%XLE_CV = 0.0
510 dea%XH_CV = 0.0
511 dea%XMELT_CV = 0.0
512 dea%XFRZ_CV = 0.0
513 !
514 dea%XLETR_GV = 0.0
515 dea%XLER_GV = 0.0
516 dea%XLE_GV = 0.0
517 dea%XH_GV = 0.0
518 !
519 dea%XLE_GN = 0.0
520 dea%XEVAP_GN = 0.0
521 dea%XH_GN = 0.0
522 dea%XSR_GN = 0.0
523 dea%XSWDOWN_GN = 0.0
524 dea%XLWDOWN_GN = 0.0
525 !
526 dea%XEVAP_G = 0.0
527 dea%XLE_CA = 0.0
528 dea%XH_CA = 0.0
529 !
530 dea%XSWUP = 0.0
531 dea%XLWUP = 0.0
532 !
533 dea%XSWNET_V = 0.0
534 dea%XSWNET_G = 0.0
535 dea%XSWNET_N = 0.0
536 dea%XSWNET_NS = 0.0
537 dea%XLWNET_V = 0.0
538 dea%XLWNET_G = 0.0
539 dea%XLWNET_N = 0.0
540 !
541 IF (lhook) CALL dr_hook('MODE_DIAG:INIT_MEB_BUD',1,zhook_handle)
542 !
543 END SUBROUTINE init_meb_bud
544 !
545 SUBROUTINE init_water_bud(DEA)
546 !
547 TYPE(diag_evap_isba_t), INTENT(INOUT) :: DEA
548 REAL(KIND=JPRB) :: ZHOOK_HANDLE
549 !
550 IF (lhook) CALL dr_hook('MODE_DIAG:INIT_WATER_BUD',0,zhook_handle)
551 !
552 dea%XDWG = 0.0
553 dea%XDWGI = 0.0
554 dea%XDWR = 0.0
555 dea%XDSWE = 0.0
556 dea%XWATBUD = 0.0
557 !
558 IF (lhook) CALL dr_hook('MODE_DIAG:INIT_WATER_BUD',1,zhook_handle)
559 !
560 END SUBROUTINE init_water_bud
561 !
562 SUBROUTINE avg_diag_tstep_evap(PTSTEP, DEAC, DEA)
563 !
564 REAL, INTENT(IN) :: PTSTEP
565 TYPE(diag_evap_isba_t), INTENT(IN) :: DEAC
566 TYPE(diag_evap_isba_t), INTENT(INOUT) :: DEA
567 REAL(KIND=JPRB) :: ZHOOK_HANDLE
568 !
569 IF (lhook) CALL dr_hook('MODE_DIAG:AVG_DIAG_TSTEP_EVAP',0,zhook_handle)
570 !
571 dea%XLEG (:) = deac%XLEG (:)/ptstep
572 dea%XLEGI (:) = deac%XLEGI (:)/ptstep
573 dea%XLEV (:) = deac%XLEV (:)/ptstep
574 dea%XLES (:) = deac%XLES (:)/ptstep
575 !
576 dea%XLESL (:) = deac%XLESL (:)/ptstep
577 dea%XSNDRIFT(:) = deac%XSNDRIFT(:)/ptstep
578 !
579 dea%XLER (:) = deac%XLER (:)/ptstep
580 dea%XLETR (:) = deac%XLETR (:)/ptstep
581 dea%XDRAIN (:) = deac%XDRAIN (:)/ptstep
582 dea%XQSB (:) = deac%XQSB (:)/ptstep
583 dea%XRUNOFF (:) = deac%XRUNOFF (:)/ptstep
584 dea%XHORT (:) = deac%XHORT (:)/ptstep
585 dea%XDRIP (:) = deac%XDRIP (:)/ptstep
586 dea%XRRVEG (:) = deac%XRRVEG (:)/ptstep
587 dea%XMELT (:) = deac%XMELT (:)/ptstep
588 !
589 IF (lhook) CALL dr_hook('MODE_DIAG:AVG_DIAG_TSTEP_EVAP',1,zhook_handle)
590 !
591 END SUBROUTINE avg_diag_tstep_evap
592 !
593 SUBROUTINE avg_diag_tstep_water(PTSTEP, DEAC, DEA)
594 !
595 REAL, INTENT(IN) :: PTSTEP
596 TYPE(diag_evap_isba_t), INTENT(IN) :: DEAC
597 TYPE(diag_evap_isba_t), INTENT(INOUT) :: DEA
598 REAL(KIND=JPRB) :: ZHOOK_HANDLE
599 !
600 IF (lhook) CALL dr_hook('MODE_DIAG:AVG_DIAG_TSTEP_WATER',0,zhook_handle)
601 !
602 dea%XDWG (:) = deac%XDWG (:)/ptstep
603 dea%XDWGI (:) = deac%XDWGI (:)/ptstep
604 dea%XDWR (:) = deac%XDWR (:)/ptstep
605 dea%XDSWE (:) = deac%XDSWE (:)/ptstep
606 dea%XWATBUD(:) = deac%XWATBUD(:)/ptstep
607 !
608 IF (lhook) CALL dr_hook('MODE_DIAG:AVG_DIAG_TSTEP_WATER',1,zhook_handle)
609 !
610 END SUBROUTINE avg_diag_tstep_water
611 !
612 SUBROUTINE avg_diag_tstep_surf(PTSTEP, DAC, DA)
613 !
614 REAL, INTENT(IN) :: PTSTEP
615 TYPE(diag_t), INTENT(IN) :: DAC
616 TYPE(diag_t), INTENT(INOUT) :: DA
617 REAL(KIND=JPRB) :: ZHOOK_HANDLE
618 !
619 IF (lhook) CALL dr_hook('MODE_DIAG:AVG_DIAG_TSTEP_SURF',0,zhook_handle)
620 !
621 da%XRN (:) = dac%XRN (:)/ptstep
622 da%XH (:) = dac%XH (:)/ptstep
623 da%XLE (:) = dac%XLE (:)/ptstep
624 da%XLEI (:) = dac%XLEI (:)/ptstep
625 da%XGFLUX(:) = dac%XGFLUX(:)/ptstep
626 !
627 da%XEVAP (:) = dac%XEVAP (:)/ptstep
628 da%XSUBL (:) = dac%XSUBL (:)/ptstep
629 !
630 da%XSWD(:) = dac%XSWD(:)/ptstep
631 da%XSWU(:) = dac%XSWU(:)/ptstep
632 da%XLWD(:) = dac%XLWD(:)/ptstep
633 da%XLWU(:) = dac%XLWU(:)/ptstep
634 !
635 IF (lhook) CALL dr_hook('MODE_DIAG:AVG_DIAG_TSTEP_SURF',1,zhook_handle)
636 !
637 END SUBROUTINE avg_diag_tstep_surf
638 !
639 !-------------------------------------------------------------------------------
640 !
641 END MODULE mode_diag
subroutine init_surf_bud(DA, PVAL)
Definition: mode_diag.F90:213
subroutine init_bud(DGO, DA, DAC, PVAL)
Definition: mode_diag.F90:185
subroutine init_n2m_bud(DA, PVAL)
Definition: mode_diag.F90:243
subroutine avg_diag_tstep_surf(PTSTEP, DAC, DA)
Definition: mode_diag.F90:613
subroutine init_coef_bud(DA, PVAL)
Definition: mode_diag.F90:269
subroutine diag(DGO, DA, HPROGRAM, DAUP, KMASK)
Definition: mode_diag.F90:363
subroutine avg_diag_tstep_evap(PTSTEP, DEAC, DEA)
Definition: mode_diag.F90:563
subroutine init_meb_bud(DEA)
Definition: mode_diag.F90:495
real, parameter xundef
subroutine alloc_bud(DGO, DA, KLU, KSW)
Definition: mode_diag.F90:137
subroutine init_water_bud(DEA)
Definition: mode_diag.F90:546
integer, parameter jprb
Definition: parkind1.F90:32
subroutine diag_evap(DGO, DA, DAC, HPROGRAM, DAUP, DAUPC, KMASK)
Definition: mode_diag.F90:288
subroutine alloc_coef_bud(DA, KLUA)
Definition: mode_diag.F90:111
subroutine alloc_n2m_bud(DA, KLUA)
Definition: mode_diag.F90:71
subroutine init_evap_bud(DEA)
Definition: mode_diag.F90:441
logical lhook
Definition: yomhook.F90:15
subroutine avg_diag_tstep_water(PTSTEP, DEAC, DEA)
Definition: mode_diag.F90:594
subroutine diag_cumul(DGO, DA, DAC, HPROGRAM, DAUP, DAUPC, KMASK)
Definition: mode_diag.F90:320
subroutine alloc_surf_bud(DA, KLUA, KLUAC, KSWA)
Definition: mode_diag.F90:21