41 PRIVATE :: wrt_std_nf90
42# if defined PIO_LIB && defined DISTRIBUTE
43 PRIVATE :: wrt_std_pio
49 SUBROUTINE wrt_std (ng, tile, Lstd)
54 integer,
intent(in) :: ng, tile, Lstd
58 integer :: LBi, UBi, LBj, UBj
60 character (len=*),
parameter :: MyFile = &
72 SELECT CASE (
std(5,ng)%IOtype)
74 CALL wrt_std_nf90 (ng, tile, lstd, &
77# if defined PIO_LIB && defined DISTRIBUTE
79 CALL wrt_std_pio (ng, tile, lstd, &
89 10
FORMAT (
' WRT_STD - Illegal output file type, io_type = ',i0, &
90 & /,13x,
'Check KeyWord ''OUT_LIB'' in ''roms.in''.')
93 END SUBROUTINE wrt_std
96 SUBROUTINE wrt_std_nf90 (ng, tile, Lstd, &
104 integer,
intent(in) :: ng, tile, Lstd
105 integer,
intent(in) :: LBi, UBi, LBj, UBj
109 integer :: Fcount, i, j, gfactor, gtype, status
116 character (len=*),
parameter :: MyFile = &
117 & __FILE__//
", wrt_std_nf90"
130# if defined WRITE_WATER && defined MASKING
138 std(5,ng)%Rindex=
std(5,ng)%Rindex+1
139 fcount=
std(5,ng)%Fcount
140 std(5,ng)%Nrec(fcount)=
std(5,ng)%Nrec(fcount)+1
162 & (/
std(5,ng)%Rindex/), (/1/), &
163 & ncid =
std(5,ng)%ncid, &
173 &
std(5,ng)%Rindex, gtype, &
174 & lbi, ubi, lbj, ubj, scale, &
176 &
grid(ng) % rmask, &
178 &
ocean(ng)% e_zeta(:,:,lstd))
179 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
194 &
std(5,ng)%Rindex, gtype, &
195 & lbi, ubi, lbj, ubj, scale, &
197 &
grid(ng) % umask_full, &
199 &
ocean(ng) % e_ubar(:,:,lstd))
200 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
215 &
std(5,ng)%Rindex, gtype, &
216 & lbi, ubi, lbj, ubj, scale, &
218 &
grid(ng) % vmask_full, &
220 &
ocean(ng) % e_vbar(:,:,lstd))
221 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
238 &
std(5,ng)%Rindex, gtype, &
239 & lbi, ubi, lbj, ubj, 1,
n(ng), scale, &
241 &
grid(ng) % umask_full, &
243 &
ocean(ng) % e_u(:,:,:,lstd))
244 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
259 &
std(5,ng)%Rindex, gtype, &
260 & lbi, ubi, lbj, ubj, 1,
n(ng), scale, &
262 &
grid(ng) % vmask_full, &
264 &
ocean(ng) % e_v(:,:,:,lstd))
265 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
280 &
std(5,ng)%Tid(itrc), &
281 &
std(5,ng)%Rindex, gtype, &
282 & lbi, ubi, lbj, ubj, 1,
n(ng), scale, &
284 &
grid(ng) % rmask, &
286 &
ocean(ng) % e_t(:,:,:,lstd,itrc))
287 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
307 10
FORMAT (2x,
'WRT_STD_NF90 - writing standard deviation', t42, &
310 &
'fields (Index=',i1,
',',i1,
') in record = ',i0,t92,i2.2)
312 &
'fields (Index=',i1,
',',i1,
') in record = ',i0)
316 &
'fields (Index=',i1,
') in record = ',i0,t92,i2.2)
318 &
'fields (Index=',i1,
') in record = ',i0)
321 20
FORMAT (/,
' WRT_STD_NF90 - error while writing variable: ',a, &
322 & /,16x,
'into 4DVar error NetCDF file for time record: ',i0)
325 END SUBROUTINE wrt_std_nf90
327# if defined PIO_LIB && defined DISTRIBUTE
330 SUBROUTINE wrt_std_pio (ng, tile, Lstd, &
331 & LBi, UBi, LBj, UBj)
338 integer,
intent(in) :: ng, tile, Lstd
339 integer,
intent(in) :: LBi, UBi, LBj, UBj
343 integer :: Fcount, i, ifield, j, status
350 character (len=*),
parameter :: MyFile = &
351 & __FILE__//
", wrt_std_nf90"
353 TYPE (IO_desc_t),
pointer :: ioDesc
365 std(5,ng)%Rindex=
std(5,ng)%Rindex+1
366 fcount=
std(5,ng)%Fcount
367 std(5,ng)%Nrec(fcount)=
std(5,ng)%Nrec(fcount)+1
389 & (/
std(5,ng)%Rindex/), (/1/), &
390 & piofile =
std(5,ng)%pioFile, &
397 IF (
std(5,ng)%pioVar(
idfsur)%dkind.eq.pio_double)
THEN
405 &
std(5,ng)%Rindex, &
407 & lbi, ubi, lbj, ubj, scale, &
409 &
grid(ng) % rmask, &
411 &
ocean(ng)% e_zeta(:,:,lstd))
412 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
426 IF (
std(5,ng)%pioVar(
idubar)%dkind.eq.pio_double)
THEN
434 &
std(5,ng)%Rindex, &
436 & lbi, ubi, lbj, ubj, scale, &
438 &
grid(ng) % umask_full, &
440 &
ocean(ng) % e_ubar(:,:,lstd))
441 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
453 IF (
std(5,ng)%pioVar(
idvbar)%dkind.eq.pio_double)
THEN
461 &
std(5,ng)%Rindex, &
463 & lbi, ubi, lbj, ubj, scale, &
465 &
grid(ng) % vmask_full, &
467 &
ocean(ng) % e_vbar(:,:,lstd))
468 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
483 IF (
std(5,ng)%pioVar(
iduvel)%dkind.eq.pio_double)
THEN
491 &
std(5,ng)%Rindex, &
493 & lbi, ubi, lbj, ubj, 1,
n(ng), scale, &
495 &
grid(ng) % umask_full, &
497 &
ocean(ng) % e_u(:,:,:,lstd))
498 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
510 IF (
std(5,ng)%pioVar(
idfsur)%dkind.eq.pio_double)
THEN
518 &
std(5,ng)%Rindex, &
520 & lbi, ubi, lbj, ubj, 1,
n(ng), scale, &
522 &
grid(ng) % vmask_full, &
524 &
ocean(ng) % e_v(:,:,:,lstd))
525 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
538 IF (
std(5,ng)%pioTrc(itrc)%dkind.eq.pio_double)
THEN
545 &
std(5,ng)%pioTrc(itrc), &
546 &
std(5,ng)%Rindex, &
548 & lbi, ubi, lbj, ubj, 1,
n(ng), scale, &
550 &
grid(ng) % rmask, &
552 &
ocean(ng) % e_t(:,:,:,lstd,itrc))
553 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
574 10
FORMAT (2x,
'WRT_STD_PIO - writing standard deviation', t42, &
577 &
'fields (Index=',i1,
',',i1,
') in record = ',i0,t92,i2.2)
579 &
'fields (Index=',i1,
',',i1,
') in record = ',i0)
583 &
'fields (Index=',i1,
') in record = ',i0,t92,i2.2)
585 &
'fields (Index=',i1,
') in record = ',i0)
588 20
FORMAT (/,
' WRT_STD_PIO - error while writing variable: ',a, &
589 & /,15x,
'into 4DVar error NetCDF file for time record: ',i0)
592 END SUBROUTINE wrt_std_pio
type(t_grid), dimension(:), allocatable grid
type(t_io), dimension(:,:), allocatable std
character(len=256) sourcefile
integer, parameter io_nf90
integer, parameter io_pio
integer, dimension(:), allocatable idtvar
character(len=maxlen), dimension(6, 0:nv) vname
subroutine, public netcdf_sync(ng, model, ncname, ncid)
type(t_ocean), dimension(:), allocatable ocean
integer, dimension(:), allocatable n
type(t_bounds), dimension(:), allocatable bounds
integer, parameter r3dvar
integer, parameter u3dvar
integer, parameter u2dvar
integer, dimension(:), allocatable nt
integer, parameter r2dvar
integer, parameter v2dvar
integer, parameter v3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_r3dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_u3dvar
subroutine, public pio_netcdf_sync(ng, model, ncname, piofile)
type(io_desc_t), dimension(:), pointer iodesc_sp_u2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_u3dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_r2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_u2dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_v3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_v2dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_v3dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_r3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_r2dvar
type(io_desc_t), dimension(:), pointer iodesc_sp_v2dvar
real(dp), dimension(:), allocatable time
logical function, public founderror(flag, noerr, line, routine)