SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
diag_misc_teb_initn.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 ! ######spl
6  SUBROUTINE diag_misc_teb_init_n (DGCT, DGMT, DGMTO, TOP, &
7  hprogram,klu,ksw)
8 ! #####################
9 !
10 !!**** *DIAG_MISC_TEB_INIT_n* - routine to initialize TEB diagnostic variables
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !!** METHOD
16 !! ------
17 !!
18 !! EXTERNAL
19 !! --------
20 !!
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !!
29 !! AUTHOR
30 !! ------
31 !! V. Masson *Meteo France*
32 !!
33 !! MODIFICATIONS
34 !! -------------
35 !! Original 01/2004
36 !-------------------------------------------------------------------------------
37 !
38 !* 0. DECLARATIONS
39 ! ------------
40 !
41 !
46 !
47 USE modd_surf_par, ONLY : xundef
49 !
50 
51 
52 !
54 !
55 !
56 USE yomhook ,ONLY : lhook, dr_hook
57 USE parkind1 ,ONLY : jprb
58 !
59 IMPLICIT NONE
60 !
61 !* 0.1 Declarations of arguments
62 ! -------------------------
63 !
64 !
65 TYPE(diag_cumul_teb_t), INTENT(INOUT) :: dgct
66 TYPE(diag_misc_teb_t), INTENT(INOUT) :: dgmt
67 TYPE(diag_misc_teb_options_t), INTENT(INOUT) :: dgmto
68 TYPE(teb_options_t), INTENT(INOUT) :: top
69 !
70 INTEGER, INTENT(IN) :: klu ! size of arrays
71 INTEGER, INTENT(IN) :: ksw ! spectral bands
72  CHARACTER(LEN=6), INTENT(IN):: hprogram ! program calling
73 !
74 !* 0.2 Declarations of local variables
75 ! -------------------------------
76 !
77 INTEGER :: iresp ! IRESP : return-code if a problem appears
78  CHARACTER(LEN=12) :: yrec ! Name of the article to be read
79 REAL(KIND=JPRB) :: zhook_handle
80 !
81 !-------------------------------------------------------------------------------
82 !
83 !* surface energy budget
84 !
85 IF (lhook) CALL dr_hook('DIAG_MISC_TEB_INIT_N',0,zhook_handle)
86 !
87 !* miscellaneous fields
88 !
89 IF (dgmto%LSURF_MISC_BUDGET) THEN
90  ALLOCATE(dgmt%CUR%XQF_BLD (klu))
91  ALLOCATE(dgmt%CUR%XFLX_BLD (klu))
92  ALLOCATE(dgmt%CUR%XQF_TOWN (klu))
93  ALLOCATE(dgmt%CUR%XDQS_TOWN (klu))
94  ALLOCATE(dgmt%CUR%XRN_ROAD (klu))
95  ALLOCATE(dgmt%CUR%XH_ROAD (klu))
96  ALLOCATE(dgmt%CUR%XLE_ROAD (klu))
97  ALLOCATE(dgmt%CUR%XGFLUX_ROAD (klu))
98  ALLOCATE(dgmt%CUR%XRN_WALL_A (klu))
99  ALLOCATE(dgmt%CUR%XH_WALL_A (klu))
100  ALLOCATE(dgmt%CUR%XGFLUX_WALL_A (klu))
101  ALLOCATE(dgmt%CUR%XRN_WALL_B (klu))
102  ALLOCATE(dgmt%CUR%XH_WALL_B (klu))
103  ALLOCATE(dgmt%CUR%XGFLUX_WALL_B (klu))
104  ALLOCATE(dgmt%CUR%XRN_ROOF (klu))
105  ALLOCATE(dgmt%CUR%XH_ROOF (klu))
106  ALLOCATE(dgmt%CUR%XLE_ROOF (klu))
107  ALLOCATE(dgmt%CUR%XGFLUX_ROOF (klu))
108  ALLOCATE(dgmt%CUR%XRN_GARDEN (klu))
109  ALLOCATE(dgmt%CUR%XH_GARDEN (klu))
110  ALLOCATE(dgmt%CUR%XLE_GARDEN (klu))
111  ALLOCATE(dgmt%CUR%XGFLUX_GARDEN (klu))
112  ALLOCATE(dgmt%CUR%XRN_BLT (klu))
113  ALLOCATE(dgmt%CUR%XH_BLT (klu))
114  ALLOCATE(dgmt%CUR%XLE_BLT (klu))
115  ALLOCATE(dgmt%CUR%XGFLUX_BLT (klu))
116  ALLOCATE(dgmt%CUR%XRN_STRLROOF (klu))
117  ALLOCATE(dgmt%CUR%XH_STRLROOF (klu))
118  ALLOCATE(dgmt%CUR%XLE_STRLROOF (klu))
119  ALLOCATE(dgmt%CUR%XGFLUX_STRLROOF (klu))
120  ALLOCATE(dgmt%CUR%XRN_GREENROOF (klu))
121  ALLOCATE(dgmt%CUR%XH_GREENROOF (klu))
122  ALLOCATE(dgmt%CUR%XLE_GREENROOF (klu))
123  ALLOCATE(dgmt%CUR%XGFLUX_GREENROOF (klu))
124  ALLOCATE(dgmt%CUR%XG_GREENROOF_ROOF (klu))
125  ALLOCATE(dgmt%CUR%XRUNOFF_TOWN (klu))
126  ALLOCATE(dgmt%CUR%XRUNOFF_GARDEN (klu))
127  ALLOCATE(dgmt%CUR%XRUNOFF_ROAD (klu))
128  ALLOCATE(dgmt%CUR%XRUNOFF_STRLROOF (klu))
129  ALLOCATE(dgmt%CUR%XRUNOFF_ROOF (klu))
130  ALLOCATE(dgmt%CUR%XRUNOFF_GREENROOF (klu))
131  ALLOCATE(dgmt%CUR%XDRAIN_GREENROOF (klu))
132  ALLOCATE(dgmt%CUR%XDRAIN_GARDEN (klu))
133  ALLOCATE(dgmt%CUR%XIRRIG_GREENROOF (klu))
134  ALLOCATE(dgmt%CUR%XIRRIG_GARDEN (klu))
135  ALLOCATE(dgmt%CUR%XIRRIG_ROAD (klu))
136  !
137  ALLOCATE(dgmt%CUR%XABS_SW_ROOF (klu))
138  ALLOCATE(dgmt%CUR%XABS_SW_SNOW_ROOF (klu))
139  ALLOCATE(dgmt%CUR%XABS_LW_ROOF (klu))
140  ALLOCATE(dgmt%CUR%XABS_LW_SNOW_ROOF (klu))
141  ALLOCATE(dgmt%CUR%XABS_SW_ROAD (klu))
142  ALLOCATE(dgmt%CUR%XABS_SW_SNOW_ROAD (klu))
143  ALLOCATE(dgmt%CUR%XABS_LW_ROAD (klu))
144  ALLOCATE(dgmt%CUR%XABS_LW_SNOW_ROAD (klu))
145  ALLOCATE(dgmt%CUR%XABS_SW_WALL_A (klu))
146  ALLOCATE(dgmt%CUR%XABS_SW_WALL_B (klu))
147  ALLOCATE(dgmt%CUR%XABS_LW_WALL_A (klu))
148  ALLOCATE(dgmt%CUR%XABS_LW_WALL_B (klu))
149  ALLOCATE(dgmt%CUR%XABS_SW_GARDEN (klu))
150  ALLOCATE(dgmt%CUR%XABS_LW_GARDEN (klu))
151  ALLOCATE(dgmt%CUR%XABS_SW_GREENROOF (klu))
152  ALLOCATE(dgmt%CUR%XABS_LW_GREENROOF (klu))
153  !
154  ALLOCATE(dgmt%CUR%XREF_SW_FAC (klu))
155  ALLOCATE(dgmt%CUR%XREF_SW_GRND (klu))
156  !
157  ALLOCATE(dgmt%CUR%XEMIT_LW_FAC (klu))
158  ALLOCATE(dgmt%CUR%XEMIT_LW_GRND (klu))
159  !
160  ALLOCATE(dgmt%CUR%XTCOOL_CUR_TARGET (klu))
161  ALLOCATE(dgmt%CUR%XTHEAT_CUR_TARGET (klu))
162  ALLOCATE(dgmt%CUR%XCUR_QIN (klu))
163  !
164  IF (top%CBEM=='BEM') THEN
165  ALLOCATE(dgmt%CUR%XH_BLD_COOL (klu))
166  ALLOCATE(dgmt%CUR%XT_BLD_COOL (klu))
167  ALLOCATE(dgmt%CUR%XH_BLD_HEAT (klu))
168  ALLOCATE(dgmt%CUR%XLE_BLD_COOL (klu))
169  ALLOCATE(dgmt%CUR%XLE_BLD_HEAT (klu))
170  ALLOCATE(dgmt%CUR%XH_WASTE (klu))
171  ALLOCATE(dgmt%CUR%XLE_WASTE (klu))
172  ALLOCATE(dgmt%CUR%XHVAC_COOL (klu))
173  ALLOCATE(dgmt%CUR%XHVAC_HEAT (klu))
174  ALLOCATE(dgmt%CUR%XCAP_SYS (klu))
175  ALLOCATE(dgmt%CUR%XM_SYS (klu))
176  ALLOCATE(dgmt%CUR%XCOP (klu))
177  ALLOCATE(dgmt%CUR%XQ_SYS (klu))
178  ALLOCATE(dgmt%CUR%XT_SYS (klu))
179  ALLOCATE(dgmt%CUR%XTR_SW_WIN (klu))
180  ALLOCATE(dgmt%CUR%XFAN_POWER (klu))
181  ALLOCATE(dgmt%CUR%XT_RAD_IND (klu))
182  ALLOCATE(dgmt%CUR%XHU_BLD (klu))
183  ALLOCATE(dgmt%CUR%XABS_SW_WIN (klu))
184  ALLOCATE(dgmt%CUR%XABS_LW_WIN (klu))
185  ENDIF
186  !
187  IF (top%LSOLAR_PANEL) THEN
188  ALLOCATE(dgmt%CUR%XABS_SW_PANEL (klu))
189  ALLOCATE(dgmt%CUR%XABS_LW_PANEL (klu))
190  ALLOCATE(dgmt%CUR%XRN_PANEL (klu))
191  ALLOCATE(dgmt%CUR%XH_PANEL (klu))
192  ALLOCATE(dgmt%CUR%XTHER_PROD_PANEL(klu))
193  ALLOCATE(dgmt%CUR%XPHOT_PROD_PANEL(klu))
194  ALLOCATE(dgmt%CUR%XPROD_PANEL (klu))
195  ALLOCATE(dgmt%CUR%XTHER_PROD_BLD (klu))
196  ALLOCATE(dgmt%CUR%XPHOT_PROD_BLD (klu))
197  END IF
198  !
199  ALLOCATE(dgct%CUR%XRUNOFFC_TOWN (klu))
200  ALLOCATE(dgct%CUR%XRUNOFFC_GARDEN (klu))
201  ALLOCATE(dgct%CUR%XDRAINC_GARDEN (klu))
202  ALLOCATE(dgct%CUR%XIRRIGC_GARDEN (klu))
203  ALLOCATE(dgct%CUR%XRUNOFFC_ROAD (klu))
204  ALLOCATE(dgct%CUR%XIRRIGC_ROAD (klu))
205  ALLOCATE(dgct%CUR%XRUNOFFC_STRLROOF (klu))
206  ALLOCATE(dgct%CUR%XRUNOFFC_ROOF (klu))
207  ALLOCATE(dgct%CUR%XRUNOFFC_GREENROOF (klu))
208  ALLOCATE(dgct%CUR%XDRAINC_GREENROOF (klu))
209  ALLOCATE(dgct%CUR%XIRRIGC_GREENROOF (klu))
210  IF (top%CBEM=='BEM') THEN
211  ALLOCATE(dgct%CUR%XHVACC_COOL (klu))
212  ALLOCATE(dgct%CUR%XHVACC_HEAT (klu))
213  END IF
214  IF (top%LSOLAR_PANEL) THEN
215  ALLOCATE(dgct%CUR%XTHER_PROD_BLDC(klu))
216  ALLOCATE(dgct%CUR%XPHOT_PROD_BLDC(klu))
217  END IF
218  dgmt%CUR%XQF_BLD = xundef
219  dgmt%CUR%XFLX_BLD = xundef
220  dgmt%CUR%XQF_TOWN = xundef
221  dgmt%CUR%XDQS_TOWN = xundef
222  dgmt%CUR%XRN_ROAD = xundef
223  dgmt%CUR%XH_ROAD = xundef
224  dgmt%CUR%XLE_ROAD = xundef
225  dgmt%CUR%XGFLUX_ROAD = xundef
226  dgmt%CUR%XRN_WALL_A = xundef
227  dgmt%CUR%XH_WALL_A = xundef
228  dgmt%CUR%XGFLUX_WALL_A = xundef
229  dgmt%CUR%XRN_WALL_B = xundef
230  dgmt%CUR%XH_WALL_B = xundef
231  dgmt%CUR%XGFLUX_WALL_B = xundef
232  dgmt%CUR%XRN_ROOF = xundef
233  dgmt%CUR%XH_ROOF = xundef
234  dgmt%CUR%XLE_ROOF = xundef
235  dgmt%CUR%XGFLUX_ROOF = xundef
236  dgmt%CUR%XRN_GARDEN = xundef
237  dgmt%CUR%XH_GARDEN = xundef
238  dgmt%CUR%XLE_GARDEN = xundef
239  dgmt%CUR%XGFLUX_GARDEN = xundef
240  dgmt%CUR%XRN_BLT = xundef
241  dgmt%CUR%XH_BLT = xundef
242  dgmt%CUR%XLE_BLT = xundef
243  dgmt%CUR%XGFLUX_BLT = xundef
244  dgmt%CUR%XRN_STRLROOF = xundef
245  dgmt%CUR%XH_STRLROOF = xundef
246  dgmt%CUR%XLE_STRLROOF = xundef
247  dgmt%CUR%XGFLUX_STRLROOF = xundef
248  dgmt%CUR%XRN_GREENROOF = xundef
249  dgmt%CUR%XH_GREENROOF = xundef
250  dgmt%CUR%XLE_GREENROOF = xundef
251  dgmt%CUR%XGFLUX_GREENROOF = xundef
252  dgmt%CUR%XG_GREENROOF_ROOF = xundef
253  dgmt%CUR%XRUNOFF_TOWN = xundef
254  dgmt%CUR%XRUNOFF_GARDEN = xundef
255  dgmt%CUR%XRUNOFF_ROAD = xundef
256  dgmt%CUR%XRUNOFF_ROOF = xundef
257  dgmt%CUR%XRUNOFF_STRLROOF = xundef
258  dgmt%CUR%XRUNOFF_GREENROOF = xundef
259  dgmt%CUR%XDRAIN_GREENROOF = xundef
260  dgmt%CUR%XDRAIN_GARDEN = xundef
261  dgmt%CUR%XIRRIG_GREENROOF = xundef
262  dgmt%CUR%XIRRIG_GARDEN = xundef
263  dgmt%CUR%XIRRIG_ROAD = xundef
264 !
265  dgmt%CUR%XABS_SW_ROOF = xundef
266  dgmt%CUR%XABS_SW_SNOW_ROOF = xundef
267  dgmt%CUR%XABS_LW_ROOF = xundef
268  dgmt%CUR%XABS_LW_SNOW_ROOF = xundef
269  dgmt%CUR%XABS_SW_ROAD = xundef
270  dgmt%CUR%XABS_SW_SNOW_ROAD = xundef
271  dgmt%CUR%XABS_LW_ROAD = xundef
272  dgmt%CUR%XABS_LW_SNOW_ROAD = xundef
273  dgmt%CUR%XABS_SW_WALL_A = xundef
274  dgmt%CUR%XABS_SW_WALL_B = xundef
275  dgmt%CUR%XABS_LW_WALL_A = xundef
276  dgmt%CUR%XABS_LW_WALL_B = xundef
277  dgmt%CUR%XABS_SW_GARDEN = xundef
278  dgmt%CUR%XABS_LW_GARDEN = xundef
279  dgmt%CUR%XABS_SW_GREENROOF = xundef
280  dgmt%CUR%XABS_LW_GREENROOF = xundef
281  !
282  dgmt%CUR%XREF_SW_FAC = xundef
283  dgmt%CUR%XREF_SW_GRND = xundef
284  !
285  dgmt%CUR%XEMIT_LW_FAC = xundef
286  dgmt%CUR%XEMIT_LW_GRND = xundef
287  !
288  dgmt%CUR%XTCOOL_CUR_TARGET = xundef
289  dgmt%CUR%XTHEAT_CUR_TARGET = xundef
290  dgmt%CUR%XCUR_QIN = xundef
291  !
292  IF (top%CBEM=='BEM') THEN
293  dgmt%CUR%XH_BLD_COOL = xundef
294  dgmt%CUR%XT_BLD_COOL = xundef
295  dgmt%CUR%XH_BLD_HEAT = xundef
296  dgmt%CUR%XLE_BLD_COOL = xundef
297  dgmt%CUR%XLE_BLD_HEAT = xundef
298  dgmt%CUR%XH_WASTE = xundef
299  dgmt%CUR%XLE_WASTE = xundef
300  dgmt%CUR%XHVAC_COOL = xundef
301  dgmt%CUR%XHVAC_HEAT = xundef
302  dgmt%CUR%XCAP_SYS = xundef
303  dgmt%CUR%XM_SYS = xundef
304  dgmt%CUR%XCOP = xundef
305  dgmt%CUR%XQ_SYS = xundef
306  dgmt%CUR%XT_SYS = xundef
307  dgmt%CUR%XTR_SW_WIN = xundef
308  dgmt%CUR%XFAN_POWER = xundef
309  dgmt%CUR%XT_RAD_IND = xundef
310  dgmt%CUR%XHU_BLD = xundef
311  dgmt%CUR%XABS_SW_WIN = xundef
312  dgmt%CUR%XABS_LW_WIN = xundef
313  ENDIF
314 
315  IF (top%LSOLAR_PANEL) THEN
316  dgmt%CUR%XABS_SW_PANEL = xundef
317  dgmt%CUR%XABS_LW_PANEL = xundef
318  dgmt%CUR%XRN_PANEL = xundef
319  dgmt%CUR%XH_PANEL = xundef
320  dgmt%CUR%XTHER_PROD_PANEL= xundef
321  dgmt%CUR%XPHOT_PROD_PANEL= xundef
322  dgmt%CUR%XPROD_PANEL = xundef
323  dgmt%CUR%XTHER_PROD_BLD = xundef
324  dgmt%CUR%XPHOT_PROD_BLD = xundef
325  END IF
326 !
327  dgct%CUR%XRUNOFFC_TOWN = 0.0
328  dgct%CUR%XRUNOFFC_GARDEN = 0.0
329  dgct%CUR%XRUNOFFC_ROAD = 0.0
330  dgct%CUR%XRUNOFFC_ROOF = 0.0
331  dgct%CUR%XRUNOFFC_STRLROOF = 0.0
332  dgct%CUR%XRUNOFFC_GREENROOF = 0.0
333  dgct%CUR%XDRAINC_GREENROOF = 0.0
334  dgct%CUR%XDRAINC_GARDEN = 0.0
335  dgct%CUR%XIRRIGC_GREENROOF = 0.0
336  dgct%CUR%XIRRIGC_GARDEN = 0.0
337  dgct%CUR%XIRRIGC_ROAD = 0.0
338  IF (top%CBEM=='BEM') THEN
339  dgct%CUR%XHVACC_COOL = 0.0
340  dgct%CUR%XHVACC_HEAT = 0.0
341  END IF
342  IF (top%LSOLAR_PANEL) THEN
343  dgct%CUR%XTHER_PROD_BLDC = 0.
344  dgct%CUR%XPHOT_PROD_BLDC = 0.
345  END IF
346 ENDIF
347 !
348 IF (lhook) CALL dr_hook('DIAG_MISC_TEB_INIT_N',1,zhook_handle)
349 !
350 !-------------------------------------------------------------------------------
351 !
352 END SUBROUTINE diag_misc_teb_init_n
subroutine diag_misc_teb_init_n(DGCT, DGMT, DGMTO, TOP, HPROGRAM, KLU, KSW)