185 INTEGER :: ndsi, ndsm, ndsog, ndsdat, ndsctl, &
186 ndstrc, ntrace, ierr, i,j,k, ifi,ifj,&
187 tout(2), nout, tdum(2), nvar, iout, &
188 ix0, ixn, iy0, iyn, time0(2), ih0, &
189 im0, id0, iid, ij0, iotest, iinc, iu,&
192 INTEGER,
SAVE :: ient = 0
196 CHARACTER :: comstr*1, idtime*23, iddday*11, &
198 CHARACTER*3 :: mnth(12)
200 LOGICAL :: flone, fltwo, fldir, fltri, flprt
202 msout, mbout, ltemp(
ngrpp)
207 DATA mnth /
'JAN',
'FEB',
'MAR',
'APR',
'MAY',
'JUN', &
208 'JUL',
'AUG',
'SEP',
'OCT',
'NOV',
'DEC' /
216 CALL w3setw ( 1, 6, 6 )
218 CALL w3seta ( 1, 6, 6 )
220 CALL w3seto ( 1, 6, 6 )
233 CALL itrace ( ndstrc, ntrace )
235 CALL strace (ient,
'GXOUTF')
239 OPEN (ndsi,
file=
fnmpre(:jlen)//
'gx_outf.inp',status=
'OLD', &
241 READ (ndsi,
'(A)',
END=801,ERR=802) comstr
242 IF (comstr.EQ.
' ') comstr =
'$'
243 WRITE (ndso,901) comstr
248 CALL w3iogr (
'READ', ndsm )
249 WRITE (ndso,920) gname
250 IF ( gtype .EQ. clgtype )
THEN
251 WRITE(ndse,*)
'PROGRAM GXOUTF: '// &
252 'GRADS OUTPUT NOT IMPLEMENTED FOR CURVILINEAR GRIDS. '// &
256 IF ( iclose .EQ. iclose_trpl )
THEN
257 WRITE(ndse,*)
'PROGRAM GXOUTF: '// &
258 'GRADS OUTPUT NOT IMPLEMENTED FOR TRIPOLE GRIDS. '// &
266 CALL w3iogo (
'READ', ndsog, iotest )
271 IF ( flogrd(i,j) )
WRITE (ndso,931) idout(i,j)
279 CALL nextln ( comstr , ndsi , ndse )
280 READ (ndsi,*,
END=801,ERR=802) TOUT, DTREQ, nout
281 dtreq = max( 0. , dtreq )
282 IF ( dtreq.EQ.0 ) nout = 1
283 nout = max( 1 , nout )
285 CALL stme21 ( tout , idtime )
286 WRITE (ndso,940) idtime
289 CALL tick21 ( tdum , dtreq )
290 CALL stme21 ( tdum , idtime )
291 IF ( dtreq .GE. 86400. )
THEN
292 WRITE (iddday,
'(I10,1X)') int(dtreq/86400.)
296 idtime(1:11) = iddday
298 WRITE (ndso,941) idtime, nout
300 IF ( mod(nint(dtreq),60) .NE. 0 )
GOTO 810
305 CALL w3readflgrd ( ndsi, ndso, 9, ndse, comstr, flog, &
316 IF ( flreq(ifi,ifj) )
THEN
317 WRITE (ndso,946) idout(ifi,ifj), &
318 '*** NOT YET CODED INTO GXOUTF ***'
319 flreq(ifi,ifj) = .false.
324 IF ( flreq(ifi,ifj) )
THEN
325 WRITE (ndso,946) idout(ifi,ifj), &
326 '*** NOT YET CODED INTO GXOUTF ***'
327 flreq(ifi,ifj) = .false.
332 IF ( flreq(ifi,ifj) )
THEN
333 WRITE (ndso,946) idout(ifi,ifj), &
334 '*** NOT YET CODED INTO GXOUTF ***'
335 flreq(ifi,ifj) = .false.
341 IF ( flreq(ifi,ifj) )
THEN
342 WRITE (ndso,946) idout(ifi,ifj), &
343 '*** NOT YET CODED INTO GXOUTF ***'
344 flreq(ifi,ifj) = .false.
347 IF ( flreq(9,5) )
THEN
348 WRITE (ndso,946) idout(9,5),
'*** NOT YET CODED INTO GXOUTF ***'
357 IF ( flreq(ifi,ifj) )
THEN
358 IF ( .NOT. flogrd(ifi,ifj) )
THEN
359 WRITE (ndso,946) idout(ifi,ifj),
'*** DATA NOT AVAILABLE ***'
361 WRITE (ndso,946) idout(ifi,ifj),
' '
364 flreq(ifi,ifj) = flreq(ifi,ifj) .AND. flogrd(ifi,ifj)
370 IF ( ifi.EQ.6 .AND. ifj.EQ.1 )
THEN
371 IF ( flreq(ifi,ifj) ) nvar = nvar + 3
372 ELSE IF ( ifi.EQ.4 .AND. ifj.LE.noge(4) )
THEN
373 IF ( flreq(ifi,ifj) ) nvar = nvar + noswll + 1
374 ELSE IF ( ifi.EQ.1 .AND. ifj .EQ. 2 )
THEN
375 IF ( flreq(ifi,ifj) ) nvar = nvar + 2
376 ELSE IF ( ifi.EQ.1 .AND. ifj.EQ.3 )
THEN
377 IF ( flreq(ifi,ifj) ) nvar = nvar + 2
378 ELSE IF ( ifi.EQ.5 .AND. ifj.EQ.1 )
THEN
379 IF ( flreq(ifi,ifj) ) nvar = nvar + 2
380 ELSE IF ( ifi.EQ.5 .AND. ifj.EQ.5 )
THEN
381 IF ( flreq(ifi,ifj) ) nvar = nvar + 2
382 ELSE IF ( ifi.EQ.5 .AND. ifj.EQ.6 )
THEN
383 IF ( flreq(ifi,ifj) ) nvar = nvar + 2
387 IF ( flreq(ifi,ifj) ) nvar = nvar + 1
394 CALL nextln ( comstr , ndsi , ndse )
395 READ (ndsi,*,
END=801,ERR=802) IX0, IXN, IY0, IYN, MSOUT, mbout
404 WRITE (ndso,948) ix0, ixn, iy0, iyn
407 WRITE (ndso,950)
'YES/--'
409 WRITE (ndso,950)
'---/NO'
412 IF ( .NOT. msout ) mbout = .false.
414 WRITE (ndso,951)
'YES/--'
416 WRITE (ndso,951)
'---/NO'
422 OPEN (ndsdat,
file=fnmpre(:jlen)//
'ww3.grads',form=
'UNFORMATTED', convert=file_endian, &
432 dtest = dsec21( time , tout )
433 IF ( dtest .GT. 0. )
THEN
434 CALL w3iogo (
'READ', ndsog, iotest )
435 IF ( iotest .EQ. -1 )
THEN
441 IF ( dtest .LT. 0. )
THEN
442 CALL tick21 ( tout , dtreq )
447 CALL stme21 ( tout , idtime )
448 WRITE (ndso,971) idtime
450 CALL gxexgo ( nx, ny, nsea )
453 IF ( time0(1) .EQ. -1 ) time0 = time
455 CALL tick21 ( tout , dtreq )
456 IF ( iout .GE. nout )
EXIT
468 OPEN (ndsctl,
file=fnmpre(:jlen)//
'ww3.ctl',err=812,iostat=ierr)
471 im0 = mod(time0(2)/100,100)
472 id0 = mod(time0(1),100)
473 iid = mod(time0(1)/100,100)
476 IF ( iout .GT. 1 ) dtreq = dsec21( time0, timen ) / real(iout-1)
477 IF ( iout .EQ. 1 ) dtreq = 3600.
478 IF ( dtreq .GT. 3599. )
THEN
480 iinc = nint(dtreq/3600.)
481 IF ( mod(nint(dtreq),3600) .NE. 0 )
GOTO 820
484 iinc = nint(dtreq/60.)
487 WRITE (ndso,983) iout, ih0, im0, id0, mnth(iid), ij0, iinc, cinc
492 xymax = max( abs(x0+real(ix0-1)*sx), &
493 abs(x0+real(ixn-1)*sx), &
494 abs(y0+real(iy0-1)*sy), &
495 abs(y0+real(iyn-1)*sy) )
496 IF ( xymax .LT. 1.e3 )
THEN
498 ELSE IF ( xymax .LT. 1.e4 )
THEN
500 ELSE IF ( xymax .LT. 1.e5 )
THEN
502 ELSE IF ( xymax .LT. 1.e6 )
THEN
509 WRITE (ndsctl,990) undef, &
510 (1+ixn-ix0), fac*(x0+real(ix0-1)*sx), fac*sx,&
511 (1+iyn-iy0), fac*(y0+real(iy0-1)*sy), fac*sy,&
513 iout, ih0, im0, id0, mnth(iid), ij0, &
517 WRITE (ndsctl,991)
'MAP ', 0, iu,
'grid use map '
519 IF ( flreq(01,01) ) &
520 WRITE (ndsctl,991)
'dpt ', 0, iu,
'Water depth '
521 IF ( flreq(01,02) ) &
522 WRITE (ndsctl,991)
'ucur ', 0, iu,
'Current U (m/s)'
523 IF ( flreq(01,02) ) &
524 WRITE (ndsctl,991)
'vcur ', 0, iu,
'Current V (m/s)'
525 IF ( flreq(01,03) ) &
526 WRITE (ndsctl,991)
'uwnd ', 0, iu,
'Wind U (m/s) '
527 IF ( flreq(01,03) ) &
528 WRITE (ndsctl,991)
'vwnd ', 0, iu,
'Wind V (m/s) '
529 IF ( flreq(01,04) ) &
530 WRITE (ndsctl,991)
'ast ', 0, iu,
'AT-SST (degr) '
531 IF ( flreq(01,05) ) &
532 WRITE (ndsctl,991)
'wlv ', 0, iu,
'Water Level (m)'
533 IF ( flreq(01,06) ) &
534 WRITE (ndsctl,991)
'ice ', 0, iu,
'Ice Conc. (-) '
537 WRITE (ndsctl,991)
'ic1 ', 0, iu,
'Ice thick. (m) '
539 WRITE (ndsctl,991)
'ic5 ', 0, iu,
'Floe diam. (m) '
541 IF ( flreq(02,01) ) &
542 WRITE (ndsctl,991)
'hs ', 0, iu,
'Wave height (m)'
543 IF ( flreq(02,02) ) &
544 WRITE (ndsctl,991)
'lm ', 0, iu,
'Mean L (m) '
545 IF ( flreq(02,03) ) &
546 WRITE (ndsctl,991)
't02 ', 0, iu,
'Mean Per Tz (s)'
547 IF ( flreq(02,04) ) &
548 WRITE (ndsctl,991)
't01 ', 0, iu,
'Mean Per Tm (s) '
549 IF ( flreq(02,05) ) &
550 WRITE (ndsctl,991)
't0m1', 0, iu,
'Mean Per Te (s) '
551 IF ( flreq(02,06) ) &
552 WRITE (ndsctl,991)
'fp ', 0, iu,
'Peak Freq. (Hz)'
553 IF ( flreq(02,07) ) &
554 WRITE (ndsctl,991)
'dir ', 0, iu,
'Mean Dir. (rad)'
555 IF ( flreq(02,08) ) &
556 WRITE (ndsctl,991)
'spr ', 0, iu,
'Dir. spread '
557 IF ( flreq(02,09) ) &
558 WRITE (ndsctl,991)
'dp ', 0, iu,
'Peak Dir. (rad)'
559 IF ( flreq(04,01) )
THEN
562 WRITE (parid(4:5),
'(I2.2)') i
563 WRITE (ndsctl,991) parid , 0, iu,
'Part. Hs (m) '
566 IF ( flreq(04,02) )
THEN
569 WRITE (parid(4:5),
'(I2.2)') i
570 WRITE (ndsctl,991) parid , 0, iu,
'Part. Tp (s) '
573 IF ( flreq(04,03) )
THEN
576 WRITE (parid(4:5),
'(I2.2)') i
577 WRITE (ndsctl,991) parid , 0, iu,
'Part. L (m) '
580 IF ( flreq(04,04) )
THEN
583 WRITE (parid(4:5),
'(I2.2)') i
584 WRITE (ndsctl,991) parid , 0, iu,
'Part. Th (deg.)'
587 IF ( flreq(04,05) )
THEN
590 WRITE (parid(4:5),
'(I2.2)') i
591 WRITE (ndsctl,991) parid , 0, iu,
'Part. si (deg.)'
594 IF ( flreq(04,06) )
THEN
597 WRITE (parid(4:5),
'(I2.2)') i
598 WRITE (ndsctl,991) parid , 0, iu,
'Part. ws frac. '
601 IF ( flreq(04,07) ) &
602 WRITE (ndsctl,991)
'tws ', 0, iu,
'Total ws frac. '
603 IF ( flreq(04,08) ) &
604 WRITE (ndsctl,991)
'pnr ', 0, iu,
'Number of part.'
605 IF ( flreq(05,01) ) &
606 WRITE (ndsctl,991)
'uust ', 0, iu,
'Fr.Vel. U(m/s) '
607 IF ( flreq(05,01) ) &
608 WRITE (ndsctl,991)
'vust ', 0, iu,
'Fr.Vel. V(m/s) '
609 IF ( flreq(05,02) ) &
610 WRITE (ndsctl,991)
'cha ', 0, iu,
'Charnock parameter'
611 IF ( flreq(05,03) ) &
612 WRITE (ndsctl,991)
'cge ', 0, iu,
'Energy Flux (W/m)'
613 IF ( flreq(05,04) ) &
614 WRITE (ndsctl,991)
'faw ', 0, iu,
'Air-sea energy flux'
615 IF ( flreq(05,05) ) &
616 WRITE (ndsctl,991)
'utaw ', 0, iu,
'Net wave supp str'
617 IF ( flreq(05,05) ) &
618 WRITE (ndsctl,991)
'vtaw ', 0, iu,
'Net wave supp str'
619 IF ( flreq(05,06) ) &
620 WRITE (ndsctl,991)
'utwa ', 0, iu,
'Neg wave supp str'
621 IF ( flreq(05,06) ) &
622 WRITE (ndsctl,991)
'vtwa ', 0, iu,
'Neg wave supp str'
623 IF ( flreq(09,01) ) &
624 WRITE (ndsctl,991)
'dtd ', 0, iu,
'DTAVG ST (min) '
625 IF ( flreq(09,02) ) &
626 WRITE (ndsctl,991)
'fc ', 0, iu,
'fcut (Hz) '
627 IF ( flreq(09,03) ) &
628 WRITE (ndsctl,991)
'cfx ', 0, iu,
'Max CFL XY Prop'
629 IF ( flreq(09,04) ) &
630 WRITE (ndsctl,991)
'cfd ', 0, iu,
'Max CFL TH Prop'
639 WRITE (ndse,1000) ierr
647 WRITE (ndse,1002) ierr
663 WRITE (ndse,1020) dtreq
675 900
FORMAT (/12x,
' *** WAVEWATCH III GrADS field output postp. *** '/ &
676 12x,
'====================================================='/)
677 901
FORMAT (
' Comment character is ''',a,
''''/)
679 920
FORMAT (
' Grid name : ',a/)
681 930
FORMAT (
' Fields in file : '/ &
682 ' --------------------------')
685 940
FORMAT (/
' Output time data : '/ &
686 ' -----------------------------------------------------'/ &
688 941
FORMAT (
' Interval : ',a/ &
689 ' Number of requests : ',i4)
690 942
FORMAT (/
' End of file reached '/)
692 945
FORMAT (/
' Requested output fields : '/ &
693 ' -----------------------------------------------------')
694 946
FORMAT (
' ',a,1x,a)
696 947
FORMAT (/
' Requested discrete grid ranges : '/ &
697 ' -----------------------------------------------------')
698 948
FORMAT (
' Longitudes : ',2i6/ &
699 ' lattidutes : ',2i6/ &
700 ' Opening file ww3.grads')
701 949
FORMAT (
' Alternative definition is used ')
702 950
FORMAT (
' Sea points in mask : ',a)
703 951
FORMAT (
' Bound. pts. in mask: ',a)
705 970
FORMAT (//
' Generating file '/ &
706 ' -----------------------------------------------------')
707 971
FORMAT (
' Data for ',a)
709 980
FORMAT (//
' Final file management '/ &
710 ' -----------------------------------------------------')
711 981
FORMAT (
' Closing file ww3.grads')
712 982
FORMAT (
' Opening file ww3.ctl')
713 983
FORMAT (
' Number of times : ',i6/ &
714 ' Initial time ID : ',i2.2,
':',i2.2,
'Z',i2.2,a3,i4/ &
715 ' Time step ID : ',i2,a2)
717 990
FORMAT (
'DSET ww3.grads'/ &
718 'TITLE WAVEWATCH III gridded data'/ &
719 'OPTIONS sequential'/ &
720 'OPTIONS big_endian'/ &
722 'XDEF ',i4,
' LINEAR ',2f12.5/ &
723 'YDEF ',i4,
' LINEAR ',2f12.5/ &
724 'ZDEF ',i4,
' LINEAR ',2f12.5/ &
725 'TDEF ',i4,
' LINEAR ',i6.2,
':',i2.2,
'Z',i2.2,a3,i4, &
728 991
FORMAT (a6,2i4,2x,a15)
729 992
FORMAT (
'ENDVARS')
731 999
FORMAT (/
' End of program '/ &
732 ' ========================================='/ &
733 ' WAVEWATCH III GrADS field output '/)
736 9050
FORMAT (
' TEST GXOUTF : KPDS : ',13i4/ &
738 9051
FORMAT (
' TEST GXOUTF : KGDS : ',8i6/ &
743 1000
FORMAT (/
' *** WAVEWATCH III ERROR IN GXOUTF : '/ &
744 ' ERROR IN OPENING INPUT FILE'/ &
747 1001
FORMAT (/
' *** WAVEWATCH III ERROR IN GXOUTF : '/ &
748 ' PREMATURE END OF INPUT FILE'/)
750 1002
FORMAT (/
' *** WAVEWATCH III ERROR IN GXOUTF : '/ &
751 ' ERROR IN READING FROM INPUT FILE'/ &
754 1010
FORMAT (/
' *** WAVEWATCH III ERROR IN GXOUTF : '/ &
755 ' SMALLEST OUTPUT INCREMENT IS 60 SEC.'/)
757 1011
FORMAT (/
' *** WAVEWATCH III ERROR IN GXOUTF : '/ &
758 ' ERROR IN OPENING OUTPUT FILE ww3.grads'/ &
761 1012
FORMAT (/
' *** WAVEWATCH III ERROR IN GXOUTF : '/ &
762 ' ERROR IN OPENING OUTPUT FILE ww3.ctl'/ &
765 1020
FORMAT (/
' *** WAVEWATCH III ERROR IN GXOUTF : '/ &
766 ' FIELD INCREMENT > 1HR BUT NOT MULTIPLE',f10.0/)
768 1021
FORMAT (/
' *** WAVEWATCH III ERROR IN GXOUTF : '/ &
769 ' UPDATE PARS IN LOOP 610 !!!'/)
785 SUBROUTINE gxexgo ( NX, NY, NSEA )
866 INTEGER,
INTENT(IN) :: NX, NY, NSEA
871 INTEGER :: IX, IY, J, ISEA, IXL, IXR
872 INTEGER :: MAPXCL(NY,NX), MAPDRY(NY,NX), &
873 MAPICE(NY,NX), MAPLND(NY,NX), &
876 INTEGER,
SAVE :: IENT = 0
878 REAL :: X1(NX,NY), XX(NX,NY), XY(NX,NY), &
880 REAL :: VALLND = 0.001
885 CALL strace (ient,
'GXEXGO')
889 WRITE (ndst,9000) ((flreq(j,k),j=1,nogrp), k=1,ngrpp)
896 mapxcl = mod(mapst2,2)
897 mapice = mod(mapst2,2)
898 mapdry = mod(mapst2/2,2)
899 maplnd = mod(mapst2/4,2)
900 mapmsk = mod(mapst2/8,2)
904 IF ( mapsta(iy,ix).EQ.0 )
THEN
905 IF ( mapxcl(iy,ix).EQ.1 )
THEN
910 ELSE IF ( mapsta(iy,ix).LT.0 )
THEN
911 IF ( mapmsk(iy,ix).EQ.1 )
THEN
913 ELSE IF ( maplnd(iy,ix).EQ.1 )
THEN
915 ELSE IF ( mapice(iy,ix).EQ.1 .AND. &
916 mapdry(iy,ix).EQ.1 )
THEN
918 ELSE IF ( mapdry(iy,ix).EQ.1 )
THEN
920 ELSE IF ( mapice(iy,ix).EQ.1 )
THEN
926 x1(ix,iy) = real(mapsta(iy,ix))
928 IF ( mapsta(iy,ix) .GT. 0 ) x1(ix,iy) = undef
929 ELSE IF ( mbout )
THEN
930 IF ( mapsta(iy,ix).EQ.2 .OR. &
931 iy.EQ.1 .OR. iy.EQ.ny .OR. &
932 ( iclose.NE.iclo_none .AND. &
933 (ix.EQ.1 .OR. ix.EQ.nx) ) )
THEN
936 ixl = 1 + mod(ix+nx-2,nx)
938 IF ( mapsta(iy+1,ixl).EQ.0 .AND. &
939 mapxcl(iy+1,ixl).EQ.1 ) x1(ix,iy) = undef
940 IF ( mapsta(iy+1,ix ).EQ.0 .AND. &
941 mapxcl(iy+1,ix ).EQ.1 ) x1(ix,iy) = undef
942 IF ( mapsta(iy+1,ixr).EQ.0 .AND. &
943 mapxcl(iy+1,ixr).EQ.1 ) x1(ix,iy) = undef
944 IF ( mapsta( iy ,ixr).EQ.0 .AND. &
945 mapxcl( iy ,ixr).EQ.1 ) x1(ix,iy) = undef
946 IF ( mapsta(iy-1,ixr).EQ.0 .AND. &
947 mapxcl(iy-1,ixr).EQ.1 ) x1(ix,iy) = undef
948 IF ( mapsta(iy-1,ix ).EQ.0 .AND. &
949 mapxcl(iy-1,ix ).EQ.1 ) x1(ix,iy) = undef
950 IF ( mapsta(iy-1,ixl).EQ.0 .AND. &
951 mapxcl(iy-1,ixl).EQ.1 ) x1(ix,iy) = undef
952 IF ( mapsta( iy ,ixl).EQ.0 .AND. &
953 mapxcl( iy ,ixl).EQ.1 ) x1(ix,iy) = undef
956 IF ( msout .AND. mapsta(iy,ix).EQ.1 ) x1(ix,iy) = undef
957 IF ( mbout .AND. mapsta(iy,ix).EQ.2 ) x1(ix,iy) = undef
963 WRITE (ndsdat) ((x1(ix,iy),ix=ix0,ixn),iy=iy0,iyn)
978 IF ( flreq(j,k) )
THEN
988 WRITE (ndst,9020) idout(j,k)
995 IF ( j.EQ.1 .AND. k.EQ.1 )
THEN
997 CALL w3s2xy ( nsea, nsea, nx, ny, dw(1:nsea) &
1002 ELSE IF ( j.EQ.1 .AND. k.EQ.2 )
THEN
1004 CALL w3s2xy ( nsea, nsea, nx, ny, cx(1:nsea) &
1006 CALL w3s2xy ( nsea, nsea, nx, ny, cy(1:nsea) &
1011 ELSE IF ( j.EQ.1 .AND. k.EQ.3 )
THEN
1013 CALL w3s2xy ( nsea, nsea, nx, ny, ua(1:nsea) &
1015 CALL w3s2xy ( nsea, nsea, nx, ny, ud(1:nsea) &
1020 ELSE IF ( j.EQ.1 .AND. k.EQ.4 )
THEN
1022 CALL w3s2xy ( nsea, nsea, nx, ny, as(1:nsea) &
1027 ELSE IF ( j.EQ.1 .AND. k.EQ.5 )
THEN
1029 CALL w3s2xy ( nsea, nsea, nx, ny, wlv , mapsf, x1 )
1033 ELSE IF ( j.EQ.1 .AND. k.EQ.6 )
THEN
1035 CALL w3s2xy ( nsea, nsea, nx, ny, ice , mapsf, x1 )
1039 ELSE IF ( j.EQ.1 .AND. k.EQ.8 )
THEN
1041 CALL w3s2xy ( nsea, nsea, nx, ny, taua(1:nsea) &
1043 CALL w3s2xy ( nsea, nsea, nx, ny, tauadir(1:nsea) &
1048 ELSE IF ( j.EQ.1 .AND. k.EQ.9 )
THEN
1050 CALL w3s2xy ( nsea, nsea, nx, ny, rhoair, mapsf, x1 )
1055 ELSE IF ( j.EQ.1 .AND. k.EQ.11 )
THEN
1057 CALL w3s2xy (nsea, nsea, nx, ny, iceh , mapsf, x1 )
1063 ELSE IF ( j.EQ.1 .AND. k.EQ.12)
THEN
1065 CALL w3s2xy (nsea, nsea, nx, ny, icef , mapsf, x1 )
1071 ELSE IF ( j.EQ.2 .AND. k.EQ.1 )
THEN
1073 CALL w3s2xy ( nsea, nsea, nx, ny, hs , mapsf, x1 )
1077 ELSE IF ( j.EQ.2 .AND. k.EQ.2 )
THEN
1079 CALL w3s2xy ( nsea, nsea, nx, ny, wlm , mapsf, x1 )
1083 ELSE IF ( j.EQ.2 .AND. k.EQ.3 )
THEN
1085 CALL w3s2xy ( nsea, nsea, nx, ny, t02 , mapsf, x1 )
1089 ELSE IF ( j.EQ.2 .AND. k.EQ.4 )
THEN
1091 CALL w3s2xy ( nsea, nsea, nx, ny, t0m1 , mapsf, x1 )
1095 ELSE IF ( j.EQ.2 .AND. k.EQ.5 )
THEN
1097 CALL w3s2xy ( nsea, nsea, nx, ny, t01 , mapsf, x1 )
1101 ELSE IF ( j.EQ.2 .AND. k.EQ.6 )
THEN
1103 CALL w3s2xy ( nsea, nsea, nx, ny, fp0 , mapsf, x1 )
1107 ELSE IF ( j.EQ.2 .AND. k.EQ.7 )
THEN
1109 CALL w3s2xy ( nsea, nsea, nx, ny, thm , mapsf, x1 )
1113 ELSE IF ( j.EQ.2 .AND. k.EQ.8 )
THEN
1115 CALL w3s2xy ( nsea, nsea, nx, ny, ths , mapsf, x1 )
1119 ELSE IF ( j.EQ.2 .AND. k.EQ.9 )
THEN
1121 CALL w3s2xy ( nsea, nsea, nx, ny, thp0 , mapsf, x1 )
1125 ELSE IF ( j.EQ.2 .AND. k.EQ.17 )
THEN
1127 CALL w3s2xy ( nsea, nsea, nx, ny, wbt , mapsf, x1 )
1131 ELSE IF ( j.EQ.4 .AND. k.EQ.1 )
THEN
1134 CALL w3s2xy ( nsea, nsea, nx, ny, phs(:,i), &
1140 ELSE IF ( j.EQ.4 .AND. k.EQ.2 )
THEN
1143 CALL w3s2xy ( nsea, nsea, nx, ny, ptp(:,i), &
1149 ELSE IF ( j.EQ.4 .AND. k.EQ.3 )
THEN
1152 CALL w3s2xy ( nsea, nsea, nx, ny, plp(:,i), &
1158 ELSE IF ( j.EQ.4 .AND. k.EQ.4 )
THEN
1161 CALL w3s2xy ( nsea, nsea, nx, ny, pdir(:,i), &
1167 ELSE IF ( j.EQ.4 .AND. k.EQ.5 )
THEN
1170 CALL w3s2xy ( nsea, nsea, nx, ny, psi(:,i), &
1176 ELSE IF ( j.EQ.4 .AND. k.EQ.6 )
THEN
1179 CALL w3s2xy ( nsea, nsea, nx, ny, pws(:,i), &
1185 ELSE IF ( j.EQ.4 .AND. k.EQ.7 )
THEN
1188 CALL w3s2xy ( nsea, nsea, nx, ny, pthp0(:,i), &
1194 ELSE IF ( j.EQ.4 .AND. k.EQ.8 )
THEN
1197 CALL w3s2xy ( nsea, nsea, nx, ny, pqp(:,i), &
1204 ELSE IF ( j.EQ.4 .AND. k.EQ.9 )
THEN
1207 CALL w3s2xy ( nsea, nsea, nx, ny, ppe(:,i), &
1214 ELSE IF ( j.EQ.4 .AND. k.EQ.10 )
THEN
1217 CALL w3s2xy ( nsea, nsea, nx, ny, pgw(:,i), &
1224 ELSE IF ( j.EQ.4 .AND. k.EQ.11 )
THEN
1227 CALL w3s2xy ( nsea, nsea, nx, ny, psw(:,i), &
1234 ELSE IF ( j.EQ.4 .AND. k.EQ.12 )
THEN
1237 CALL w3s2xy ( nsea, nsea, nx, ny, ptm1(:,i), &
1244 ELSE IF ( j.EQ.4 .AND. k.EQ.13 )
THEN
1247 CALL w3s2xy ( nsea, nsea, nx, ny, pt1(:,i), &
1254 ELSE IF ( j.EQ.4 .AND. k.EQ.14 )
THEN
1257 CALL w3s2xy ( nsea, nsea, nx, ny, pt2(:,i), &
1264 ELSE IF ( j.EQ.4 .AND. k.EQ.15 )
THEN
1267 CALL w3s2xy ( nsea, nsea, nx, ny, pep(:,i), &
1273 ELSE IF ( j.EQ.4 .AND. k.EQ.16 )
THEN
1275 CALL w3s2xy ( nsea, nsea, nx, ny, pwst ,mapsf, x1 )
1279 ELSE IF ( j.EQ.4 .AND. k.EQ.17 )
THEN
1281 CALL w3s2xy ( nsea, nsea, nx, ny, pnr , mapsf, x1 )
1285 ELSE IF ( j.EQ.5 .AND. k.EQ.1 )
THEN
1287 CALL w3s2xy ( nsea, nsea, nx, ny, ust(1:nsea) &
1289 CALL w3s2xy ( nsea, nsea, nx, ny, ustdir(1:nsea) &
1294 ELSE IF ( j.EQ.5 .AND. k.EQ.2 )
THEN
1296 CALL w3s2xy ( nsea, nsea, nx, ny, charn , mapsf, x1 )
1300 ELSE IF ( j.EQ.5 .AND. k.EQ.3 )
THEN
1302 CALL w3s2xy ( nsea, nsea, nx, ny, cge , mapsf, x1 )
1306 ELSE IF ( j.EQ.5 .AND. k.EQ.4 )
THEN
1308 CALL w3s2xy ( nsea, nsea, nx, ny, phiaw , mapsf, x1 )
1312 ELSE IF ( j.EQ.5 .AND. k.EQ.5 )
THEN
1314 CALL w3s2xy ( nsea, nsea, nx, ny, tauwix, mapsf, xx )
1315 CALL w3s2xy ( nsea, nsea, nx, ny, tauwiy, mapsf, xy )
1319 ELSE IF ( j.EQ.5 .AND. k.EQ.6 )
THEN
1321 CALL w3s2xy ( nsea, nsea, nx, ny, tauwnx, mapsf, xx )
1322 CALL w3s2xy ( nsea, nsea, nx, ny, tauwny, mapsf, xy )
1326 ELSE IF ( j.EQ.8 .AND. k.EQ.5 )
THEN
1328 CALL w3s2xy ( nsea, nsea, nx, ny, qp , mapsf, x1 )
1332 ELSE IF ( j.EQ.9 .AND. k.EQ.1 )
THEN
1335 IF ( dtdyn(isea) .NE. undef ) &
1336 dtdyn(isea) = dtdyn(isea) / 60.
1338 CALL w3s2xy ( nsea, nsea, nx, ny, dtdyn , mapsf, x1 )
1342 ELSE IF ( j.EQ.9 .AND. k.EQ.2 )
THEN
1344 CALL w3s2xy ( nsea, nsea, nx, ny, fcut , mapsf, x1 )
1348 ELSE IF ( j.EQ.9 .AND. k.EQ.3 )
THEN
1350 CALL w3s2xy ( nsea, nsea, nx, ny, cflxymax , mapsf, x1 )
1354 ELSE IF ( j.EQ.9 .AND. k.EQ.4 )
THEN
1356 CALL w3s2xy ( nsea, nsea, nx, ny, cflthmax , mapsf, x1 )
1362 ELSE IF ( j.EQ.7 .AND. k.EQ.1 )
THEN
1364 CALL w3s2xy ( nsea, nsea, nx, ny, aba , mapsf, xx )
1365 CALL w3s2xy ( nsea, nsea, nx, ny, abd , mapsf, xy )
1369 ELSE IF ( j.EQ.7 .AND. k.EQ.2 )
THEN
1371 CALL w3s2xy ( nsea, nsea, nx, ny, uba , mapsf, xx )
1372 CALL w3s2xy ( nsea, nsea, nx, ny, ubd , mapsf, xy )
1376 ELSE IF ( j.EQ.6 .AND. k.EQ.1 )
THEN
1378 CALL w3s2xy ( nsea, nsea, nx, ny, sxx , mapsf, x1 )
1379 CALL w3s2xy ( nsea, nsea, nx, ny, syy , mapsf, xx )
1380 CALL w3s2xy ( nsea, nsea, nx, ny, sxy , mapsf, xy )
1384 ELSE IF ( j.EQ.10 .AND. k.EQ.1 )
THEN
1386 CALL w3s2xy ( nsea, nsea, nx, ny, usero(:,1) &
1391 ELSE IF ( j.EQ.10 .AND. k.EQ.2 )
THEN
1393 CALL w3s2xy ( nsea, nsea, nx, ny, usero(:,2) &
1397 WRITE (ndse,990) j, k
1409 ((x1(ix,iy),ix=ix0,ixn),iy=iy0,iyn)
1411 ((xx(ix,iy),ix=ix0,ixn),iy=iy0,iyn)
1413 ((xy(ix,iy),ix=ix0,ixn),iy=iy0,iyn)
1417 ELSE IF ( flprt )
THEN
1420 ((xa(ix,iy,i),ix=ix0,ixn),iy=iy0,iyn)
1425 ELSE IF ( fltwo )
THEN
1427 ((xx(ix,iy),ix=ix0,ixn),iy=iy0,iyn)
1429 ((xy(ix,iy),ix=ix0,ixn),iy=iy0,iyn)
1433 ELSE IF ( flone )
THEN
1435 ((x1(ix,iy),ix=ix0,ixn),iy=iy0,iyn)
1450 940
FORMAT (1x,i8,3i3.2,2x,4e12.4)
1451 950
FORMAT (1x,a13,i9.8,i7.6,2(2f8.2,i4), &
1452 1x,a4,f8.4,1x,a10,2i2,1x,a11,i4)
1453 951
FORMAT (1x,2f10.5,2i8)
1455 990
FORMAT (/
' *** WAVEWATCH III ERROR IN W3EXGO :'/ &
1456 ' GROUP',i2,
' PARAMETER',i3,
' NOT LISTED ' )
1457 999
FORMAT (/
' *** WAVEWATCH III ERROR IN GXEXGO :'/ &
1458 ' PLEASE UPDATE FIELDS !!! '/)
1461 9000
FORMAT (
' TEST GXEXGO : FLAGS :',40l2)
1462 9020
FORMAT (
' TEST GXEXGO : OUTPUT FIELD : ',a)