49 USE modd_io_surf_aro
, ONLY : nblock
57 USE modi_init_io_surf_n
59 USE modi_end_io_surf_n
62 USE yomhook
,ONLY : lhook, dr_hook
63 USE parkind1
,ONLY : jprb
78 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
84 CHARACTER(LEN=12) :: yrecfm
85 CHARACTER(LEN=100):: ycomment
86 CHARACTER(LEN=2) :: ynum
90 REAL(KIND=JPRB) :: zhook_handle
95 IF (lhook) CALL dr_hook(
'WRITE_DIAG_SEB_FLAKE_N',0,zhook_handle)
103 hprogram,
'WATER ',
'FLAKE ',
'WRITE')
112 ycomment=
'Bulk-Richardson number for water'
115 hprogram,yrecfm,dgf%XRI(:),iresp,hcomment=ycomment)
122 IF (dgf%LSURF_BUDGET)
THEN
125 ycomment=
'net radiation for water'//
' (W/m2)'
128 hprogram,yrecfm,dgf%XRN(:),iresp,hcomment=ycomment)
131 ycomment=
'sensible heat flux for water'//
' (W/m2)'
134 hprogram,yrecfm,dgf%XH(:),iresp,hcomment=ycomment)
137 ycomment=
'total latent heat flux for water'//
' (W/m2)'
140 hprogram,yrecfm,dgf%XLE(:),iresp,hcomment=ycomment)
143 ycomment=
'sublimation latent heat flux for water-ice'//
' (W/m2)'
146 hprogram,yrecfm,dgf%XLEI(:),iresp,hcomment=ycomment)
149 ycomment=
'conduction flux for water'//
' (W/m2)'
152 hprogram,yrecfm,dgf%XGFLUX(:),iresp,hcomment=ycomment)
155 ycomment=
'X_Y_'//yrecfm//
' (kg/m2/s)'
158 hprogram,yrecfm,dgf%XEVAP(:),iresp,hcomment=ycomment)
161 ycomment=
'X_Y_'//yrecfm//
' (kg/m2/s)'
164 hprogram,yrecfm,dgf%XSUBL(:),iresp,hcomment=ycomment)
166 IF (dgf%LRAD_BUDGET)
THEN
169 ycomment=
'short wave downward radiation for water'//
' (W/m2)'
172 hprogram,yrecfm,dgf%XSWD(:),iresp,hcomment=ycomment)
175 ycomment=
'short wave upward radiation for water'//
' (W/m2)'
178 hprogram,yrecfm,dgf%XSWU(:),iresp,hcomment=ycomment)
181 ycomment=
'downward long wave radiation'//
' (W/m2)'
184 hprogram,yrecfm,dgf%XLWD(:),iresp,hcomment=ycomment)
187 ycomment=
'upward long wave radiation'//
' (W/m2)'
190 hprogram,yrecfm,dgf%XLWU(:),iresp,hcomment=ycomment)
192 DO jsw=1,
SIZE(dgf%XSWBD,2)
195 yrecfm=
'SWD_WAT_'//ynum
196 ycomment=
'downward short wave radiation by spectral band '//
' (W/m2)'
199 hprogram,yrecfm,dgf%XSWBD(:,jsw),iresp,hcomment=ycomment)
201 yrecfm=
'SWU_WAT_'//ynum
202 ycomment=
'upward short wave radiation by spectral band'//
' (W/m2)'
205 hprogram,yrecfm,dgf%XSWBU(:,jsw),iresp,hcomment=ycomment)
212 ycomment=
'u-component of momentum flux for water'//
' (kg/ms2)'
215 hprogram,yrecfm,dgf%XFMU(:),iresp,hcomment=ycomment)
217 ycomment=
'v-component of momentum flux for water'//
' (kg/ms2)'
220 hprogram,yrecfm,dgf%XFMV(:),iresp,hcomment=ycomment)
224 IF (dgf%LSURF_BUDGET.OR.dgf%LSURF_BUDGETC)
THEN
227 ycomment=
'total albedo over tile water (-)'
229 hprogram,yrecfm,dgf%XALBT(:),iresp,hcomment=ycomment)
232 ycomment=
'snow water equivalent over tile water (-)'
234 hprogram,yrecfm,dgf%XSWE(:),iresp,hcomment=ycomment)
238 IF (dgf%LSURF_BUDGETC)
THEN
241 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
244 hprogram,yrecfm,dgf%XRNC(:),iresp,hcomment=ycomment)
247 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
250 hprogram,yrecfm,dgf%XHC(:),iresp,hcomment=ycomment)
253 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
256 hprogram,yrecfm,dgf%XLEC(:),iresp,hcomment=ycomment)
259 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
262 hprogram,yrecfm,dgf%XLEIC(:),iresp,hcomment=ycomment)
265 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
268 hprogram,yrecfm,dgf%XGFLUXC(:),iresp,hcomment=ycomment)
271 ycomment=
'X_Y_'//yrecfm//
' (kg/m2)'
274 hprogram,yrecfm,dgf%XEVAPC(:),iresp,hcomment=ycomment)
277 ycomment=
'X_Y_'//yrecfm//
' (kg/m2)'
280 hprogram,yrecfm,dgf%XSUBLC(:),iresp,hcomment=ycomment)
282 IF (dgf%LRAD_BUDGET .OR. (dgf%LSURF_BUDGETC .AND. .NOT.dgu%LRESET_BUDGETC))
THEN
285 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
288 hprogram,yrecfm,dgf%XSWDC(:),iresp,hcomment=ycomment)
291 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
294 hprogram,yrecfm,dgf%XSWUC(:),iresp,hcomment=ycomment)
297 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
300 hprogram,yrecfm,dgf%XLWDC(:),iresp,hcomment=ycomment)
303 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
306 hprogram,yrecfm,dgf%XLWUC(:),iresp,hcomment=ycomment)
311 ycomment=
'X_Y_'//yrecfm//
' (kg/ms)'
314 hprogram,yrecfm,dgf%XFMUC(:),iresp,hcomment=ycomment)
317 ycomment=
'X_Y_'//yrecfm//
' (kg/ms)'
320 hprogram,yrecfm,dgf%XFMVC(:),iresp,hcomment=ycomment)
331 ycomment=
'drag coefficient for wind over water (W/s2)'
334 hprogram,yrecfm,dgf%XCD(:),iresp,hcomment=ycomment)
337 ycomment=
'drag coefficient for heat (W/s)'
340 hprogram,yrecfm,dgf%XCH(:),iresp,hcomment=ycomment)
343 ycomment=
'drag coefficient for vapor (W/s/K)'
346 hprogram,yrecfm,dgf%XCE(:),iresp,hcomment=ycomment)
349 ycomment=
'roughness length over water (m)'
352 hprogram,yrecfm,dgf%XZ0(:),iresp,hcomment=ycomment)
355 ycomment=
'thermal roughness length over water (m)'
358 hprogram,yrecfm,dgf%XZ0H(:),iresp,hcomment=ycomment)
366 IF (dgf%LSURF_VARS)
THEN
369 ycomment=
'specific humidity over water'//
' (KG/KG)'
372 hprogram,yrecfm,dgf%XQS(:),iresp,hcomment=ycomment)
384 ycomment=
'2 meters temperature'//
' (K)'
387 hprogram,yrecfm,dgf%XT2M(:),iresp,hcomment=ycomment)
390 ycomment=
'X_Y_'//yrecfm//
' (K)'
393 hprogram,yrecfm,dgf%XT2M_MIN(:),iresp,hcomment=ycomment)
394 IF(greset)dgf%XT2M_MIN(:)=xundef
397 ycomment=
'X_Y_'//yrecfm//
' (K)'
400 hprogram,yrecfm,dgf%XT2M_MAX(:),iresp,hcomment=ycomment)
401 IF(greset)dgf%XT2M_MAX(:)=0.0
404 ycomment=
'2 meters specific humidity'//
' (KG/KG)'
407 hprogram,yrecfm,dgf%XQ2M(:),iresp,hcomment=ycomment)
410 ycomment=
'2 meters relative humidity'//
' (KG/KG)'
413 hprogram,yrecfm,dgf%XHU2M(:),iresp,hcomment=ycomment)
416 ycomment=
'X_Y_'//yrecfm//
' (-)'
419 hprogram,yrecfm,dgf%XHU2M_MIN(:),iresp,hcomment=ycomment)
420 IF(greset)dgf%XHU2M_MIN(:)=xundef
423 ycomment=
'X_Y_'//yrecfm//
' (-)'
426 hprogram,yrecfm,dgf%XHU2M_MAX(:),iresp,hcomment=ycomment)
427 IF(greset)dgf%XHU2M_MAX(:)=-xundef
430 ycomment=
'10 meters zonal wind'//
' (M/S)'
433 hprogram,yrecfm,dgf%XZON10M(:),iresp,hcomment=ycomment)
436 ycomment=
'10 meters meridian wind'//
' (M/S)'
439 hprogram,yrecfm,dgf%XMER10M(:),iresp,hcomment=ycomment)
442 ycomment=
'X_Y_'//yrecfm//
' (M/S)'
445 hprogram,yrecfm,dgf%XWIND10M(:),iresp,hcomment=ycomment)
448 ycomment=
'X_Y_'//yrecfm//
' (M/S)'
451 hprogram,yrecfm,dgf%XWIND10M_MAX(:),iresp,hcomment=ycomment)
452 IF(greset)dgf%XWIND10M_MAX(:)=0.0
460 IF (chf%SVF%NBEQ>0 .AND. chf%CCH_DRY_DEP==
"WES89 ")
THEN
461 DO jsv = 1,
SIZE(chf%CCH_NAMES,1)
462 yrecfm=
'DV_WAT_'//trim(chf%CCH_NAMES(jsv))
463 WRITE(ycomment,
'(A13,I3.3)')
'(m/s) DV_WAT_',jsv
465 hprogram,yrecfm,chf%XDEP(:,jsv),iresp,hcomment=ycomment)
473 IF(dgu%LPROVAR_TO_DIAG)
THEN
476 ycomment=
'TS_WATER (K)'
478 hprogram,yrecfm,dgf%XDIAG_TS(:),iresp,hcomment=ycomment)
487 IF (lhook) CALL dr_hook(
'WRITE_DIAG_SEB_FLAKE_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_flake_n(DTCO, DGU, U, CHF, DGF, HPROGRAM)