48 USE modd_io_surf_aro
, ONLY : nblock
55 USE modi_init_io_surf_n
57 USE modi_end_io_surf_n
60 USE yomhook
,ONLY : lhook, dr_hook
61 USE parkind1
,ONLY : jprb
76 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
82 CHARACTER(LEN=12) :: yrecfm
83 CHARACTER(LEN=100):: ycomment
84 CHARACTER(LEN=2) :: ynum
89 REAL(KIND=JPRB) :: zhook_handle
94 IF (lhook) CALL dr_hook(
'WRITE_DIAG_SEB_TEB_N',0,zhook_handle)
102 hprogram,
'TOWN ',
'TEB ',
'WRITE')
112 ycomment=
'X_Y_'//yrecfm
115 hprogram,yrecfm,dgt%XRI(:),iresp,hcomment=ycomment)
122 IF (dgt%LSURF_BUDGET)
THEN
125 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
128 hprogram,yrecfm,dgt%XRN(:),iresp,hcomment=ycomment)
131 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
134 hprogram,yrecfm,dgt%XH(:),iresp,hcomment=ycomment)
137 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
140 hprogram,yrecfm,dgt%XLE(:),iresp,hcomment=ycomment)
143 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
146 hprogram,yrecfm,dgt%XGFLUX(:),iresp,hcomment=ycomment)
148 IF (dgt%LRAD_BUDGET)
THEN
151 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
154 hprogram,yrecfm,dgt%XSWD(:),iresp,hcomment=ycomment)
157 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
160 hprogram,yrecfm,dgt%XSWU(:),iresp,hcomment=ycomment)
163 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
166 hprogram,yrecfm,dgt%XLWD(:),iresp,hcomment=ycomment)
169 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
172 hprogram,yrecfm,dgt%XLWU(:),iresp,hcomment=ycomment)
174 DO jsw=1,
SIZE(dgt%XSWBD,2)
177 yrecfm=
'SWD_TEB_'//ynum
178 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
181 hprogram,yrecfm,dgt%XSWBD(:,jsw),iresp,hcomment=ycomment)
183 yrecfm=
'SWU_TEB_'//ynum
184 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
187 hprogram,yrecfm,dgt%XSWBU(:,jsw),iresp,hcomment=ycomment)
194 ycomment=
'X_Y_'//yrecfm//
' (kg/ms2)'
197 hprogram,yrecfm,dgt%XFMU(:),iresp,hcomment=ycomment)
200 ycomment=
'X_Y_'//yrecfm//
' (kg/ms2)'
203 hprogram,yrecfm,dgt%XFMV(:),iresp,hcomment=ycomment)
215 ycomment=
'X_Y_'//yrecfm
218 hprogram,yrecfm,dgt%XCD(:),iresp,hcomment=ycomment)
221 ycomment=
'X_Y_'//yrecfm
224 hprogram,yrecfm,dgt%XCH(:),iresp,hcomment=ycomment)
227 ycomment=
'X_Y_'//yrecfm
230 hprogram,yrecfm,dgt%XCE(:),iresp,hcomment=ycomment)
233 ycomment=
'X_Y_'//yrecfm//
' (M)'
236 hprogram,yrecfm,dgt%XZ0(:),iresp,hcomment=ycomment)
239 ycomment=
'X_Y_'//yrecfm//
' (M)'
242 hprogram,yrecfm,dgt%XZ0H(:),iresp,hcomment=ycomment)
250 IF (dgt%LSURF_VARS)
THEN
253 ycomment=
'X_Y_'//yrecfm//
' (KG/KG)'
256 hprogram,yrecfm,dgt%XQS(:),iresp,hcomment=ycomment)
267 ycomment=
'X_Y_'//yrecfm//
' (K)'
270 hprogram,yrecfm,dgt%XT2M(:),iresp,hcomment=ycomment)
273 ycomment=
'X_Y_'//yrecfm//
' (K)'
276 hprogram,yrecfm,dgt%XT2M_MIN(:),iresp,hcomment=ycomment)
277 IF(greset)dgt%XT2M_MIN(:)=xundef
280 ycomment=
'X_Y_'//yrecfm//
' (K)'
283 hprogram,yrecfm,dgt%XT2M_MAX(:),iresp,hcomment=ycomment)
284 IF(greset)dgt%XT2M_MAX(:)=-xundef
287 ycomment=
'X_Y_'//yrecfm//
' (KG/KG)'
290 hprogram,yrecfm,dgt%XQ2M(:),iresp,hcomment=ycomment)
293 ycomment=
'X_Y_'//yrecfm//
' (KG/KG)'
296 hprogram,yrecfm,dgt%XHU2M(:),iresp,hcomment=ycomment)
299 ycomment=
'X_Y_'//yrecfm//
' (-)'
302 hprogram,yrecfm,dgt%XHU2M_MIN(:),iresp,hcomment=ycomment)
303 IF(greset)dgt%XHU2M_MIN(:)=xundef
306 ycomment=
'X_Y_'//yrecfm//
' (-)'
309 hprogram,yrecfm,dgt%XHU2M_MAX(:),iresp,hcomment=ycomment)
310 IF(greset)dgt%XHU2M_MAX(:)=-xundef
313 ycomment=
'X_Y_'//yrecfm//
' (M/S)'
316 hprogram,yrecfm,dgt%XZON10M(:),iresp,hcomment=ycomment)
319 ycomment=
'X_Y_'//yrecfm//
' (M/S)'
322 hprogram,yrecfm,dgt%XMER10M(:),iresp,hcomment=ycomment)
325 ycomment=
'X_Y_'//yrecfm//
' (M/S)'
328 hprogram,yrecfm,dgt%XWIND10M(:),iresp,hcomment=ycomment)
331 ycomment=
'X_Y_'//yrecfm//
' (M/S)'
334 hprogram,yrecfm,dgt%XWIND10M_MAX(:),iresp,hcomment=ycomment)
335 IF(greset)dgt%XWIND10M_MAX(:)=0.0
338 ycomment=
'X_Y_'//yrecfm//
' (M.kgCO2.S-1.kgAIR-1)'
341 hprogram,yrecfm,dgt%XSFCO2(:),iresp,hcomment=ycomment)
345 IF (dgut%LUTCI .AND. dgt%N2M >0)
THEN
348 ycomment=
'UTCI for person indoor'//
' (°C)'
350 hprogram,yrecfm,dgut%XUTCI_IN(:),iresp,hcomment=ycomment)
354 ycomment=
'UTCI for person at sun'//
' (°C)'
356 hprogram,yrecfm,dgut%XUTCI_OUTSUN(:),iresp,hcomment=ycomment)
358 yrecfm=
'UTCI_OUTSHAD'
360 ycomment=
'UTCI for person in shade'//
' (°C)'
362 hprogram,yrecfm,dgut%XUTCI_OUTSHADE(:),iresp,hcomment=ycomment)
365 ycomment=
'Mean radiant temperature seen by person at sun'//
' (K)'
367 hprogram,yrecfm,dgut%XTRAD_SUN(:),iresp,hcomment=ycomment)
370 ycomment=
'Mean radiant temperature seen by person in shade'//
' (K)'
372 hprogram,yrecfm,dgut%XTRAD_SHADE(:),iresp,hcomment=ycomment)
374 DO jstress=1,nutci_stress
375 yrecfm=
'UTCIC_IN_'//cutci_stress_names(jstress)
376 ycomment=
'Cumulated time spent in '//cutci_stress_names(jstress)//
' stress range for person indoor'//
' (s)'
378 hprogram,yrecfm,dgut%XUTCIC_IN(:,jstress),iresp,hcomment=ycomment)
381 DO jstress=1,nutci_stress
382 yrecfm=
'UTCIC_SU_'//cutci_stress_names(jstress)
383 ycomment=
'Cumulated time spent in '//cutci_stress_names(jstress)//
' stress range for person at sun'//
' (s)'
385 hprogram,yrecfm,dgut%XUTCIC_OUTSUN(:,jstress),iresp,hcomment=ycomment)
388 DO jstress=1,nutci_stress
389 yrecfm=
'UTCIC_SH_'//cutci_stress_names(jstress)
390 ycomment=
'Cumulated time spent in '//cutci_stress_names(jstress)//
' stress range for person in shade'//
' (s)'
392 hprogram,yrecfm,dgut%XUTCIC_OUTSHADE(:,jstress),iresp,hcomment=ycomment)
400 IF (cht%SVT%NBEQ>0 .AND. cht%CCH_DRY_DEP==
"WES89 ")
THEN
401 DO jsv = 1,
SIZE(cht%CCH_NAMES,1)
402 yrecfm=
'DV_TWN_'//trim(cht%CCH_NAMES(jsv))
403 WRITE(ycomment,
'(A13,I3.3)')
'(m/s) DV_TWN_',jsv
405 hprogram,yrecfm,cht%XDEP(:,jsv),iresp,hcomment=ycomment)
413 IF (lhook) CALL dr_hook(
'WRITE_DIAG_SEB_TEB_N',1,zhook_handle)
subroutine init_io_surf_n(DTCO, DGU, U, HPROGRAM, HMASK, HSCHEME, HACTION)
subroutine end_io_surf_n(HPROGRAM)
subroutine write_diag_seb_teb_n(DTCO, DGU, U, CHT, DGT, DGUT, HPROGRAM)