99 INTEGER :: ndsi, ndsinp, ndsm, &
100 ndsout, ndstrc, ntrace, &
101 nspec, ierr, mk, mth, it, &
102 iloc, ispec, s3, iout, &
103 iret, nctype,ncid, ith
105 INTEGER :: time(2), tout(2), nout, tdum(2), &
106 dimid(4), varid(18), dimln(4), &
109 INTEGER,
SAVE :: ient = 0
112 REAL :: th1, dth, x, y, dw, cx, cy, cao, cdo,&
113 wx, wy, wao, wdo, ust, as, dtest, &
114 dtreq, dthd, rth0, m2km
116 REAL,
ALLOCATABLE :: freq(:), freq1(:), freq2(:), dsip(:),&
117 spec(:,:), e(:,:), thd(:), dir(:)
119 CHARACTER*34,
PARAMETER :: &
120 idtst =
'WAVEWATCH III TRACK OUTPUT SPECTRA'
121 CHARACTER*30 :: fileprefix, strstopdate
122 CHARACTER*20 :: format1
123 CHARACTER :: idtime*23, iddday*11, trckid*32, &
124 comstr*1, idstr*34, tststr*3, stime*23
142 CALL w3seto ( 1, 6, 6 )
153 CALL itrace ( ndstrc, ntrace )
156 CALL strace ( ient,
'W3TRNC' )
164 CALL w3iogr (
'READ', ndsm )
176 INQUIRE(
file=trim(fnmpre)//
"ww3_trnc.nml", exist=flgnml)
179 CALL w3nmltrnc (ndsi, trim(fnmpre)//
'ww3_trnc.nml', nml_track, nml_file, ierr)
182 READ(nml_track%TIMESTRIDE, *) dtreq
183 READ(nml_track%TIMECOUNT, *) nout
184 READ(nml_track%TIMESTART, *) tout(1), tout(2)
188 nctype = nml_file%NETCDF
189 fileprefix = nml_file%PREFIX
190 s3 = nml_track%TIMESPLIT
198 IF (.NOT. flgnml)
THEN
199 OPEN (ndsi,
file=trim(fnmpre)//
'ww3_trnc.inp',status=
'OLD',err=805,iostat=ierr)
202 READ (ndsi,
'(A)',
END=806,ERR=807,IOSTAT=IERR) comstr
203 IF (comstr.EQ.
' ') comstr =
'$'
204 WRITE (ndso,901) comstr
208 CALL nextln ( comstr , ndsi , ndse )
209 READ (ndsi,*,
END=806,ERR=807) TOUT, DTREQ, nout
213 CALL nextln ( comstr , ndsi , ndse )
214 READ (ndsi,*,
END=806,ERR=807) nctype
215 CALL nextln ( comstr , ndsi , ndse )
217 READ (ndsi,*,
END=806,ERR=807) fileprefix
218 CALL nextln ( comstr , ndsi , ndse )
219 READ (ndsi,*,
END=806,ERR=807) s3
227 dtreq = max( 0. , dtreq )
228 IF ( dtreq.EQ.0. ) nout = 1
229 nout = max( 1 , nout )
230 CALL stme21 ( tout , idtime )
231 WRITE (ndso,940) idtime
233 CALL tick21 ( tdum , dtreq )
234 CALL stme21 ( tdum , idtime )
235 IF ( dtreq .GE. 86400. )
THEN
236 WRITE (iddday,
'(I10,1X)') int(dtreq/86400.)
240 idtime(1:11) = iddday
242 WRITE (ndso,941) idtime, nout
246 IF ( nctype.LT.3 .OR. nctype.GT.4 )
THEN
247 WRITE (ndse,1010) nctype
259 OPEN (ndsinp,
file=trim(fnmpre)//
'track_o.ww3',form=
'UNFORMATTED', convert=
file_endian, &
260 status=
'OLD',err=800,iostat=ierr)
261 READ (ndsinp,err=801,iostat=ierr) idstr, flagll, mk, mth, xfr
269 IF ( idstr .NE. idtst )
GOTO 810
271 WRITE (ndso,902) mk, mth
273 ALLOCATE ( freq(mk), freq1(mk), freq2(mk), dsip(mk), &
274 spec(mk,mth), e(mk,mth), thd(mth), dir(mth) )
276 READ (ndsinp,err=801,iostat=ierr) th1, dth, freq, dsip
285 READ (ndsinp,
END=444, ERR=801,IOSTAT=IERR) time
291 dtest = dsec21( time , tout )
294 IF ( dtest .LT. 0. )
THEN
295 CALL tick21 ( tout , dtreq )
299 IF ( dtest .GE. 0. )
THEN
301 READ (ndsinp,
END=444, ERR=801,IOSTAT=IERR) TIME, X, Y, TSTSTR, trckid
302 IF ( tststr .EQ.
'SEA' )
THEN
303 READ (ndsinp,err=801,iostat=ierr) dw, cx, cy, wx, wy, ust, &
306 IF ( ierr .EQ. -1 )
THEN
312 IF ( time(1).EQ.tout(1) .AND. time(2).EQ.tout(2) )
THEN
314 IF ( tststr .EQ.
'SEA' ) ispec = ispec + 1
316 IF ( time(1).GT.tout(1) .OR. time(2).GT.tout(2) )
THEN
317 CALL stme21 ( time , stime )
318 WRITE (ndso,945) stime, iloc, ispec
321 IF ( tststr .EQ.
'SEA' ) ispec = ispec + 1
330 CALL stme21 ( tout , idtime )
331 WRITE (ndso,971) idtime
335 CALL w3exnc ( fileprefix, nctype, ncid, s3, strstopdate, mk, mth )
339 CALL t2d(tout,stopdate,ierr)
340 WRITE(strstopdate,
'(I4.4,A,4(I2.2,A),I2.2)') stopdate(1),
'-',stopdate(2), &
341 '-',stopdate(3),
' ',stopdate(5),
':',stopdate(6),
':',stopdate(7)
343 IF ( iout .GE. nout )
EXIT
351 iret = nf90_redef(ncid)
353 iret=nf90_put_att(ncid,nf90_global,
'stop_date',strstopdate)
355 iret=nf90_close(ncid)
365 WRITE (ndse,1000) ierr
373 WRITE (ndse,1004) ierr
377 WRITE (ndse,1005) ierr
381 WRITE (ndse,1006) ierr
386 WRITE (ndse,1010) idstr, idtst
394 900
FORMAT (/15x,
' *** WAVEWATCH III Track output postp. *** '/ &
395 15x,
'==============================================='/)
396 901
FORMAT (
' Comment character is ''',a,
''''/)
398 902
FORMAT (
' Spectral grid size : ',i3,
' by ',i3// &
399 ' Opening file : '/ &
400 ' -----------------------------------------------')
401 920
FORMAT (
' Grid name : ',a/)
403 940
FORMAT (/
' Output time data : '/ &
404 ' --------------------------------------------------'/ &
406 941
FORMAT (
' Interval : ',a/ &
407 ' Number of requests : ',i10)
409 944
FORMAT (/
' End of file reached '/)
411 945
FORMAT (
' ',a,
' :',i6,
' points and',i6,
' spectra.')
413 970
FORMAT (//
' Generating files '/ &
414 ' --------------------------------------------------')
415 971
FORMAT (
' Files for ',a)
417 999
FORMAT (/
' End of program '/ &
418 ' ========================================='/ &
419 ' WAVEWATCH III Track output '/)
421 1000
FORMAT (/
' *** WAVEWATCH III ERROR IN W3TRNC : '/ &
422 ' ERROR IN OPENING INPUT FILE'/ &
425 1001
FORMAT (/
' *** WAVEWATCH III ERROR IN W3TRNC : '/ &
426 ' PREMATURE END OF INPUT FILE'/)
428 1004
FORMAT (/
' *** WAVEWATCH III ERROR IN W3TRNC : '/ &
429 ' ERROR IN OPENING INPUT FILE'/ &
432 1005
FORMAT (/
' *** WAVEWATCH III ERROR IN W3TRNC : '/ &
433 ' ERROR IN READING FROM INPUT FILE'/ &
436 1006
FORMAT (/
' *** WAVEWATCH III ERROR IN W3TRNC : '/ &
437 ' ERROR IN OPENING OUTPUT FILE'/ &
440 1010
FORMAT (/
' *** WAVEWATCH III ERROR IN W3TRNC : '/ &
441 ' ILLEGAL TYPE, NCTYPE =',i4/)
461 SUBROUTINE w3exnc ( FILEPREFIX, NCTYPE, NCID, S3, STRSTOPDATE, MK, MTH )
524 INTEGER,
INTENT(IN) :: NCTYPE, MK, MTH
525 CHARACTER(30),
INTENT(IN) :: FILEPREFIX, STRSTOPDATE
526 INTEGER,
INTENT(INOUT) :: NCID, S3
531 INTEGER :: S1, S2, S4, S5, NDSDAT, IRET
532 INTEGER :: STARTDATE(8), CURDATE(8), REFDATE(8)
535 INTEGER,
SAVE :: IENT = 0
538 DOUBLE PRECISION :: OUTJULDAY
540 CHARACTER*30 :: STRSTARTDATE
541 CHARACTER :: FNAMENC*50, ENAME*6
542 CHARACTER,
SAVE :: OLDTIMEID*16 =
'0000000000000000'
543 CHARACTER,
SAVE :: TIMEID*16 =
'0000000000000000'
550 CALL strace (ient,
'W3EXNC')
553 CALL u2d(
'days since 1990-01-01 00:00:00',refdate,ierr)
569 WRITE(format1,
'(A,I1,A,I1,A)')
'(I8.8,A1,I',s5,
'.',s5,
',A1)'
570 WRITE (timeid,format1) time(1),
'T', &
571 floor(real(time(2))/nint(10.**(6-s5))),
'Z'
573 ELSE IF (s3.EQ.8)
THEN
574 WRITE(format1,
'(A,I1,A,I1,A)')
'(I',s3,
'.',s3,
')'
575 WRITE (timeid,format1) time(1)
579 WRITE(format1,
'(A,I1,A,I1,A)')
'(I',s3,
'.',s3,
')'
580 WRITE (timeid,format1) floor(real(time(1))/nint(10.**(8-s3)))
583 s1=len_trim(fileprefix)
585 fnamenc(1:s1)=fileprefix(1:s1)
586 fnamenc(s1+1:s1+s4) = timeid(1:s4)
593 s1=len_trim(fileprefix)+s4
595 fnamenc(s1+1:s1+1) =
'_'
598 fnamenc(s1+2:s1+s2) = ename(2:s2)
601 fnamenc(s1+s2+1:s1+s2+3) =
'.nc'
602 fnamenc(s1+s2+4:s1+s2+6) =
' '
605 dimln(1)=nf90_unlimited
614 OPEN (ndsdat,
file=fnamenc,status=
'new',iostat=iret)
617 IF (index(
'0000000000000000',oldtimeid).EQ.0 .AND. index(timeid,oldtimeid).EQ.0)
THEN
618 iret = nf90_redef(ncid)
620 iret=nf90_put_att(ncid,nf90_global,
'stop_date',strstopdate)
622 iret=nf90_close(ncid)
642 CALL w3crnc(nctype,fnamenc,ncid,dimid,dimln,varid)
645 CALL t2d(time,startdate,ierr)
646 WRITE(strstartdate,
'(I4.4,A,4(I2.2,A),I2.2)') startdate(1),
'-',startdate(2),
'-', &
647 startdate(3),
' ',startdate(5),
':',startdate(6),
':',startdate(7)
649 iret=nf90_put_att(ncid,nf90_global,
'start_date',strstartdate)
653 iret = nf90_enddef(ncid)
657 freq1(1:mk)=freq(1:mk)-0.5*(freq(1:mk)-(freq(1:mk)/xfr))
658 freq2(1:mk)=freq(1:mk)+0.5*(-freq(1:mk)+(freq(1:mk)*xfr))
666 thd(ith)=dthd*(rth0+real(ith-1))
668 dir(1:mth)=mod(360-thd(1:mth),360.)
672 iret=nf90_put_var(ncid,varid(2),freq)
675 iret=nf90_put_var(ncid,varid(3),freq1)
678 iret=nf90_put_var(ncid,varid(4),freq2)
681 iret=nf90_put_var(ncid,varid(5),dsip)
684 iret=nf90_put_var(ncid,varid(6),dir)
687 WRITE (ndso,973) fnamenc
694 CALL t2d(time,curdate,ierr)
695 outjulday=tsub(refdate,curdate)
696 WRITE(ndso,
'(3A,I6,A,I4,A,I2.2,A,I2.2,A,I2.2,A,I2.2,A,I2.2,2A)') &
697 'Writing new record ', ename(2:) ,
'number ',it, &
698 ' for ',curdate(1),
':',curdate(2),
':',curdate(3),
'T',curdate(5), &
699 ':',curdate(6),
':',curdate(7),
' in file ',trim(fnamenc)
705 IF ( tststr .NE.
'SEA' )
GOTO 888
711 wao = sqrt( wx**2 + wy**2 )
712 IF ( wao.GT.1.e-7 )
THEN
713 wdo = mod(270.-atan2(wy,wx)*
rade,360.)
718 cao = sqrt( cx**2 + cy**2 )
719 IF ( cao.GT.1.e-7 )
THEN
720 cdo = mod(270.-atan2(cy,cx)*
rade,360.)
729 IF ( ust .LT. 0. ) ust = -1.0
732 iret=nf90_put_var(ncid,varid(1),outjulday,start=(/it/))
735 iret=nf90_put_var(ncid,varid(7),m2km*x,start=(/it/))
738 iret=nf90_put_var(ncid,varid(8),m2km*y,start=(/it/))
748 iret=nf90_put_var(ncid,varid(9), &
749 transpose(spec),start=(/1,1,it/), count=(/mth,mk,1/))
755 iret=nf90_put_var(ncid, varid(10),dw ,start=(/it/))
758 iret=nf90_put_var(ncid, varid(11),cao ,start=(/it/))
761 iret=nf90_put_var(ncid,varid(12),cdo ,start=(/it/))
764 iret=nf90_put_var(ncid,varid(13),wao ,start=(/it/))
767 iret=nf90_put_var(ncid,varid(14),wdo ,start=(/it/))
770 iret=nf90_put_var(ncid,varid(15),ust,start=(/it/))
773 iret=nf90_put_var(ncid,varid(16),as ,start=(/it/))
776 iret=nf90_put_var(ncid,varid(18),trckid,start=(/1,it/),count=(/len_trim(trckid),1/))
788 973
FORMAT (
'NEW NetCDF file was created ',a)
810 SUBROUTINE w3crnc (NCTYPE,NCFILE,NCID,DIMID,DIMLN,VARID)
816 INTEGER,
INTENT(IN) :: NCTYPE
817 CHARACTER*(*),
INTENT(IN) :: NCFILE
818 INTEGER,
INTENT(IN) :: DIMLN(:)
819 INTEGER,
INTENT(OUT) :: DIMID(:), VARID(:), NCID
826 IF(nctype.EQ.3) iret = nf90_create(trim(ncfile), nf90_clobber, ncid)
827 IF(nctype.EQ.4) iret = nf90_create(trim(ncfile), nf90_netcdf4, ncid)
833 iret = nf90_def_dim(ncid,
'time', dimln(1), dimid(1))
835 iret = nf90_def_dim(ncid,
'frequency', dimln(2), dimid(2))
837 iret = nf90_def_dim(ncid,
'direction', dimln(3), dimid(3))
839 iret = nf90_def_dim(ncid,
'string32', dimln(4), dimid(4))
847 iret=nf90_def_var(ncid,
'time', nf90_double, (/dimid(1)/), varid(1))
848 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(1), 1, 1, deflate)
849 SELECT CASE (trim(caltype))
851 iret=nf90_put_att(ncid,varid(1),
'long_name',
'time in 360 day calendar')
853 iret=nf90_put_att(ncid,varid(1),
'long_name',
'time in 365 day calendar')
855 iret=nf90_put_att(ncid,varid(1),
'long_name',
'julian day (UT)')
857 iret=nf90_put_att(ncid,varid(1),
'standard_name',
'time')
858 iret=nf90_put_att(ncid,varid(1),
'units',
'days since 1990-01-01 00:00:00')
859 iret=nf90_put_att(ncid,varid(1),
'conventions', &
860 'Relative julian days with decimal part (as parts of the day)')
861 iret=nf90_put_att(ncid,varid(1),
'axis',
'T')
862 iret=nf90_put_att(ncid,varid(1),
'calendar',trim(caltype))
865 iret=nf90_def_var(ncid,
'frequency', nf90_float, (/dimid(2)/),varid(2))
866 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(2), 1, 1, deflate)
867 iret=nf90_put_att(ncid,varid(2),
'long_name',
'center frequencies for spectra')
868 iret=nf90_put_att(ncid,varid(2),
'standard_name',
'frequency')
869 iret=nf90_put_att(ncid,varid(2),
'units',
's-1')
870 iret=nf90_put_att(ncid,varid(2),
'scale_factor',1.)
871 iret=nf90_put_att(ncid,varid(2),
'add_offset',0.)
872 iret=nf90_put_att(ncid,varid(2),
'valid_min',0.)
873 iret=nf90_put_att(ncid,varid(2),
'valid_max',10.)
874 iret=nf90_put_att(ncid,varid(2),
'_FillValue',nf90_fill_float)
875 iret=nf90_put_att(ncid,varid(2),
'axis',
'Y')
878 iret=nf90_def_var(ncid,
'frequency1', nf90_float, (/dimid(2)/), varid(3))
880 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(3), 1, 1, deflate)
881 iret=nf90_put_att(ncid,varid(3),
'long_name',
'frequency of lower band')
882 iret=nf90_put_att(ncid,varid(3),
'standard_name',
'frequency_of_lower_band')
883 iret=nf90_put_att(ncid,varid(3),
'globwave_name',
'frequency_lower_band')
884 iret=nf90_put_att(ncid,varid(3),
'units',
's-1')
885 iret=nf90_put_att(ncid,varid(3),
'scale_factor',1.)
886 iret=nf90_put_att(ncid,varid(3),
'add_offset',0.)
887 iret=nf90_put_att(ncid,varid(3),
'valid_min',0.)
888 iret=nf90_put_att(ncid,varid(3),
'valid_max',10.)
889 iret=nf90_put_att(ncid,varid(3),
'_FillValue',nf90_fill_float)
890 iret=nf90_put_att(ncid,varid(3),
'content',
'Y')
891 iret=nf90_put_att(ncid,varid(3),
'associates',
'frequency')
894 iret=nf90_def_var(ncid,
'frequency2', nf90_float, (/dimid(2)/), varid(4))
896 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(4), 1, 1, deflate)
897 iret=nf90_put_att(ncid,varid(4),
'long_name',
'frequency of upper band')
898 iret=nf90_put_att(ncid,varid(4),
'standard_name',
'frequency_of_upper_band')
899 iret=nf90_put_att(ncid,varid(4),
'globwave_name',
'frequency_upper_band')
900 iret=nf90_put_att(ncid,varid(4),
'units',
's-1')
901 iret=nf90_put_att(ncid,varid(4),
'scale_factor',1.)
902 iret=nf90_put_att(ncid,varid(4),
'add_offset',0.)
903 iret=nf90_put_att(ncid,varid(4),
'valid_min',0.)
904 iret=nf90_put_att(ncid,varid(4),
'valid_max',10.)
905 iret=nf90_put_att(ncid,varid(4),
'_FillValue',nf90_fill_float)
906 iret=nf90_put_att(ncid,varid(4),
'content',
'Y')
907 iret=nf90_put_att(ncid,varid(4),
'associates',
'frequency')
910 iret=nf90_def_var(ncid,
'frequency_area', nf90_float,(/dimid(2)/),varid(5))
911 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(5), 1, 1, deflate)
912 iret=nf90_put_att(ncid,varid(5),
'long_name',
'frequency spectral bin width')
913 iret=nf90_put_att(ncid,varid(5),
'standard_name',
'frequency_area')
914 iret=nf90_put_att(ncid,varid(5),
'units',
's-2')
915 iret=nf90_put_att(ncid,varid(5),
'scale_factor',1.)
916 iret=nf90_put_att(ncid,varid(5),
'add_offset',0.)
917 iret=nf90_put_att(ncid,varid(5),
'valid_min',0.)
918 iret=nf90_put_att(ncid,varid(5),
'valid_max',10.)
919 iret=nf90_put_att(ncid,varid(5),
'_FillValue',nf90_fill_float)
920 iret=nf90_put_att(ncid,varid(5),
'content',
'Y')
921 iret=nf90_put_att(ncid,varid(5),
'associates',
'frequency')
924 iret=nf90_def_var(ncid,
'direction', nf90_float, (/dimid(3)/),varid(6))
925 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(6), 1, 1, deflate)
926 iret=nf90_put_att(ncid,varid(6),
'long_name',
'sea surface wave to direction')
927 iret=nf90_put_att(ncid,varid(6),
'standard_name',
'sea_surface_wave_to_direction')
928 iret=nf90_put_att(ncid,varid(6),
'units',
'degree')
929 iret=nf90_put_att(ncid,varid(6),
'scale_factor',1.)
930 iret=nf90_put_att(ncid,varid(6),
'add_offset',0.)
931 iret=nf90_put_att(ncid,varid(6),
'valid_min',0.)
932 iret=nf90_put_att(ncid,varid(6),
'valid_max',360.)
933 iret=nf90_put_att(ncid,varid(6),
'_FillValue',nf90_fill_float)
934 iret=nf90_put_att(ncid,varid(6),
'axis',
'Z')
938 iret=nf90_def_var(ncid,
'longitude', nf90_float, (/dimid(1)/),varid(7))
939 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(7), 1, 1, deflate)
940 iret=nf90_put_att(ncid,varid(7),
'long_name',
'longitude')
941 iret=nf90_put_att(ncid,varid(7),
'standard_name',
'longitude')
942 iret=nf90_put_att(ncid,varid(7),
'units',
'degree_east')
943 iret=nf90_put_att(ncid,varid(7),
'valid_min',-180.0)
944 iret=nf90_put_att(ncid,varid(7),
'valid_max',360.)
945 iret=nf90_put_att(ncid,varid(7),
'_FillValue',nf90_fill_float)
946 iret=nf90_put_att(ncid,varid(7),
'content',
'T')
947 iret=nf90_put_att(ncid,varid(7),
'associates',
'time')
951 iret=nf90_def_var(ncid,
'latitude', nf90_float, (/dimid(1)/),varid(8))
952 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(8), 1, 1, deflate)
953 iret=nf90_put_att(ncid,varid(8),
'long_name',
'latitude')
954 iret=nf90_put_att(ncid,varid(8),
'standard_name',
'latitude')
955 iret=nf90_put_att(ncid,varid(8),
'units',
'degree_north')
956 iret=nf90_put_att(ncid,varid(8),
'valid_min',-90.0)
957 iret=nf90_put_att(ncid,varid(8),
'valid_max',180.)
958 iret=nf90_put_att(ncid,varid(8),
'_FillValue',nf90_fill_float)
959 iret=nf90_put_att(ncid,varid(8),
'content',
'T')
960 iret=nf90_put_att(ncid,varid(8),
'associates',
'time')
963 iret=nf90_def_var(ncid,
'x', nf90_float, (/dimid(1)/),varid(7))
964 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(7), 1, 1, deflate)
965 iret=nf90_put_att(ncid,varid(7),
'long_name',
'x')
966 iret=nf90_put_att(ncid,varid(7),
'standard_name',
'x')
967 iret=nf90_put_att(ncid,varid(7),
'units',
'm')
968 iret=nf90_put_att(ncid,varid(7),
'_FillValue',nf90_fill_float)
969 iret=nf90_put_att(ncid,varid(7),
'content',
'T')
970 iret=nf90_put_att(ncid,varid(7),
'associates',
'time')
973 iret=nf90_def_var(ncid,
'y', nf90_float, (/dimid(1)/),varid(8))
974 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(8), 1, 1, deflate)
975 iret=nf90_put_att(ncid,varid(8),
'long_name',
'y')
976 iret=nf90_put_att(ncid,varid(8),
'standard_name',
'y')
977 iret=nf90_put_att(ncid,varid(8),
'units',
'm')
978 iret=nf90_put_att(ncid,varid(8),
'_FillValue',nf90_fill_float)
979 iret=nf90_put_att(ncid,varid(8),
'content',
'T')
980 iret=nf90_put_att(ncid,varid(8),
'associates',
'time')
986 iret=nf90_def_var(ncid,
'efth',nf90_float,(/dimid(3),dimid(2),dimid(1)/),varid(9))
987 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(9), 1, 1, deflate)
988 iret=nf90_put_att(ncid,varid(9),
'long_name', &
989 'sea surface wave directional variance spectral density')
990 iret=nf90_put_att(ncid,varid(9),
'standard_name', &
991 'sea_surface_wave_directional_variance_spectral_density')
992 iret=nf90_put_att(ncid,varid(9),
'globwave_name', &
993 'directional_variance_spectral_density')
994 iret=nf90_put_att(ncid,varid(9),
'units',
'm2 s rad-1')
995 iret=nf90_put_att(ncid,varid(9),
'scale_factor',1.)
996 iret=nf90_put_att(ncid,varid(9),
'add_offset',0.)
997 iret=nf90_put_att(ncid,varid(9),
'valid_min',0.)
998 iret=nf90_put_att(ncid,varid(9),
'valid_max',10.)
999 iret=nf90_put_att(ncid,varid(9),
'_FillValue',nf90_fill_float)
1000 iret=nf90_put_att(ncid,varid(9),
'content',
'TYZ')
1001 iret=nf90_put_att(ncid,varid(9),
'associates',
'time frequency direction')
1004 iret=nf90_def_var(ncid,
'dpt', nf90_float, (/dimid(1)/),varid(10))
1005 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(10), 1, 1, deflate)
1006 iret=nf90_put_att(ncid,varid(10),
'long_name',
'depth')
1007 iret=nf90_put_att(ncid,varid(10),
'standard_name',
'depth')
1008 iret=nf90_put_att(ncid,varid(10),
'globwave_name',
'depth')
1009 iret=nf90_put_att(ncid,varid(10),
'units',
'm')
1010 iret=nf90_put_att(ncid,varid(10),
'scale_factor',1.)
1011 iret=nf90_put_att(ncid,varid(10),
'add_offset',0.)
1012 iret=nf90_put_att(ncid,varid(10),
'_FillValue',nf90_fill_float)
1013 iret=nf90_put_att(ncid,varid(10),
'content',
'T')
1014 iret=nf90_put_att(ncid,varid(10),
'associates',
'time')
1017 iret=nf90_def_var(ncid,
'cur', nf90_float,(/dimid(1)/), varid(11))
1018 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(11), 1, 1, deflate)
1019 iret=nf90_put_att(ncid,varid(11),
'long_name',
'sea water speed')
1020 iret=nf90_put_att(ncid,varid(11),
'standard_name',
'sea_water_speed')
1021 iret=nf90_put_att(ncid,varid(11),
'globwave_name',
'sea_water_speed')
1022 iret=nf90_put_att(ncid,varid(11),
'units',
'm s-1')
1023 iret=nf90_put_att(ncid,varid(11),
'scale_factor',1.)
1024 iret=nf90_put_att(ncid,varid(11),
'add_offset',0.)
1025 iret=nf90_put_att(ncid,varid(11),
'_FillValue',nf90_fill_float)
1026 iret=nf90_put_att(ncid,varid(11),
'content',
'T')
1027 iret=nf90_put_att(ncid,varid(11),
'associates',
'time')
1030 iret=nf90_def_var(ncid,
'curdir', nf90_float,(/dimid(1)/), varid(12))
1031 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(12), 1, 1, deflate)
1032 iret=nf90_put_att(ncid,varid(12),
'long_name',
'direction from of sea water velocity')
1033 iret=nf90_put_att(ncid,varid(12),
'standard_name',
'direction_of_sea_water_velocity')
1034 iret=nf90_put_att(ncid,varid(12),
'globwave_name',
'direction_of_sea_water_velocity')
1035 iret=nf90_put_att(ncid,varid(12),
'units',
'degree')
1036 iret=nf90_put_att(ncid,varid(12),
'scale_factor',1.)
1037 iret=nf90_put_att(ncid,varid(12),
'add_offset',0.)
1038 iret=nf90_put_att(ncid,varid(12),
'_FillValue',nf90_fill_float)
1039 iret=nf90_put_att(ncid,varid(12),
'content',
'T')
1040 iret=nf90_put_att(ncid,varid(12),
'associates',
'time')
1043 iret=nf90_def_var(ncid,
'wnd', nf90_float,(/dimid(1)/), varid(13))
1044 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(13), 1, 1, deflate)
1045 iret=nf90_put_att(ncid,varid(13),
'long_name',
'wind speed at 10m')
1046 iret=nf90_put_att(ncid,varid(13),
'standard_name',
'wind_speed')
1047 iret=nf90_put_att(ncid,varid(13),
'globwave_name',
'wind_speed')
1048 iret=nf90_put_att(ncid,varid(13),
'units',
'm s-1')
1049 iret=nf90_put_att(ncid,varid(13),
'scale_factor',1.)
1050 iret=nf90_put_att(ncid,varid(13),
'add_offset',0.)
1051 iret=nf90_put_att(ncid,varid(13),
'_FillValue',nf90_fill_float)
1052 iret=nf90_put_att(ncid,varid(13),
'content',
'T')
1053 iret=nf90_put_att(ncid,varid(13),
'associates',
'time')
1056 iret=nf90_def_var(ncid,
'wnddir', nf90_float,(/dimid(1)/), varid(14))
1057 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(14), 1, 1, deflate)
1058 iret=nf90_put_att(ncid,varid(14),
'long_name',
'wind direction')
1059 iret=nf90_put_att(ncid,varid(14),
'standard_name',
'wind_from_direction')
1060 iret=nf90_put_att(ncid,varid(14),
'globwave_name',
'wind_from_direction')
1061 iret=nf90_put_att(ncid,varid(14),
'units',
'm s-1')
1062 iret=nf90_put_att(ncid,varid(14),
'scale_factor',1.)
1063 iret=nf90_put_att(ncid,varid(14),
'add_offset',0.)
1064 iret=nf90_put_att(ncid,varid(14),
'_FillValue',nf90_fill_float)
1065 iret=nf90_put_att(ncid,varid(14),
'content',
'T')
1066 iret=nf90_put_att(ncid,varid(14),
'associates',
'time')
1069 iret=nf90_def_var(ncid,
'ust', nf90_float,(/dimid(1)/), varid(15))
1070 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(15), 1, 1, deflate)
1071 iret=nf90_put_att(ncid,varid(15),
'long_name',
'friction velocity')
1072 iret=nf90_put_att(ncid,varid(15),
'standard_name',
'friction_velocity')
1073 iret=nf90_put_att(ncid,varid(15),
'globwave_name',
'friction_velocity')
1074 iret=nf90_put_att(ncid,varid(15),
'units',
'm s-1')
1075 iret=nf90_put_att(ncid,varid(15),
'scale_factor',1.)
1076 iret=nf90_put_att(ncid,varid(15),
'add_offset',0.)
1077 iret=nf90_put_att(ncid,varid(15),
'_FillValue',nf90_fill_float)
1078 iret=nf90_put_att(ncid,varid(15),
'content',
'T')
1079 iret=nf90_put_att(ncid,varid(15),
'associates',
'time')
1082 iret=nf90_def_var(ncid,
'ast',nf90_float,(/dimid(1)/), varid(16))
1083 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(16), 1, 1, deflate)
1084 iret=nf90_put_att(ncid,varid(16),
'long_name',
'air sea temperature difference')
1085 iret=nf90_put_att(ncid,varid(16),
'standard_name',
'air_sea_temperature_difference')
1086 iret=nf90_put_att(ncid,varid(16),
'globwave_name',
'air_sea_temperature_difference')
1087 iret=nf90_put_att(ncid,varid(16),
'units',
'degree')
1088 iret=nf90_put_att(ncid,varid(16),
'scale_factor',1.)
1089 iret=nf90_put_att(ncid,varid(16),
'add_offset',0.)
1090 iret=nf90_put_att(ncid,varid(16),
'_FillValue',nf90_fill_float)
1091 iret=nf90_put_att(ncid,varid(16),
'content',
'T')
1092 iret=nf90_put_att(ncid,varid(16),
'associates',
'time')
1095 iret=nf90_def_var(ncid,
'string32', nf90_int, (/dimid(4)/), varid(17))
1097 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(17), 1, 1, deflate)
1098 iret=nf90_put_att(ncid,varid(17),
'long_name',
'track_name number of characters')
1099 iret=nf90_put_att(ncid,varid(17),
'_FillValue',nf90_fill_int)
1100 iret=nf90_put_att(ncid,varid(17),
'axis',
'W')
1103 iret=nf90_def_var(ncid,
'track_name', nf90_char, (/dimid(4),dimid(1)/), varid(18))
1105 IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(18), 1, 1, deflate)
1106 iret=nf90_put_att(ncid,varid(18),
'long_name',
'track name')
1107 iret=nf90_put_att(ncid,varid(18),
'content',
'TX')
1108 iret=nf90_put_att(ncid,varid(18),
'associates',
'time string16')
1131 IF (iret .NE. nf90_noerr)
THEN
1132 WRITE(
ndse,*)
' *** WAVEWATCH III ERROR IN TRNC :'
1133 WRITE(
ndse,*)
' NETCDF ERROR MESSAGE: '
1134 WRITE(
ndse,*) nf90_strerror(iret)