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
28 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:ALLOC_SURF_BUD',0,zhook_handle)
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))
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))
58 ALLOCATE(da%XSWBD (klua,kswa))
59 ALLOCATE(da%XSWBU (klua,kswa))
66 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:ALLOC_SURF_BUD',1,zhook_handle)
72 TYPE(
diag_t),
INTENT(INOUT) :: DA
73 INTEGER,
INTENT(IN) :: KLUA
74 REAL(KIND=JPRB) :: ZHOOK_HANDLE
76 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:ALLOC_N2M_BUD',0,zhook_handle)
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))
103 da%XWIND10M_MAX = 0.0
106 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:ALLOC_N2M_BUD',1,zhook_handle)
112 TYPE(
diag_t),
INTENT(INOUT) :: DA
113 INTEGER,
INTENT(IN) :: KLUA
114 REAL(KIND=JPRB) :: ZHOOK_HANDLE
116 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:ALLOC_COEF_BUD',0,zhook_handle)
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))
132 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:ALLOC_COEF_BUD',1,zhook_handle)
139 TYPE(
diag_t),
INTENT(INOUT) :: DA
140 INTEGER,
INTENT(IN) :: KLU
141 INTEGER,
INTENT(IN) :: KSW
142 REAL(KIND=JPRB) :: ZHOOK_HANDLE
144 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:ALLOC_BUD',0,zhook_handle)
146 IF (dgo%LSURF_BUDGET .OR. dgo%LSURF_BUDGETC)
THEN 170 IF (dgo%LSURF_VARS)
THEN 171 ALLOCATE(da%XQS (klu))
177 ALLOCATE(da%XTS(klu))
180 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:ALLOC_BUD',1,zhook_handle)
184 SUBROUTINE init_bud(DGO,DA,DAC,PVAL)
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
192 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:INIT_BUD',0,zhook_handle)
194 IF (dgo%LSURF_BUDGET)
THEN 199 IF (dgo%LSURF_BUDGETC)
THEN 208 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:INIT_BUD',1,zhook_handle)
214 TYPE(
diag_t),
INTENT(INOUT) :: DA
215 REAL,
INTENT(IN) :: PVAL
216 REAL(KIND=JPRB) :: ZHOOK_HANDLE
218 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:INIT_SURF_BUD',0,zhook_handle)
233 IF (
SIZE(da%XSWBD)>0)
THEN 238 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:INIT_SURF_BUD',1,zhook_handle)
244 TYPE(
diag_t),
INTENT(INOUT) :: DA
245 REAL,
INTENT(IN) :: PVAL
246 REAL(KIND=JPRB) :: ZHOOK_HANDLE
248 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:INIT_N2M_BUD',0,zhook_handle)
261 da%XWIND10M_MAX = pval
264 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:INIT_N2M_BUD',1,zhook_handle)
270 TYPE(
diag_t),
INTENT(INOUT) :: DA
271 REAL,
INTENT(IN) :: PVAL
272 REAL(KIND=JPRB) :: ZHOOK_HANDLE
274 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:INIT_COEF_BUD',0,zhook_handle)
283 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:INIT_COEF_BUD',1,zhook_handle)
287 SUBROUTINE diag_evap(DGO, DA, DAC, HPROGRAM, DAUP, DAUPC, KMASK )
292 TYPE(
diag_t),
INTENT(INOUT) :: DA
293 TYPE(
diag_t),
INTENT(INOUT) :: DAC
294 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
295 TYPE(
diag_t),
INTENT(INOUT) :: DAUP
296 TYPE(
diag_t),
INTENT(INOUT) :: DAUPC
297 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMASK
300 REAL(KIND=JPRB) :: ZHOOK_HANDLE
302 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:DIAG_EVAP',0,zhook_handle)
306 CALL diag_cumul(dgo, da, dac, hprogram, daup, daupc, kmask)
308 IF (dgo%LSURF_BUDGET)
THEN 310 daup%XEVAP (kmask(jj)) = da%XEVAP (jj)
311 daup%XSUBL (kmask(jj)) = da%XSUBL (jj)
315 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:DIAG_EVAP',1,zhook_handle)
319 SUBROUTINE diag_cumul(DGO, DA, DAC, HPROGRAM, DAUP, DAUPC, KMASK )
324 TYPE(
diag_t),
INTENT(INOUT) :: DA
325 TYPE(
diag_t),
INTENT(INOUT) :: DAC
326 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
327 TYPE(
diag_t),
INTENT(INOUT) :: DAUP
328 TYPE(
diag_t),
INTENT(INOUT) :: DAUPC
329 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMASK
332 REAL(KIND=JPRB) :: ZHOOK_HANDLE
334 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:DIAG_CUMUL',0,zhook_handle)
338 CALL diag(dgo, da, hprogram, daup, kmask)
340 IF (dgo%LSURF_BUDGETC)
THEN 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)
358 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:DIAG_CUMUL',1,zhook_handle)
362 SUBROUTINE diag(DGO, DA, HPROGRAM, DAUP, KMASK )
367 TYPE(
diag_t),
INTENT(INOUT) :: DA
368 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
369 TYPE(
diag_t),
INTENT(INOUT) :: DAUP
370 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMASK
373 REAL(KIND=JPRB) :: ZHOOK_HANDLE
375 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:DIAG',0,zhook_handle)
379 IF (dgo%LSURF_BUDGET)
THEN 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,:)
397 IF (dgo%N2M>=1 .OR. dgo%LSURF_BUDGET)
THEN 399 daup%XTS (kmask(jj)) = da%XTS (jj)
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)
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)
430 IF (dgo%LSURF_VARS)
THEN 432 daup%XQS (kmask(jj)) = da%XQS (jj)
436 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:DIAG',1,zhook_handle)
443 REAL(KIND=JPRB) :: ZHOOK_HANDLE
445 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:INIT_EVAP_BUD',0,zhook_handle)
464 dea%XIRRIG_FLUX = 0.0
482 dea%XGFLUX_SN_FR = 0.0
484 dea%XLEGI_SN_FR = 0.0
486 dea%XLETR_SN_FR = 0.0
487 dea%XUSTAR_SN_FR = 0.0
490 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:INIT_EVAP_BUD',1,zhook_handle)
497 REAL(KIND=JPRB) :: ZHOOK_HANDLE
499 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:INIT_MEB_BUD',0,zhook_handle)
541 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:INIT_MEB_BUD',1,zhook_handle)
548 REAL(KIND=JPRB) :: ZHOOK_HANDLE
550 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:INIT_WATER_BUD',0,zhook_handle)
558 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:INIT_WATER_BUD',1,zhook_handle)
564 REAL,
INTENT(IN) :: PTSTEP
567 REAL(KIND=JPRB) :: ZHOOK_HANDLE
569 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:AVG_DIAG_TSTEP_EVAP',0,zhook_handle)
571 dea%XLEG (:) = deac%XLEG (:)/ptstep
572 dea%XLEGI (:) = deac%XLEGI (:)/ptstep
573 dea%XLEV (:) = deac%XLEV (:)/ptstep
574 dea%XLES (:) = deac%XLES (:)/ptstep
576 dea%XLESL (:) = deac%XLESL (:)/ptstep
577 dea%XSNDRIFT(:) = deac%XSNDRIFT(:)/ptstep
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
589 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:AVG_DIAG_TSTEP_EVAP',1,zhook_handle)
595 REAL,
INTENT(IN) :: PTSTEP
598 REAL(KIND=JPRB) :: ZHOOK_HANDLE
600 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:AVG_DIAG_TSTEP_WATER',0,zhook_handle)
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
608 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:AVG_DIAG_TSTEP_WATER',1,zhook_handle)
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
619 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:AVG_DIAG_TSTEP_SURF',0,zhook_handle)
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
627 da%XEVAP (:) = dac%XEVAP (:)/ptstep
628 da%XSUBL (:) = dac%XSUBL (:)/ptstep
630 da%XSWD(:) = dac%XSWD(:)/ptstep
631 da%XSWU(:) = dac%XSWU(:)/ptstep
632 da%XLWD(:) = dac%XLWD(:)/ptstep
633 da%XLWU(:) = dac%XLWU(:)/ptstep
635 IF (
lhook)
CALL dr_hook(
'MODE_DIAG:AVG_DIAG_TSTEP_SURF',1,zhook_handle)
subroutine init_surf_bud(DA, PVAL)
subroutine init_bud(DGO, DA, DAC, PVAL)
subroutine init_n2m_bud(DA, PVAL)
subroutine avg_diag_tstep_surf(PTSTEP, DAC, DA)
subroutine init_coef_bud(DA, PVAL)
subroutine diag(DGO, DA, HPROGRAM, DAUP, KMASK)
subroutine avg_diag_tstep_evap(PTSTEP, DEAC, DEA)
subroutine init_meb_bud(DEA)
subroutine alloc_bud(DGO, DA, KLU, KSW)
subroutine init_water_bud(DEA)
subroutine diag_evap(DGO, DA, DAC, HPROGRAM, DAUP, DAUPC, KMASK)
subroutine alloc_coef_bud(DA, KLUA)
subroutine alloc_n2m_bud(DA, KLUA)
subroutine init_evap_bud(DEA)
subroutine avg_diag_tstep_water(PTSTEP, DEAC, DEA)
subroutine diag_cumul(DGO, DA, DAC, HPROGRAM, DAUP, DAUPC, KMASK)
subroutine alloc_surf_bud(DA, KLUA, KLUAC, KSWA)