53 USE modd_io_surf_aro
, ONLY : nblock
60 USE modi_init_io_surf_n
62 USE modi_end_io_surf_n
78 TYPE(
diag_t),
INTENT(INOUT) :: D
79 TYPE(
diag_t),
INTENT(INOUT) :: DC
81 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
87 CHARACTER(LEN=12) :: YRECFM
88 CHARACTER(LEN=100):: YCOMMENT
89 CHARACTER(LEN=2) :: YNUM
93 REAL(KIND=JPRB) :: ZHOOK_HANDLE
98 IF (
lhook)
CALL dr_hook(
'WRITE_DIAG_SEB_WATFLUX_N',0,zhook_handle)
105 IF (
ldef) greset = .false.
108 CALL init_io_surf_n(dtco, u, hprogram,
'WATER ',
'WATFLX',
'WRITE',
'WATFLUX_DIAGNOSTICS.OUT.nc' 117 ycomment=
'X_Y_'//yrecfm
118 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XRI(:),iresp,hcomment=ycomment
125 IF (dwo%LSURF_BUDGET)
THEN 128 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 129 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XRN(:),iresp,hcomment=ycomment
132 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 133 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XH(:),iresp,hcomment=ycomment
136 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 137 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XLE(:),iresp,hcomment=ycomment
140 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 141 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XLEI(:),iresp,hcomment=ycomment
144 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 145 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XGFLUX(:),iresp,hcomment
148 ycomment=
'X_Y_'//yrecfm//
' (kg/m2/s)' 149 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XEVAP(:),iresp,hcomment=ycomment
152 ycomment=
'X_Y_'//yrecfm//
' (kg/m2/s)' 153 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XSUBL(:),iresp,hcomment=ycomment
155 IF (dwo%LRAD_BUDGET)
THEN 158 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 159 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XSWD(:),iresp,hcomment
162 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 163 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XSWU(:),iresp,hcomment
166 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 167 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XLWD(:),iresp,hcomment
170 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 171 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XLWU(:),iresp,hcomment
176 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 178 hprogram,yrecfm,d%XSWBD(:,:),iresp,hcomment=ycomment, hnam_dim
181 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 183 hprogram,yrecfm,d%XSWBD(:,:),iresp,hcomment=ycomment, hnam_dim
187 DO jsw=1,
SIZE(d%XSWBD,2)
190 yrecfm=
'SWD_WAT_'//ynum
191 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 192 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XSWBD(:,jsw),iresp
194 yrecfm=
'SWU_WAT_'//ynum
195 ycomment=
'X_Y_'//yrecfm//
' (W/m2)' 196 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XSWBU(:,jsw),iresp
205 ycomment=
'X_Y_'//yrecfm//
' (kg/ms2)' 206 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XFMU(:),iresp,hcomment=ycomment
209 ycomment=
'X_Y_'//yrecfm//
' (kg/ms2)' 210 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XFMV(:),iresp,hcomment=ycomment
221 ycomment=
'X_Y_'//yrecfm
222 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XCD(:),iresp,hcomment=ycomment
225 ycomment=
'X_Y_'//yrecfm
226 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XCH(:),iresp,hcomment=ycomment
229 ycomment=
'X_Y_'//yrecfm
230 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XCE(:),iresp,hcomment=ycomment
233 ycomment=
'X_Y_'//yrecfm
234 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XZ0(:),iresp,hcomment=ycomment
237 ycomment=
'X_Y_'//yrecfm
238 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XZ0H(:),iresp,hcomment=ycomment
246 IF (dwo%LSURF_VARS)
THEN 249 ycomment=
'X_Y_'//yrecfm//
' (KG/KG)' 250 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XQS(:),iresp,hcomment=ycomment
261 ycomment=
'X_Y_'//yrecfm//
' (K)' 262 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XT2M(:),iresp,hcomment=ycomment
265 ycomment=
'X_Y_'//yrecfm//
' (K)' 266 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XT2M_MIN(:),iresp,hcomment
267 IF(greset)d%XT2M_MIN(:)=
xundef 270 ycomment=
'X_Y_'//yrecfm//
' (K)' 271 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XT2M_MAX(:),iresp,hcomment
272 IF(greset)d%XT2M_MAX(:)=0.0
275 ycomment=
'X_Y_'//yrecfm//
' (KG/KG)' 276 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XQ2M(:),iresp,hcomment=ycomment
279 ycomment=
'X_Y_'//yrecfm//
' (-)' 280 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XHU2M(:),iresp,hcomment=ycomment
283 ycomment=
'X_Y_'//yrecfm//
' (-)' 284 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XHU2M_MIN(:),iresp,hcomment
285 IF(greset)d%XHU2M_MIN(:)=
xundef 288 ycomment=
'X_Y_'//yrecfm//
' (-)' 289 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XHU2M_MAX(:),iresp,hcomment
290 IF(greset)d%XHU2M_MAX(:)=-
xundef 293 ycomment=
'X_Y_'//yrecfm//
' (M/S)' 294 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XZON10M(:),iresp,hcomment
297 ycomment=
'X_Y_'//yrecfm//
' (M/S)' 298 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XMER10M(:),iresp,hcomment
301 ycomment=
'X_Y_'//yrecfm//
' (M/S)' 302 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XWIND10M(:),iresp,hcomment
305 ycomment=
'X_Y_'//yrecfm//
' (M/S)' 306 CALL write_surf(duo%CSELECT,hprogram,yrecfm,d%XWIND10M_MAX(:),iresp,hcomment
307 IF(greset)d%XWIND10M_MAX(:)=0.0
315 IF (chw%SVW%NBEQ>0 .AND. chw%CCH_DRY_DEP==
"WES89 ")
THEN 316 DO jsv = 1,
SIZE(chw%CCH_NAMES,1)
317 yrecfm=
'DVWT'//
trim(chw%CCH_NAMES(jsv))
318 WRITE(ycomment,
'(A13,I3.3)')
'(m/s) DV_WAT_',jsv
319 CALL write_surf(duo%CSELECT,hprogram,yrecfm,chw%XDEP(:,jsv),iresp,hcomment
323 IF (dwo%LSURF_BUDGETC)
THEN 326 CALL init_io_surf_n(dtco, u, hprogram,
'WATER ',
'WATFLX',
'WRITE',
'WATFLUX_DIAG_CUMUL.OUT.nc' 329 ycomment=
'X_Y_'//yrecfm//
' (J/m2)' 330 CALL write_surf(duo%CSELECT,hprogram,yrecfm,dc%XRN(:),iresp,hcomment=ycomment
333 ycomment=
'X_Y_'//yrecfm//
' (J/m2)' 334 CALL write_surf(duo%CSELECT,hprogram,yrecfm,dc%XH(:),iresp,hcomment=ycomment
337 ycomment=
'X_Y_'//yrecfm//
' (J/m2)' 338 CALL write_surf(duo%CSELECT,hprogram,yrecfm,dc%XLE(:),iresp,hcomment=ycomment
341 ycomment=
'X_Y_'//yrecfm//
' (J/m2)' 342 CALL write_surf(duo%CSELECT,hprogram,yrecfm,dc%XLEI(:),iresp,hcomment=ycomment
345 ycomment=
'X_Y_'//yrecfm//
' (J/m2)' 346 CALL write_surf(duo%CSELECT,hprogram,yrecfm,dc%XGFLUX(:),iresp,hcomment
349 ycomment=
'X_Y_'//yrecfm//
' (kg/m2)' 350 CALL write_surf(duo%CSELECT,hprogram,yrecfm,dc%XEVAP(:),iresp,hcomment
353 ycomment=
'X_Y_'//yrecfm//
' (kg/m2)' 354 CALL write_surf(duo%CSELECT,hprogram,yrecfm,dc%XSUBL(:),iresp,hcomment
356 IF (dwo%LRAD_BUDGET .OR. (dwo%LSURF_BUDGETC .AND. .NOT.duo%LRESET_BUDGETC
THEN 359 ycomment=
'X_Y_'//yrecfm//
' (J/m2)' 360 CALL write_surf(duo%CSELECT,hprogram,yrecfm,dc%XSWD(:),iresp,hcomment
363 ycomment=
'X_Y_'//yrecfm//
' (J/m2)' 364 CALL write_surf(duo%CSELECT,hprogram,yrecfm,dc%XSWU(:),iresp,hcomment
367 ycomment=
'X_Y_'//yrecfm//
' (J/m2)' 368 CALL write_surf(duo%CSELECT,hprogram,yrecfm,dc%XLWD(:),iresp,hcomment
371 ycomment=
'X_Y_'//yrecfm//
' (J/m2)' 372 CALL write_surf(duo%CSELECT,hprogram,yrecfm,dc%XLWU(:),iresp,hcomment
377 ycomment=
'X_Y_'//yrecfm//
' (kg/ms)' 378 CALL write_surf(duo%CSELECT,hprogram,yrecfm,dc%XFMU(:),iresp,hcomment=ycomment
381 ycomment=
'X_Y_'//yrecfm//
' (kg/ms)' 382 CALL write_surf(duo%CSELECT,hprogram,yrecfm,dc%XFMV(:),iresp,hcomment=ycomment
391 IF (
lhook)
CALL dr_hook(
'WRITE_DIAG_SEB_WATFLUX_N',1,zhook_handle)
static const char * trim(const char *name, int *n)
subroutine write_diag_seb_watflux_n(DTCO, DUO, U, CHW, DWO, D, DC
character(len=30) yswband_dim_name
subroutine end_io_surf_n(HPROGRAM)
subroutine init_io_surf_n(DTCO, U, HPROGRAM, HMASK, HSCHEME, HACTION