3#if defined AVERAGES && defined AVERAGES_DETIDE && \
4 (defined ssh_tides || defined uv_tides)
37# if defined PIO_LIB && defined DISTRIBUTE
49 integer,
intent(in) :: ng
51 logical,
intent(in) :: ldef
55 character (len=*),
parameter :: myfile = &
62 SELECT CASE (
har(ng)%IOtype)
66# if defined PIO_LIB && defined DISTRIBUTE
76 10
FORMAT (
' DEF_TIDES - Illegal output file type, io_type = ',i0, &
77 & /,13x,
'Check KeyWord ''OUT_LIB'' in ''roms.in''.')
90 integer,
intent(in) :: ng
92 logical,
intent(in) :: ldef
96 logical :: got_var(
nv)
98 logical :: ldefine = .false.
100 integer,
parameter :: natt = 25
102 integer :: i, itrc, j, nvd3, nvd4
103 integer :: status, varid
106 integer :: tharm(2), t2dgrd(3), u2dgrd(3), v2dgrd(3)
108 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4)
113 character (len=256) :: ncname
114 character (len=MaxLen) :: vinfo(natt)
116 character (len=*),
parameter :: myfile = &
117 & __FILE__//
", def_tides_nf90"
130 WRITE (
stdout,10) ng, trim(ncname)
132 WRITE (
stdout,20) ng, trim(ncname)
140 define :
IF (ldef)
THEN
191 &
n(ng)+1, dimids(10))
195 &
nt(ng), dimids(11))
210 & nbands, dimids(33))
236 &
ntc(ng), dimids(13))
240 & 2*
ntc(ng)+1, dimids(12))
315 vinfo( 2)=
'number of time-accumulated tide harmonics'
317 & 1, (/0/), aval, vinfo, ncname, &
318 & setparaccess = .false.)
324 WRITE (vinfo( 2),
'(a,a)')
'accumulated harmonics ', &
326 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
327 vinfo( 4)=trim(
rclock%calendar)
329 &
nf_tout, 1, (/0/), aval, vinfo, ncname, &
330 & setparaccess = .false.)
340 &
nf_tout, 1, (/tharm(1)/), aval, vinfo, ncname, &
341 & setparaccess = .false.)
351 &
nf_tout, 1, (/tharm(1)/), aval, vinfo, ncname, &
352 & setparaccess = .false.)
362 &
nf_tout, 1, (/tharm(1)/), aval, vinfo, ncname, &
363 & setparaccess = .false.)
373 &
nf_tout, 2, tharm, aval, vinfo, ncname, &
374 & setparaccess = .false.)
384 &
nf_tout, 2, tharm, aval, vinfo, ncname, &
385 & setparaccess = .false.)
395 &
nf_tout, 2, tharm, aval, vinfo, ncname, &
396 & setparaccess = .false.)
406# if defined WRITE_WATER && defined MASKING
410 vinfo(22)=
'coordinates'
413 &
nf_frst, nvd3, t2dgrd, aval, vinfo, ncname)
425 vinfo(22)=
'coordinates'
428 &
nf_frst, nvd3, u2dgrd, aval, vinfo, ncname)
440 vinfo(22)=
'coordinates'
443 &
nf_frst, nvd3, v2dgrd, aval, vinfo, ncname)
457 vinfo(22)=
'coordinates'
460 &
nf_frst, nvd4, u3dgrd, aval, vinfo, ncname)
472 vinfo(22)=
'coordinates'
475 &
nf_frst, nvd4, v3dgrd, aval, vinfo, ncname)
488 vinfo(22)=
'coordinates'
492 &
nf_frst, nvd4, t3dgrd, aval, vinfo, ncname)
518 query :
IF (.not.ldef)
THEN
525 WRITE (
stdout,40) trim(ncname)
532 & ncid =
har(ng)%ncid)
538 & ncid =
har(ng)%ncid)
593 got_var(
idtrch(itrc))=.true.
604 IF (.not.got_var(
idtime))
THEN
610 IF (.not.got_var(
idtper))
THEN
616 IF (.not.got_var(
idcosw))
THEN
622 IF (.not.got_var(
idsinw))
THEN
628 IF (.not.got_var(
idcos2))
THEN
634 IF (.not.got_var(
idsin2))
THEN
640 IF (.not.got_var(
idswcw))
THEN
688 10
FORMAT (2x,
'DEF_TIDES_NF90 - creating harmonics file,',t56, &
689 &
'Grid ',i2.2,
': ',a)
690 20
FORMAT (4x,
'DEF_TIDES_NF90 - inquiring harmonics file,',t56, &
691 &
'Grid ',i2.2,
': ',a)
692 30
FORMAT (/,
' DEF_TIDES_NF90 - unable to create harmonics NetCDF', &
694 40
FORMAT (/,
' DEF_TIDES_NF90 - unable to open harmonics NetCDF', &
696 50
FORMAT (/,
' DEF_TIDES_NF90 - unable to find variable: ',a,2x, &
697 &
' in detide harmonics NetCDF file: ',a)
702# if defined PIO_LIB && defined DISTRIBUTE
712 integer,
intent(in) :: ng
714 logical,
intent(in) :: ldef
718 logical :: got_var(
nv)
720 logical :: ldefine = .false.
722 integer,
parameter :: natt = 25
724 integer :: i, itrc, j, nvd3, nvd4
728 integer :: tharm(2), t2dgrd(3), u2dgrd(3), v2dgrd(3)
730 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4)
735 character (len=256) :: ncname
736 character (len=MaxLen) :: vinfo(natt)
738 character (len=*),
parameter :: myfile = &
739 & __FILE__//
", def_tides_pio"
741 TYPE (var_desc_t) :: vardesc
754 WRITE (
stdout,10) ng, trim(ncname)
756 WRITE (
stdout,20) ng, trim(ncname)
764 define :
IF (ldef)
THEN
815 &
n(ng)+1, dimids(10))
819 &
nt(ng), dimids(11))
834 & nbands, dimids(33))
860 &
ntc(ng), dimids(13))
864 & 2*
ntc(ng)+1, dimids(12))
938 vinfo( 2)=
'number of time-accumulated tide harmonics'
940 & 1, (/0/), aval, vinfo, ncname, &
941 & setparaccess = .false.)
947 WRITE (vinfo( 2),
'(a,a)')
'accumulated harmonics ', &
949 WRITE (vinfo( 3),
'(a,a)')
'seconds since ', trim(
rclock%string)
950 vinfo( 4)=trim(
rclock%calendar)
956 &
pio_tout, 1, (/0/), aval, vinfo, ncname, &
957 & setparaccess = .false.)
972 &
pio_tout, 1, (/tharm(1)/), aval, vinfo, ncname, &
973 & setparaccess = .false.)
987 &
pio_tout, 1, (/tharm(1)/), aval, vinfo, ncname, &
988 & setparaccess = .false.)
1002 &
pio_tout, 1, (/tharm(1)/), aval, vinfo, ncname, &
1003 & setparaccess = .false.)
1017 &
pio_tout, 2, tharm, aval, vinfo, ncname, &
1018 & setparaccess = .false.)
1032 &
pio_tout, 2, tharm, aval, vinfo, ncname, &
1033 & setparaccess = .false.)
1047 &
pio_tout, 2, tharm, aval, vinfo, ncname, &
1048 & setparaccess = .false.)
1058# if defined WRITE_WATER && defined MASKING
1059 vinfo(20)=
'mask_rho'
1062 vinfo(22)=
'coordinates'
1069 &
pio_frst, nvd3, t2dgrd, aval, vinfo, ncname)
1081 vinfo(22)=
'coordinates'
1088 &
pio_frst, nvd3, u2dgrd, aval, vinfo, ncname)
1100 vinfo(22)=
'coordinates'
1107 &
pio_frst, nvd3, v2dgrd, aval, vinfo, ncname)
1121 vinfo(22)=
'coordinates'
1128 &
pio_frst, nvd4, u3dgrd, aval, vinfo, ncname)
1140 vinfo(22)=
'coordinates'
1147 &
pio_frst, nvd4, v3dgrd, aval, vinfo, ncname)
1160 vinfo(22)=
'coordinates'
1167 &
pio_frst, nvd4, t3dgrd, aval, vinfo, ncname)
1193 query :
IF (.not.ldef)
THEN
1200 WRITE (
stdout,40) trim(ncname)
1207 & piofile =
har(ng)%pioFile)
1213 & piofile =
har(ng)%pioFile)
1226 IF (trim(var_name(i)).eq.trim(
vname(1,
idtime)))
THEN
1231 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idtper)))
THEN
1236 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idcosw)))
THEN
1241 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idsinw)))
THEN
1246 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idcos2)))
THEN
1251 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idsin2)))
THEN
1256 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idswcw)))
THEN
1261 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idfsuh)))
THEN
1266 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idu2dh)))
THEN
1271 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idv2dh)))
THEN
1277 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idu3dh)))
THEN
1282 ELSE IF (trim(var_name(i)).eq.trim(
vname(1,
idv3dh)))
THEN
1291 IF (trim(var_name(i)).eq.trim(
vname(1,
idtrch(itrc))))
THEN
1292 got_var(
idtrch(itrc))=.true.
1304 IF (.not.got_var(
idtime))
THEN
1310 IF (.not.got_var(
idtper))
THEN
1316 IF (.not.got_var(
idcosw))
THEN
1322 IF (.not.got_var(
idsinw))
THEN
1328 IF (.not.got_var(
idcos2))
THEN
1334 IF (.not.got_var(
idsin2))
THEN
1340 IF (.not.got_var(
idswcw))
THEN
1388 10
FORMAT (2x,
'DEF_TIDES_PIO - creating harmonics file,',t56, &
1389 &
'Grid ',i2.2,
': ',a)
1390 20
FORMAT (4x,
'DEF_TIDES_PIO - inquiring harmonics file,',t56, &
1391 &
'Grid ',i2.2,
': ',a)
1392 30
FORMAT (/,
' DEF_TIDES_PIO - unable to create harmonics NetCDF', &
1394 40
FORMAT (/,
' DEF_TIDES_PIO - unable to open harmonics NetCDF', &
1396 50
FORMAT (/,
' DEF_TIDES_PIO - unable to find variable: ',a,2x, &
1397 &
' in detide harmonics NetCDF file: ',a)
subroutine, private def_tides_pio(ng, ldef)
subroutine, public def_tides(ng, ldef)
subroutine, private def_tides_nf90(ng, ldef)
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
integer, dimension(:,:,:), allocatable iinfo
integer, parameter ndimid
logical, dimension(:,:), allocatable aout
integer, parameter nf_tout
subroutine, public netcdf_check_dim(ng, model, ncname, ncid)
subroutine, public netcdf_open(ng, model, ncname, omode, ncid)
subroutine, public netcdf_enddef(ng, model, ncname, ncid)
character(len=100), dimension(mvars) var_name
integer, dimension(mvars) var_id
subroutine, public netcdf_create(ng, model, ncname, ncid)
subroutine, public netcdf_inq_var(ng, model, ncname, ncid, myvarname, searchvar, varid, nvardim, nvaratt)
integer, parameter nf_frst
integer, dimension(:), allocatable n
integer, parameter r3dvar
type(t_iobounds), dimension(:), allocatable iobounds
integer, parameter u3dvar
integer, parameter u2dvar
integer, dimension(:), allocatable nt
integer, parameter r2dvar
integer, parameter v2dvar
integer, parameter v3dvar
type(var_desc_t), dimension(:), pointer var_desc
integer, parameter pio_frst
subroutine, public pio_netcdf_create(ng, model, ncname, piofile)
subroutine, public pio_netcdf_inq_var(ng, model, ncname, piofile, myvarname, searchvar, piovar, nvardim, nvaratt)
subroutine, public pio_netcdf_open(ng, model, ncname, omode, piofile)
subroutine, public pio_netcdf_check_dim(ng, model, ncname, piofile)
integer, parameter pio_tout
subroutine, public pio_netcdf_enddef(ng, model, ncname, piofile)
integer, dimension(:), allocatable ntc
logical function, public founderror(flag, noerr, line, routine)