SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
write_diag_misc_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 write_diag_misc_teb_n (DTCO, DGU, U, DGCT, DGMT, DGMTO, T, TOP, &
7  hprogram,kteb_patch)
8 ! #################################
9 !
10 !!**** *WRITE_DIAG_MISC_TEB* - writes the TEB diagnostic fields
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !!
16 !!** METHOD
17 !! ------
18 !!
19 !! REFERENCE
20 !! ---------
21 !!
22 !!
23 !! AUTHOR
24 !! ------
25 !! P. Le Moigne *Meteo France*
26 !!
27 !! MODIFICATIONS
28 !! -------------
29 !! Original 10/2004
30 !-------------------------------------------------------------------------------
31 !
32 !* 0. DECLARATIONS
33 ! ------------
34 !
35 !
38 USE modd_surf_atm_n, ONLY : surf_atm_t
42 USE modd_teb_n, ONLY : teb_t
44 !
45 USE modi_init_io_surf_n
47 USE modd_surf_par, ONLY : xundef
48 USE modi_end_io_surf_n
49 !
50 !
51 USE yomhook ,ONLY : lhook, dr_hook
52 USE parkind1 ,ONLY : jprb
53 !
54 IMPLICIT NONE
55 !
56 !* 0.1 Declarations of arguments
57 ! -------------------------
58 !
59 !
60 TYPE(data_cover_t), INTENT(INOUT) :: dtco
61 TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
62 TYPE(surf_atm_t), INTENT(INOUT) :: u
63 TYPE(diag_cumul_teb_t), INTENT(INOUT) :: dgct
64 TYPE(diag_misc_teb_t), INTENT(INOUT) :: dgmt
65 TYPE(diag_misc_teb_options_t), INTENT(INOUT) :: dgmto
66 TYPE(teb_t), INTENT(INOUT) :: t
67 TYPE(teb_options_t), INTENT(INOUT) :: top
68 !
69  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling
70 INTEGER, INTENT(IN) :: kteb_patch ! patch number being written
71 !
72 !* 0.2 Declarations of local variables
73 ! -------------------------------
74 !
75 INTEGER :: iresp ! IRESP : return-code if a problem appears
76  CHARACTER(LEN=3) :: ypatch ! Prefix for current patch
77  CHARACTER(LEN=12) :: yrecfm ! Name of the article to be read
78  CHARACTER(LEN=100):: ycomment ! Comment string
79 REAL(KIND=JPRB) :: zhook_handle
80 !
81 !-------------------------------------------------------------------------------
82 !
83 ! Initialisation for IO
84 ! ---------------------
85 !
86 IF (lhook) CALL dr_hook('WRITE_DIAG_MISC_TEB_N',0,zhook_handle)
87  CALL init_io_surf_n(dtco, dgu, u, &
88  hprogram,'TOWN ','TEB ','WRITE')
89 !
90 ypatch = ' '
91 IF (top%NTEB_PATCH>1) WRITE(ypatch,fmt='(A,I1,A)') 'T',kteb_patch,'_'
92 !-------------------------------------------------------------------------------
93 !
94 IF (dgmto%LSURF_MISC_BUDGET) THEN
95 !
96 !* Miscellaneous fields :
97 ! ----------------------
98 !
99 yrecfm='D_RD'
100 ycomment='Road fraction'
101  CALL write_surf(dgu, u, &
102  hprogram,yrecfm,t%CUR%XROAD(:),iresp,hcomment=ycomment)
103 !
104 yrecfm='Z0_TOWN'
105 yrecfm=adjustl(ypatch//yrecfm)
106 ycomment='town roughness length'
107 !
108  CALL write_surf(dgu, u, &
109  hprogram,yrecfm,t%CUR%XZ0_TOWN(:),iresp,hcomment=ycomment)
110 !
111 yrecfm='XQF_BLD'
112 yrecfm=adjustl(ypatch//yrecfm)
113 ycomment='domestic heating'//' (W/m2)'
114 !
115  CALL write_surf(dgu, u, &
116  hprogram,yrecfm,dgmt%CUR%XQF_BLD(:),iresp,hcomment=ycomment)
117 !
118 yrecfm='XQF_TOWN'
119 yrecfm=adjustl(ypatch//yrecfm)
120 ycomment='total anthropogenic heat'//' (W/m2)'
121 !
122  CALL write_surf(dgu, u, &
123  hprogram,yrecfm,dgmt%CUR%XQF_TOWN(:),iresp,hcomment=ycomment)
124 !
125 yrecfm='XDQS_TOWN'
126 yrecfm=adjustl(ypatch//yrecfm)
127 ycomment='heat storage inside building'//' (W/m2)'
128 !
129  CALL write_surf(dgu, u, &
130  hprogram,yrecfm,dgmt%CUR%XDQS_TOWN(:),iresp,hcomment=ycomment)
131 !
132 yrecfm='RUNOFF_TW'
133 yrecfm=adjustl(ypatch//yrecfm)
134 ycomment='aggregated runoff for town'//' (kg/m2/s)'
135 !
136  CALL write_surf(dgu, u, &
137  hprogram,yrecfm,dgmt%CUR%XRUNOFF_TOWN(:),iresp,hcomment=ycomment)
138 !
139 yrecfm='RN_RD'
140 yrecfm=adjustl(ypatch//yrecfm)
141 ycomment=' net radiation at road'//' (W/m2)'
142 !
143  CALL write_surf(dgu, u, &
144  hprogram,yrecfm,dgmt%CUR%XRN_ROAD(:),iresp,hcomment=ycomment)
145 !
146 yrecfm='H_RD'
147 yrecfm=adjustl(ypatch//yrecfm)
148 ycomment='road sensible heat flux'//' (W/m2)'
149 !
150  CALL write_surf(dgu, u, &
151  hprogram,yrecfm,dgmt%CUR%XH_ROAD(:),iresp,hcomment=ycomment)
152 !
153 yrecfm='LE_RD'
154 yrecfm=adjustl(ypatch//yrecfm)
155 ycomment='road latent heat flux'//' (W/m2)'
156 !
157  CALL write_surf(dgu, u, &
158  hprogram,yrecfm,dgmt%CUR%XLE_ROAD(:),iresp,hcomment=ycomment)
159 !
160 yrecfm='GFLUX_RD'
161 yrecfm=adjustl(ypatch//yrecfm)
162 ycomment='net road conduction flux'//' (W/m2)'
163 !
164  CALL write_surf(dgu, u, &
165  hprogram,yrecfm,dgmt%CUR%XGFLUX_ROAD(:),iresp,hcomment=ycomment)
166 !
167 yrecfm='RUNOFF_RD'
168 yrecfm=adjustl(ypatch//yrecfm)
169 ycomment='road surface runoff'//' (kg/m2/s)'
170 !
171  CALL write_surf(dgu, u, &
172  hprogram,yrecfm,dgmt%CUR%XRUNOFF_ROAD(:),iresp,hcomment=ycomment)
173 !
174 IF (top%CWALL_OPT=='UNIF') THEN
175  !
176  yrecfm='RN_WL'
177  yrecfm=adjustl(ypatch//yrecfm)
178  ycomment='net radiation for wall '//yrecfm//' (W/m2)'
179  !
180  CALL write_surf(dgu, u, &
181  hprogram,yrecfm,dgmt%CUR%XRN_WALL_A(:),iresp,hcomment=ycomment)
182  !
183  yrecfm='H_WL'
184  yrecfm=adjustl(ypatch//yrecfm)
185  ycomment='wall sensible heat flux'//yrecfm//' (W/m2)'
186  !
187  CALL write_surf(dgu, u, &
188  hprogram,yrecfm,dgmt%CUR%XH_WALL_A(:),iresp,hcomment=ycomment)
189  !
190  yrecfm='GFLUX_WL'
191  yrecfm=adjustl(ypatch//yrecfm)
192  ycomment='net wall conduction flux'//yrecfm//' (W/m2)'
193  !
194  CALL write_surf(dgu, u, &
195  hprogram,yrecfm,dgmt%CUR%XGFLUX_WALL_A(:),iresp,hcomment=ycomment)
196  !
197 ELSE
198  !
199  yrecfm='RN_WLA'
200  yrecfm=adjustl(ypatch//yrecfm)
201  ycomment='net radiation for wall A'//yrecfm//' (W/m2)'
202  !
203  CALL write_surf(dgu, u, &
204  hprogram,yrecfm,dgmt%CUR%XRN_WALL_A(:),iresp,hcomment=ycomment)
205  !
206  yrecfm='H_WLA'
207  yrecfm=adjustl(ypatch//yrecfm)
208  ycomment='wall A sensible heat flux'//yrecfm//' (W/m2)'
209  !
210  CALL write_surf(dgu, u, &
211  hprogram,yrecfm,dgmt%CUR%XH_WALL_A(:),iresp,hcomment=ycomment)
212  !
213  yrecfm='GFLUX_WLA'
214  yrecfm=adjustl(ypatch//yrecfm)
215  ycomment='net wall A conduction flux'//yrecfm//' (W/m2)'
216  !
217  CALL write_surf(dgu, u, &
218  hprogram,yrecfm,dgmt%CUR%XGFLUX_WALL_A(:),iresp,hcomment=ycomment)
219  !
220  yrecfm='RN_WLB'
221  yrecfm=adjustl(ypatch//yrecfm)
222  ycomment='net radiation for wall B'//yrecfm//' (W/m2)'
223  !
224  CALL write_surf(dgu, u, &
225  hprogram,yrecfm,dgmt%CUR%XRN_WALL_B(:),iresp,hcomment=ycomment)
226  !
227  yrecfm='H_WLB'
228  yrecfm=adjustl(ypatch//yrecfm)
229  ycomment='wall B sensible heat flux'//yrecfm//' (W/m2)'
230  !
231  CALL write_surf(dgu, u, &
232  hprogram,yrecfm,dgmt%CUR%XH_WALL_B(:),iresp,hcomment=ycomment)
233  !
234  yrecfm='GFLUX_WLB'
235  yrecfm=adjustl(ypatch//yrecfm)
236  ycomment='net wall B conduction flux'//yrecfm//' (W/m2)'
237  !
238  CALL write_surf(dgu, u, &
239  hprogram,yrecfm,dgmt%CUR%XGFLUX_WALL_B(:),iresp,hcomment=ycomment)
240  !
241 ENDIF
242 !
243 yrecfm='RN_RF'
244 yrecfm=adjustl(ypatch//yrecfm)
245 ycomment='net radiation for roof'//yrecfm//' (W/m2)'
246 !
247  CALL write_surf(dgu, u, &
248  hprogram,yrecfm,dgmt%CUR%XRN_ROOF(:),iresp,hcomment=ycomment)
249 !
250 yrecfm='H_RF'
251 yrecfm=adjustl(ypatch//yrecfm)
252 ycomment='roof sensible heat flux'//yrecfm//' (W/m2)'
253 !
254  CALL write_surf(dgu, u, &
255  hprogram,yrecfm,dgmt%CUR%XH_ROOF(:),iresp,hcomment=ycomment)
256 !
257 yrecfm='LE_RF'
258 yrecfm=adjustl(ypatch//yrecfm)
259 ycomment='roof latent heat flux'//yrecfm//' (W/m2)'
260 !
261  CALL write_surf(dgu, u, &
262  hprogram,yrecfm,dgmt%CUR%XLE_ROOF(:),iresp,hcomment=ycomment)
263 !
264 yrecfm='GFLUX_RF'
265 yrecfm=adjustl(ypatch//yrecfm)
266 ycomment='net roof conduction flux'//yrecfm//' (W/m2)'
267 !
268  CALL write_surf(dgu, u, &
269  hprogram,yrecfm,dgmt%CUR%XGFLUX_ROOF(:),iresp,hcomment=ycomment)
270 !
271 yrecfm='RUNOFF_RF'
272 yrecfm=adjustl(ypatch//yrecfm)
273 ycomment='aggregated roof runoff'//' (kg/m2/s)'
274 !
275  CALL write_surf(dgu, u, &
276  hprogram,yrecfm,dgmt%CUR%XRUNOFF_ROOF(:),iresp,hcomment=ycomment)
277 !
278 !
279 IF (top%LGARDEN) THEN
280  !
281  yrecfm='RN_GD'
282  yrecfm=adjustl(ypatch//yrecfm)
283  ycomment='net radiation for GARDEN areas'//yrecfm//' (W/m2)'
284  !
285  CALL write_surf(dgu, u, &
286  hprogram,yrecfm,dgmt%CUR%XRN_GARDEN(:),iresp,hcomment=ycomment)
287  !
288  yrecfm='H_GD'
289  yrecfm=adjustl(ypatch//yrecfm)
290  ycomment='GARDEN area sensible heat flux'//yrecfm//' (W/m2)'
291  !
292  CALL write_surf(dgu, u, &
293  hprogram,yrecfm,dgmt%CUR%XH_GARDEN(:),iresp,hcomment=ycomment)
294  !
295  yrecfm='LE_GD'
296  yrecfm=adjustl(ypatch//yrecfm)
297  ycomment='GARDEN area latent heat flux'//yrecfm//' (W/m2)'
298  !
299  CALL write_surf(dgu, u, &
300  hprogram,yrecfm,dgmt%CUR%XLE_GARDEN(:),iresp,hcomment=ycomment)
301  !
302  yrecfm='GFLUX_GD'
303  yrecfm=adjustl(ypatch//yrecfm)
304  ycomment='net GARDEN area conduction flux'//yrecfm//' (W/m2)'
305  !
306  CALL write_surf(dgu, u, &
307  hprogram,yrecfm,dgmt%CUR%XGFLUX_GARDEN(:),iresp,hcomment=ycomment)
308  !
309  !
310  yrecfm='RUNOFF_GD'
311  yrecfm=adjustl(ypatch//yrecfm)
312  ycomment='garden surface runoff'//' (kg/m2/s)'
313  !
314  CALL write_surf(dgu, u, &
315  hprogram,yrecfm,dgmt%CUR%XRUNOFF_GARDEN(:),iresp,hcomment=ycomment)
316  !
317  !
318 ENDIF
319 !
320 yrecfm='RN_BLT'
321 yrecfm=adjustl(ypatch//yrecfm)
322 ycomment='net radiation for built surfaces'//yrecfm//' (W/m2)'
323 !
324  CALL write_surf(dgu, u, &
325  hprogram,yrecfm,dgmt%CUR%XRN_BLT(:),iresp,hcomment=ycomment)
326 !
327 yrecfm='H_BLT'
328 yrecfm=adjustl(ypatch//yrecfm)
329 ycomment='built surface sensible heat flux'//yrecfm//' (W/m2)'
330 !
331  CALL write_surf(dgu, u, &
332  hprogram,yrecfm,dgmt%CUR%XH_BLT(:),iresp,hcomment=ycomment)
333 !
334 yrecfm='LE_BLT'
335 yrecfm=adjustl(ypatch//yrecfm)
336 ycomment='built surface latent heat flux'//yrecfm//' (W/m2)'
337 !
338  CALL write_surf(dgu, u, &
339  hprogram,yrecfm,dgmt%CUR%XLE_BLT(:),iresp,hcomment=ycomment)
340 !
341 yrecfm='GFLUX_BLT'
342 yrecfm=adjustl(ypatch//yrecfm)
343 ycomment='built surface conduction flux'//yrecfm//' (W/m2)'
344 !
345  CALL write_surf(dgu, u, &
346  hprogram,yrecfm,dgmt%CUR%XGFLUX_BLT(:),iresp,hcomment=ycomment)
347 !
348 !
349 yrecfm='SWA_RF'
350 yrecfm=adjustl(ypatch//yrecfm)
351 ycomment='Sdown absorbed by roofs'//' (W/m2)'
352 !
353  CALL write_surf(dgu, u, &
354  hprogram,yrecfm,dgmt%CUR%XABS_SW_ROOF(:),iresp,hcomment=ycomment)
355 !
356 yrecfm='SWA_SN_RF'
357 yrecfm=adjustl(ypatch//yrecfm)
358 ycomment='Sdown absorbed by snow on roofs'//' (W/m2)'
359 !
360  CALL write_surf(dgu, u, &
361  hprogram,yrecfm,dgmt%CUR%XABS_SW_SNOW_ROOF(:),iresp,hcomment=ycomment)
362 !
363 yrecfm='LWA_RF'
364 yrecfm=adjustl(ypatch//yrecfm)
365 ycomment='Ldown absorbed by roofs'//' (W/m2)'
366 !
367  CALL write_surf(dgu, u, &
368  hprogram,yrecfm,dgmt%CUR%XABS_LW_ROOF(:),iresp,hcomment=ycomment)
369 !
370 yrecfm='LWA_SN_RF'
371 yrecfm=adjustl(ypatch//yrecfm)
372 ycomment='Ldown absorbed by snow on roofs'//' (W/m2)'
373 !
374  CALL write_surf(dgu, u, &
375  hprogram,yrecfm,dgmt%CUR%XABS_LW_SNOW_ROOF(:),iresp,hcomment=ycomment)
376 !
377 yrecfm='SWA_RD'
378 yrecfm=adjustl(ypatch//yrecfm)
379 ycomment='Sdown absorbed by roads'//' (W/m2)'
380 !
381  CALL write_surf(dgu, u, &
382  hprogram,yrecfm,dgmt%CUR%XABS_SW_ROAD(:),iresp,hcomment=ycomment)
383 !
384 yrecfm='SWA_SN_RD'
385 yrecfm=adjustl(ypatch//yrecfm)
386 ycomment='Sdown absorbed by snow on roads'//' (W/m2)'
387 !
388  CALL write_surf(dgu, u, &
389  hprogram,yrecfm,dgmt%CUR%XABS_SW_SNOW_ROAD(:),iresp,hcomment=ycomment)
390 !
391 yrecfm='LWA_RD'
392 yrecfm=adjustl(ypatch//yrecfm)
393 ycomment='Ldown absorbed by roads'//' (W/m2)'
394 !
395  CALL write_surf(dgu, u, &
396  hprogram,yrecfm,dgmt%CUR%XABS_LW_ROAD(:),iresp,hcomment=ycomment)
397 !
398 yrecfm='LWA_SN_RD'
399 yrecfm=adjustl(ypatch//yrecfm)
400 ycomment='Ldown absorbed by snow on roads'//' (W/m2)'
401 !
402  CALL write_surf(dgu, u, &
403  hprogram,yrecfm,dgmt%CUR%XABS_LW_SNOW_ROAD(:),iresp,hcomment=ycomment)
404 !
405 IF (top%CWALL_OPT=='UNIF') THEN
406  !
407  yrecfm='SWA_WL'
408  yrecfm=adjustl(ypatch//yrecfm)
409  ycomment='Sdown absorbed by wall'//' (W/m2)'
410  !
411  CALL write_surf(dgu, u, &
412  hprogram,yrecfm,dgmt%CUR%XABS_SW_WALL_A(:),iresp,hcomment=ycomment)
413  !
414  yrecfm='LWA_WL'
415  yrecfm=adjustl(ypatch//yrecfm)
416  ycomment='Ldown absorbed by wall '//' (W/m2)'
417  !
418  CALL write_surf(dgu, u, &
419  hprogram,yrecfm,dgmt%CUR%XABS_LW_WALL_A(:),iresp,hcomment=ycomment)
420  !
421 ELSE
422  !
423  yrecfm='SWA_WLA'
424  yrecfm=adjustl(ypatch//yrecfm)
425  ycomment='Sdown absorbed by wall A'//' (W/m2)'
426  !
427  CALL write_surf(dgu, u, &
428  hprogram,yrecfm,dgmt%CUR%XABS_SW_WALL_A(:),iresp,hcomment=ycomment)
429  !
430  yrecfm='LWA_WLA'
431  yrecfm=adjustl(ypatch//yrecfm)
432  ycomment='Ldown absorbed by wall A'//' (W/m2)'
433  !
434  CALL write_surf(dgu, u, &
435  hprogram,yrecfm,dgmt%CUR%XABS_LW_WALL_A(:),iresp,hcomment=ycomment)
436  !
437  yrecfm='SWA_WLB'
438  yrecfm=adjustl(ypatch//yrecfm)
439  ycomment='Sdown absorbed by wall B'//' (W/m2)'
440  !
441  CALL write_surf(dgu, u, &
442  hprogram,yrecfm,dgmt%CUR%XABS_SW_WALL_B(:),iresp,hcomment=ycomment)
443  !
444  yrecfm='LWA_WLB'
445  yrecfm=adjustl(ypatch//yrecfm)
446  ycomment='Ldown absorbed by wall B'//' (W/m2)'
447  !
448  CALL write_surf(dgu, u, &
449  hprogram,yrecfm,dgmt%CUR%XABS_LW_WALL_B(:),iresp,hcomment=ycomment)
450  !
451 ENDIF
452 !
453 IF (top%LGARDEN) THEN
454  !
455  yrecfm='SWA_GD'
456  yrecfm=adjustl(ypatch//yrecfm)
457  ycomment='Sdown absorbed by GARDEN areas'//' (W/m2)'
458  !
459  CALL write_surf(dgu, u, &
460  hprogram,yrecfm,dgmt%CUR%XABS_SW_GARDEN(:),iresp,hcomment=ycomment)
461  !
462  yrecfm='LWA_GD'
463  yrecfm=adjustl(ypatch//yrecfm)
464  ycomment='Ldown absorbed by GARDEN areas'//' (W/m2)'
465  !
466  CALL write_surf(dgu, u, &
467  hprogram,yrecfm,dgmt%CUR%XABS_LW_GARDEN(:),iresp,hcomment=ycomment)
468  !
469 ENDIF
470 !
471 yrecfm='REF_SW_GO'
472 yrecfm=adjustl(ypatch//yrecfm)
473 ycomment='Total solar rad reflected by ground '//' (W/m2)'
474  CALL write_surf(dgu, u, &
475  hprogram,yrecfm,dgmt%CUR%XREF_SW_GRND(:),iresp,hcomment=ycomment)
476 !
477 yrecfm='LWE_GO'
478 yrecfm=adjustl(ypatch//yrecfm)
479 ycomment='LW emitted by ground'//' (W/m2)'
480  CALL write_surf(dgu, u, &
481  hprogram,yrecfm,dgmt%CUR%XEMIT_LW_GRND(:),iresp,hcomment=ycomment)
482 !
483 yrecfm='REF_SW_FA'
484 yrecfm=adjustl(ypatch//yrecfm)
485 ycomment='Total solar rad reflected by facade '//' (W/m2)'
486  CALL write_surf(dgu, u, &
487  hprogram,yrecfm,dgmt%CUR%XREF_SW_FAC(:),iresp,hcomment=ycomment)
488 !
489 yrecfm='LWE_FA'
490 yrecfm=adjustl(ypatch//yrecfm)
491 ycomment='LW emitted by facade'//' (W/m2)'
492  CALL write_surf(dgu, u, &
493  hprogram,yrecfm,dgmt%CUR%XEMIT_LW_FAC(:),iresp,hcomment=ycomment)
494 !
495 !
496  IF (top%CBEM=='BEM') THEN
497  !
498  yrecfm='CL_CURT'
499  yrecfm=adjustl(ypatch//yrecfm)
500  ycomment='Current Cooling system temperature set point'//' (K)'
501  CALL write_surf(dgu, u, &
502  hprogram,yrecfm,dgmt%CUR%XTCOOL_CUR_TARGET(:),iresp,hcomment=ycomment)
503  !
504  yrecfm='HT_CURT'
505  yrecfm=adjustl(ypatch//yrecfm)
506  ycomment='Current Heating system temperature set point'//' (K)'
507  CALL write_surf(dgu, u, &
508  hprogram,yrecfm,dgmt%CUR%XTHEAT_CUR_TARGET(:),iresp,hcomment=ycomment)
509  !
510  yrecfm='QIN_CUR'
511  yrecfm=adjustl(ypatch//yrecfm)
512  ycomment='Current Building internal heat loads'//' (W m-2(floor))'
513  CALL write_surf(dgu, u, &
514  hprogram,yrecfm,dgmt%CUR%XCUR_QIN(:),iresp,hcomment=ycomment)
515  !
516  yrecfm='XFLX_BLD'
517  yrecfm=adjustl(ypatch//yrecfm)
518  ycomment='heat flux from bld'//' (W/m2)'
519  CALL write_surf(dgu, u, &
520  hprogram,yrecfm,dgmt%CUR%XFLX_BLD(:),iresp,hcomment=ycomment)
521  !
522  yrecfm='H_BLD_CL'
523  yrecfm=adjustl(ypatch//yrecfm)
524  ycomment='sensible cooling demand'//' (W/m2)'
525  CALL write_surf(dgu, u, &
526  hprogram,yrecfm,dgmt%CUR%XH_BLD_COOL(:),iresp,hcomment=ycomment)
527  !
528  yrecfm='T_BLD_CL'
529  yrecfm=adjustl(ypatch//yrecfm)
530  ycomment='Total cooling demand'//' (W/m2)'
531  CALL write_surf(dgu, u, &
532  hprogram,yrecfm,dgmt%CUR%XT_BLD_COOL(:),iresp,hcomment=ycomment)
533  !
534  yrecfm='H_BLD_HT'
535  yrecfm=adjustl(ypatch//yrecfm)
536  ycomment='sensible heating demand'//' (W/m2)'
537  CALL write_surf(dgu, u, &
538  hprogram,yrecfm,dgmt%CUR%XH_BLD_HEAT(:),iresp,hcomment=ycomment)
539  !
540  yrecfm='LE_BLD_CL'
541  yrecfm=adjustl(ypatch//yrecfm)
542  ycomment='latent cooling demand'//' (W/m2)'
543  CALL write_surf(dgu, u, &
544  hprogram,yrecfm,dgmt%CUR%XLE_BLD_COOL(:),iresp,hcomment=ycomment)
545  !
546  yrecfm='LE_BLD_HT'
547  yrecfm=adjustl(ypatch//yrecfm)
548  ycomment='latent heating demand'//' (W/m2)'
549  CALL write_surf(dgu, u, &
550  hprogram,yrecfm,dgmt%CUR%XLE_BLD_HEAT(:),iresp,hcomment=ycomment)
551  !
552  yrecfm='H_WASTE'
553  yrecfm=adjustl(ypatch//yrecfm)
554  ycomment='sensible waste heat from HVAC'//' (W/m2)'
555  CALL write_surf(dgu, u, &
556  hprogram,yrecfm,dgmt%CUR%XH_WASTE(:),iresp,hcomment=ycomment)
557  !
558  yrecfm='LE_WASTE'
559  yrecfm=adjustl(ypatch//yrecfm)
560  ycomment='latent waste heat from HVAC'//' (W/m2)'
561  CALL write_surf(dgu, u, &
562  hprogram,yrecfm,dgmt%CUR%XLE_WASTE(:),iresp,hcomment=ycomment)
563  !
564  yrecfm='HVAC_CL'
565  yrecfm=adjustl(ypatch//yrecfm)
566  ycomment='cooling energy consumption'//' (W/m2)'
567  CALL write_surf(dgu, u, &
568  hprogram,yrecfm,dgmt%CUR%XHVAC_COOL(:),iresp,hcomment=ycomment)
569  !
570  yrecfm='HVAC_HT'
571  yrecfm=adjustl(ypatch//yrecfm)
572  ycomment='heating energy consumption'//' (W/m2)'
573  CALL write_surf(dgu, u, &
574  hprogram,yrecfm,dgmt%CUR%XHVAC_HEAT(:),iresp,hcomment=ycomment)
575  !
576  yrecfm='CAP_SYS'
577  yrecfm=adjustl(ypatch//yrecfm)
578  ycomment='Actual capacity of the cooling system'//' (W m-2(bld))'
579  CALL write_surf(dgu, u, &
580  hprogram,yrecfm,dgmt%CUR%XCAP_SYS(:),iresp,hcomment=ycomment)
581  !
582  yrecfm='M_SYS'
583  yrecfm=adjustl(ypatch//yrecfm)
584  ycomment='Actual HVAC mass flow rate'//' (kg s-1 m-2(bld))'
585  CALL write_surf(dgu, u, &
586  hprogram,yrecfm,dgmt%CUR%XM_SYS(:),iresp,hcomment=ycomment)
587  !
588  yrecfm='COP'
589  yrecfm=adjustl(ypatch//yrecfm)
590  ycomment='Actual COP of the cooling system'//' ()'
591  CALL write_surf(dgu, u, &
592  hprogram,yrecfm,dgmt%CUR%XCOP(:),iresp,hcomment=ycomment)
593  !
594  yrecfm='Q_SYS'
595  yrecfm=adjustl(ypatch//yrecfm)
596  ycomment='Supply air specific humidity'//' (kg kg-1)'
597  CALL write_surf(dgu, u, &
598  hprogram,yrecfm,dgmt%CUR%XQ_SYS(:),iresp,hcomment=ycomment)
599  !
600  yrecfm='T_SYS'
601  yrecfm=adjustl(ypatch//yrecfm)
602  ycomment='Supply air temperature'//' (K)'
603  CALL write_surf(dgu, u, &
604  hprogram,yrecfm,dgmt%CUR%XT_SYS(:),iresp,hcomment=ycomment)
605  !
606  yrecfm='TR_SW_WIN'
607  yrecfm=adjustl(ypatch//yrecfm)
608  ycomment='Solar radiation transmitted through windows'//' (W m-2(bld))'
609  CALL write_surf(dgu, u, &
610  hprogram,yrecfm,dgmt%CUR%XTR_SW_WIN(:),iresp,hcomment=ycomment)
611  !
612  yrecfm='FAN_POWER'
613  yrecfm=adjustl(ypatch//yrecfm)
614  ycomment='HVAC fan power'//' (W m-2(bld))'
615  CALL write_surf(dgu, u, &
616  hprogram,yrecfm,dgmt%CUR%XFAN_POWER(:),iresp,hcomment=ycomment)
617  !
618  yrecfm='T_RAD_IND'
619  yrecfm=adjustl(ypatch//yrecfm)
620  ycomment='Indoor mean radiant temperature'//' (K)'
621  CALL write_surf(dgu, u, &
622  hprogram,yrecfm,dgmt%CUR%XT_RAD_IND(:),iresp,hcomment=ycomment)
623  !
624  yrecfm='HU_BLD'
625  yrecfm=adjustl(ypatch//yrecfm)
626  ycomment='Indoor relative humidity'//' (-)'
627  CALL write_surf(dgu, u, &
628  hprogram,yrecfm,dgmt%CUR%XHU_BLD(:),iresp,hcomment=ycomment)
629  !
630  yrecfm='SWA_WIN'
631  yrecfm=adjustl(ypatch//yrecfm)
632  ycomment='Sdown absorbed by windows'//' (W/m2)'
633  CALL write_surf(dgu, u, &
634  hprogram,yrecfm,dgmt%CUR%XABS_SW_WIN(:),iresp,hcomment=ycomment)
635  !
636  yrecfm='LWA_WIN'
637  yrecfm=adjustl(ypatch//yrecfm)
638  ycomment='Ldown absorbed by windows'//' (W/m2)'
639  CALL write_surf(dgu, u, &
640  hprogram,yrecfm,dgmt%CUR%XABS_LW_WIN(:),iresp,hcomment=ycomment)
641  !
642  ENDIF
643  !
644  IF (top%LGREENROOF) THEN
645  !
646  WHERE (t%CUR%XGREENROOF(:) == 0.)
647  dgmt%CUR%XRN_GREENROOF (:) = xundef
648  dgmt%CUR%XH_GREENROOF (:) = xundef
649  dgmt%CUR%XLE_GREENROOF (:) = xundef
650  dgmt%CUR%XGFLUX_GREENROOF (:) = xundef
651  dgmt%CUR%XABS_SW_GREENROOF(:) = xundef
652  dgmt%CUR%XABS_LW_GREENROOF(:) = xundef
653  dgmt%CUR%XG_GREENROOF_ROOF(:) = xundef
654  dgmt%CUR%XRUNOFF_GREENROOF(:) = xundef
655  dgmt%CUR%XDRAIN_GREENROOF (:) = xundef
656  END WHERE
657  !
658  yrecfm='RN_GR'
659  yrecfm=adjustl(ypatch//yrecfm)
660  ycomment='net radiation for GREENROOFs'//' (W/m2)'
661  CALL write_surf(dgu, u, &
662  hprogram,yrecfm,dgmt%CUR%XRN_GREENROOF(:),iresp,hcomment=ycomment)
663  !
664  yrecfm='H_GR'
665  yrecfm=adjustl(ypatch//yrecfm)
666  ycomment='sensible heat flux for GREENROOFs'//' (W/m2)'
667  CALL write_surf(dgu, u, &
668  hprogram,yrecfm,dgmt%CUR%XH_GREENROOF(:),iresp,hcomment=ycomment)
669  !
670  yrecfm='LE_GR'
671  yrecfm=adjustl(ypatch//yrecfm)
672  ycomment='latent heat flux for GREENROOFs'//' (W/m2)'
673  CALL write_surf(dgu, u, &
674  hprogram,yrecfm,dgmt%CUR%XLE_GREENROOF(:),iresp,hcomment=ycomment)
675  !
676  yrecfm='GFLUX_GR'
677  yrecfm=adjustl(ypatch//yrecfm)
678  ycomment='net conduction flux for GREENROOFs'//' (W/m2)'
679  CALL write_surf(dgu, u, &
680  hprogram,yrecfm,dgmt%CUR%XGFLUX_GREENROOF(:),iresp,hcomment=ycomment)
681  !
682  yrecfm='SWA_GR'
683  yrecfm=adjustl(ypatch//yrecfm)
684  ycomment='Sdown absorbed by GREENROOFs'//' (W/m2)'
685  CALL write_surf(dgu, u, &
686  hprogram,yrecfm,dgmt%CUR%XABS_SW_GREENROOF(:),iresp,hcomment=ycomment)
687  !
688  yrecfm='LWA_GR'
689  yrecfm=adjustl(ypatch//yrecfm)
690  ycomment='Ldown absorbed by GREENROOFs'//' (W/m2)'
691  CALL write_surf(dgu, u, &
692  hprogram,yrecfm,dgmt%CUR%XABS_LW_GREENROOF(:),iresp,hcomment=ycomment)
693  !
694  yrecfm='G_GR_ROOF'
695  yrecfm=adjustl(ypatch//yrecfm)
696  ycomment='heat flux between GREENROOF and ROOF'//' (W/m2)'
697  CALL write_surf(dgu, u, &
698  hprogram,yrecfm,dgmt%CUR%XG_GREENROOF_ROOF(:),iresp,hcomment=ycomment)
699  !
700  yrecfm='RUNOFF_GR'
701  yrecfm=adjustl(ypatch//yrecfm)
702  ycomment='GREENROOF soil surface runoff'//' (kg/m2/s)'
703  CALL write_surf(dgu, u, &
704  hprogram,yrecfm,dgmt%CUR%XRUNOFF_GREENROOF(:),iresp,hcomment=ycomment)
705  !
706  yrecfm='DRAIN_GR'
707  yrecfm=adjustl(ypatch//yrecfm)
708  ycomment='GREENROOF total vertical drainage'//' (kg/m2/s)'
709  CALL write_surf(dgu, u, &
710  hprogram,yrecfm,dgmt%CUR%XDRAIN_GREENROOF(:),iresp,hcomment=ycomment)
711  !
712  WHERE (t%CUR%XGREENROOF(:) == 1.)
713  dgmt%CUR%XRN_STRLROOF(:) = xundef
714  dgmt%CUR%XH_STRLROOF(:) = xundef
715  dgmt%CUR%XLE_STRLROOF(:) = xundef
716  dgmt%CUR%XGFLUX_STRLROOF(:) = xundef
717  dgmt%CUR%XRUNOFF_STRLROOF(:) = xundef
718  END WHERE
719  !
720  yrecfm='RN_SR'
721  yrecfm=adjustl(ypatch//yrecfm)
722  ycomment='structural roof net radiation'//yrecfm//' (W/m2)'
723  !
724  CALL write_surf(dgu, u, &
725  hprogram,yrecfm,dgmt%CUR%XRN_STRLROOF(:),iresp,hcomment=ycomment)
726  !
727  yrecfm='H_SR'
728  yrecfm=adjustl(ypatch//yrecfm)
729  ycomment='structural roof sensible heat flux'//yrecfm//' (W/m2)'
730  !
731  CALL write_surf(dgu, u, &
732  hprogram,yrecfm,dgmt%CUR%XH_STRLROOF(:),iresp,hcomment=ycomment)
733  !
734  yrecfm='LE_SR'
735  yrecfm=adjustl(ypatch//yrecfm)
736  ycomment='structural roof latent heat flux'//yrecfm//' (W/m2)'
737  !
738  CALL write_surf(dgu, u, &
739  hprogram,yrecfm,dgmt%CUR%XLE_STRLROOF(:),iresp,hcomment=ycomment)
740  !
741  yrecfm='GFLUX_SR'
742  yrecfm=adjustl(ypatch//yrecfm)
743  ycomment='structural roof conduction flux'//yrecfm//' (W/m2)'
744  !
745  CALL write_surf(dgu, u, &
746  hprogram,yrecfm,dgmt%CUR%XGFLUX_STRLROOF(:),iresp,hcomment=ycomment)
747  !
748  yrecfm='RUNOFF_SR'
749  yrecfm=adjustl(ypatch//yrecfm)
750  ycomment='structural roof surface runoff'//' (kg/m2/s)'
751  !
752  CALL write_surf(dgu, u, &
753  hprogram,yrecfm,dgmt%CUR%XRUNOFF_STRLROOF(:),iresp,hcomment=ycomment)
754  !
755  ENDIF
756  !
757  !* solar panels
758  IF (top%LSOLAR_PANEL) THEN
759  yrecfm='SWA_SP'
760  yrecfm=adjustl(ypatch//yrecfm)
761  ycomment='Shortwave absorbed by solar panels on roofs'//' (W/m2 panel)'
762  !
763  CALL write_surf(dgu, u, &
764  hprogram,yrecfm,dgmt%CUR%XABS_SW_PANEL(:),iresp,hcomment=ycomment)
765  !
766  yrecfm='LWA_SP'
767  yrecfm=adjustl(ypatch//yrecfm)
768  ycomment='Longwave absorbed by solar panels on roofs'//' (W/m2 panel)'
769  !
770  CALL write_surf(dgu, u, &
771  hprogram,yrecfm,dgmt%CUR%XABS_LW_PANEL(:),iresp,hcomment=ycomment)
772  !
773  yrecfm='RN_SP'
774  yrecfm=adjustl(ypatch//yrecfm)
775  ycomment='Net radiation of solar panels on roofs'//' (W/m2 panel)'
776  !
777  CALL write_surf(dgu, u, &
778  hprogram,yrecfm,dgmt%CUR%XRN_PANEL(:),iresp,hcomment=ycomment)
779  !
780  yrecfm='H_SP'
781  yrecfm=adjustl(ypatch//yrecfm)
782  ycomment='Sensible Heat flux from solar panels on roofs'//' (W/m2 panel)'
783  !
784  CALL write_surf(dgu, u, &
785  hprogram,yrecfm,dgmt%CUR%XH_PANEL(:),iresp,hcomment=ycomment)
786  !
787  yrecfm='PHOT_SP'
788  yrecfm=adjustl(ypatch//yrecfm)
789  ycomment='Photovolatic production '//' (W/m2 photovoltaic panel)'
790  !
791  CALL write_surf(dgu, u, &
792  hprogram,yrecfm,dgmt%CUR%XPHOT_PROD_PANEL(:),iresp,hcomment=ycomment)
793  !
794  yrecfm='THER_SP'
795  yrecfm=adjustl(ypatch//yrecfm)
796  ycomment='Hot Water production '//' (W/m2 thermal panel)'
797  !
798  CALL write_surf(dgu, u, &
799  hprogram,yrecfm,dgmt%CUR%XTHER_PROD_PANEL(:),iresp,hcomment=ycomment)
800  !
801  yrecfm='PROD_SP'
802  yrecfm=adjustl(ypatch//yrecfm)
803  ycomment='Production by solar panels on roofs'//' (W/m2 panel)'
804  !
805  CALL write_surf(dgu, u, &
806  hprogram,yrecfm,dgmt%CUR%XPROD_PANEL(:),iresp,hcomment=ycomment)
807  !
808  yrecfm='PHOT_BLD'
809  yrecfm=adjustl(ypatch//yrecfm)
810  ycomment='Photovolatic production '//' (W/m2 bld)'
811  !
812  CALL write_surf(dgu, u, &
813  hprogram,yrecfm,dgmt%CUR%XPHOT_PROD_BLD(:),iresp,hcomment=ycomment)
814  !
815  yrecfm='THER_BLD'
816  yrecfm=adjustl(ypatch//yrecfm)
817  ycomment='Hot Water production '//' (W/m2 bld)'
818  !
819  CALL write_surf(dgu, u, &
820  hprogram,yrecfm,dgmt%CUR%XTHER_PROD_BLD(:),iresp,hcomment=ycomment)
821  !
822  END IF
823 !
824 !*
825 !* 3. Cumulated fields
826 ! ----------------
827 !
828 !
829  IF (top%CBEM=='BEM') THEN
830  !
831  yrecfm='HVACC_CL'
832  yrecfm=adjustl(ypatch//yrecfm)
833  ycomment='cumulated cooling energy consumption'//' (J/m2)'
834  CALL write_surf(dgu, u, &
835  hprogram,yrecfm,dgct%CUR%XHVACC_COOL(:),iresp,hcomment=ycomment)
836  !
837  yrecfm='HVACC_HT'
838  yrecfm=adjustl(ypatch//yrecfm)
839  ycomment='cumulated heating energy consumption'//' (J/m2)'
840  CALL write_surf(dgu, u, &
841  hprogram,yrecfm,dgct%CUR%XHVACC_HEAT(:),iresp,hcomment=ycomment)
842  !
843  END IF
844  !
845  yrecfm='RUNOFFC_TW'
846  yrecfm=adjustl(ypatch//yrecfm)
847  ycomment='cumulated aggregated runoff for town'//' (kg/m2)'
848  CALL write_surf(dgu, u, &
849  hprogram,yrecfm,dgct%CUR%XRUNOFFC_TOWN(:),iresp,hcomment=ycomment)
850  !
851  yrecfm='RUNOFFC_RD'
852  yrecfm=adjustl(ypatch//yrecfm)
853  ycomment='cumulated road surface runoff'//' (kg/m2 road)'
854  CALL write_surf(dgu, u, &
855  hprogram,yrecfm,dgct%CUR%XRUNOFFC_ROAD(:),iresp,hcomment=ycomment)
856  !
857  yrecfm='RUNOFFC_RF'
858  yrecfm=adjustl(ypatch//yrecfm)
859  ycomment='cumulated aggregated roof runoff'//' (kg/m2 roof)'
860  CALL write_surf(dgu, u, &
861  hprogram,yrecfm,dgct%CUR%XRUNOFFC_ROOF(:),iresp,hcomment=ycomment)
862  !
863  yrecfm='IRRIGC_RD'
864  yrecfm=adjustl(ypatch//yrecfm)
865  ycomment='cumulated road irrigation'//' (kg/m2 road)'
866  CALL write_surf(dgu, u, &
867  hprogram,yrecfm,dgct%CUR%XIRRIGC_ROAD(:),iresp,hcomment=ycomment)
868  !
869  IF (top%LGARDEN) THEN
870  !
871  yrecfm='RUNOFFC_GD'
872  yrecfm=adjustl(ypatch//yrecfm)
873  ycomment='cumulated garden surface runoff'//' (kg/m2 garden)'
874  CALL write_surf(dgu, u, &
875  hprogram,yrecfm,dgct%CUR%XRUNOFFC_GARDEN(:),iresp,hcomment=ycomment)
876  !
877  yrecfm='DRAINC_GD'
878  yrecfm=adjustl(ypatch//yrecfm)
879  ycomment='cumulated garden surface drainage'//' (kg/m2 garden)'
880  CALL write_surf(dgu, u, &
881  hprogram,yrecfm,dgct%CUR%XDRAINC_GARDEN(:),iresp,hcomment=ycomment)
882  !
883  yrecfm='IRRIGC_GD'
884  yrecfm=adjustl(ypatch//yrecfm)
885  ycomment='cumulated garden irrigation'//' (kg/m2 garden)'
886  CALL write_surf(dgu, u, &
887  hprogram,yrecfm,dgct%CUR%XIRRIGC_GARDEN(:),iresp,hcomment=ycomment)
888  !
889  END IF
890  !
891  IF (top%LGREENROOF) THEN
892  !
893  WHERE (t%CUR%XGREENROOF(:) == 0.)
894  dgct%CUR%XRUNOFFC_GREENROOF (:) = xundef
895  dgct%CUR%XDRAINC_GREENROOF (:) = xundef
896  dgct%CUR%XIRRIGC_GREENROOF (:) = xundef
897  END WHERE
898  !
899  yrecfm='RUNOFFC_GR'
900  yrecfm=adjustl(ypatch//yrecfm)
901  ycomment='GREENROOF cumulated soil surface runoff'//' (kg/m2 greenroof)'
902  CALL write_surf(dgu, u, &
903  hprogram,yrecfm,dgct%CUR%XRUNOFFC_GREENROOF(:),iresp,hcomment=ycomment)
904  !
905  yrecfm='DRAINC_GR'
906  yrecfm=adjustl(ypatch//yrecfm)
907  ycomment='GREENROOF cumulated total vertical drainage'//' (kg/m2 greenroof)'
908  CALL write_surf(dgu, u, &
909  hprogram,yrecfm,dgct%CUR%XDRAINC_GREENROOF(:),iresp,hcomment=ycomment)
910  !
911  !
912  yrecfm='IRRIGC_GR'
913  yrecfm=adjustl(ypatch//yrecfm)
914  ycomment='GREENROOF cumulated irrigation'//' (kg/m2 greenroof)'
915  CALL write_surf(dgu, u, &
916  hprogram,yrecfm,dgct%CUR%XIRRIGC_GREENROOF(:),iresp,hcomment=ycomment)
917  !
918  WHERE (t%CUR%XGREENROOF(:) == 1.)
919  dgct%CUR%XRUNOFFC_STRLROOF (:) = xundef
920  END WHERE
921  !
922  yrecfm='RUNOFFC_SR'
923  yrecfm=adjustl(ypatch//yrecfm)
924  ycomment='cumulated structural roof surface runoff'//' (kg/m2)'
925  CALL write_surf(dgu, u, &
926  hprogram,yrecfm,dgct%CUR%XRUNOFFC_STRLROOF(:),iresp,hcomment=ycomment)
927  !
928  END IF
929  !
930  !* solar panels
931  IF (top%LSOLAR_PANEL) THEN
932  !
933  yrecfm='PHOTC_BLD'
934  yrecfm=adjustl(ypatch//yrecfm)
935  ycomment='Cumulated Photovolatic production '//' (J/m2 bld)'
936  !
937  CALL write_surf(dgu, u, &
938  hprogram,yrecfm,dgct%CUR%XPHOT_PROD_BLDC(:),iresp,hcomment=ycomment)
939  !
940  yrecfm='THERC_BLD'
941  yrecfm=adjustl(ypatch//yrecfm)
942  ycomment='Cumulated Hot water production '//' (J/m2 bld)'
943  !
944  CALL write_surf(dgu, u, &
945  hprogram,yrecfm,dgct%CUR%XTHER_PROD_BLDC(:),iresp,hcomment=ycomment)
946  !
947  END IF
948 !
949 END IF
950 !
951 !
952 !-------------------------------------------------------------------------------
953 !
954 ! End of IO
955 !
956  CALL end_io_surf_n(hprogram)
957 IF (lhook) CALL dr_hook('WRITE_DIAG_MISC_TEB_N',1,zhook_handle)
958 !
959 END SUBROUTINE write_diag_misc_teb_n
subroutine init_io_surf_n(DTCO, DGU, U, HPROGRAM, HMASK, HSCHEME, HACTION)
subroutine write_diag_misc_teb_n(DTCO, DGU, U, DGCT, DGMT, DGMTO, T, TOP, HPROGRAM, KTEB_PATCH)
subroutine end_io_surf_n(HPROGRAM)
Definition: end_io_surfn.F90:6