SURFEX v8.1
General documentation of Surfex
cumul_diag_tebn.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 cumul_diag_teb_n (DMTC, DMT, GDDEC, GDDE, GRDEC, GRDE, TOP, PTSTEP)
7 !##################################
8 !
9 !
10 !!**** *CUMUL_DIAG_TEB_n*
11 !!
12 !! PURPOSE
13 !! -------
14 ! Cumulates some diagnostics for TEB
15 !
16 !!** METHOD
17 !! ------
18 !
19 !! EXTERNAL
20 !! --------
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !!
26 !! REFERENCE
27 !! ---------
28 !!
29 !! AUTHOR
30 !! ------
31 !! C. de Munck * Meteo-France *
32 !!
33 !! MODIFICATIONS
34 !! -------------
35 !! Original 02/2013
36 !! 08/2013 (V. Masson) adds solar panels
37 !-------------------------------------------------------------------------------
38 !
39 !* 0. DECLARATIONS
40 ! ------------
41 !
44 !
46 !
47 USE modd_surf_par, ONLY : xundef
48 !
49 USE yomhook ,ONLY : lhook, dr_hook
50 USE parkind1 ,ONLY : jprb
51 !
52 IMPLICIT NONE
53 !
54 !* 0.1 declarations of arguments
55 !
56 !
57 TYPE(diag_misc_teb_t), INTENT(INOUT) :: DMTC
58 TYPE(diag_misc_teb_t), INTENT(INOUT) :: DMT
59 TYPE(teb_options_t), INTENT(INOUT) :: TOP
60 !
61 TYPE(diag_evap_isba_t), INTENT(INOUT) :: GDDE
62 TYPE(diag_evap_isba_t), INTENT(INOUT) :: GDDEC
63 TYPE(diag_evap_isba_t), INTENT(INOUT) :: GRDE
64 TYPE(diag_evap_isba_t), INTENT(INOUT) :: GRDEC
65 !
66 REAL, INTENT(IN) :: PTSTEP ! time step
67 !
68 !* 0.2 declarations of local variables
69 !
70 INTEGER :: JI
71 
72 REAL(KIND=JPRB) :: ZHOOK_HANDLE
73 !-------------------------------------------------------------------------------
74 !
75 ! 0. Initialization
76 ! --------------
77 IF (lhook) CALL dr_hook('CUMUL_DIAG_TEB_N',0,zhook_handle)
78 !
79 ! 1. Time-cumulated diagnostics for TEB
80 ! ----------------------------------
81 !
82 DO ji=1,SIZE(dmt%XRUNOFF_ROOF,1)
83 !
84  IF (top%LSOLAR_PANEL) THEN
85  IF (dmt%XTHER_PROD_BLD(ji) .NE. xundef) THEN
86  dmtc%XTHER_PROD_BLD(ji) = dmtc%XTHER_PROD_BLD(ji) + dmt%XTHER_PROD_BLD(ji) * ptstep
87  ENDIF
88  !
89  IF (dmt%XPHOT_PROD_BLD(ji) .NE. xundef) THEN
90  dmtc%XPHOT_PROD_BLD(ji) = dmtc%XPHOT_PROD_BLD(ji) + dmt%XPHOT_PROD_BLD(ji) * ptstep
91  ENDIF
92  END IF
93 
94  IF (top%CBEM == 'BEM') THEN
95  IF (dmt%XHVAC_COOL(ji) .NE. xundef) THEN
96  dmtc%XHVAC_COOL(ji) = dmtc%XHVAC_COOL(ji) + dmt%XHVAC_COOL(ji) * ptstep
97  ENDIF
98  !
99  IF (dmt%XHVAC_HEAT(ji) .NE. xundef) THEN
100  dmtc%XHVAC_HEAT(ji) = dmtc%XHVAC_HEAT(ji) + dmt%XHVAC_HEAT(ji) * ptstep
101  ENDIF
102  ENDIF
103  !
104  IF (dmt%XRUNOFF_TOWN(ji) .NE. xundef) THEN
105  dmtc%XRUNOFF_TOWN(ji) = dmtc%XRUNOFF_TOWN(ji) + dmt%XRUNOFF_TOWN(ji) * ptstep
106  ENDIF
107  !
108  IF (dmt%XRUNOFF_ROAD(ji) .NE. xundef) THEN
109  dmtc%XRUNOFF_ROAD(ji) = dmtc%XRUNOFF_ROAD(ji) + dmt%XRUNOFF_ROAD(ji) * ptstep
110  ENDIF
111  !
112  IF (dmt%XRUNOFF_ROOF(ji) .NE. xundef) THEN
113  dmtc%XRUNOFF_ROOF(ji) = dmtc%XRUNOFF_ROOF(ji) + dmt%XRUNOFF_ROOF(ji) * ptstep
114  ENDIF
115  !
116  IF (dmt%XRUNOFF_STRLROOF(ji) .NE. xundef) THEN
117  dmtc%XRUNOFF_STRLROOF(ji) = dmtc%XRUNOFF_STRLROOF(ji) + dmt%XRUNOFF_STRLROOF(ji) * ptstep
118  ENDIF
119  !
120  IF (dmt%XIRRIG_ROAD(ji) .NE. xundef) THEN
121  dmtc%XIRRIG_ROAD(ji) = dmtc%XIRRIG_ROAD(ji) + dmt%XIRRIG_ROAD(ji) * ptstep
122  ENDIF
123  !
124  IF (top%LGARDEN) THEN
125  !
126  IF (gdde%XRUNOFF(ji) .NE. xundef) THEN
127  gddec%XRUNOFF(ji) = gddec%XRUNOFF(ji) + gdde%XRUNOFF(ji) * ptstep
128  ENDIF
129  !
130  IF (gdde%XDRAIN(ji) .NE. xundef) THEN
131  gddec%XDRAIN(ji) = gddec%XDRAIN(ji) + gdde%XDRAIN(ji) * ptstep
132  ENDIF
133  !
134  IF (dmt%XIRRIG_GARDEN(ji) .NE. xundef) THEN
135  dmtc%XIRRIG_GARDEN(ji) = dmtc%XIRRIG_GARDEN(ji) + dmt%XIRRIG_GARDEN(ji) * ptstep
136  ENDIF
137  !
138  ENDIF
139  !
140  IF (top%LGREENROOF) THEN
141 
142  IF (grde%XRUNOFF(ji) .NE. xundef) THEN
143  grdec%XRUNOFF(ji) = grdec%XRUNOFF(ji)+ grde%XRUNOFF(ji) * ptstep
144  ENDIF
145  !
146  IF (grde%XDRAIN(ji) .NE. xundef) THEN
147  grdec%XDRAIN(ji) = grdec%XDRAIN(ji) + grde%XDRAIN(ji) * ptstep
148  ENDIF
149  !
150  IF (dmt%XIRRIG_GREENROOF(ji) .NE. xundef) THEN
151  dmtc%XIRRIG_GREENROOF(ji) = dmtc%XIRRIG_GREENROOF(ji) + dmt%XIRRIG_GREENROOF(ji) * ptstep
152  ENDIF
153  ENDIF
154  !
155 ENDDO
156 !
157 IF (lhook) CALL dr_hook('CUMUL_DIAG_TEB_N',1,zhook_handle)
158 !
159 !-------------------------------------------------------------------------------
160 !
161 END SUBROUTINE cumul_diag_teb_n
subroutine cumul_diag_teb_n(DMTC, DMT, GDDEC, GDDE, GRDEC, GRDE, TOP, PTSTEP)
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15