SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
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 (DGCT, DGMT, TOP, &
7  ptstep)
8 !##################################
9 !
10 !
11 !!**** *CUMUL_DIAG_TEB_n*
12 !!
13 !! PURPOSE
14 !! -------
15 ! Cumulates some diagnostics for TEB
16 !
17 !!** METHOD
18 !! ------
19 !
20 !! EXTERNAL
21 !! --------
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !!
26 !!
27 !! REFERENCE
28 !! ---------
29 !!
30 !! AUTHOR
31 !! ------
32 !! C. de Munck * Meteo-France *
33 !!
34 !! MODIFICATIONS
35 !! -------------
36 !! Original 02/2013
37 !! 08/2013 (V. Masson) adds solar panels
38 !-------------------------------------------------------------------------------
39 !
40 !* 0. DECLARATIONS
41 ! ------------
42 !
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_cumul_teb_t), INTENT(INOUT) :: dgct
58 TYPE(diag_misc_teb_t), INTENT(INOUT) :: dgmt
59 TYPE(teb_options_t), INTENT(INOUT) :: top
60 !
61  REAL, INTENT(IN) :: ptstep ! time step
62 !
63 !* 0.2 declarations of local variables
64 !
65 INTEGER :: ji
66 
67 REAL(KIND=JPRB) :: zhook_handle
68 !-------------------------------------------------------------------------------
69 !
70 ! 0. Initialization
71 ! --------------
72 IF (lhook) CALL dr_hook('CUMUL_DIAG_TEB_N',0,zhook_handle)
73 !
74 ! 1. Time-cumulated diagnostics for TEB
75 ! ----------------------------------
76 !
77 DO ji=1,SIZE(dgmt%CUR%XRUNOFF_ROOF,1)
78 !
79  IF (top%LSOLAR_PANEL) THEN
80  IF (dgmt%CUR%XTHER_PROD_BLD(ji) .NE. xundef) THEN
81  dgct%CUR%XTHER_PROD_BLDC(ji) = dgct%CUR%XTHER_PROD_BLDC(ji) + dgmt%CUR%XTHER_PROD_BLD(ji) * ptstep
82  ENDIF
83  !
84  IF (dgmt%CUR%XPHOT_PROD_BLD(ji) .NE. xundef) THEN
85  dgct%CUR%XPHOT_PROD_BLDC(ji) = dgct%CUR%XPHOT_PROD_BLDC(ji) + dgmt%CUR%XPHOT_PROD_BLD(ji) * ptstep
86  ENDIF
87  END IF
88 
89  IF (top%CBEM == 'BEM') THEN
90  IF (dgmt%CUR%XHVAC_COOL(ji) .NE. xundef) THEN
91  dgct%CUR%XHVACC_COOL(ji) = dgct%CUR%XHVACC_COOL(ji) + dgmt%CUR%XHVAC_COOL(ji) * ptstep
92  ENDIF
93  !
94  IF (dgmt%CUR%XHVAC_HEAT(ji) .NE. xundef) THEN
95  dgct%CUR%XHVACC_HEAT(ji) = dgct%CUR%XHVACC_HEAT(ji) + dgmt%CUR%XHVAC_HEAT(ji) * ptstep
96  ENDIF
97  ENDIF
98  !
99  IF (dgmt%CUR%XRUNOFF_TOWN(ji) .NE. xundef) THEN
100  dgct%CUR%XRUNOFFC_TOWN(ji) = dgct%CUR%XRUNOFFC_TOWN(ji) + dgmt%CUR%XRUNOFF_TOWN(ji) * ptstep
101  ENDIF
102  !
103  IF (dgmt%CUR%XRUNOFF_GARDEN(ji) .NE. xundef) THEN
104  dgct%CUR%XRUNOFFC_GARDEN(ji) = dgct%CUR%XRUNOFFC_GARDEN(ji) + dgmt%CUR%XRUNOFF_GARDEN(ji) * ptstep
105  ENDIF
106  !
107  IF (dgmt%CUR%XRUNOFF_ROAD(ji) .NE. xundef) THEN
108  dgct%CUR%XRUNOFFC_ROAD(ji) = dgct%CUR%XRUNOFFC_ROAD(ji) + dgmt%CUR%XRUNOFF_ROAD(ji) * ptstep
109  ENDIF
110  !
111  IF (dgmt%CUR%XRUNOFF_ROOF(ji) .NE. xundef) THEN
112  dgct%CUR%XRUNOFFC_ROOF(ji) = dgct%CUR%XRUNOFFC_ROOF(ji) + dgmt%CUR%XRUNOFF_ROOF(ji) * ptstep
113  ENDIF
114  !
115  IF (dgmt%CUR%XRUNOFF_STRLROOF(ji) .NE. xundef) THEN
116  dgct%CUR%XRUNOFFC_STRLROOF(ji) = dgct%CUR%XRUNOFFC_STRLROOF(ji) + dgmt%CUR%XRUNOFF_STRLROOF(ji) * ptstep
117  ENDIF
118  !
119  IF (dgmt%CUR%XDRAIN_GARDEN(ji) .NE. xundef) THEN
120  dgct%CUR%XDRAINC_GARDEN(ji) = dgct%CUR%XDRAINC_GARDEN(ji) + dgmt%CUR%XDRAIN_GARDEN(ji) * ptstep
121  ENDIF
122  !
123  IF (dgmt%CUR%XIRRIG_GARDEN(ji) .NE. xundef) THEN
124  dgct%CUR%XIRRIGC_GARDEN(ji) = dgct%CUR%XIRRIGC_GARDEN(ji) + dgmt%CUR%XIRRIG_GARDEN(ji) * ptstep
125  ENDIF
126  !
127  IF (dgmt%CUR%XIRRIG_ROAD(ji) .NE. xundef) THEN
128  dgct%CUR%XIRRIGC_ROAD(ji) = dgct%CUR%XIRRIGC_ROAD(ji) + dgmt%CUR%XIRRIG_ROAD(ji) * ptstep
129  ENDIF
130  !
131  IF (top%LGREENROOF) THEN
132  IF (dgmt%CUR%XRUNOFF_GREENROOF(ji) .NE. xundef) THEN
133  dgct%CUR%XRUNOFFC_GREENROOF(ji) = dgct%CUR%XRUNOFFC_GREENROOF(ji)+ dgmt%CUR%XRUNOFF_GREENROOF(ji) * ptstep
134  ENDIF
135  !
136  IF (dgmt%CUR%XDRAIN_GREENROOF(ji) .NE. xundef) THEN
137  dgct%CUR%XDRAINC_GREENROOF(ji) = dgct%CUR%XDRAINC_GREENROOF(ji) + dgmt%CUR%XDRAIN_GREENROOF(ji) * ptstep
138  ENDIF
139  !
140  IF (dgmt%CUR%XIRRIG_GREENROOF(ji) .NE. xundef) THEN
141  dgct%CUR%XIRRIGC_GREENROOF(ji) = dgct%CUR%XIRRIGC_GREENROOF(ji) + dgmt%CUR%XIRRIG_GREENROOF(ji) * ptstep
142  ENDIF
143  ENDIF
144  !
145 ENDDO
146 !
147 IF (lhook) CALL dr_hook('CUMUL_DIAG_TEB_N',1,zhook_handle)
148 !
149 !-------------------------------------------------------------------------------
150 !
151 END SUBROUTINE cumul_diag_teb_n
subroutine cumul_diag_teb_n(DGCT, DGMT, TOP, PTSTEP)