26#if defined AVERAGES && defined AVERAGES_DETIDE && \
27 (defined ssh_tides || defined uv_tides)
29# if defined PIO_LIB && defined DISTRIBUTE
39#if defined SSH_TIDES || defined UV_TIDES
43#if defined AVERAGES && defined AVERAGES_DETIDE && \
44 (defined ssh_tides || defined uv_tides)
57 integer,
intent(in) :: ng
61 logical,
save :: recordless = .true.
63 logical,
dimension(3) :: update = &
64 & (/ .FALSE., .FALSE., .FALSE. /)
66 integer :: LBi, UBi, LBj, UBj
69#if defined AVERAGES && defined AVERAGES_DETIDE && \
70 (defined ssh_tides || defined uv_tides)
71 integer :: gtype, status, varid, Vsize(4)
73 real(r8),
parameter :: Fscl = 1.0_r8
75 real(r8) :: Fmin, Fmax, Htime
77 real(r8) :: time_save = 0.0_r8
79 character (len=*),
parameter :: MyFile = &
82#if defined AVERAGES && defined AVERAGES_DETIDE && \
83 (defined ssh_tides || defined uv_tides)
84# if defined PIO_LIB && defined DISTRIBUTE
86 TYPE (IO_Desc_t),
pointer :: ioDesc
87 TYPE (My_VarDesc),
pointer :: pioVar
95 lbi=lbound(
grid(ng)%h,dim=1)
96 ubi=ubound(
grid(ng)%h,dim=1)
97 lbj=lbound(
grid(ng)%h,dim=2)
98 ubj=ubound(
grid(ng)%h,dim=2)
100#if defined AVERAGES && defined AVERAGES_DETIDE && \
101 (defined ssh_tides || defined uv_tides)
120#if defined SSH_TIDES || defined UV_TIDES
129 IF (
iic(ng).eq.0)
THEN
131# if defined PIO_LIB && defined DISTRIBUTE
132 &
tide(ng)%pioFile, &
134 & 1,
tide(ng), recordless, update(1), &
135 & 1,
mtc, 1, 1, 1,
ntc(ng), 1, &
136 &
tides(ng) % Tperiod)
149 IF (
iic(ng).eq.0)
THEN
151 time(ng)=8640000.0_r8
155# if defined PIO_LIB && defined DISTRIBUTE
156 &
tide(ng)%pioFile, &
158 & 1,
tide(ng), update(1), &
159 & lbi, ubi, lbj, ubj,
mtc,
ntc(ng), &
161 &
grid(ng) % rmask, &
163 &
tides(ng) % SSH_Tamp)
167# if defined PIO_LIB && defined DISTRIBUTE
168 &
tide(ng)%pioFile, &
170 & 1,
tide(ng), update(1), &
171 & lbi, ubi, lbj, ubj,
mtc,
ntc(ng), &
173 &
grid(ng) % rmask, &
175 &
tides(ng) % SSH_Tphase)
189 IF (
iic(ng).eq.0)
THEN
191 time(ng)=8640000.0_r8
195# if defined PIO_LIB && defined DISTRIBUTE
196 &
tide(ng)%pioFile, &
198 & 1,
tide(ng), update(1), &
199 & lbi, ubi, lbj, ubj,
mtc,
ntc(ng), &
201 &
grid(ng) % rmask, &
203 &
tides(ng) % UV_Tangle)
207# if defined PIO_LIB && defined DISTRIBUTE
208 &
tide(ng)%pioFile, &
210 & 1,
tide(ng), update(1), &
211 & lbi, ubi, lbj, ubj,
mtc,
ntc(ng), &
213 &
grid(ng) % rmask, &
215 &
tides(ng) % UV_Tphase)
219# if defined PIO_LIB && defined DISTRIBUTE
220 &
tide(ng)%pioFile, &
222 & 1,
tide(ng), update(1), &
223 & lbi, ubi, lbj, ubj,
mtc,
ntc(ng), &
225 &
grid(ng) % rmask, &
227 &
tides(ng) % UV_Tmajor)
231# if defined PIO_LIB && defined DISTRIBUTE
232 &
tide(ng)%pioFile, &
234 & 1,
tide(ng), update(1), &
235 & lbi, ubi, lbj, ubj,
mtc,
ntc(ng), &
237 &
grid(ng) % rmask, &
239 &
tides(ng) % UV_Tminor)
248#if defined AVERAGES && defined AVERAGES_DETIDE && \
249 (defined ssh_tides || defined uv_tides)
269 SELECT CASE (
har(ng)%IOtype)
273 &
rclock%DateNumber, htime, &
274 & ncid =
har(ng)%ncid)
276# if defined PIO_LIB && defined DISTRIBUTE
280 &
rclock%DateNumber, htime, &
281 & piofile =
har(ng)%pioFile)
286 IF (
time(ng).ne.htime)
THEN
297 SELECT CASE (
har(ng)%IOtype)
301 & ncid =
har(ng)%ncid)
303# if defined PIO_LIB && defined DISTRIBUT
307 & piofile =
har(ng)%pioFile)
315# if defined PIO_LIB && defined DISTRIBUTE
318 & 1,
har(ng), recordless, update(1), &
319 & 1,
mtc, 1, 1, 1,
ntc(ng), 1, &
320 &
tides(ng) % CosW_sum)
326# if defined PIO_LIB && defined DISTRIBUTE
329 & 1,
har(ng), recordless, update(1), &
330 & 1,
mtc, 1, 1, 1,
ntc(ng), 1, &
331 &
tides(ng) % SinW_sum)
337# if defined PIO_LIB && defined DISTRIBUTE
340 & 1,
har(ng), recordless, update(1), &
342 &
tides(ng) % CosWCosW)
348# if defined PIO_LIB && defined DISTRIBUTE
351 & 1,
har(ng), recordless, update(1), &
353 &
tides(ng) % SinWSinW)
359# if defined PIO_LIB && defined DISTRIBUTE
362 & 1,
har(ng), recordless, update(1), &
364 &
tides(ng) % SinWCosW)
370 SELECT CASE (
har(ng)%IOtype)
378 & lbi, ubi, lbj, ubj, 0, 2*
ntc(ng), &
379 & fscl, fmin, fmax, &
381 &
grid(ng) % rmask, &
383 &
tides(ng) % zeta_tide)
385# if defined PIO_LIB && defined DISTRIBUTE
389 IF (kind(
tides(ng)%zeta_tide).eq.8)
THEN
390 piovar%dkind=pio_double
393 piovar%dkind=pio_real
402 & 0, iodesc, vsize, &
403 & lbi, ubi, lbj, ubj, 0, 2*
ntc(ng), &
404 & fscl, fmin, fmax, &
406 &
grid(ng) % rmask, &
408 &
tides(ng) % zeta_tide)
412 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
430 SELECT CASE (
har(ng)%IOtype)
438 & lbi, ubi, lbj, ubj, 0, 2*
ntc(ng), &
439 & fscl, fmin, fmax, &
441 &
grid(ng) % umask, &
443 &
tides(ng) % ubar_tide)
445# if defined PIO_LIB && defined DISTRIBUTE
449 IF (kind(
tides(ng)%ubar_tide).eq.8)
THEN
450 piovar%dkind=pio_double
453 piovar%dkind=pio_real
462 & 0, iodesc, vsize, &
463 & lbi, ubi, lbj, ubj, 0, 2*
ntc(ng), &
464 & fscl, fmin, fmax, &
466 &
grid(ng) % umask, &
468 &
tides(ng) % ubar_tide)
471 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
489 SELECT CASE (
har(ng)%IOtype)
497 & lbi, ubi, lbj, ubj, 0, 2*
ntc(ng), &
498 & fscl, fmin, fmax, &
500 &
grid(ng) % vmask, &
502 &
tides(ng) % vbar_tide)
504# if defined PIO_LIB && defined DISTRIBUTE
508 IF (kind(
tides(ng)%vbar_tide).eq.8)
THEN
509 piovar%dkind=pio_double
512 piovar%dkind=pio_real
521 & 0, iodesc, vsize, &
522 & lbi, ubi, lbj, ubj, 0, 2*
ntc(ng), &
523 & fscl, fmin, fmax, &
525 &
grid(ng) % vmask, &
527 &
tides(ng) % vbar_tide)
530 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
550 SELECT CASE (
har(ng)%IOtype)
558 & lbi, ubi, lbj, ubj, 1,
n(ng), &
560 & fscl, fmin, fmax, &
562 &
grid(ng) % umask, &
564 &
tides(ng) % u_tide)
566# if defined PIO_LIB && defined DISTRIBUTE
570 IF (kind(
tides(ng)%u_tide).eq.8)
THEN
571 piovar%dkind=pio_double
574 piovar%dkind=pio_real
583 & 0, iodesc, vsize, &
584 & lbi, ubi, lbj, ubj, 1,
n(ng), &
586 & fscl, fmin, fmax, &
588 &
grid(ng) % umask, &
590 &
tides(ng) % u_tide)
593 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
611 SELECT CASE (
har(ng)%IOtype)
619 & lbi, ubi, lbj, ubj, 1,
n(ng), &
621 & fscl, fmin, fmax, &
623 &
grid(ng) % vmask, &
625 &
tides(ng) % v_tide)
627# if defined PIO_LIB && defined DISTRIBUTE
631 IF (kind(
tides(ng)%v_tide).eq.8)
THEN
632 piovar%dkind=pio_double
635 piovar%dkind=pio_real
644 & 0, iodesc, vsize, &
645 & lbi, ubi, lbj, ubj, 1,
n(ng), &
647 & fscl, fmin, fmax, &
649 &
grid(ng) % vmask, &
651 &
tides(ng) % v_tide)
654 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
673 SELECT CASE (
har(ng)%IOtype)
681 & lbi, ubi, lbj, ubj, 1,
n(ng), &
683 & fscl, fmin, fmax, &
685 &
grid(ng) % rmask, &
687 &
tides(ng) % t_tide(:,:,:,:,itrc))
689# if defined PIO_LIB && defined DISTRIBUTE
692 piovar%vd =>
har(ng)%pioVar(
idtrch(itrc))%vd
693 IF (kind(
tides(ng)%t_tide).eq.8)
THEN
694 piovar%dkind=pio_double
697 piovar%dkind=pio_real
706 & 0, iodesc, vsize, &
707 & lbi, ubi, lbj, ubj, 1,
n(ng), &
709 & fscl, fmin, fmax, &
711 &
grid(ng) % rmask, &
713 &
tides(ng) % t_tide(:,:,:,:,itrc))
716 IF (
founderror(status, nf90_noerr, __line__, myfile))
THEN
744 IF ((
iic(ng).eq.0).and. &
747# if defined PIO_LIB && defined DISTRIBUTE
750 & 1,
ssf(ng), recordless, update(1), &
751 & 1,
nsrc(ng), 1, 1, 1,
nsrc(ng), 1, &
756# if defined PIO_LIB && defined DISTRIBUTE
759 & 1,
ssf(ng), recordless, update(1), &
760 & 1,
nsrc(ng), 1, 1, 1,
nsrc(ng), 1, &
765# if defined PIO_LIB && defined DISTRIBUTE
768 & 1,
ssf(ng), recordless, update(1), &
769 & 1,
nsrc(ng), 1, 1, 1,
nsrc(ng), 1, &
775# if defined PIO_LIB && defined DISTRIBUTE
778 & 1,
ssf(ng), recordless, update(1), &
779 & 1,
nsrc(ng),
n(ng), 1, 1,
nsrc(ng),
n(ng), &
786 & max(1,min(nint(
sources(ng)%Xsrc(is)),
lm(ng)+1))
788 & max(1,min(nint(
sources(ng)%Ysrc(is)),
mm(ng)+1))
802# if defined PIO_LIB && defined DISTRIBUTE
806 & lbi, ubi, lbj, ubj, 1, 1, &
808 &
grid(ng) % rmask, &
810 &
ocean(ng) % CystIni)
826#if defined AVERAGES && defined AVERAGES_DETIDE && \
827 (defined ssh_tides || defined uv_tides)
829 10
FORMAT (/,
' GET_IDATA - error while reading variable: ',a, &
830 & /,13x,
'in input NetCDF file: ',a)
831 20
FORMAT (/,
' GET_IDATA - incosistent restart and harmonics time:', &
832 & /,13x,f15.4,2x,f15.4)
833 30
FORMAT (16x,
'- ',a,/,19x,
'(Min = ',1p,e15.8, &
834 &
' Max = ',1p,e15.8,
')')
subroutine get_2dfld(ng, model, ifield, ncid, piofile, nfiles, s, update, lbi, ubi, lbj, ubj, iout, irec, fmask, fout)
subroutine get_ngfld(ng, model, ifield, ncid, piofile, nfiles, s, recordless, update, lbi, ubi, ubj, ubk, istr, iend, jrec, fout)
subroutine, public def_tides(ng, ldef)
type(t_grid), dimension(:), allocatable grid
type(t_io), dimension(:), allocatable ssf
type(t_io), dimension(:), allocatable har
type(t_io), dimension(:,:), allocatable frc
type(t_io), dimension(:), allocatable tide
character(len=256) sourcefile
integer, dimension(:), allocatable nffiles
integer, parameter io_nf90
type(file_desc_t), dimension(:,:), pointer frcpiofile
logical, dimension(:,:,:), allocatable linfo
integer, parameter io_pio
integer, dimension(:,:), allocatable frcncid
real(dp), dimension(:,:,:), allocatable fpoint
integer, dimension(:), allocatable idtrcd
integer, dimension(:), allocatable idtrch
character(len=maxlen), dimension(6, 0:nv) vname
logical, dimension(:,:), allocatable aout
type(t_ocean), dimension(:), allocatable ocean
integer, dimension(:), allocatable n
integer, parameter r3dvar
integer, parameter u3dvar
integer, dimension(:), allocatable lm
integer, parameter u2dvar
integer, dimension(:), allocatable mm
integer, parameter r2dvar
integer, parameter v2dvar
integer, parameter v3dvar
type(io_desc_t), dimension(:), pointer iodesc_dp_r2dhar
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
logical, dimension(:), allocatable luvsrc
integer, dimension(:), allocatable nrrec
logical, dimension(:,:), allocatable ltracersrc
integer, dimension(:), allocatable iic
logical, dimension(:), allocatable lprocesstides
logical, dimension(:), allocatable ldeftide
real(dp), dimension(:), allocatable tdays
logical, dimension(:), allocatable lwsrc
real(dp), parameter sec2day
integer, dimension(:), allocatable hcount
real(dp), dimension(:), allocatable time
type(t_sources), dimension(:), allocatable sources
integer, dimension(:), allocatable nsrc
integer, dimension(:), allocatable ntc
type(t_tides), dimension(:), allocatable tides
logical function, public founderror(flag, noerr, line, routine)
recursive subroutine wclock_off(ng, model, region, line, routine)
recursive subroutine wclock_on(ng, model, region, line, routine)