163 INTEGER :: ndsi, ndsm, ndsog, ndsdat, ndstrc, &
164 ntrace, ierr, iotest, i,j,k, ifi,ifj,&
165 isea, ix, iy, tout(2), nout, tdum(2),&
166 ftime(2), cid, pid, gid, gds, iout, &
168 INTEGER,
ALLOCATABLE :: ifia(:),ifja(:)
170 INTEGER :: kpds(1), kgds(1)
174 INTEGER :: kpds(200), kgds(200), idrs(200)
175 INTEGER :: listsec0(3), listsec1(13),igds(5)
176 INTEGER :: ideflist, idefnum, kpdsnum, numcoord
177 INTEGER :: ibmp, lcgrib, lengrib, idrsnum
178 REAL :: coordlist, xn
179 CHARACTER(LEN=1),
ALLOCATABLE :: cgrib(:)
180 INTEGER :: latan1, lonv, scnmod, latin1, &
186 INTEGER,
SAVE :: ient = 0
188 REAL :: dtreq, dtest, rftime
190 CHARACTER :: comstr*1, idtime*23, iddday*11
191 CHARACTER(LEN=80) :: linein
192 CHARACTER(LEN=8) :: words(5)
208 CALL w3setw ( 1, 6, 6 )
212 CALL w3seto ( 1, 6, 6 )
238 CALL itrace ( ndstrc, ntrace )
240 CALL strace (ient,
'W3GRIB')
243 OPEN (ndsi,
file=
'ww3_grib.inp',status=
'OLD',err=800,iostat=ierr)
244 READ (ndsi,
'(A)',
END=801,ERR=802) comstr
245 IF (comstr.EQ.
' ') comstr =
'$'
246 WRITE (ndso,901) comstr
252 CALL baopenw (ndsdat,
'gribfile',ierr)
258 CALL w3iogr (
'READ', ndsm )
259 WRITE (ndso,920) gname
261 IF ( .NOT. flagll )
GOTO 810
267 CALL nextln ( comstr , ndsi , ndse )
268 READ (ndsi,
'(A)') linein
269 WRITE(ndso,*)
' LINEIN: ',linein
270 READ(linein,*,iostat=ierr) words
272 READ(words( 1 ), * ) tout(1)
273 READ(words( 2 ), * ) tout(2)
274 READ(words( 3 ), * ) dtreq
275 READ(words( 4 ), * ) nout
276 IF (words(5) .NE.
'0' .AND. words(5) .NE.
'1')
THEN
279 READ(words( 5 ), * ) gen_pro
281 WRITE(ndso,*)
'GEN_PRO ',gen_pro
282 dtreq = max( 0. , dtreq )
283 IF ( dtreq.EQ.0 ) nout = 1
284 nout = max( 1 , nout )
286 CALL stme21 ( tout , idtime )
287 WRITE (ndso,940) idtime
291 CALL tick21 ( tdum , dtreq )
292 CALL stme21 ( tdum , idtime )
293 IF ( dtreq .GE. 86400. )
THEN
294 WRITE (iddday,
'(I10,1X)') int(dtreq/86400.)
298 idtime(1:11) = iddday
300 WRITE (ndso,941) idtime, nout
308 CALL w3readflgrd ( ndsi, ndso, 9, ndse, comstr, flogd, flreq, &
322 IF ( flreq(ifi,ifj) )
THEN
323 WRITE (ndso,946) idout(ifi,ifj), &
324 '*** NOT YET CODED INTO WW3_GRIB ***'
325 flreq(ifi,ifj) = .false.
331 IF ( flreq(ifi,ifj) )
THEN
332 WRITE (ndso,946) idout(ifi,ifj), &
333 '*** NOT YET CODED INTO WW3_GRIB ***'
334 flreq(ifi,ifj) = .false.
340 IF ( flreq(ifi,ifj) )
THEN
341 WRITE (ndso,946) idout(ifi,ifj), &
342 '*** NOT YET CODED INTO WW3_GRIB ***'
343 flreq(ifi,ifj) = .false.
347 IF ( flreq(9,5) )
THEN
348 WRITE (ndso,946) idout(9,5),
'*** NOT YET CODED INTO WW3_GRIB ***'
353 IF ( flreq(ifi,ifj) )
THEN
354 WRITE (ndso,946) idout(ifi,ifj), &
355 '*** NOT YET CODED INTO WW3_GRIB ***'
356 flreq(ifi,ifj) = .false.
366 ALLOCATE ( ifia(13), ifja(13) )
368 ifia = (/ 1, 2, 2, 4, 4, 4, 4, 4, 5, 9, 9, 9, 9 /)
369 ifja = (/ 4, 2, 8, 3, 5, 6, 7, 8, 1, 1, 2, 3, 4 /)
371 IF ( flreq(ifia(i),ifja(i)) )
THEN
372 flreq(ifia(i),ifja(i)) = .false.
373 WRITE(ndso,946) idout(ifia(i),ifja(i)), &
374 '*** EXCLUDED FROM GRIB OUTPUT ***'
383 IF ( flreq(i,j) )
WRITE (ndso,931) idout(i,j)
391 CALL nextln ( comstr , ndsi , ndse )
392 READ (ndsi,*,
END=801,ERR=802) FTIME, CID, PID, GID, GDS, gdtn
397 IF ( gtype .EQ. clgtype )
THEN
400 IF ( gdtn .NE. 30 .AND. gdtn .NE. 20 )
THEN
402 WRITE(ndse,*)
'PROGRAM W3GRIB: CURVILINEAR GRID SUPPORT '// &
403 'FOR GRIB OUTPUT IS NOT YET IMPLEMENTED. NOW STOPPING'
415 IF ( gdtn .EQ. 30 )
THEN
417 CALL nextln ( comstr , ndsi , ndse )
418 READ (ndsi,*,
END=801,ERR=802) LATAN1, LONV, DSX, DSY, &
419 scnmod, latin1, latin2, latsp, lonsp
420 ELSEIF ( gdtn .EQ. 20 )
THEN
421 CALL nextln ( comstr , ndsi , ndse )
422 READ (ndsi,*,
END=801,ERR=802) LATAN1, LONV, DSX, DSY, &
430 CALL stme21 ( ftime , idtime )
431 WRITE (ndso,948) idtime, cid, pid, gid, gds
438 CALL w3iogo (
'READ', ndsog, iotest )
446 IF ( flogrd(i,j) )
WRITE (ndso,931) idout(i,j)
452 IF ( gdtn .EQ. 0 )
THEN
460 mapsf(isea,2) = ny + 1 - iy
461 mapsf(isea,3) = iy +( ix-1)*ny
480 ALLOCATE(cgrib(lcgrib))
531 IF ( gdtn .EQ. 30 .AND. gtype .EQ. clgtype )
THEN
533 WRITE (ndso,1011)
'LAMBERTCONF'
534 ELSEIF ( gdtn .EQ. 20 .AND. gtype .EQ. clgtype )
THEN
535 WRITE (ndso,1011)
'POLARSTEREO'
536 ELSEIF ( gdtn .EQ. 0 )
THEN
537 WRITE (ndso,1011)
'LLRECTILINEAR'
539 WRITE(ndse,*)
'PROGRAM WAVEGRIB2: SUPPORT FOR CHOSEN '// &
540 'GRIB2 GRID DEFINITION TEMPLATE NOT YET IMPLEMENTED'
564 IF ( gdtn .EQ. 30 )
THEN
583 x0 = mod(xgrd(1,1) + 360.,360.)
584 xn = mod(xgrd(ny,nx) + 360., 360.)
585 x0n = mod(xgrd(ny,1) + 360., 360.)
586 kgds(11)=nint(1000000.*x0)
590 kgds(10)=nint(1000000.*y0)
592 kgds(13)=dble(1000000.*latan1)
593 kgds(14)=dble(1000000.*lonv)
594 kgds(15)=nint(1000000*dsx)
595 kgds(16)=nint(1000000*dsy)
598 kgds(19)=dble(1000000.*latin1)
599 kgds(20)=dble(1000000.*latin2)
600 kgds(21)=dble(1000000.*latsp)
601 kgds(22)=dble(1000000.*lonsp)
605 ELSEIF (gdtn .EQ. 20 )
THEN
624 x0 = mod(xgrd(1,1) + 360.,360.)
625 xn = mod(xgrd(ny,nx) + 360., 360.)
626 x0n = mod(xgrd(ny,1) + 360., 360.)
627 kgds(11)=nint(1000000.*x0)
631 kgds(10)=nint(1000000.*y0)
633 kgds(13)=dble(1000000.*latan1)
634 kgds(14)=dble(1000000.*lonv)
635 kgds(15)=nint(1000000*dsx)
636 kgds(16)=nint(1000000*dsy)
642 ELSEIF (gdtn .EQ. 0 )
THEN
658 kgds(12) = nint(1000000.*(y0+(real(ny-1)*sy)))
659 x0 = mod(x0 + 360.,360.)
660 kgds(13) = nint(1000000.*x0)
662 kgds(15) = nint(1000000.*y0)
663 xn = mod(x0+real(nx-1)*sx + 360., 360.)
664 kgds(16) = nint(1000000.*xn)
665 kgds(17) = nint(1000000.*sx)
666 kgds(18) = nint(1000000.*sy)
697 if ( gen_pro.eq.1 )
then
749 WRITE (ndst,9050) kpds
750 WRITE (ndst,9051) kgds
760 dtest = dsec21( time , tout )
761 IF ( dtest .GT. 0. )
THEN
762 CALL w3iogo (
'READ', ndsog, iotest )
763 IF ( iotest .EQ. -1 )
THEN
769 IF ( dtest .LT. 0. )
THEN
770 CALL tick21 ( tout , dtreq )
775 CALL stme21 ( tout , idtime )
777 rftime = dsec21( ftime , time ) / 3600.
778 IF ( rftime .LT. 0. )
THEN
780 listsec1( 6) = time(1)/10000
781 listsec1( 7) = mod(time(1),10000) / 100
782 listsec1( 8) = mod(time(1),100)
783 listsec1( 9) = time(2) / 10000
786 WRITE (ndso,972) idtime
789 listsec1( 6) = ftime(1)/10000
790 listsec1( 7) = mod(ftime(1),10000) / 100
791 listsec1( 8) = mod(ftime(1),100)
792 listsec1( 9) = ftime(2) / 10000
793 kpds( 9) = nint(rftime)
795 WRITE (ndso,971) idtime, nint(rftime)
798 CALL w3exgb ( nx, ny, nsea )
799 CALL tick21 ( tout , dtreq )
800 IF ( iout .GE. nout )
EXIT
808 WRITE (ndse,1000) ierr
816 WRITE (ndse,1002) ierr
820 IF ( .NOT. flagll )
THEN
834 900
FORMAT (/15x,
' *** WAVEWATCH III GRIB output postp. *** '/ &
835 15x,
'=============================================='/)
836 901
FORMAT (
' Comment character is ''',a,
''''/)
837 902
FORMAT (/
' *** WARNING : NO GRIB PACKAGE LINKED ***'/)
839 920
FORMAT (
' Grid name : ',a/)
841 930
FORMAT (
' Fields in file : '/ &
842 ' --------------------------')
845 940
FORMAT (/
' Output time data : '/ &
846 ' -----------------------------------------------------'/ &
848 941
FORMAT (
' Interval : ',a/ &
849 ' Number of requests : ',i4)
850 942
FORMAT (/
' End of file reached '/)
852 944
FORMAT (/
' Requested output fields not yet available: '/ &
853 ' -----------------------------------------------------')
855 945
FORMAT (/
' Successfully requested output fields : '/ &
856 ' -----------------------------------------------------')
857 946
FORMAT (
' ',a,1x,a)
859 948
FORMAT (/
' Additional GRIB parameters : '/ &
860 ' -----------------------------------------------------'/ &
862 ' GRIB center ID : ',i4/ &
863 ' GRIB gen. proc. ID : ',i4/ &
864 ' GRIB grid ID : ',i4/ &
865 ' GRIB GDS parameter : ',i4)
867 970
FORMAT (//
' Generating file '/ &
868 ' -----------------------------------------------------')
869 971
FORMAT (
' Data for ',a,
' ',i3,
'H forecast.')
870 972
FORMAT (
' Data for ',a,
' hindcast.')
872 999
FORMAT (/
' End of program '/ &
873 ' ========================================='/ &
874 ' WAVEWATCH III GRIB output '/)
877 9050
FORMAT (
' TEST W3GRIB : KPDS : ',13i4/ &
879 9051
FORMAT (
' TEST W3GRIB : KGDS : ',8i6/ &
884 1000
FORMAT (/
' *** WAVEWATCH III ERROR IN W3GRIB : '/ &
885 ' ERROR IN OPENING INPUT FILE'/ &
888 1001
FORMAT (/
' *** WAVEWATCH III ERROR IN W3GRIB : '/ &
889 ' PREMATURE END OF INPUT FILE'/)
891 1002
FORMAT (/
' *** WAVEWATCH III ERROR IN W3GRIB : '/ &
892 ' ERROR IN READING FROM INPUT FILE'/ &
895 1010
FORMAT (/
' *** WAVEWATCH-III ERROR IN W3GRIB : '/ &
896 ' GRIB REQUIRES SPHERICAL GRID'/)
898 1011
FORMAT (/
' CHOSEN GRID TYPE: : ',a/)
914 SUBROUTINE w3exgb ( NX, NY, NSEA )
1003 INTEGER,
INTENT(IN) :: NX, NY, NSEA
1008 INTEGER :: J, IXY, NDATA
1011 INTEGER,
SAVE :: IENT = 0
1013 REAL :: X1(NX*NY), X2(NX*NY), XX(NX*NY), &
1014 XY(NX*NY), CABS, UABS, &
1015 YY(NX*NY,0:NOSWLL), KPDS5A, KPDS5B, &
1017 LOGICAL*1 :: BITMAP(NX*NY)
1018 LOGICAL :: FLONE, FLTWO, FLDIR, FLTRI, FLPRT
1023 CALL strace (ient,
'W3EXGB')
1027 WRITE (ndst,9000) ((flreq(ifi,ifj),ifj=1,ngrpp), ifi=1,nogrp)
1028 WRITE (ndst,9001) ndsdat, kpds, kgds
1046 IF ( flreq(ifi,ifj) )
THEN
1059 WRITE (ndst,9020) idout(ifi,ifj)
1066 IF ( ifi .EQ. 1 .AND. ifj .EQ. 1 )
THEN
1072 CALL w3s2xy ( nsea, nsea, nx, ny, dw(1:nsea) &
1077 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 2 )
THEN
1085 IF ( flagunr )
CALL w3xyrtn(nsea, cx, cy, angld)
1087 CALL w3s2xy ( nsea, nsea, nx, ny, cx(1:nsea) &
1089 CALL w3s2xy ( nsea, nsea, nx, ny, cy(1:nsea) &
1092 IF (cx(isea) .NE.
undef)
THEN
1093 cabs = sqrt(cx(isea)**2+cy(isea)**2)
1094 IF ( cabs .GT. 0.001 )
THEN
1095 cy(isea) = mod( 630. - &
1096 rade*atan2(cy(isea),cx(isea)) , 360. )
1106 CALL w3s2xy ( nsea, nsea, nx, ny, cx(1:nsea) &
1108 CALL w3s2xy ( nsea, nsea, nx, ny, cy(1:nsea) &
1113 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 3 )
THEN
1122 IF ( flagunr )
CALL w3xyrtn(nsea, ua, ud, angld)
1124 CALL w3s2xy ( nsea, nsea, nx, ny, ua(1:nsea) &
1126 CALL w3s2xy ( nsea, nsea, nx, ny, ud(1:nsea) &
1129 IF (ua(isea) .NE.
undef)
THEN
1130 uabs = sqrt(ua(isea)**2+ud(isea)**2)
1131 IF ( uabs .GT. 0.001 )
THEN
1132 ud(isea) = mod( 630. - &
1133 rade*atan2(ud(isea),ua(isea)) , 360. )
1143 CALL w3s2xy ( nsea, nsea, nx, ny, ua(1:nsea) &
1145 CALL w3s2xy ( nsea, nsea, nx, ny, ud(1:nsea) &
1150 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 4 )
THEN
1156 CALL w3s2xy ( nsea, nsea, nx, ny, as(1:nsea) &
1161 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 5 )
THEN
1167 CALL w3s2xy ( nsea, nsea, nx, ny, wlv , mapsf, x1 )
1171 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 6 )
THEN
1177 CALL w3s2xy ( nsea, nsea, nx, ny, ice , mapsf, x1 )
1181 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 8 )
THEN
1190 IF ( flagunr )
CALL w3xyrtn(nsea, taua, tauadir, angld)
1192 CALL w3s2xy ( nsea, nsea, nx, ny, taua(1:nsea) &
1194 CALL w3s2xy ( nsea, nsea, nx, ny, tauadir(1:nsea) &
1197 IF (taua(isea) .NE.
undef)
THEN
1198 uabs = sqrt(taua(isea)**2+tauadir(isea)**2)
1199 IF ( uabs .GT. 0.001 )
THEN
1200 tauadir(isea) = mod( 630. - &
1201 rade*atan2(tauadir(isea),taua(isea)) , 360. )
1207 tauadir(isea) =
undef
1211 CALL w3s2xy ( nsea, nsea, nx, ny, taua(1:nsea) &
1213 CALL w3s2xy ( nsea, nsea, nx, ny, tauadir(1:nsea) &
1218 ELSE IF ( ifi .EQ. 1 .AND. ifj .EQ. 9 )
THEN
1224 CALL w3s2xy ( nsea, nsea, nx, ny, rhoair, mapsf, x1 )
1228 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 1 )
THEN
1233 CALL w3s2xy ( nsea, nsea, nx, ny, hs , mapsf, x1 )
1237 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 2 )
THEN
1242 CALL w3s2xy ( nsea, nsea, nx, ny, wlm , mapsf, x1 )
1246 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 3 )
THEN
1249 if ((gen_pro.eq.1) .or. (gen_pro.eq.0))
then
1256 CALL w3s2xy ( nsea, nsea, nx, ny, t02 , mapsf, x1 )
1260 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 4 )
THEN
1265 CALL w3s2xy ( nsea, nsea, nx, ny, t0m1 , mapsf, x1 )
1269 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 5 )
THEN
1272 if ((gen_pro.eq.1) .or. (gen_pro.eq.0))
then
1278 CALL w3s2xy ( nsea, nsea, nx, ny, t01 , mapsf, x1 )
1282 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 6 )
THEN
1288 IF ( fp0(isea) .NE.
undef .AND. fp0(isea) .NE. 0 )
THEN
1289 fp0(isea) = 1. / max(fr1,fp0(isea))
1292 CALL w3s2xy ( nsea, nsea, nx, ny, fp0 , mapsf, x1 )
1297 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 7 )
THEN
1304 IF ( flagunr )
CALL w3thrtn(nsea, thm, angld, .false.)
1307 IF ( thm(isea) .NE.
undef ) &
1308 thm(isea) = mod( 630. -
rade*thm(isea) , 360. )
1310 CALL w3s2xy ( nsea, nsea, nx, ny, thm , mapsf, x1 )
1314 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 8 )
THEN
1319 CALL w3s2xy ( nsea, nsea, nx, ny, ths , mapsf, x1 )
1323 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 9 )
THEN
1326 if ((gen_pro.eq.1) .or. (gen_pro.eq.0))
then
1334 IF ( flagunr )
CALL w3thrtn(nsea, thp0, angld, .false.)
1337 IF ( thp0(isea) .NE.
undef )
THEN
1338 thp0(isea) = mod( 630-
rade*thp0(isea) , 360. )
1341 CALL w3s2xy ( nsea, nsea, nx, ny, thp0 , mapsf, x1 )
1345 ELSE IF ( ifi .EQ. 2 .AND. ifj .EQ. 19 )
THEN
1350 CALL w3s2xy ( nsea, nsea, nx, ny, wnmean, mapsf, x1 )
1354 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 1 )
THEN
1359 if ((gen_pro.eq.1) .or. (gen_pro.eq.0))
then
1368 ( nsea, nsea, nx, ny, phs(:,0), mapsf, yy(:,0) )
1371 ( nsea, nsea, nx, ny, phs(:,i), mapsf, yy(:,i) )
1376 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 2 )
THEN
1381 if ((gen_pro.eq.1) .or. (gen_pro.eq.0))
then
1390 ( nsea, nsea, nx, ny, ptp(:,0), mapsf, yy(:,0) )
1393 ( nsea, nsea, nx, ny, ptp(:,i), mapsf, yy(:,i) )
1398 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 3 )
THEN
1405 ( nsea, nsea, nx, ny, plp(:,0), mapsf, yy(:,0) )
1408 ( nsea, nsea, nx, ny, plp(:,i), mapsf, yy(:,i) )
1413 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 4 )
THEN
1418 if ((gen_pro.eq.1) .or. (gen_pro.eq.0))
then
1429 IF ( flagunr )
CALL w3thrtn(nsea, pdir(:,i), angld, .false.)
1434 IF ( pdir(isea,i) .NE.
undef )
THEN
1435 pdir(isea,i) = mod( 630 -
rade*pdir(isea,i) , 360. )
1440 ( nsea, nsea, nx, ny, pdir(:,0), mapsf, yy(:,0) )
1443 ( nsea, nsea, nx, ny, pdir(:,i), mapsf, yy(:,i) )
1448 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 5 )
THEN
1455 ( nsea, nsea, nx, ny, psi(:,0), mapsf, yy(:,0) )
1458 ( nsea, nsea, nx, ny, psi(:,i), mapsf, yy(:,i) )
1463 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 6 )
THEN
1470 ( nsea, nsea, nx, ny, pws(:,0), mapsf, yy(:,0) )
1473 ( nsea, nsea, nx, ny, pws(:,i), mapsf, yy(:,i) )
1478 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 16 )
THEN
1483 CALL w3s2xy ( nsea, nsea, nx, ny, pwst , mapsf, x1 )
1487 ELSE IF ( ifi .EQ. 4 .AND. ifj .EQ. 17 )
THEN
1492 CALL w3s2xy ( nsea, nsea, nx, ny, pnr , mapsf, x1 )
1496 ELSE IF ( ifi .EQ. 5 .AND. ifj .EQ. 1 )
THEN
1504 IF ( flagunr )
CALL w3xyrtn(nsea, ust, ustdir, angld)
1506 CALL w3s2xy ( nsea, nsea, nx, ny, ust(1:nsea) &
1508 CALL w3s2xy ( nsea, nsea, nx, ny, ustdir(1:nsea) &
1513 ELSE IF ( ifi .EQ. 9 .AND. ifj .EQ. 1 )
THEN
1519 IF ( dtdyn(isea) .NE.
undef ) &
1520 dtdyn(isea) = dtdyn(isea) / 60.
1522 CALL w3s2xy ( nsea, nsea, nx, ny, dtdyn , mapsf, x1 )
1526 ELSE IF ( ifi .EQ. 9 .AND. ifj .EQ. 2 )
THEN
1531 CALL w3s2xy ( nsea, nsea, nx, ny, fcut , mapsf, x1 )
1535 ELSE IF ( ifi .EQ. 9 .AND. ifj .EQ. 3 )
THEN
1540 CALL w3s2xy ( nsea, nsea, nx, ny, cflxymax , mapsf, x1 )
1544 ELSE IF ( ifi .EQ. 9 .AND. ifj .EQ. 4 )
THEN
1549 CALL w3s2xy ( nsea, nsea, nx, ny, cflthmax , mapsf, x1 )
1569 bitmap(ixy) = yy(ixy,0) .NE.
undef
1572 CALL gribcreate (cgrib,lcgrib,listsec0,listsec1,io)
1573 IF (io .NE. 0)
GOTO 810
1574 CALL addgrid (cgrib,lcgrib,igds,kgds,200,ideflist, &
1576 IF (io .NE. 0)
GOTO 820
1577 CALL addfield (cgrib,lcgrib,kpdsnum,kpds,200, &
1578 coordlist, numcoord, idrsnum, idrs, &
1579 200,yy(:,0), ndata, ibmp, bitmap, io)
1580 IF (io .NE. 0)
GOTO 820
1581 CALL gribend (cgrib, lcgrib, lengrib, io)
1582 IF (io .NE. 0)
GOTO 830
1583 CALL wryte (ndsdat, lengrib, cgrib)
1587 if ((gen_pro.eq.0) .or. (gen_pro.eq.1))
then
1592 kpds(2) = kpds5a1(i)
1596 bitmap(ixy) = yy(ixy,i) .NE.
undef
1599 CALL gribcreate (cgrib,lcgrib,listsec0,listsec1,io)
1600 IF (io .NE. 0)
GOTO 810
1601 CALL addgrid (cgrib,lcgrib,igds,kgds,200,ideflist, &
1603 IF (io .NE. 0)
GOTO 820
1604 CALL addfield (cgrib,lcgrib,kpdsnum,kpds,200, &
1605 coordlist, numcoord, idrsnum, idrs, &
1606 200,yy(:,i), ndata, ibmp, bitmap, io)
1607 IF (io .NE. 0)
GOTO 820
1608 CALL gribend (cgrib, lcgrib, lengrib, io)
1609 IF (io .NE. 0)
GOTO 830
1610 CALL wryte (ndsdat, lengrib, cgrib)
1623 bitmap(ixy) = yy(ixy,i) .NE.
undef
1626 CALL gribcreate (cgrib,lcgrib,listsec0,listsec1,io)
1627 IF (io .NE. 0)
GOTO 810
1628 CALL addgrid (cgrib,lcgrib,igds,kgds,200,ideflist, &
1630 IF (io .NE. 0)
GOTO 820
1631 CALL addfield (cgrib,lcgrib,kpdsnum,kpds,200, &
1632 coordlist, numcoord, idrsnum, idrs, &
1633 200,yy(:,i), ndata, ibmp, bitmap, io)
1634 IF (io .NE. 0)
GOTO 820
1635 CALL gribend (cgrib, lcgrib, lengrib, io)
1636 IF (io .NE. 0)
GOTO 830
1637 CALL wryte (ndsdat, lengrib, cgrib)
1648 ELSE IF (flone)
THEN
1651 bitmap(ixy) = x1(ixy) .NE.
undef
1655 CALL gribcreate (cgrib,lcgrib,listsec0,listsec1,io)
1656 IF (io .NE. 0)
GOTO 810
1657 CALL addgrid (cgrib,lcgrib,igds,kgds,200,ideflist, &
1659 IF (io .NE. 0)
GOTO 820
1660 CALL addfield (cgrib,lcgrib,kpdsnum,kpds,200, &
1661 coordlist, numcoord, idrsnum, idrs, &
1662 200,x1, ndata, ibmp, bitmap, io)
1663 IF (io .NE. 0)
GOTO 820
1664 CALL gribend (cgrib, lcgrib, lengrib, io)
1665 IF (io .NE. 0)
GOTO 830
1666 CALL wryte (ndsdat, lengrib, cgrib)
1669 ELSE IF ( fltwo )
THEN
1672 bitmap(ixy) = x1(ixy) .NE.
undef
1675 CALL gribcreate (cgrib,lcgrib,listsec0,listsec1,io)
1676 IF (io .NE. 0)
GOTO 810
1677 CALL addgrid (cgrib,lcgrib,igds,kgds,200,ideflist, &
1679 IF (io .NE. 0)
GOTO 820
1680 CALL addfield (cgrib,lcgrib,kpdsnum,kpds,200, &
1681 coordlist, numcoord, idrsnum, idrs, &
1682 200,x1, ndata, ibmp, bitmap, io)
1683 IF (io .NE. 0)
GOTO 820
1684 CALL gribend (cgrib, lcgrib, lengrib, io)
1685 IF (io .NE. 0)
GOTO 830
1686 CALL wryte (ndsdat, lengrib, cgrib)
1691 CALL gribcreate (cgrib,lcgrib,listsec0,listsec1,io)
1692 IF (io .NE. 0)
GOTO 810
1693 CALL addgrid (cgrib,lcgrib,igds,kgds,200,ideflist, &
1695 IF (io .NE. 0)
GOTO 820
1696 CALL addfield (cgrib,lcgrib,kpdsnum,kpds,200, &
1697 coordlist, numcoord, idrsnum, idrs, &
1698 200,x2, ndata, ibmp, bitmap, io)
1699 IF (io .NE. 0)
GOTO 820
1700 CALL gribend (cgrib, lcgrib, lengrib, io)
1701 IF (io .NE. 0)
GOTO 830
1702 CALL wryte (ndsdat, lengrib, cgrib)
1704 CALL gribcreate (cgrib,lcgrib,listsec0,listsec1,io)
1705 IF (io .NE. 0)
GOTO 810
1706 CALL addgrid (cgrib,lcgrib,igds,kgds,200,ideflist, &
1708 IF (io .NE. 0)
GOTO 820
1709 CALL addfield (cgrib,lcgrib,kpdsnum,kpds,200, &
1710 coordlist, numcoord, idrsnum, idrs, &
1711 200,xx, ndata, ibmp, bitmap, io)
1712 IF (io .NE. 0)
GOTO 820
1713 CALL gribend (cgrib, lcgrib, lengrib, io)
1714 IF (io .NE. 0)
GOTO 830
1715 CALL wryte (ndsdat, lengrib, cgrib)
1717 CALL gribcreate (cgrib,lcgrib,listsec0,listsec1,io)
1718 IF (io .NE. 0)
GOTO 810
1719 CALL addgrid (cgrib,lcgrib,igds,kgds,200,ideflist, &
1721 IF (io .NE. 0)
GOTO 820
1722 CALL addfield (cgrib,lcgrib,kpdsnum,kpds,200, &
1723 coordlist, numcoord, idrsnum, idrs, &
1724 200,xy, ndata, ibmp, bitmap, io)
1725 IF (io .NE. 0)
GOTO 820
1726 CALL gribend (cgrib, lcgrib, lengrib, io)
1727 IF (io .NE. 0)
GOTO 830
1728 CALL wryte (ndsdat, lengrib, cgrib)
1749 WRITE (ndse,1010) io
1752 WRITE (ndse,1020) io
1755 WRITE (ndse,1030) io
1761 999
FORMAT (/
' *** WAVEWATCH III ERROR IN W3EXGB :'/ &
1762 ' PLEASE UPDATE FIELDS !!! '/)
1765 1000
FORMAT (/
' *** WAVEWATCH III ERROR IN W3EXGB : '/ &
1766 ' ERROR IN OPENING OUTPUT FILE'/ &
1771 1010
FORMAT (/
' *** WAVEWATCH III ERROR IN W3EXGB : '/ &
1772 ' ERROR CREATING NEW GRIB2 FIELD'/ &
1777 1020
FORMAT (/
' *** WAVEWATCH III ERROR IN W3EXGB : '/ &
1778 ' ERROR ADDING GRIB2 FIELD'/ &
1783 1030
FORMAT (/
' *** WAVEWATCH III ERROR IN W3EXGB : '/ &
1784 ' ERROR ENDING GRIB2 MESSAGE'/ &
1789 9000
FORMAT (
' TEST W3EXGB : FLAGS :',40l2)
1790 9001
FORMAT (
' TEST W3EXGB : NDSDAT :',i4/ &
1799 9012
FORMAT (
' TEST W3EXGB : BLOK PARS : ',3i4)
1800 9014
FORMAT (
' BASE NAME : ',a)
1804 9020
FORMAT (
' TEST W3EXGB : OUTPUT FIELD : ',a)