53 USE modd_io_surf_aro
, ONLY : nblock
63 USE modi_init_io_surf_n
65 USE modi_end_io_surf_n
67 USE yomhook
,ONLY : lhook, dr_hook
68 USE parkind1
,ONLY : jprb
83 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
89 CHARACTER(LEN=12) :: yrecfm
90 CHARACTER(LEN=100):: ycomment
91 CHARACTER(LEN=2) :: ynum
97 REAL(KIND=JPRB) :: zhook_handle
101 IF (lhook) CALL dr_hook(
'WRITE_DIAG_SEB_SEAFLUX_N',0,zhook_handle)
111 hprogram,
'SEA ',
'SEAFLX',
'WRITE')
117 gmisc=(dgs%N2M>=1.OR.dgs%LSURF_BUDGET.OR.dgs%LSURF_BUDGETC)
119 IF (gmisc.AND.s%LHANDLE_SIC)
THEN
122 ycomment=
'X_Y_'//yrecfm//
' (K)'
125 hprogram,yrecfm,dgs%XTS(:),iresp,hcomment=ycomment)
128 ycomment=
'X_Y_'//yrecfm//
' (K)'
131 hprogram,yrecfm,dgs%XTSRAD(:),iresp,hcomment=ycomment)
141 ycomment=
'X_Y_'//yrecfm
144 hprogram,yrecfm,dgs%XRI(:),iresp,hcomment=ycomment)
151 IF (dgs%LSURF_BUDGET)
THEN
154 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
157 hprogram,yrecfm,dgs%XRN(:),iresp,hcomment=ycomment)
160 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
163 hprogram,yrecfm,dgs%XH(:),iresp,hcomment=ycomment)
166 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
169 hprogram,yrecfm,dgs%XLE(:),iresp,hcomment=ycomment)
172 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
174 hprogram,yrecfm,dgs%XLE_ICE(:),iresp,hcomment=ycomment)
177 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
180 hprogram,yrecfm,dgs%XGFLUX(:),iresp,hcomment=ycomment)
183 ycomment=
'X_Y_'//yrecfm//
' (kg/m2/s)'
186 hprogram,yrecfm,dgs%XEVAP(:),iresp,hcomment=ycomment)
189 ycomment=
'X_Y_'//yrecfm//
' (kg/m2/s)'
192 hprogram,yrecfm,dgs%XSUBL(:),iresp,hcomment=ycomment)
194 IF (dgs%LRAD_BUDGET)
THEN
197 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
200 hprogram,yrecfm,dgs%XSWD(:),iresp,hcomment=ycomment)
203 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
206 hprogram,yrecfm,dgs%XSWU(:),iresp,hcomment=ycomment)
209 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
212 hprogram,yrecfm,dgs%XLWD(:),iresp,hcomment=ycomment)
215 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
218 hprogram,yrecfm,dgs%XLWU(:),iresp,hcomment=ycomment)
220 DO jsw=1,
SIZE(dgs%XSWBD,2)
223 yrecfm=
'SWD_SEA_'//ynum
224 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
227 hprogram,yrecfm,dgs%XSWBD(:,jsw),iresp,hcomment=ycomment)
229 yrecfm=
'SWU_SEA_'//ynum
230 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
233 hprogram,yrecfm,dgs%XSWBU(:,jsw),iresp,hcomment=ycomment)
240 ycomment=
'X_Y_'//yrecfm//
' (kg/ms2)'
243 hprogram,yrecfm,dgs%XFMU(:),iresp,hcomment=ycomment)
246 ycomment=
'X_Y_'//yrecfm//
' (kg/ms2)'
249 hprogram,yrecfm,dgs%XFMV(:),iresp,hcomment=ycomment)
253 IF (dgs%LSURF_BUDGETC)
THEN
256 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
259 hprogram,yrecfm,dgs%XRNC(:),iresp,hcomment=ycomment)
262 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
265 hprogram,yrecfm,dgs%XHC(:),iresp,hcomment=ycomment)
268 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
271 hprogram,yrecfm,dgs%XLEC(:),iresp,hcomment=ycomment)
274 ycomment=
'X_Y_'//yrecfm//
' (W/m2)'
276 hprogram,yrecfm,dgs%XLEC_ICE(:),iresp,hcomment=ycomment)
279 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
282 hprogram,yrecfm,dgs%XGFLUXC(:),iresp,hcomment=ycomment)
285 ycomment=
'X_Y_'//yrecfm//
' (kg/m2)'
288 hprogram,yrecfm,dgs%XEVAPC(:),iresp,hcomment=ycomment)
291 ycomment=
'X_Y_'//yrecfm//
' (kg/m2)'
294 hprogram,yrecfm,dgs%XSUBLC(:),iresp,hcomment=ycomment)
296 IF (dgs%LRAD_BUDGET .OR. (dgs%LSURF_BUDGETC .AND. .NOT.dgu%LRESET_BUDGETC))
THEN
299 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
302 hprogram,yrecfm,dgs%XSWDC(:),iresp,hcomment=ycomment)
305 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
308 hprogram,yrecfm,dgs%XSWUC(:),iresp,hcomment=ycomment)
311 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
314 hprogram,yrecfm,dgs%XLWDC(:),iresp,hcomment=ycomment)
317 ycomment=
'X_Y_'//yrecfm//
' (J/m2)'
320 hprogram,yrecfm,dgs%XLWUC(:),iresp,hcomment=ycomment)
325 ycomment=
'X_Y_'//yrecfm//
' (kg/ms)'
328 hprogram,yrecfm,dgs%XFMUC(:),iresp,hcomment=ycomment)
331 ycomment=
'X_Y_'//yrecfm//
' (kg/ms)'
334 hprogram,yrecfm,dgs%XFMVC(:),iresp,hcomment=ycomment)
338 IF (dgs%LSURF_BUDGET.OR.dgs%LSURF_BUDGETC)
THEN
341 ycomment=
'total albedo over tile sea (-)'
343 hprogram,yrecfm,dgs%XALBT(:),iresp,hcomment=ycomment)
353 ycomment=
'X_Y_'//yrecfm//
' (W/s2)'
356 hprogram,yrecfm,dgs%XCD(:),iresp,hcomment=ycomment)
359 ycomment=
'X_Y_'//yrecfm//
' (W/s)'
362 hprogram,yrecfm,dgs%XCH(:),iresp,hcomment=ycomment)
365 ycomment=
'X_Y_'//yrecfm//
' (W/s/K)'
368 hprogram,yrecfm,dgs%XCE(:),iresp,hcomment=ycomment)
371 ycomment=
'X_Y_'//yrecfm//
' (M)'
374 hprogram,yrecfm,dgs%XZ0(:),iresp,hcomment=ycomment)
377 ycomment=
'X_Y_'//yrecfm//
' (M)'
380 hprogram,yrecfm,dgs%XZ0H(:),iresp,hcomment=ycomment)
388 IF (dgs%LSURF_VARS)
THEN
391 ycomment=
'X_Y_'//yrecfm//
' (KG/KG)'
394 hprogram,yrecfm,dgs%XQS(:),iresp,hcomment=ycomment)
405 ycomment=
'X_Y_'//yrecfm//
' (K)'
408 hprogram,yrecfm,dgs%XT2M(:),iresp,hcomment=ycomment)
411 ycomment=
'X_Y_'//yrecfm//
' (K)'
414 hprogram,yrecfm,dgs%XT2M_MIN(:),iresp,hcomment=ycomment)
415 IF(greset)dgs%XT2M_MIN(:)=xundef
418 ycomment=
'X_Y_'//yrecfm//
' (K)'
421 hprogram,yrecfm,dgs%XT2M_MAX(:),iresp,hcomment=ycomment)
422 IF(greset)dgs%XT2M_MAX(:)=0.0
425 ycomment=
'X_Y_'//yrecfm//
' (KG/KG)'
428 hprogram,yrecfm,dgs%XQ2M(:),iresp,hcomment=ycomment)
431 ycomment=
'X_Y_'//yrecfm//
' (-)'
434 hprogram,yrecfm,dgs%XHU2M(:),iresp,hcomment=ycomment)
437 ycomment=
'X_Y_'//yrecfm//
' (-)'
440 hprogram,yrecfm,dgs%XHU2M_MIN(:),iresp,hcomment=ycomment)
441 IF(greset)dgs%XHU2M_MIN(:)=xundef
444 ycomment=
'X_Y_'//yrecfm//
' (-)'
447 hprogram,yrecfm,dgs%XHU2M_MAX(:),iresp,hcomment=ycomment)
448 IF(greset)dgs%XHU2M_MAX(:)=-xundef
451 ycomment=
'X_Y_'//yrecfm//
' (M/S)'
454 hprogram,yrecfm,dgs%XZON10M(:),iresp,hcomment=ycomment)
457 ycomment=
'X_Y_'//yrecfm//
' (M/S)'
460 hprogram,yrecfm,dgs%XMER10M(:),iresp,hcomment=ycomment)
463 ycomment=
'X_Y_'//yrecfm//
' (M/S)'
466 hprogram,yrecfm,dgs%XWIND10M(:),iresp,hcomment=ycomment)
469 ycomment=
'X_Y_'//yrecfm//
' (M/S)'
472 hprogram,yrecfm,dgs%XWIND10M_MAX(:),iresp,hcomment=ycomment)
473 IF(greset)dgs%XWIND10M_MAX(:)=0.0
481 IF (chs%SVS%NBEQ>0 .AND. chs%CCH_DRY_DEP==
"WES89 ")
THEN
482 DO jsv = 1,
SIZE(chs%CCH_NAMES,1)
483 yrecfm=
'DV_SEA_'//trim(chs%CCH_NAMES(jsv))
484 WRITE(ycomment,
'(A13,I3.3)')
'(m/s) DV_SEA_',jsv
486 hprogram,yrecfm,chs%XDEP(:,jsv),iresp,hcomment=ycomment)
496 IF (lhook) CALL dr_hook(
'WRITE_DIAG_SEB_SEAFLUX_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_seaflux_n(DTCO, DGU, U, CHS, DGS, S, HPROGRAM)