Perform actual grid output.
Note that arrays CX and CY of the main program now contain the absolute current speed and direction respectively.
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
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
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
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
946 IF ( itype .EQ. 4 )
THEN
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 )
956 IF ( uabs .GT. 0.01 )
THEN
964 IF ( itype .EQ. 4 )
THEN
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.)
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.)
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
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.)
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.)
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
1485 IF ( itype .EQ. 4 )
THEN
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)
1499 ELSE IF ( uabs .GT. 0.05 )
THEN
1500 ustdir(isea) = mod( 630. - &
1507 IF ( itype .EQ. 4 )
THEN
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
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
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
1573 IF ( itype .EQ. 4 )
THEN
1577 CALL w3s2xy ( nsea, nsea, nx+1, ny,
tauwix(1:nsea) &
1579 CALL w3s2xy ( nsea, nsea, nx+1, ny,
tauwiy(1:nsea) &
1587 ELSE IF (
tauwix(isea) .EQ. 0. .AND. &
1588 tauwiy(isea) .EQ. 0. )
THEN
1591 tauwiy(isea) = mod( 630. - &
1596 IF ( itype .EQ. 4 )
THEN
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
1619 IF ( itype .EQ. 4 )
THEN
1623 CALL w3s2xy ( nsea, nsea, nx+1, ny,
tauwnx(1:nsea) &
1625 CALL w3s2xy ( nsea, nsea, nx+1, ny,
tauwny(1:nsea) &
1633 ELSE IF (
tauwnx(isea) .EQ. 0. .AND. &
1634 tauwny(isea) .EQ. 0. )
THEN
1637 tauwny(isea) = mod( 630. - &
1642 IF ( itype .EQ. 4 )
THEN
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
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
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
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
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
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) &
1749 ELSE IF ( uabs .GT. 1.e-8 )
THEN
1750 tauoy(isea) = mod( 630. - &
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
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
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)
1819 tusy(isea) = mod( 630. - &
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
1846 ussx(isea)=max(-0.9998,min(0.9998,
ussx(isea)))
1847 ussy(isea)=max(-0.9998,min(0.9998,
ussy(isea)))
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)
1866 ussy(isea) = mod( 630. - &
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
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
1913 IF ( itype .EQ. 4 )
THEN
1917 CALL w3s2xy ( nsea, nsea, nx+1, ny,
tauocx(1:nsea) &
1919 CALL w3s2xy ( nsea, nsea, nx+1, ny,
tauocy(1:nsea) &
1927 ELSE IF ( uabs .GT. 1.e-8 )
THEN
1928 tauocy(isea) = mod( 630. - &
1935 IF ( itype .EQ. 4 )
THEN
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
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) &
1969 aabs = sqrt(
aba(isea)**2+
abd(isea)**2)
1970 IF ( aabs .GT. 0.005 )
THEN
1971 abd(isea) = mod( 630. - &
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
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) &
2013 uabs = sqrt(
uba(isea)**2+
ubd(isea)**2)
2014 IF ( uabs .GT. 0.005 )
THEN
2015 ubd(isea) = mod( 630. - &
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
2043 IF ( itype .EQ. 4 )
THEN
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
2064 CALL w3s2xy ( nsea, nsea, nx+1, ny,
phibbl(1:nsea) &
2068 ELSE IF ( ifi .EQ. 7 .AND. ifj .EQ. 5 )
THEN
2078 IF ( itype .EQ. 4 )
THEN
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
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
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)
2139 ELSE IF (
mscx(isea) .EQ. 0. .AND. &
2140 mscy(isea) .EQ. 0. )
THEN
2143 mscy(isea) = mod( 630. - &
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.)
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.)
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
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)