157 USE w3adatmd,
ONLY:
dw,
ua,
ud,
as,
cx,
cy,
hs,
wlm,
t0m1,
thm, &
180 INTEGER :: ndsi, ndsm, ndsog, ndsdat, ndsdt, &
181 ndstrc, ntrace, ierr, i, j, ifi, ifj,&
182 tout(2), tdum(2), iotest, nout, &
183 itype, ix1, ixn, ixs, iy1, iyn, iys, &
184 idla, idfm, iout, ipart
186 INTEGER,
SAVE :: ient = 0
189 CHARACTER :: comstr*1, idtime*23, iddday*11, &
192 scale, vector, ltemp(
ngrpp)
201 CALL w3setw ( 1, 6, 6 )
203 CALL w3seta ( 1, 6, 6 )
205 CALL w3seto ( 1, 6, 6 )
214 CALL itrace ( ndstrc, ntrace )
217 CALL strace (ient,
'W3OUTF')
223 OPEN (ndsi,
file=
fnmpre(:j)//
'ww3_outf.inp',status=
'OLD', &
225 READ (ndsi,
'(A)',
END=801,ERR=802) comstr
226 IF (comstr.EQ.
' ') comstr =
'$'
227 WRITE (ndso,901) comstr
232 CALL w3iogr (
'READ', ndsm )
233 WRITE (ndso,920) gname
238 CALL w3iogo (
'READ', ndsog, iotest )
243 IF ( flogrd(ifi,ifj) )
WRITE (ndso,931) idout(ifi,ifj)
251 CALL nextln ( comstr , ndsi , ndse )
252 READ (ndsi,*,
END=801,ERR=802) TOUT, DTREQ, nout
253 dtreq = max( 0. , dtreq )
254 IF ( dtreq.EQ.0. ) nout = 1
255 nout = max( 1 , nout )
257 CALL stme21 ( tout , idtime )
258 WRITE (ndso,940) idtime
261 CALL tick21 ( tdum , dtreq )
262 CALL stme21 ( tdum , idtime )
263 IF ( dtreq .GE. 86400. )
THEN
264 WRITE (iddday,
'(I10,1X)') int(dtreq/86400.)
268 idtime(1:11) = iddday
270 WRITE (ndso,941) idtime, nout
274 CALL w3readflgrd ( ndsi, ndso, 9, ndse, comstr, flog, &
276 IF (ierr.NE.0)
GOTO 800
281 CALL nextln ( comstr , ndsi , ndse )
282 READ (ndsi,*,
END=801,ERR=802) ITYPE, ipart
284 IF ( itype.LT.0 .OR. itype.GT.4 )
THEN
286 WRITE (ndse,1010) itype
289 ipart = max( 0 , min( noswll , ipart ) )
293 IF ( itype .EQ. 0 )
THEN
294 WRITE (ndso,942) itype,
'Checking contents of file'
296 CALL stme21 ( time , idtime )
297 WRITE (ndso,943) idtime
298 CALL w3iogo (
'READ', ndsog, iotest )
299 IF ( iotest .EQ. -1 )
THEN
307 ELSE IF (itype .EQ. 1)
THEN
308 WRITE (ndso,942) itype,
'Print plots'
309 CALL nextln ( comstr , ndsi , ndse )
310 READ (ndsi,*,
END=801,ERR=802) &
311 ix1, ixn, ixs, iy1, iyn, iys, scale, vector
313 ixn = min( ixn , nx )
316 iyn = min( iyn , ny )
318 WRITE (ndso,1940) ix1, ixn, ixs, iy1, iyn, iys
319 IF ( scale )
WRITE (ndso,1941)
323 ELSE IF (itype .EQ. 2)
THEN
324 WRITE (ndso,942) itype,
'Field statistics'
326 CALL nextln ( comstr , ndsi , ndse )
327 READ (ndsi,*,
END=801,ERR=802) IX1, IXN, IY1, iyn
329 ixn = min( ixn , nx )
331 iyn = min( iyn , ny )
332 WRITE (ndso,2940) ix1, ixn, iy1, iyn
336 ELSE IF (itype .EQ. 3)
THEN
337 WRITE (ndso,942) itype,
'Transfer files'
338 CALL nextln ( comstr , ndsi , ndse )
339 READ (ndsi,*,
END=801,ERR=802) &
340 ix1, ixn, iy1, iyn, idla, idfm
342 ixn = min( ixn , nx )
344 iyn = min( iyn , ny )
345 IF (idla.LT.1 .OR. idla.GT.5) idla = 1
346 IF (idfm.LT.1 .OR. idfm.GT.3) idfm = 1
348 WRITE (ndso,3940) ix1, ixn, iy1, iyn, idla, idfm
354 ELSE IF (itype .EQ. 4)
THEN
355 WRITE (ndso,942) itype,
'Full sea-point output.'
356 CALL nextln ( comstr , ndsi , ndse )
357 READ (ndsi,*,
END=801,ERR=802) &
358 ix1, ixn, iy1, iyn, idla, idfm
365 IF ( itype.NE.2 )
THEN
373 IF ( flreq(ifi,ifj) )
THEN
374 IF ( flogrd(ifi,ifj) )
THEN
375 IF ( itype.NE.2 )
THEN
376 WRITE (ndso,946) idout(ifi,ifj),
' '
380 WRITE (tabnme,
'(A3,I2.2,A4)')
'tab', ndsdt,
'.ww3'
381 WRITE (ndso,2946) tabnme, idout(ifi,ifj)
382 OPEN (ndsdt,
file=fnmpre(:j)//tabnme)
383 WRITE (ndsdt,2947) idout(ifi,ifj)
386 WRITE (ndso,946) idout(ifi,ifj),
'*** NOT AVAILABLE ***'
387 flreq(ifi,ifj) = .false.
394 IF ( ipart .EQ. 0 )
THEN
397 WRITE (ndso,949) ipart
405 IF (itype.EQ.3)
WRITE (ndso,970)
408 dtest = dsec21( time , tout )
409 IF ( dtest .GT. 0. )
THEN
410 CALL w3iogo (
'READ', ndsog, iotest )
411 IF ( iotest .EQ. -1 )
THEN
417 IF ( dtest .LT. 0. )
THEN
418 CALL tick21 ( tout , dtreq )
423 CALL stme21 ( tout , idtime )
425 WRITE (ndso,950) idtime
426 ELSE IF (itype.EQ.3)
THEN
427 WRITE (ndso,971) idtime
430 CALL w3exgo ( nx, ny, nsea )
432 CALL tick21 ( tout , dtreq )
433 IF ( iout .GE. nout )
EXIT
436 IF (itype.EQ.3)
WRITE (ndso,972)
443 WRITE (ndse,1000) ierr
451 WRITE (ndse,1002) ierr
459 900
FORMAT (/15x,
' *** WAVEWATCH III Field output postp. *** '/ &
460 15x,
'==============================================='/)
461 901
FORMAT (
' Comment character is ''',a,
''''/)
463 920
FORMAT (
' Grid name : ',a/)
465 930
FORMAT (
' Fields in file : '/ &
466 ' --------------------------')
469 940
FORMAT (/
' Output time data : '/ &
470 ' --------------------------------------------------'/ &
472 941
FORMAT (
' Interval : ',a/ &
473 ' Number of requests : ',i6)
474 942
FORMAT (/
' Output type ',i2,
' :'/ &
475 ' --------------------------------------------------'/ &
477 943
FORMAT (
' Data for ',a)
478 944
FORMAT (/
' End of file reached '/)
480 945
FORMAT (/
' Requested output fields : '/ &
481 ' --------------------------------------------------')
482 2945
FORMAT (/
' Output files and fields : '/ &
483 ' --------------------------------------------------')
484 946
FORMAT (
' ',a,2x,a)
485 2946
FORMAT (
' ',a,
' : ',a)
486 2947
FORMAT (
' Statitics of ',a/ &
487 ' (time, min, max, avg, std)'/)
488 948
FORMAT (/
' Partitioned field data for wind seas')
489 949
FORMAT (/
' Partitioned field data for swell field',i2)
491 1940
FORMAT (
' X range and interval : ',3i5/ &
492 ' Y range and interval : ',3i5)
493 1941
FORMAT (
' Data is normalized ')
495 2940
FORMAT (
' X range : ',2i5/ &
498 3940
FORMAT (
' X range : ',2i5/ &
500 ' Layout indicator : ',i5/ &
501 ' Format indicator : ',i5)
503 950
FORMAT (//
' Output for ',a/ &
504 ' --------------------------------------------------')
506 970
FORMAT (//
' Generating files '/ &
507 ' --------------------------------------------------')
508 971
FORMAT (
' Files for ',a)
511 999
FORMAT (/
' End of program '/ &
512 ' ========================================='/ &
513 ' WAVEWATCH III Field output '/)
515 1000
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUTF : '/ &
516 ' ERROR IN OPENING INPUT FILE'/ &
519 1001
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUTF : '/ &
520 ' PREMATURE END OF INPUT FILE'/)
522 1002
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUTF : '/ &
523 ' ERROR IN READING FROM INPUT FILE'/ &
526 1010
FORMAT (/
' *** WAVEWATCH III ERROR IN W3OUTF : '/ &
527 ' ILLEGAL TYPE, ITYPE =',i4/)
547 SUBROUTINE w3exgo ( NX, NY, NSEA )
644 INTEGER :: NX, NY, NSEA
649 INTEGER :: NXMAX, NXTOT, NBLOK, IH, IM, IS, &
650 MFILL, J, ISEA, IX, IY, IXB, IB, &
651 IXA, NINGRD, JJ, IFI, IFJ
652 INTEGER :: MAP(NX+1,NY), MP2(NX+1,NY), &
653 MX1(NX,NY), MXX(NX,NY), MYY(NX,NY), &
655 INTEGER,
SAVE :: IPASS
657 INTEGER,
SAVE :: NCOL = 132
659 INTEGER,
SAVE :: IENT = 0
661 REAL :: FSC, CABS, UABS, FSCA, XMIN, XMAX, &
662 XAVG, XSTD, YGBX, XGBX, AABS
663 REAL :: X1(NX+1,NY), X2(NX+1,NY), &
664 XX(NX+1,NY), XY(NX+1,NY), DPTMAX(1)
666 REAL,
Dimension(NSEA) :: XS1, XS2, XS3, XS4, AUX
668 DOUBLE PRECISION :: XDS, XDSQ
669 LOGICAL :: FLONE, FLTWO, FLDIR, FLTRI
671 LOGICAL :: LTEMP(NGRPP)
673 CHARACTER :: OLDTID*8, FNAME*32, ENAME*7, &
674 FORMG*12, FORMF*11, UNITS*10, FSCS*7
675 CHARACTER,
SAVE :: TIMEID*8 =
'00000000'
676 CHARACTER,
SAVE :: FILEID*13 =
'WAVEWATCH III'
678 REAL,
PARAMETER :: LOG2=log(2.)
684 CALL strace (ient,
'W3EXGO')
690 WRITE (ndst,9000) ifi, ltemp
692 WRITE (ndst,9001) itype, ix1, ixn, ixs, iy1, iyn, iys, &
693 scale, vector, ndsdat
711 IF ( itype .EQ. 1 )
THEN
713 nxmax = ( ncol - 10 ) / 2
715 nxmax = ( ncol - 10 ) / 5
717 nxtot = 1 + (ixn-ix1)/ixs
718 nblok = 1 + (nxtot-1)/nxmax
720 WRITE (ndst,9012) nxmax, nxtot, nblok
726 IF ( itype .EQ. 2 )
THEN
729 im = mod( time(2) , 10000 ) / 100
730 is = mod( time(2) , 100 )
737 IF ( itype .EQ. 3 .OR. itype .EQ. 4 )
THEN
740 WRITE (timeid,
'(I6.6,I2.2)') mod( time(1) , 1000000 ), &
742 fname(05:12) = timeid
744 IF ( timeid .NE. oldtid )
THEN
748 WRITE (ename,
'(A1,I2.2,A1)')
'e', ipass,
'.'
753 WRITE (ndst,9014) fname(1:13)
755 formg =
'((10G12.2))'
763 IF ( flreq(ifi,ifj) )
THEN
767 WRITE (ndst,9020) idout(ifi,ifj)
777 IF ( ifi .EQ. 1 .AND. ifj .EQ. 1 )
THEN
779 dptmax = maxval( dw(1:nsea) )
781 IF ( dptmax(1) .GT. 999. )
THEN
783 ELSE IF ( dptmax(1) .GT. 99.9 )
THEN
785 ELSE IF ( dptmax(1) .GT. 9.99 )
THEN
788 IF ( itype .EQ. 3 ) fsc = 0.01
792 IF ( itype .EQ. 4 )
THEN
795 CALL w3s2xy ( nsea, nsea, nx+1, ny, dw(1:nsea) &
799 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 2 )
THEN
811 IF ( flagunr )
CALL w3xyrtn(nsea, cx, cy, angld)
813 IF ( itype .EQ. 4 )
THEN
817 CALL w3s2xy ( nsea, nsea, nx+1, ny, cx(1:nsea) &
819 CALL w3s2xy ( nsea, nsea, nx+1, ny, cy(1:nsea) &
823 cabs = sqrt(cx(isea)**2+cy(isea)**2)
824 IF ( cabs .GT. 0.05 )
THEN
825 cy(isea) = mod( 630. - &
826 rade*atan2(cy(isea),cx(isea)) , 360. )
832 IF ( itype .EQ. 4 )
THEN
836 CALL w3s2xy ( nsea, nsea, nx+1, ny, cx(1:nsea) &
838 CALL w3s2xy ( nsea, nsea, nx+1, ny, cy(1:nsea) &
842 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 3 )
THEN
853 IF ( flagunr )
CALL w3xyrtn(nsea, ua, ud, angld)
855 IF ( itype .EQ. 4 )
THEN
859 CALL w3s2xy ( nsea, nsea, nx+1, ny, ua(1:nsea) &
861 CALL w3s2xy ( nsea, nsea, nx+1, ny, ud(1:nsea) &
865 uabs = sqrt(ua(isea)**2+ud(isea)**2)
866 IF ( uabs .GT. 1.0 )
THEN
867 ud(isea) = mod( 630. - &
868 rade*atan2(ud(isea),ua(isea)) , 360. )
874 IF ( itype .EQ. 4 )
THEN
878 CALL w3s2xy ( nsea, nsea, nx+1, ny, ua(1:nsea) &
880 CALL w3s2xy ( nsea, nsea, nx+1, ny, ud(1:nsea) &
884 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 4 )
THEN
889 IF ( itype .EQ. 4 )
THEN
892 CALL w3s2xy ( nsea, nsea, nx+1, ny, as(1:nsea) &
896 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 5 )
THEN
901 IF ( itype .EQ. 4 )
THEN
904 CALL w3s2xy ( nsea, nsea, nx+1, ny, wlv , mapsf, x1 )
907 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 6 )
THEN
912 IF ( itype .EQ. 4 )
THEN
915 CALL w3s2xy ( nsea, nsea, nx+1, ny, ice , mapsf, x1 )
918 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 7 )
THEN
923 WHERE ( berg.NE.
undef) berg = berg*0.1
924 IF ( itype .EQ. 4 )
THEN
927 CALL w3s2xy ( nsea, nsea, nx+1, ny, berg , mapsf, x1 )
930 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 8 )
THEN
943 CALL w3xyrtn(nsea, taua(1:nsea), tauadir(1:nsea), angld)
946 IF ( itype .EQ. 4 )
THEN
948 xs2 = tauadir(1:nsea)
950 CALL w3s2xy ( nsea, nsea, nx+1, ny, taua(1:nsea), mapsf, xx )
951 CALL w3s2xy ( nsea, nsea, nx+1, ny, tauadir(1:nsea), mapsf, xy )
955 uabs = sqrt(taua(isea)**2+tauadir(isea)**2)
956 IF ( uabs .GT. 0.01 )
THEN
957 tauadir(isea) = mod( 630. - &
958 rade*atan2(taua(isea),tauadir(isea)), 360.)
960 tauadir(isea) =
undef
964 IF ( itype .EQ. 4 )
THEN
966 xs4 = tauadir(1:nsea)
968 CALL w3s2xy ( nsea, nsea, nx+1, ny, taua(1:nsea), mapsf, x1 )
969 CALL w3s2xy ( nsea, nsea, nx+1, ny, tauadir(1:nsea), mapsf, x2)
972 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 9 )
THEN
977 IF ( itype .EQ. 4 )
THEN
980 CALL w3s2xy ( nsea, nsea, nx+1, ny, rhoair, mapsf, x1 )
984 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 10 )
THEN
987 units =
'Krumbein phi scale'
989 WHERE ( sed_d50.NE.
undef) sed_d50 = -log(sed_d50/0.001)/log2
990 IF ( itype .EQ. 4 )
THEN
993 CALL w3s2xy ( nsea, nsea, nx+1, ny, sed_d50 , mapsf, x1 )
998 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 11 )
THEN
1003 IF ( itype .EQ. 4)
THEN
1006 CALL w3s2xy (nsea, nsea, nx+1, ny, iceh, mapsf, x1 )
1011 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 12)
THEN
1016 IF ( itype .EQ. 4)
THEN
1019 CALL w3s2xy (nsea, nsea, nx+1, ny, icef, mapsf, x1 )
1023 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 1 )
THEN
1028 IF ( itype .EQ. 4 )
THEN
1031 CALL w3s2xy ( nsea, nsea, nx+1, ny, hs , mapsf, x1 )
1034 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 2 )
THEN
1039 IF ( itype .EQ. 4 )
THEN
1042 CALL w3s2xy ( nsea, nsea, nx+1, ny, wlm , mapsf, x1 )
1045 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 3 )
THEN
1050 IF ( itype .EQ. 4 )
THEN
1053 CALL w3s2xy ( nsea, nsea, nx+1, ny, t02 , mapsf, x1 )
1056 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 4 )
THEN
1061 IF ( itype .EQ. 4 )
THEN
1064 CALL w3s2xy ( nsea, nsea, nx+1, ny, t0m1 , mapsf, x1 )
1067 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 5 )
THEN
1072 IF ( itype .EQ. 4 )
THEN
1075 CALL w3s2xy ( nsea, nsea, nx+1, ny, t01 , mapsf, x1 )
1078 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 6 )
THEN
1083 IF ( itype .EQ. 4 )
THEN
1086 CALL w3s2xy ( nsea, nsea, nx+1, ny, fp0 , mapsf, x1 )
1089 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 7 )
THEN
1096 IF ( flagunr )
CALL w3thrtn(nsea, thm, angld, .false.)
1099 IF ( thm(isea) .NE.
undef ) &
1100 thm(isea) = mod( 630. -
rade*thm(isea) , 360. )
1102 IF ( itype .EQ. 4 )
THEN
1105 CALL w3s2xy ( nsea, nsea, nx+1, ny, thm , mapsf, x1 )
1108 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 8 )
THEN
1113 IF ( itype .EQ. 4 )
THEN
1116 CALL w3s2xy ( nsea, nsea, nx+1, ny, ths , mapsf, x1 )
1119 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 9 )
THEN
1126 IF ( flagunr )
CALL w3thrtn(nsea, thp0, angld, .false.)
1129 IF ( thp0(isea) .NE.
undef )
THEN
1130 thp0(isea) = mod( 630-
rade*thp0(isea) , 360. )
1133 IF ( itype .EQ. 4 )
THEN
1136 CALL w3s2xy ( nsea, nsea, nx+1, ny, thp0 , mapsf, x1 )
1139 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 10 )
THEN
1144 IF ( itype .EQ. 4 )
THEN
1147 CALL w3s2xy ( nsea, nsea, nx+1, ny, hsig , mapsf, x1 )
1150 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 11 )
THEN
1155 IF ( itype .EQ. 4 )
THEN
1158 CALL w3s2xy ( nsea, nsea, nx+1, ny, stmaxe, mapsf, x1 )
1161 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 12 )
THEN
1166 IF ( itype .EQ. 4 )
THEN
1169 CALL w3s2xy ( nsea, nsea, nx+1, ny, stmaxd, mapsf, x1 )
1172 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 13 )
THEN
1177 IF ( itype .EQ. 4 )
THEN
1180 CALL w3s2xy ( nsea, nsea, nx+1, ny, hmaxe, mapsf, x1 )
1183 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 14 )
THEN
1188 IF ( itype .EQ. 4 )
THEN
1191 CALL w3s2xy ( nsea, nsea, nx+1, ny, hcmaxe, mapsf, x1 )
1194 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 15 )
THEN
1199 IF ( itype .EQ. 4 )
THEN
1202 CALL w3s2xy ( nsea, nsea, nx+1, ny, hmaxd, mapsf, x1 )
1205 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 16 )
THEN
1210 IF ( itype .EQ. 4 )
THEN
1213 CALL w3s2xy ( nsea, nsea, nx+1, ny, hcmaxd, mapsf, x1)
1216 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 17 )
THEN
1221 IF ( itype .EQ. 4 )
THEN
1224 CALL w3s2xy ( nsea, nsea, nx+1, ny, wbt, mapsf, x1)
1227 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 18 )
THEN
1233 IF(fp0(i) .NE.
undef)
THEN
1234 aux(i) = 1.0 / fp0(i)
1240 IF ( itype .EQ. 4 )
THEN
1243 CALL w3s2xy ( nsea, nsea, nx+1, ny, aux, mapsf, x1)
1246 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 19 )
THEN
1251 IF ( itype .EQ. 4 )
THEN
1254 CALL w3s2xy ( nsea, nsea, nx+1, ny, wnmean, mapsf, x1)
1257 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 1 )
THEN
1262 IF ( itype .EQ. 4 )
THEN
1265 CALL w3s2xy ( nsea, nsea, nx+1, ny, phs(:,ipart) &
1269 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 2 )
THEN
1274 IF ( itype .EQ. 4 )
THEN
1277 CALL w3s2xy ( nsea, nsea, nx+1, ny, ptp(:,ipart) &
1281 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 3 )
THEN
1286 IF ( itype .EQ. 4 )
THEN
1289 CALL w3s2xy ( nsea, nsea, nx+1, ny, plp(:,ipart) &
1293 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 4 )
THEN
1300 IF ( flagunr )
CALL w3thrtn(nsea, pdir(:,ipart), angld, .false.)
1303 IF ( pdir(isea,ipart) .NE.
undef )
THEN
1304 pdir(isea,ipart) = &
1305 mod( 630-
rade*pdir(isea,ipart) , 360. )
1308 IF ( itype .EQ. 4 )
THEN
1311 CALL w3s2xy ( nsea, nsea, nx+1, ny, pdir(:,ipart) &
1315 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 5 )
THEN
1320 IF ( itype .EQ. 4 )
THEN
1323 CALL w3s2xy ( nsea, nsea, nx+1, ny, psi(:,ipart) &
1327 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 6 )
THEN
1332 IF ( itype .EQ. 4 )
THEN
1335 CALL w3s2xy ( nsea, nsea, nx+1, ny, pws(:,ipart) &
1339 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 7 )
THEN
1346 IF ( flagunr )
CALL w3thrtn(nsea, pthp0(:,ipart), angld, .false.)
1349 IF ( pthp0(isea,ipart) .NE.
undef )
THEN
1350 pthp0(isea,ipart) = &
1351 mod( 630-
rade*pthp0(isea,ipart) , 360. )
1354 IF ( itype .EQ. 4 )
THEN
1355 xs1 = pthp0(:,ipart)
1357 CALL w3s2xy ( nsea, nsea, nx+1, ny, pthp0(:,ipart), &
1361 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 8 )
THEN
1366 IF ( itype .EQ. 4 )
THEN
1369 CALL w3s2xy ( nsea, nsea, nx+1, ny, pqp(:,ipart), mapsf, x1 )
1372 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 9 )
THEN
1377 IF ( itype .EQ. 4 )
THEN
1380 CALL w3s2xy ( nsea, nsea, nx+1, ny, ppe(:,ipart), mapsf, x1 )
1383 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 10 )
THEN
1388 IF ( itype .EQ. 4 )
THEN
1391 CALL w3s2xy ( nsea, nsea, nx+1, ny, pgw(:,ipart), mapsf, x1 )
1394 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 11 )
THEN
1399 IF ( itype .EQ. 4 )
THEN
1402 CALL w3s2xy ( nsea, nsea, nx+1, ny, psw(:,ipart), mapsf, x1 )
1405 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 12 )
THEN
1410 IF ( itype .EQ. 4 )
THEN
1413 CALL w3s2xy ( nsea, nsea, nx+1, ny, ptm1(:,ipart), mapsf, x1 )
1416 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 13 )
THEN
1421 IF ( itype .EQ. 4 )
THEN
1424 CALL w3s2xy ( nsea, nsea, nx+1, ny, pt1(:,ipart), mapsf, x1 )
1427 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 14 )
THEN
1432 IF ( itype .EQ. 4 )
THEN
1435 CALL w3s2xy ( nsea, nsea, nx+1, ny, pt2(:,ipart), mapsf, x1 )
1438 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 15 )
THEN
1441 units =
'm2 s rad-1'
1443 IF ( itype .EQ. 4 )
THEN
1446 CALL w3s2xy ( nsea, nsea, nx+1, ny, pep(:,ipart), mapsf, x1 )
1449 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 16 )
THEN
1454 IF ( itype .EQ. 4 )
THEN
1457 CALL w3s2xy ( nsea, nsea, nx+1, ny, pwst(:), mapsf, x1 )
1460 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 17 )
THEN
1465 IF ( itype .EQ. 4 )
THEN
1468 CALL w3s2xy ( nsea, nsea, nx+1, ny, pnr(:), mapsf, x1 )
1471 ELSE IF ( ifi .EQ. 5 .AND. ifj .EQ. 1 )
THEN
1483 IF ( flagunr )
CALL w3xyrtn(nsea, ust, ustdir, angld)
1485 IF ( itype .EQ. 4 )
THEN
1487 xs2 = ustdir(1:nsea)
1489 CALL w3s2xy (nsea,nsea,nx+1,ny, ust(1:nsea) &
1491 CALL w3s2xy (nsea,nsea,nx+1,ny, ustdir(1:nsea) &
1495 uabs = sqrt(ust(isea)**2+ustdir(isea)**2)
1496 IF ( ust(isea) .EQ.
undef )
THEN
1497 ustdir(isea) =
undef
1499 ELSE IF ( uabs .GT. 0.05 )
THEN
1500 ustdir(isea) = mod( 630. - &
1501 rade*atan2(ustdir(isea),ust(isea)) , 360. )
1503 ustdir(isea) =
undef
1507 IF ( itype .EQ. 4 )
THEN
1509 xs4 = ustdir(1:nsea)
1511 CALL w3s2xy (nsea,nsea,nx+1,ny, ust(1:nsea) &
1513 CALL w3s2xy (nsea,nsea,nx+1,ny, ustdir(1:nsea) &
1517 ELSE IF ( ifi .EQ. 5 .AND. ifj .EQ. 2 )
THEN
1522 IF ( itype .EQ. 4 )
THEN
1525 CALL w3s2xy ( nsea, nsea, nx+1, ny, charn(1:nsea) &
1529 ELSE IF ( ifi .EQ. 5 .AND. ifj .EQ. 3 )
THEN
1535 IF ( cge(isea) .NE.
undef ) &
1536 cge(isea) = 0.001 * cge(isea)
1538 IF ( itype .EQ. 4 )
THEN
1541 CALL w3s2xy ( nsea, nsea, nx+1, ny, cge(1:nsea) &
1545 ELSE IF ( ifi .EQ. 5 .AND. ifj .EQ. 4 )
THEN
1551 phiaw(isea)=min(99.98,phiaw(isea))
1553 IF ( itype .EQ. 4 )
THEN
1556 CALL w3s2xy ( nsea, nsea, nx+1, ny, phiaw(1:nsea) &
1560 ELSE IF ( ifi .EQ. 5 .AND. ifj .EQ. 5 )
THEN
1571 IF ( flagunr )
CALL w3xyrtn(nsea, tauwix, tauwiy, angld)
1573 IF ( itype .EQ. 4 )
THEN
1574 xs1 = tauwix(1:nsea)
1575 xs2 = tauwiy(1:nsea)
1577 CALL w3s2xy ( nsea, nsea, nx+1, ny, tauwix(1:nsea) &
1579 CALL w3s2xy ( nsea, nsea, nx+1, ny, tauwiy(1:nsea) &
1583 cabs = sqrt(tauwix(isea)**2+tauwiy(isea)**2)
1584 IF ( tauwix(isea) .EQ.
undef )
THEN
1585 tauwiy(isea) =
undef
1587 ELSE IF ( tauwix(isea) .EQ. 0. .AND. &
1588 tauwiy(isea) .EQ. 0. )
THEN
1589 tauwiy(isea) =
undef
1591 tauwiy(isea) = mod( 630. - &
1592 rade*atan2(tauwiy(isea),tauwix(isea)) , 360. )
1596 IF ( itype .EQ. 4 )
THEN
1597 xs3 = tauwix(1:nsea)
1598 xs4 = tauwiy(1:nsea)
1600 CALL w3s2xy ( nsea, nsea, nx+1, ny, tauwix(1:nsea) &
1602 CALL w3s2xy ( nsea, nsea, nx+1, ny, tauwiy(1:nsea) &
1606 ELSE IF ( ifi .EQ. 5 .AND. ifj .EQ. 6 )
THEN
1617 IF ( flagunr )
CALL w3xyrtn(nsea, tauwnx, tauwny, angld)
1619 IF ( itype .EQ. 4 )
THEN
1620 xs1 = tauwnx(1:nsea)
1621 xs2 = tauwny(1:nsea)
1623 CALL w3s2xy ( nsea, nsea, nx+1, ny, tauwnx(1:nsea) &
1625 CALL w3s2xy ( nsea, nsea, nx+1, ny, tauwny(1:nsea) &
1629 cabs = sqrt(tauwnx(isea)**2+tauwny(isea)**2)
1630 IF ( tauwnx(isea) .EQ.
undef )
THEN
1631 tauwny(isea) =
undef
1633 ELSE IF ( tauwnx(isea) .EQ. 0. .AND. &
1634 tauwny(isea) .EQ. 0. )
THEN
1635 tauwny(isea) =
undef
1637 tauwny(isea) = mod( 630. - &
1638 rade*atan2(tauwny(isea),tauwnx(isea)) , 360. )
1642 IF ( itype .EQ. 4 )
THEN
1643 xs3 = tauwnx(1:nsea)
1644 xs4 = tauwny(1:nsea)
1646 CALL w3s2xy ( nsea, nsea, nx+1, ny, tauwnx(1:nsea) &
1648 CALL w3s2xy ( nsea, nsea, nx+1, ny, tauwny(1:nsea) &
1652 ELSE IF ( ifi .EQ. 5 .AND. ifj .EQ. 7 )
THEN
1657 IF ( itype .EQ. 4 )
THEN
1658 xs1 = whitecap(1:nsea,1)
1660 CALL w3s2xy ( nsea, nsea, nx+1, ny, whitecap(1:nsea,1) &
1664 ELSE IF ( ifi .EQ. 5 .AND. ifj .EQ. 8 )
THEN
1669 IF ( itype .EQ. 4 )
THEN
1670 xs1 = whitecap(1:nsea,2)
1672 CALL w3s2xy ( nsea, nsea, nx+1, ny, whitecap(1:nsea,2) &
1676 ELSE IF ( ifi .EQ. 5 .AND. ifj .EQ. 9 )
THEN
1681 IF ( itype .EQ. 4 )
THEN
1682 xs1 = whitecap(1:nsea,3)
1684 CALL w3s2xy ( nsea, nsea, nx+1, ny, whitecap(1:nsea,3) &
1688 ELSE IF ( ifi .EQ. 5 .AND. ifj .EQ. 10 )
THEN
1693 IF ( itype .EQ. 4 )
THEN
1694 xs1 = whitecap(1:nsea,4)
1696 CALL w3s2xy ( nsea, nsea, nx+1, ny, whitecap(1:nsea,4) &
1700 ELSE IF ( ifi .EQ. 6 .AND. ifj .EQ. 1 )
THEN
1709 IF ( itype .EQ. 4 )
THEN
1714 CALL w3s2xy ( nsea, nsea, nx+1, ny, sxx(1:nsea) &
1716 CALL w3s2xy ( nsea, nsea, nx+1, ny, syy(1:nsea) &
1718 CALL w3s2xy ( nsea, nsea, nx+1, ny, sxy(1:nsea) &
1722 ELSE IF ( ifi .EQ. 6 .AND. ifj .EQ. 2 )
THEN
1733 IF ( flagunr )
CALL w3xyrtn(nsea, tauox, tauoy, angld)
1735 IF ( itype .EQ. 4 )
THEN
1739 CALL w3s2xy ( nsea, nsea, nx+1, ny, tauox(1:nsea) &
1741 CALL w3s2xy ( nsea, nsea, nx+1, ny, tauoy(1:nsea) &
1745 uabs = sqrt(tauox(isea)**2+tauoy(isea)**2)
1746 IF ( tauox(isea) .EQ.
undef )
THEN
1749 ELSE IF ( uabs .GT. 1.e-8 )
THEN
1750 tauoy(isea) = mod( 630. - &
1751 rade*atan2(tauoy(isea),tauox(isea)) , 360. )
1757 IF ( itype .EQ. 4 )
THEN
1761 CALL w3s2xy (nsea,nsea,nx+1,ny, tauox(1:nsea) &
1763 CALL w3s2xy (nsea,nsea,nx+1,ny, tauoy(1:nsea) &
1767 ELSE IF ( ifi .EQ. 6 .AND. ifj .EQ.3 )
THEN
1772 IF ( itype .EQ. 4 )
THEN
1775 CALL w3s2xy ( nsea, nsea, nx+1, ny, bhd(1:nsea) &
1779 ELSE IF ( ifi .EQ. 6 .AND. ifj .EQ. 4 )
THEN
1785 phioc(isea)=min(99.98,phioc(isea))
1787 IF ( itype .EQ. 4 )
THEN
1790 CALL w3s2xy ( nsea, nsea, nx+1, ny, phioc(1:nsea) &
1794 ELSE IF ( ifi .EQ. 6 .AND. ifj .EQ. 5 )
THEN
1805 IF ( flagunr )
CALL w3xyrtn(nsea, tusx, tusy, angld)
1807 IF ( itype .EQ. 4 )
THEN
1811 CALL w3s2xy ( nsea, nsea, nx+1, ny, tusx(1:nsea) &
1813 CALL w3s2xy ( nsea, nsea, nx+1, ny, tusy(1:nsea) &
1817 cabs = sqrt(tusx(isea)**2+tusy(isea)**2)
1818 IF ( tusx(isea) .NE.
undef )
THEN
1819 tusy(isea) = mod( 630. - &
1820 rade*atan2(tusy(isea),tusx(isea)) , 360. )
1827 IF ( itype .EQ. 4 )
THEN
1831 CALL w3s2xy ( nsea, nsea, nx+1, ny,tusx,mapsf, x1 )
1832 CALL w3s2xy ( nsea, nsea, nx+1, ny,tusy,mapsf, x2 )
1835 ELSE IF ( ifi .EQ. 6 .AND. ifj .EQ. 6 )
THEN
1845 IF (ussx(isea) .NE.
undef )
THEN
1846 ussx(isea)=max(-0.9998,min(0.9998,ussx(isea)))
1847 ussy(isea)=max(-0.9998,min(0.9998,ussy(isea)))
1852 IF ( flagunr )
CALL w3xyrtn(nsea, ussx, ussy, angld)
1854 IF ( itype .EQ. 4 )
THEN
1858 CALL w3s2xy ( nsea, nsea, nx+1, ny, ussx(1:nsea) &
1860 CALL w3s2xy ( nsea, nsea, nx+1, ny, ussy(1:nsea) &
1864 cabs = sqrt(ussx(isea)**2+ussy(isea)**2)
1865 IF ( ussx(isea) .NE.
undef )
THEN
1866 ussy(isea) = mod( 630. - &
1867 rade*atan2(ussy(isea),ussx(isea)) , 360. )
1874 IF ( itype .EQ. 4 )
THEN
1878 CALL w3s2xy ( nsea, nsea, nx+1, ny, ussx(1:nsea), &
1880 CALL w3s2xy ( nsea, nsea, nx+1, ny, ussy(1:nsea), &
1884 ELSE IF ( ifi .EQ. 6 .AND. ifj .EQ. 7 )
THEN
1890 prms(isea)=prms(isea)
1892 IF ( itype .EQ. 4 )
THEN
1896 CALL w3s2xy ( nsea, nsea, nx+1,ny,prms,mapsf, x1 )
1897 CALL w3s2xy ( nsea, nsea, nx+1,ny,tpms,mapsf, x2 )
1900 ELSE IF ( ifi .EQ. 6 .AND. ifj .EQ. 13 )
THEN
1911 IF ( flagunr )
CALL w3xyrtn(nsea, tauocx, tauocy, angld)
1913 IF ( itype .EQ. 4 )
THEN
1914 xs1 = tauocx(1:nsea)
1915 xs2 = tauocy(1:nsea)
1917 CALL w3s2xy ( nsea, nsea, nx+1, ny, tauocx(1:nsea) &
1919 CALL w3s2xy ( nsea, nsea, nx+1, ny, tauocy(1:nsea) &
1923 uabs = sqrt(tauocx(isea)**2+tauocy(isea)**2)
1924 IF ( tauocx(isea) .EQ.
undef )
THEN
1925 tauocy(isea) =
undef
1927 ELSE IF ( uabs .GT. 1.e-8 )
THEN
1928 tauocy(isea) = mod( 630. - &
1929 rade*atan2(tauocy(isea),tauocx(isea)) , 360. )
1931 tauocy(isea) =
undef
1935 IF ( itype .EQ. 4 )
THEN
1936 xs3 = tauocx(1:nsea)
1937 xs4 = tauocy(1:nsea)
1939 CALL w3s2xy (nsea,nsea,nx+1,ny, tauocx(1:nsea) &
1941 CALL w3s2xy (nsea,nsea,nx+1,ny, tauocy(1:nsea) &
1945 ELSE IF ( ifi .EQ. 7 .AND. ifj .EQ. 1 )
THEN
1956 IF ( flagunr )
CALL w3xyrtn(nsea, aba, abd, angld)
1958 IF ( itype .EQ. 4 )
THEN
1962 CALL w3s2xy ( nsea, nsea, nx+1, ny, aba(1:nsea) &
1964 CALL w3s2xy ( nsea, nsea, nx+1, ny, abd(1:nsea) &
1968 IF ( aba(isea) .NE.
undef )
THEN
1969 aabs = sqrt(aba(isea)**2+abd(isea)**2)
1970 IF ( aabs .GT. 0.005 )
THEN
1971 abd(isea) = mod( 630. - &
1972 rade*atan2(abd(isea),aba(isea)) , 360. )
1979 IF ( itype .EQ. 4 )
THEN
1983 CALL w3s2xy ( nsea, nsea, nx+1, ny, aba(1:nsea) &
1985 CALL w3s2xy ( nsea, nsea, nx+1, ny, abd(1:nsea) &
1989 ELSE IF ( ifi .EQ. 7 .AND. ifj .EQ. 2 )
THEN
2000 IF ( flagunr )
CALL w3xyrtn(nsea, uba, ubd, angld)
2002 IF ( itype .EQ. 4 )
THEN
2006 CALL w3s2xy ( nsea, nsea, nx+1, ny, uba(1:nsea) &
2008 CALL w3s2xy ( nsea, nsea, nx+1, ny, ubd(1:nsea) &
2012 IF ( uba(isea) .NE.
undef )
THEN
2013 uabs = sqrt(uba(isea)**2+ubd(isea)**2)
2014 IF ( uabs .GT. 0.005 )
THEN
2015 ubd(isea) = mod( 630. - &
2016 rade*atan2(ubd(isea),uba(isea)) , 360. )
2023 IF ( itype .EQ. 4 )
THEN
2027 CALL w3s2xy ( nsea, nsea, nx+1, ny, uba(1:nsea) &
2029 CALL w3s2xy ( nsea, nsea, nx+1, ny, ubd(1:nsea) &
2033 ELSE IF ( ifi .EQ. 7 .AND. ifj .EQ. 3 )
THEN
2040 IF ( flagunr )
CALL w3xyrtn(nsea, bedforms(1:nsea,2), &
2041 bedforms(1:nsea,3), angld)
2043 IF ( itype .EQ. 4 )
THEN
2044 xs1 = bedforms(1:nsea,1)
2045 xs2 = bedforms(1:nsea,2)
2046 xs3 = bedforms(1:nsea,3)
2048 CALL w3s2xy ( nsea, nsea, nx+1, ny, bedforms(1:nsea,1) &
2050 CALL w3s2xy ( nsea, nsea, nx+1, ny, bedforms(1:nsea,2) &
2052 CALL w3s2xy ( nsea, nsea, nx+1, ny, bedforms(1:nsea,3) &
2056 ELSE IF ( ifi .EQ. 7 .AND. ifj .EQ. 4 )
THEN
2061 IF ( itype .EQ. 4 )
THEN
2062 xs1 = phibbl(1:nsea)
2064 CALL w3s2xy ( nsea, nsea, nx+1, ny, phibbl(1:nsea) &
2068 ELSE IF ( ifi .EQ. 7 .AND. ifj .EQ. 5 )
THEN
2075 IF ( flagunr )
CALL w3xyrtn(nsea, taubbl(1:nsea,1), &
2076 taubbl(1:nsea,2), angld)
2078 IF ( itype .EQ. 4 )
THEN
2079 xs1 = taubbl(1:nsea,1)
2080 xs2 = taubbl(1:nsea,2)
2082 CALL w3s2xy ( nsea, nsea, nx+1, ny, taubbl(1:nsea,1) &
2084 CALL w3s2xy ( nsea, nsea, nx+1, ny, taubbl(1:nsea,2) &
2088 ELSE IF ( ifi .EQ. 8 .AND. ifj .EQ. 1 )
THEN
2100 IF ( flagunr )
CALL w3xyrtn(nsea, mssx, mssy, angld)
2102 IF ( itype .EQ. 4 )
THEN
2106 CALL w3s2xy ( nsea, nsea, nx+1, ny, mssx(1:nsea), &
2108 CALL w3s2xy ( nsea, nsea, nx+1, ny ,mssy(1:nsea), &
2112 ELSE IF ( ifi .EQ. 8 .AND. ifj .EQ. 2 )
THEN
2123 IF ( flagunr )
CALL w3xyrtn(nsea, mscx, mscy, angld)
2125 IF ( itype .EQ. 4 )
THEN
2129 CALL w3s2xy ( nsea, nsea, nx+1, ny, mscx(1:nsea), &
2131 CALL w3s2xy ( nsea, nsea, nx+1, ny, mscy(1:nsea), &
2135 cabs = sqrt(mscx(isea)**2+mscy(isea)**2)
2136 IF ( mscx(isea) .EQ.
undef )
THEN
2139 ELSE IF ( mscx(isea) .EQ. 0. .AND. &
2140 mscy(isea) .EQ. 0. )
THEN
2143 mscy(isea) = mod( 630. - &
2144 rade*atan2(mscy(isea),mscx(isea)) , 360. )
2148 IF ( itype .EQ. 4 )
THEN
2152 CALL w3s2xy ( nsea, nsea, nx+1, ny, mscx(1:nsea), &
2154 CALL w3s2xy ( nsea, nsea, nx+1, ny, mscy(1:nsea), &
2158 ELSE IF ( ifi .EQ. 8 .AND. ifj .EQ. 3 )
THEN
2165 IF ( flagunr )
CALL w3thrtn(nsea, mssd, angld, .false.)
2168 IF ( mssd(isea) .NE.
undef )
THEN
2169 mssd(isea) = mod( 630. -
rade*mssd(isea) , 180. )
2172 IF ( itype .EQ. 4 )
THEN
2175 CALL w3s2xy ( nsea, nsea, nx+1, ny, mssd(1:nsea), mapsf, x1 )
2178 ELSE IF ( ifi .EQ. 8 .AND. ifj .EQ. 4 )
THEN
2185 IF ( flagunr )
CALL w3thrtn(nsea, mscd, angld, .false.)
2188 IF ( mscd(isea) .NE.
undef )
THEN
2189 mscd(isea) = mod( 630. -
rade*mscd(isea) , 180. )
2192 IF ( itype .EQ. 4 )
THEN
2195 CALL w3s2xy ( nsea, nsea, nx+1, ny, mscd(1:nsea), mapsf, x1 )
2198 ELSE IF ( ifi .EQ. 8 .AND. ifj .EQ. 5 )
THEN
2203 IF ( itype .EQ. 4 )
THEN
2206 CALL w3s2xy ( nsea, nsea, nx+1, ny, qp, mapsf, x1 )
2209 ELSE IF ( ifi .EQ. 8 .AND. ifj .EQ. 6 )
THEN
2214 IF ( itype .EQ. 4 )
THEN
2217 CALL w3s2xy ( nsea, nsea, nx+1, ny, qkk, mapsf, x1 )
2220 ELSE IF ( ifi .EQ. 8 .AND. ifj .EQ. 7 )
THEN
2225 IF ( itype .EQ. 4 )
THEN
2228 CALL w3s2xy ( nsea, nsea, nx+1, ny, skew, mapsf, x1 )
2231 ELSE IF ( ifi .EQ. 8 .AND. ifj .EQ. 8 )
THEN
2236 IF ( itype .EQ. 4 )
THEN
2239 CALL w3s2xy ( nsea, nsea, nx+1, ny, embia1, mapsf, x1 )
2242 ELSE IF ( ifi .EQ. 8 .AND. ifj .EQ. 9 )
THEN
2247 IF ( itype .EQ. 4 )
THEN
2250 CALL w3s2xy ( nsea, nsea, nx+1, ny, embia2, mapsf, x1 )
2253 ELSE IF ( ifi .EQ. 9 .AND. ifj .EQ. 1 )
THEN
2259 IF ( dtdyn(isea) .NE.
undef ) &
2260 dtdyn(isea) = dtdyn(isea) / 60.
2262 IF ( itype .EQ. 4 )
THEN
2265 CALL w3s2xy ( nsea, nsea, nx+1, ny, dtdyn , mapsf, x1 )
2268 ELSE IF ( ifi .EQ. 9 .AND. ifj .EQ. 2 )
THEN
2273 IF ( itype .EQ. 4 )
THEN
2276 CALL w3s2xy ( nsea, nsea, nx+1, ny, fcut , mapsf, x1 )
2279 ELSE IF ( ifi .EQ. 9 .AND. ifj .EQ. 3 )
THEN
2285 IF ( itype .EQ. 4 )
THEN
2288 CALL w3s2xy ( nsea, nsea, nx+1, ny, cflxymax, mapsf, x1 )
2291 ELSE IF ( ifi .EQ. 9 .AND. ifj .EQ. 4 )
THEN
2296 IF ( itype .EQ. 4 )
THEN
2299 CALL w3s2xy ( nsea, nsea, nx+1, ny, cflthmax, mapsf, x1 )
2302 ELSE IF ( ifi .EQ. 9 .AND. ifj .EQ. 5 )
THEN
2307 IF ( itype .EQ. 4 )
THEN
2310 CALL w3s2xy ( nsea, nsea, nx+1, ny, cflkmax, mapsf, x1 )
2313 ELSE IF ( ifi .EQ. 10 )
THEN
2317 WRITE (ename,
'(A2,I2.2)')
'.u', ifj
2318 IF ( itype .EQ. 4 )
THEN
2321 CALL w3s2xy ( nsea, nsea, nx+1, ny, usero(:,ifj) &
2326 WRITE (ndse,990) ifi,ifj
2336 IF ( mapsta(iy,ix) .EQ. 0 )
THEN
2342 IF ( x1(ix,iy) .EQ.
undef )
THEN
2347 IF ( x2(ix,iy) .EQ.
undef )
THEN
2357 IF ( itype .EQ. 1 )
THEN
2369 ixb = ixa + (nxmax-1)*ixs
2370 ixb = min( ixb , ixn )
2372 CALL prtblk (ndso, nx, ny, nx+1, x1, map, 0, &
2373 fsc, ixa, ixb, ixs, iy1, iyn, iys, &
2374 idout(ifi,ifj), units)
2375 CALL prtblk (ndso, nx, ny, nx+1, x2, map, 0, &
2376 fsc, ixa, ixb, ixs, iy1, iyn, iys, &
2377 idout(ifi,ifj), units)
2378 CALL prtblk (ndso, nx, ny, nx+1, xy, map, 0, &
2379 fsc, ixa, ixb, ixs, iy1, iyn, iys, &
2380 idout(ifi,ifj), units)
2381 ELSE IF ( flone )
THEN
2382 CALL prtblk (ndso, nx, ny, nx+1, x1, map, 0, &
2383 fsc, ixa, ixb, ixs, iy1, iyn, iys, &
2384 idout(ifi,ifj), units)
2385 ELSE IF ( fltwo )
THEN
2386 CALL prtblk (ndso, nx, ny, nx+1, xx, map, 0, &
2387 fsc, ixa, ixb, ixs, iy1, iyn, iys, &
2388 idout(ifi,ifj), units)
2389 CALL prtblk (ndso, nx, ny, nx+1, xy, map, 0, &
2390 fsc, ixa, ixb, ixs, iy1, iyn, iys, &
2391 idout(ifi,ifj), units)
2392 ELSE IF ( fldir )
THEN
2393 CALL prtblk (ndso, nx, ny, nx+1, x1, map, 0, &
2394 fsc, ixa, ixb, ixs, iy1, iyn, iys, &
2395 idout(ifi,ifj), units)
2396 CALL prtblk (ndso, nx, ny, nx+1, x2, mp2, 0, &
2397 fsca, ixa, ixb, ixs, iy1, iyn, iys, &
2398 idout(ifi,ifj),
'Deg.')
2404 ELSE IF ( itype .EQ. 2 )
THEN
2413 IF ( x1(ix,iy) .NE.
undef )
THEN
2415 xmin = min( xmin , x1(ix,iy) )
2416 xmax = max( xmax , x1(ix,iy) )
2417 xds = xds + dble(x1(ix,iy))
2418 xdsq = xdsq + dble(x1(ix,iy))**2
2425 IF ( ningrd .EQ. 0 )
THEN
2426 WRITE (ndsdt,940) time(1), ih, im, is
2427 ELSE IF ( ningrd .LE. 2 )
THEN
2428 xavg = real( xds / dble(ningrd) )
2429 WRITE (ndsdt,940) time(1), ih, im, is, &
2432 xavg = real( xds / dble(ningrd) )
2433 xstd = real( ( xdsq - xds**2/dble(ningrd) ) &
2435 xstd = sqrt( max( xstd , 0. ) )
2436 WRITE (ndsdt,940) time(1), ih, im, is, &
2437 xmin, xmax, xavg, xstd
2442 ELSE IF ( itype .EQ. 3 )
THEN
2445 IF ( idfm .EQ. 3 )
THEN
2446 IF(gtype .NE. ungtype)
THEN
2447 jj = len_trim(fnmpre)
2448 OPEN (ndsdat,
file=fnmpre(:jj)//fname, &
2449 form=
'UNFORMATTED', convert=
file_endian,err=800,iostat=ierr)
2450 WRITE (ndsdat) fileid, time, &
2451 minval(xgrd(iy1:iyn,ix1:ixn)), &
2452 maxval(xgrd(iy1:iyn,ix1:ixn)), ixn-ix1+1, &
2453 minval(ygrd(iy1:iyn,ix1:ixn)), &
2454 maxval(ygrd(iy1:iyn,ix1:ixn)), iyn-iy1+1, &
2455 ename, fsc, units, idla, idfm, formf, mfill
2457 OPEN (ndsdat,
file=fname, &
2458 form=
'UNFORMATTED', convert=
file_endian,err=800,iostat=ierr)
2459 WRITE (ndsdat) fileid, time, &
2462 ename, fsc, units, idla, idfm, formf, mfill
2465 IF(gtype .NE. ungtype)
THEN
2466 jj = len_trim(fnmpre)
2467 OPEN (ndsdat,
file=fnmpre(:jj)//fname,err=800, &
2469 IF (fsc.LT.1e-4)
THEN
2470 WRITE(fscs,
'(G8.1)') fsc
2472 WRITE(fscs,
'(F7.4)') fsc
2475 WRITE (ndsdat,950) fileid, time, &
2476 minval(xgrd(iy1:iyn,ix1:ixn)), &
2477 maxval(xgrd(iy1:iyn,ix1:ixn)), ixn-ix1+1, &
2478 minval(ygrd(iy1:iyn,ix1:ixn)), &
2479 maxval(ygrd(iy1:iyn,ix1:ixn)), iyn-iy1+1, &
2480 ename, fscs, units, idla, idfm, formf, mfill
2482 WRITE (ndsdat,960) fileid, time, &
2483 minval(xgrd(iy1:iyn,ix1:ixn)), &
2484 maxval(xgrd(iy1:iyn,ix1:ixn)), ixn-ix1+1, &
2485 minval(ygrd(iy1:iyn,ix1:ixn)), &
2486 maxval(ygrd(iy1:iyn,ix1:ixn)), iyn-iy1+1, &
2487 ename, fscs, units, idla, idfm, formf, mfill
2490 OPEN (ndsdat,
file=fname, &
2491 err=800,iostat=ierr)
2492 WRITE (ndsdat, 949) fileid, time, &
2495 ename, fsc, units, idla, idfm, formf, mfill
2502 IF ( xx(ix,iy) .EQ.
undef )
THEN
2507 mxx(ix,iy) = nint(x1(ix,iy)/fsc)
2508 myy(ix,iy) = nint(x2(ix,iy)/fsc)
2509 mxy(ix,iy) = nint(xy(ix,iy)/fsc)
2513 IF ( idla .NE. 5 )
THEN
2514 CALL outa2i ( mxx, nx, ny, ix1, ixn, iy1, iyn, &
2515 ndsdat, ndst, ndse, idfm, formf, idla, 1, 0 )
2516 CALL outa2i ( myy, nx, ny, ix1, ixn, iy1, iyn, &
2517 ndsdat, ndst, ndse, idfm, formf, idla, 1, 0 )
2518 CALL outa2i ( mxy, nx, ny, ix1, ixn, iy1, iyn, &
2519 ndsdat, ndst, ndse, idfm, formf, idla, 1, 0 )
2522 ygbx = y0 + real(iy-1)*sy
2524 xgbx = x0 + real(ix-1)*sx
2525 IF ( mxx(ix,iy) .NE. mfill )
THEN
2526 IF ( idfm .EQ. 3 )
THEN
2528 xgbx, ygbx, mxx(ix,iy), myy(ix,iy)
2530 WRITE (ndsdat,951) &
2531 xgbx, ygbx, mxx(ix,iy), myy(ix,iy)
2538 IF ( fltwo .OR. fldir )
THEN
2541 IF ( xx(ix,iy) .EQ.
undef )
THEN
2545 mxx(ix,iy) = nint(xx(ix,iy)/fsc)
2546 myy(ix,iy) = nint(xy(ix,iy)/fsc)
2550 IF ( idla .NE. 5 )
THEN
2551 CALL outa2i ( mxx, nx, ny, ix1, ixn, iy1, iyn, &
2552 ndsdat, ndst, ndse, idfm, formf, idla, 1,0)
2553 CALL outa2i ( myy, nx, ny, ix1, ixn, iy1, iyn, &
2554 ndsdat, ndst, ndse, idfm, formf, idla, 1,0)
2560 IF ( mxx(ix,iy) .NE. mfill )
THEN
2561 IF ( idfm .EQ. 3 )
THEN
2563 xgbx, ygbx, mxx(ix,iy), myy(ix,iy)
2566 WRITE (ndsdat,951) xgbx, ygbx, &
2567 mxx(ix,iy), myy(ix,iy)
2569 WRITE (ndsdat,961) xgbx, ygbx, &
2570 mxx(ix,iy), myy(ix,iy)
2580 IF ( x1(ix,iy) .EQ.
undef )
THEN
2583 mx1(ix,iy) = nint(x1(ix,iy)/fsc)
2587 IF ( idla .NE. 5 )
THEN
2588 CALL outa2i ( mx1, nx, ny, ix1, ixn, iy1, iyn, &
2589 ndsdat, ndst, ndse, idfm, formf, idla, 1,0)
2595 IF ( mx1(ix,iy) .NE. mfill )
THEN
2596 IF ( idfm .EQ. 3 )
THEN
2598 xgbx, ygbx, mx1(ix,iy)
2601 WRITE (ndsdat,951) xgbx, ygbx, &
2604 WRITE (ndsdat,961) xgbx, ygbx, &
2617 ELSE IF ( itype .EQ. 4 )
THEN
2620 jj = len_trim(fnmpre)
2621 OPEN (ndsdat,
file=fnmpre(:jj)//fname,err=800, &
2623 WRITE (6,*) fname(1:16)
2626 WRITE (ndsdat,980) fileid, time, nsea, 3, &
2627 fsc, ename, units, gname
2628 WRITE(ndsdat, 113) xs1
2629 WRITE(ndsdat, 113) xs2
2630 WRITE(ndsdat, 113) xs3
2632 IF ( fltwo .OR. fldir )
THEN
2633 WRITE (ndsdat,980) fileid, time, nsea, 2, &
2634 fsc, ename, units, gname
2635 WRITE(ndsdat, 113) xs1
2636 WRITE(ndsdat, 113) xs2
2639 WRITE (ndsdat,980) fileid, time, nsea, 1, &
2640 fsc, ename, units, gname
2641 WRITE(ndsdat, 113) xs1
2659 WRITE (ndse,1000) ierr
2664 113
FORMAT ((10es11.3))
2665 980
FORMAT (1x,a13,i9.8,i7.6,i9,i3,es10.2,1x,a4,1x,a10,1x,a30)
2667 940
FORMAT (1x,i8,3i3.2,2x,4e12.4)
2668 949
FORMAT (1x,a13,i9.8,i7.6,2(2f8.2,i8), &
2669 1x,a4,f8.4,1x,a10,2i2,1x,a11,i4)
2670 950
FORMAT (1x,a13,1x,i9.8,1x,i7.6,2(1x,2f8.2,1x,i4), &
2671 1x,a4,1x,a7,1x,a10,1x,2i2,1x,a11,1x,i4)
2672 951
FORMAT (1x,2f10.5,2i8)
2673 960
FORMAT (1x,a13,i9.8,i7.6,2(2e11.3,i4), &
2674 1x,a4,1x,a7,1x,a10,2i2,1x,a11,i4)
2675 961
FORMAT (1x,2e12.4,2i8)
2677 990
FORMAT (/
' *** WAVEWATCH III ERROR IN W3EXGO :'/ &
2678 ' GROUP',i2,
' PARAMETER',i3,
' NOT LISTED ' )
2679 999
FORMAT (/
' *** WAVEWATCH III ERROR IN W3EXGO :'/ &
2680 ' PLEASE UPDATE FIELDS !!! '/)
2682 1000
FORMAT (/
' *** WAVEWATCH III ERROR IN W3EXGO : '/ &
2683 ' ERROR IN OPENING OUTPUT FILE'/ &
2687 9000
FORMAT (
' TEST W3EXGO : FLAGS :',i3,2x,20l2)
2688 9001
FORMAT (
' TEST W3EXGO : ITPYE :',i4/ &
2691 ' SCALE, VECTOR :',2l2/ &
2696 9012
FORMAT (
' TEST W3EXGO : BLOK PARS : ',3i4)
2697 9014
FORMAT (
' BASE NAME : ',a)
2701 9020
FORMAT (
' TEST W3EXGO : OUTPUT FIELD : ',a)