3#if defined AVERAGES && defined AVERAGES_DETIDE && \
4 (defined ssh_tides || defined uv_tides)
38# if defined PIO_LIB && defined DISTRIBUTE
50 integer,
intent(in) :: ng, tile
54 integer :: lbi, ubi, lbj, ubj
56 character (len=*),
parameter :: myfile = &
68 SELECT CASE (
har(ng)%IOtype)
73# if defined PIO_LIB && defined DISTRIBUTE
86 10
FORMAT (
' WRT_TIDES - Illegal output file type, io_type = ',i0, &
87 & /,13x,
'Check KeyWord ''OUT_LIB'' in ''roms.in''.' )
101 integer,
intent(in) :: ng, tile
105 integer :: lbi, ubi, lbj, ubj
106 integer :: gtype, itide, itrc, status, varid
109 real(r8) :: work(
ntc(ng))
111 character (len=*),
parameter :: myfile = &
112 & __FILE__//
", wrt_tides_nf90"
129 &
hcount(ng), (/0/), (/0/), &
130 & ncid =
har(ng)%ncid)
138 & ncid =
har(ng)%ncid, &
145 work(itide)=
tides(ng)%Tperiod(itide)/3600.0_r8
151 & (/1/), (/
ntc(ng)/), &
152 & ncid =
har(ng)%ncid, &
160 &
tides(ng) % CosW_sum, &
161 & (/1/), (/
ntc(ng)/), &
162 & ncid =
har(ng)%ncid, &
170 &
tides(ng) % SinW_sum, &
171 & (/1/), (/
ntc(ng)/), &
172 & ncid =
har(ng)%ncid, &
180 &
tides(ng) % CosWCosW, &
181 & (/1,1/), (/
ntc(ng),
ntc(ng)/), &
182 & ncid =
har(ng)%ncid, &
190 &
tides(ng) % SinWSinW, &
191 & (/1,1/), (/
ntc(ng),
ntc(ng)/), &
192 & ncid =
har(ng)%ncid, &
200 &
tides(ng) % SinWCosW, &
201 & (/1,1/), (/
ntc(ng),
ntc(ng)/), &
202 & ncid =
har(ng)%ncid, &
213 & lbi, ubi, lbj, ubj, 0, 2*
ntc(ng), scale, &
215 &
grid(ng) % rmask, &
217 &
tides(ng) % zeta_tide, &
218 & setfillval = .false.)
219 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
236 & lbi, ubi, lbj, ubj, 0, 2*
ntc(ng), scale, &
238 &
grid(ng) % umask, &
240 &
tides(ng) % ubar_tide, &
241 & setfillval = .false.)
242 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
259 & lbi, ubi, lbj, ubj, 0, 2*
ntc(ng), scale, &
261 &
grid(ng) % vmask, &
263 &
tides(ng) % vbar_tide, &
264 & setfillval = .false.)
265 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
284 & lbi, ubi, lbj, ubj, 1,
n(ng), 0, 2*
ntc(ng), &
287 &
grid(ng) % umask, &
289 &
tides(ng) % u_tide, &
290 & setfillval = .false.)
291 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
308 & lbi, ubi, lbj, ubj, 1,
n(ng), 0, 2*
ntc(ng), &
311 &
grid(ng) % vmask, &
313 &
tides(ng) % v_tide, &
314 & setfillval = .false.)
315 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
333 & lbi, ubi, lbj, ubj, 1,
n(ng), 0, 2*
ntc(ng),&
336 &
grid(ng) % vmask, &
338 &
tides(ng) % t_tide(:,:,:,:,itrc), &
339 & setfillval = .false.)
340 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
361 10
FORMAT (2x,
'WRT_TIDES_NF90 - writing time-accumulated tide ', &
362 &
'harmonics, Grid ',i2.2)
363 20
FORMAT (/,
' WRT_TIDES_NF90 - error while writing variable: ',a, &
364 & /,13x,
'into detide harmonics NetCDF file: ',/,13x,a)
369# if defined PIO_LIB && defined DISTRIBUTE
373 & LBi, UBi, LBj, UBj)
380 integer,
intent(in) :: ng, tile
384 integer :: lbi, ubi, lbj, ubj
385 integer :: itide, itrc, status
388 real(r8) :: work(
ntc(ng))
390 character (len=*),
parameter :: myfile = &
391 & __FILE__//
", wrt_tides_pio"
408 &
hcount(ng), (/0/), (/0/), &
409 & piofile =
har(ng)%pioFile)
417 & piofile =
har(ng)%pioFile, &
424 work(itide)=
tides(ng)%Tperiod(itide)/3600.0_r8
430 & (/1/), (/
ntc(ng)/), &
431 & piofile =
har(ng)%pioFile, &
439 &
tides(ng) % CosW_sum, &
440 & (/1/), (/
ntc(ng)/), &
441 & piofile =
har(ng)%pioFile, &
449 &
tides(ng) % SinW_sum, &
450 & (/1/), (/
ntc(ng)/), &
451 & piofile =
har(ng)%pioFile, &
459 &
tides(ng) % CosWCosW, &
460 & (/1,1/), (/
ntc(ng),
ntc(ng)/), &
461 & piofile =
har(ng)%pioFile, &
469 &
tides(ng) % SinWSinW, &
470 & (/1,1/), (/
ntc(ng),
ntc(ng)/), &
471 & piofile =
har(ng)%pioFile, &
479 &
tides(ng) % SinWCosW, &
480 & (/1,1/), (/
ntc(ng),
ntc(ng)/), &
481 & piofile =
har(ng)%pioFile, &
489 IF (
har(ng)%pioVar(
idfsuh)%dkind.eq.pio_double)
THEN
498 & lbi, ubi, lbj, ubj, 0, 2*
ntc(ng), scale, &
500 &
grid(ng) % rmask, &
502 &
tides(ng) % zeta_tide, &
503 & setfillval = .false.)
504 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
518 IF (
har(ng)%pioVar(
idu2dh)%dkind.eq.pio_double)
THEN
527 & lbi, ubi, lbj, ubj, 0, 2*
ntc(ng), scale, &
529 &
grid(ng) % umask, &
531 &
tides(ng) % ubar_tide, &
532 & setfillval = .false.)
533 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
547 IF (
har(ng)%pioVar(
idv2dh)%dkind.eq.pio_double)
THEN
556 & lbi, ubi, lbj, ubj, 0, 2*
ntc(ng), scale, &
558 &
grid(ng) % vmask, &
560 &
tides(ng) % vbar_tide, &
561 & setfillval = .false.)
562 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
578 IF (
har(ng)%pioVar(
idu3dh)%dkind.eq.pio_double)
THEN
587 & lbi, ubi, lbj, ubj, 1,
n(ng), 0, 2*
ntc(ng), &
590 &
grid(ng) % umask, &
592 &
tides(ng) % u_tide, &
593 & setfillval = .false.)
594 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
608 IF (
har(ng)%pioVar(
idfsuh)%dkind.eq.pio_double)
THEN
617 & lbi, ubi, lbj, ubj, 1,
n(ng), 0, 2*
ntc(ng), &
620 &
grid(ng) % vmask, &
622 &
tides(ng) % v_tide, &
623 & setfillval = .false.)
624 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
639 IF (
har(ng)%pioVar(
idtrch)%dkind.eq.pio_double)
THEN
648 & lbi, ubi, lbj, ubj, 1,
n(ng), 0, 2*
ntc(ng),&
651 &
grid(ng) % vmask, &
653 &
tides(ng) % t_tide(:,:,:,:,itrc), &
654 & setfillval = .false.)
655 IF (
founderror(status, pio_noerr, __line__, myfile))
THEN
676 10
FORMAT (2x,
'WRT_TIDES_PIO - writing time-accumulated tide ', &
677 &
'harmonics, Grid ',i2.2)
678 20
FORMAT (/,
' WRT_TIDES_PIO - error while writing variable: ',a, &
679 & /,13x,
'into detide harmonics NetCDF file: ',/,13x,a)
type(t_grid), dimension(:), allocatable grid
type(t_io), dimension(:), allocatable har
character(len=256) sourcefile
integer, parameter io_nf90
integer, parameter io_pio
integer, dimension(:), allocatable idtrcd
integer, dimension(:), allocatable idtrch
character(len=maxlen), dimension(6, 0:nv) vname
logical, dimension(:,:), allocatable aout
subroutine, public netcdf_sync(ng, model, ncname, ncid)
integer, dimension(:), allocatable n
type(t_bounds), dimension(:), allocatable bounds
integer, parameter r3dvar
integer, parameter u3dvar
integer, parameter v3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_r2dhar
subroutine, public pio_netcdf_sync(ng, model, ncname, piofile)
type(io_desc_t), dimension(:), pointer iodesc_dp_u3dhar
type(io_desc_t), dimension(:), pointer iodesc_dp_v3dhar
type(io_desc_t), dimension(:), pointer iodesc_sp_v2dhar
type(io_desc_t), dimension(:), pointer iodesc_dp_v2dhar
type(io_desc_t), dimension(:), pointer iodesc_sp_r3dhar
type(io_desc_t), dimension(:), pointer iodesc_sp_r2dhar
type(io_desc_t), dimension(:), pointer iodesc_sp_u2dhar
type(io_desc_t), dimension(:), pointer iodesc_sp_v3dhar
type(io_desc_t), dimension(:), pointer iodesc_sp_u3dhar
type(io_desc_t), dimension(:), pointer iodesc_dp_u2dhar
type(io_desc_t), dimension(:), pointer iodesc_dp_r3dhar
integer, dimension(:), allocatable hcount
real(dp), dimension(:), allocatable time
integer, dimension(:), allocatable ntc
type(t_tides), dimension(:), allocatable tides
logical function, public founderror(flag, noerr, line, routine)
subroutine, private wrt_tides_pio(ng, tile, lbi, ubi, lbj, ubj)
subroutine, private wrt_tides_nf90(ng, tile, lbi, ubi, lbj, ubj)
subroutine, public wrt_tides(ng, tile)