51 USE modd_io_surf_aro
, ONLY : nblock
58 USE modi_init_io_surf_n
60 USE modi_end_io_surf_n
72 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
76 TYPE(
diag_t),
INTENT(INOUT) :: D
79 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
85 CHARACTER(LEN=12) :: YRECFM
86 CHARACTER(LEN=100):: YCOMMENT
87 CHARACTER(LEN=2) :: YNUM
92 REAL(KIND=JPRB) :: ZHOOK_HANDLE
97 IF (
lhook)
CALL dr_hook(
'WRITE_DIAG_SEB_TEB_N',0,zhook_handle)
104 IF (
ldef) greset = .false.
107 CALL init_io_surf_n(dtco, u, hprogram,
'TOWN ',
'TEB ',
'WRITE',
'TEB_DIAGNOSTICS.OUT.nc' 117 ycomment=
'X_Y_'//yrecfm
118 CALL write_surf(hselect,hprogram,yrecfm,d%XRI(:),iresp,hcomment=ycomment
125 IF (dgo%LSURF_BUDGET)
THEN 128 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 129 CALL write_surf(hselect,hprogram,yrecfm,d%XRN(:),iresp,hcomment=ycomment
132 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 133 CALL write_surf(hselect,hprogram,yrecfm,d%XH(:),iresp,hcomment=ycomment
136 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 137 CALL write_surf(hselect,hprogram,yrecfm,d%XLE(:),iresp,hcomment=ycomment
140 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 141 CALL write_surf(hselect,hprogram,yrecfm,d%XGFLUX(:),iresp,hcomment=ycomment
143 IF (dgo%LRAD_BUDGET)
THEN 146 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 147 CALL write_surf(hselect,hprogram,yrecfm,d%XSWD(:),iresp,hcomment=ycomment
150 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 151 CALL write_surf(hselect,hprogram,yrecfm,d%XSWU(:),iresp,hcomment=ycomment
154 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 155 CALL write_surf(hselect,hprogram,yrecfm,d%XLWD(:),iresp,hcomment=ycomment
158 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 159 CALL write_surf(hselect,hprogram,yrecfm,d%XLWU(:),iresp,hcomment=ycomment
164 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 166 hprogram,yrecfm,d%XSWBD(:,:),iresp,hcomment=ycomment, hnam_dim
169 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 171 hprogram,yrecfm,d%XSWBD(:,:),iresp,hcomment=ycomment, hnam_dim
175 DO jsw=1,
SIZE(d%XSWBD,2)
178 yrecfm=
'SWD_TEB_'//ynum
179 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 180 CALL write_surf(hselect,hprogram,yrecfm,d%XSWBD(:,jsw),iresp,hcomment
182 yrecfm=
'SWU_TEB_'//ynum
183 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 184 CALL write_surf(hselect,hprogram,yrecfm,d%XSWBU(:,jsw),iresp,hcomment
193 ycomment=
'X_Y_'//yrecfm//
' (kg/ms2)' 194 CALL write_surf(hselect,hprogram,yrecfm,d%XFMU(:),iresp,hcomment=ycomment
197 ycomment=
'X_Y_'//yrecfm//
' (kg/ms2)' 198 CALL write_surf(hselect,hprogram,yrecfm,d%XFMV(:),iresp,hcomment=ycomment
210 ycomment=
'X_Y_'//yrecfm
211 CALL write_surf(hselect,hprogram,yrecfm,d%XCD(:),iresp,hcomment=ycomment
214 ycomment=
'X_Y_'//yrecfm
215 CALL write_surf(hselect,hprogram,yrecfm,d%XCH(:),iresp,hcomment=ycomment
218 ycomment=
'X_Y_'//yrecfm
219 CALL write_surf(hselect,hprogram,yrecfm,d%XCE(:),iresp,hcomment=ycomment
222 ycomment=
'X_Y_'//yrecfm//
' (M)' 223 CALL write_surf(hselect,hprogram,yrecfm,d%XZ0(:),iresp,hcomment=ycomment
226 ycomment=
'X_Y_'//yrecfm//
' (M)' 227 CALL write_surf(hselect,hprogram,yrecfm,d%XZ0H(:),iresp,hcomment=ycomment
235 IF (dgo%LSURF_VARS)
THEN 238 ycomment=
'X_Y_'//yrecfm//
' (KG/KG)' 239 CALL write_surf(hselect,hprogram,yrecfm,d%XQS(:),iresp,hcomment=ycomment
250 ycomment=
'X_Y_'//yrecfm//
' (K)' 251 CALL write_surf(hselect,hprogram,yrecfm,d%XT2M(:),iresp,hcomment=ycomment
254 ycomment=
'X_Y_'//yrecfm//
' (K)' 255 CALL write_surf(hselect,hprogram,yrecfm,d%XT2M_MIN(:),iresp,hcomment=ycomment
256 IF(greset)d%XT2M_MIN(:)=
xundef 259 ycomment=
'X_Y_'//yrecfm//
' (K)' 260 CALL write_surf(hselect,hprogram,yrecfm,d%XT2M_MAX(:),iresp,hcomment=ycomment
261 IF(greset)d%XT2M_MAX(:)=-
xundef 264 ycomment=
'X_Y_'//yrecfm//
' (KG/KG)' 265 CALL write_surf(hselect,hprogram,yrecfm,d%XQ2M(:),iresp,hcomment=ycomment
268 ycomment=
'X_Y_'//yrecfm//
' (KG/KG)' 269 CALL write_surf(hselect,hprogram,yrecfm,d%XHU2M(:),iresp,hcomment=ycomment
272 ycomment=
'X_Y_'//yrecfm//
' (-)' 273 CALL write_surf(hselect,hprogram,yrecfm,d%XHU2M_MIN(:),iresp,hcomment=ycomment
274 IF(greset)d%XHU2M_MIN(:)=
xundef 277 ycomment=
'X_Y_'//yrecfm//
' (-)' 278 CALL write_surf(hselect,hprogram,yrecfm,d%XHU2M_MAX(:),iresp,hcomment=ycomment
279 IF(greset)d%XHU2M_MAX(:)=-
xundef 282 ycomment=
'X_Y_'//yrecfm//
' (M/S)' 283 CALL write_surf(hselect,hprogram,yrecfm,d%XZON10M(:),iresp,hcomment=ycomment
286 ycomment=
'X_Y_'//yrecfm//
' (M/S)' 287 CALL write_surf(hselect,hprogram,yrecfm,d%XMER10M(:),iresp,hcomment=ycomment
290 ycomment=
'X_Y_'//yrecfm//
' (M/S)' 291 CALL write_surf(hselect,hprogram,yrecfm,d%XWIND10M(:),iresp,hcomment=ycomment
294 ycomment=
'X_Y_'//yrecfm//
' (M/S)' 295 CALL write_surf(hselect,hprogram,yrecfm,d%XWIND10M_MAX(:),iresp,hcomment
296 IF(greset)d%XWIND10M_MAX(:)=0.0
299 ycomment=
'X_Y_'//yrecfm//
' (M.kgCO2.S-1.kgAIR-1)' 300 CALL write_surf(hselect,hprogram,yrecfm,d%XSFCO2(:),iresp,hcomment=ycomment
304 IF (dut%LUTCI .AND. dgo%N2M >0)
THEN 307 ycomment=
'UTCI for person indoor'//
' (°C)' 308 CALL write_surf(hselect,hprogram,yrecfm,dut%XUTCI_IN(:),iresp,hcomment
312 ycomment=
'UTCI for person at sun'//
' (°C)' 313 CALL write_surf(hselect,hprogram,yrecfm,dut%XUTCI_OUTSUN(:),iresp,hcomment
315 yrecfm=
'UTCI_OUTSHAD' 317 ycomment=
'UTCI for person in shade'//
' (°C)' 318 CALL write_surf(hselect,hprogram,yrecfm,dut%XUTCI_OUTSHADE(:),iresp,hcomment
321 ycomment=
'Mean radiant temperature seen by person at sun'//
' (K)' 322 CALL write_surf(hselect,hprogram,yrecfm,dut%XTRAD_SUN(:),iresp,hcomment
325 ycomment=
'Mean radiant temperature seen by person in shade'//
' (K)' 326 CALL write_surf(hselect,hprogram,yrecfm,dut%XTRAD_SHADE(:),iresp,hcomment
330 ycomment=
'Cumulated time spent in '//
cutci_stress_names(jstress)//
' stress range for person indoor'' (s)' 331 CALL write_surf(hselect,hprogram,yrecfm,dut%XUTCIC_IN(:,jstress),iresp
336 ycomment=
'Cumulated time spent in '//
cutci_stress_names(jstress)//
' stress range for person at sun'' (s)' 337 CALL write_surf(hselect,hprogram,yrecfm,dut%XUTCIC_OUTSUN(:,jstress)
342 ycomment=
'Cumulated time spent in '//
cutci_stress_names(jstress)//
' stress range for person in shade'' (s)' 343 CALL write_surf(hselect,hprogram,yrecfm,dut%XUTCIC_OUTSHADE(:,jstress
351 IF (cht%SVT%NBEQ>0 .AND. cht%CCH_DRY_DEP==
"WES89 ")
THEN 352 DO jsv = 1,
SIZE(cht%CCH_NAMES,1)
353 yrecfm=
'DVTN'//
trim(cht%CCH_NAMES(jsv))
354 WRITE(ycomment,
'(A13,I3.3)')
'(m/s) DV_TWN_',jsv
355 CALL write_surf(hselect,hprogram,yrecfm,cht%XDEP(:,jsv),iresp,hcomment
363 IF (
lhook)
CALL dr_hook(
'WRITE_DIAG_SEB_TEB_N',1,zhook_handle)
static const char * trim(const char *name, int *n)
integer, parameter nutci_stress
subroutine write_diag_seb_teb_n(DTCO, HSELECT, U, CHT, DGO, D, DU
character(len=30) yswband_dim_name
subroutine end_io_surf_n(HPROGRAM)
character(len=3), dimension(nutci_stress), parameter cutci_stress_names
subroutine init_io_surf_n(DTCO, U, HPROGRAM, HMASK, HSCHEME, HACTION