Environmental Modeling Center Environmental Modeling Center Environmental Modeling Center United States Department of Commerce
 

WAVEWATCH III v. 1.18 errata, problems and fixes

The content provided on this page supports model development. These are not official NWS products and should not be relied upon for operational purposes. This web site is not subject to 24/7 support, and thus may be unavailable during system outages.

Operationally generated graphics of the wave fields (no spectra or source terms) are available from Model Analyses and Guidance.

Bulletin files are available from the Production FTP/HTTPS server. Look for gfs.YYYYMMDD/CC/wave/station/bulls.tCCz/gfswave.stationID.bull


This page presents errata to the WAVEWATCH III v. 1.18 manuals, and a list of identified problems and fixes. It will be updated as needed. Please let us know if you find any errors or problems so that we can add them to this page.

Errata

  • Page 8, Eq. (2.14): U sub phi should be U sub lambda
  • Page 10, Eq. (2.20): should be multiplied by -1
  • Page 13, Eq. (2.35): omega should be sigma
  • Page 17, below Eq. (2.58): a sub 3 should be a sub 2
  • Page 17, below Eq. (2.62): phi sub min should be f sub p,i,min
  • Page 35, 2nd line from bottom: "where 'Delta phi' is the directional increment ," should be "where 'Delta theta' is the directional increment ,"
  • Page 44, first line: "nestnnn.ww3" should be "test nnn.ww3"
  • Page 67, third bullet from bottom: "yyyyddmm" should be "yyyymmdd"
  • Page 72, line 9: "the part the of the makefile" should be "the part of the makefile"
  • Page 77, middle: "main.cmn" should be "dimx.cmn"
  • Page 78, line 3: "OUTPn" should be "PNTn"
  • Page 78, line 6 containing "GRDn" : remove line
  • Page 78, line 13: "number of input boundary points" should be "number of output boundary points."
  • Page 81, lines 12-13 from bottom: "the script" should be "the subroutine"

Index of Problems and Fixes


Boundary data transfer :


Problem: WAVEWATCH does not read input boundary data correctly.
Fix: In the subroutine W3IOBC in the file w3iobc.ftn, the read statement on lines 273 through 276
              READ (NDSB,ERR=803,IOSTAT=IERR)
                   (XBP(I),I=1,NB(0)), (YBP(I),I=1,NB(0)),
                   ((IPBP(I,1),I=1,NB(0)),J=1,4),
                   ((RDBP(I,1),I=1,NB(0)),J=1,4)
with
              READ (NDSB,ERR=803,IOSTAT=IERR)
                   (XBP(I),I=1,NB(0)), (YBP(I),I=1,NB(0)),
                   ((IPBP(I,J),I=1,NB(0)),J=1,4),
                   ((RDBP(I,J),I=1,NB(0)),J=1,4)

The actual changes have been color coded, red for old, green for new.
June 2 1999
Back to index.

IMPLICIT NONE statements :

Problem: In the conversion to a distributed memory designs, which was the main change in version 1.18, IMPLICIT NONE statements have been added to many routines for debugging purposes. These statements conflict with compiler directives, and possibly with declarations for previous model options. For instance, using the switches PR2 for the third order propagation scheme and YMP for Cray compiler directives will result in compiler errors in w3wave.ftn.
 
Fix: Disabling the IMPLICIT NONE statement will solve this problems You can also add dummy declarations for the offending arrays in the compiler directives, but you should then make sure to activate the declarations only for the switches considered. Removing the arrays from the compiler directives is a bad idea as it may result in failures if other options are chosen.
May 5 1999, Identified by Paul Wittmann.
Back to index

NCAR graphics issues :

Problem: The NCAR graphics post-processor has been used only on Cray systems with NCAR version 3.1.3. Some problems might occur when using more recent version of NCAR or when these programs are run on other platforms.
 
Fix 1: With NCAR 4.0.1 on IBM RS 6000 or Linux platforms remove or comment out the line
              CALL SETUSV ('LW',200)
in section 3 of the subroutine W3PLSP on line 1159 of the file w3ncar.ftn to assure that polar spectral plots work properly.
 
May 14 1999

 
Fix 2: On systems with 32 bit word lengths changes the lines
              FAC = 1.E-6
to
              FAC = 1.E-4
in the subroutines MXF and MYF on lines 115 and 145 in the file w3ncar.ftn, to assure that vector and barb plots display properly.
 
May 14 1999
Back to index

Test cases :

Problem: The test case ww3_tp2.2 will give an error on the input file when trying to print-plot spectra.
 
Fix: Replace line 315 in the script ww3_tp2.2
          1  -1.  0.  33
with
          1  -1.  0.  33   F
July 19 1999, identified by Nick Graham.
Back to index

DEC Alpha :

Problem: When compiled on a DEC Alpha and requesting point output, the model might crash randomly.
 
Fix?: Nick Graham thinks that this problem might be related to unsaved variables between routine calls. He was able to get the model to run properly by using the '-static' compiler option, that forces saving of scratch variables within the code. We are not sure that this actually is the reasons, as the model is run at NCEP on an IBM with the 'nosave' option in xlf without any problems. The 'nosave' option releases all variables between calls. If anyone has a more satisfactory expiation or fix, please let us know. In the mean time, use Nick's fix.
August 23 1999, identified by Nick Graham.
Back to index

Y2K testing and errors :

Problem: The entire wave model has been Y2K tested in the NCEP operational environment. All main wave model codes performed without problems. Only in the supplemental GRIB packing program a Y2K error was found, in that the year 2000 was not properly identified as year 100 of century 20.
 
Fix: In the program W3GRIB in the file ww3_grib.ftn, replace the lines 290 and 303
      KPDS(21) =  (FTIME(1)/10000-1)/100
with
      KPDS(21) =  1 + (FTIME(1)/10000-1)/100
Replace line 378
      KPDS( 8) = MOD(TIME(1),1000000) / 10000
with
      KPDS( 8) = 1 + MOD(TIME(1),1000000) / 10000
Replace line 386
      KPDS( 8) = MOD(FTIME(1),1000000) / 10000
with
      KPDS( 8) = 1 + MOD(FTIME(1),1000000) / 10000
 
November 1, 1999
Back to index

Unformatted bathymetry files :

Problem: The program ww3_grid presently does not accept unformatted bathymetry files.
 
Fix: Ad-hoc changes to the source code are be simple. The next release of the model will have both options availale.
 
December 2, 1999, identified by several.
Back to index

Error trapping in w3split.f :

Problem: There is no error trapping on the parameter NPMAX, the maximum number of peaks to be found in the spectrum.
 
Fix: Will be fixed in the following release.
December 2, 1999, identified by several.
Back to index

Flatlining fix :

Problem: In cases with prolonged low wind conditions, the model will (correctly) remove all wind sea related wave energy. If the wind picks up again, the sseding algorithm puts in some initial wave energy at high frequencies, after which the source terms can take care of proper wave growth. A bug in the implementation of this algorithm prevented it from working in some conditions, resulting in prolonged "flatlining" of the model.
 
Fix: The loop with label number 640 in the subroutine W3SRCE (w3srce.ftn) should be modified. Replace the start of this loop
      DO 640, IK=NKH, NK
with
      DO 640, IK=MIN(NK,NKH), NK
See presentation for impact of thus fix on the operational models at NCEP.
May 10, 2000, identified by several.
Back to index

Restart files on MPP systems :

As described in the manual, care has to be taken with the restart files if the code is run on an MPP platform. The restart file needs to be visible by all processors, and needs to be treated as a single file. Paul Wittmann had some problems running the code on under MPI on an SGI Origin 2000, and needed the following embedded assign in the code to generate proper restart files.
      ASSIGN (NDSR,'-F global',IERR)
Beware for similar necessities / problems when running under MPI on other platforms.
July 11, 2000, identified by Paul Wittmann.
Back to index

Declaration in W3IOBC :

On line 140 of the subroutine W3IOBC (w3iobc.ftn), the array MAPSTA is declared as.
      MAPSTA(MY,MY)
which should be.
      MAPSTA(MY,MX)
Because this is a parameter list declaration, it has no impact on the model behavior. I can however, be a source of spurious error messages if the model is compiled with array bound checking activated..
November 13, 2000, identified by Valdir Innocentini.
Back to index

Y2K end of year errors :

Problem: Due to a renormalization of the year in the routine DSEC21, the leap year is not properly dealt with in calculation of time differences. In the wave model this shows up with time management errors at the end of the year, including endless loops, and very large log files.
 
Fix: In the routine DSEC21 in the file dsec21.ftn, replace the lines 67 and 72
      NY1    = TIME1(1) / 10000 - 1900
      NY2    = TIME2(1) / 10000 - 1900
with
      NY1    = TIME1(1) / 10000
      NY2    = TIME2(1) / 10000
December 28, 2000.
Back to index

Declarations in W3IOGR :

In the subroutine W3IOGR in the file w3iogr.ftn, the arrays IPBPO and ISBPO are declared as REAL, but should be declared as integer. Due to the way these arrays are used here, there should be no problem, unless the compiler uses a different number of bytes for REAL and INTEGER data.
 
September 25, 2001, Identified by Yiquan Qi and others .
Back to index

Initialization in w3exgo :

In the subroutine W3EXGO in the file w3exgo.ftn., an initialization error in a map array may result in inconsisted vector maps with indifined x components yet defined y components. The loop 290 starting at line 392
        DO 290, IY=1, NY
          IF ( MAPSTA(IY,IX) .EQ. 0 ) THEN
              X1(IX,IY) = UNDEF
              X2(IX,IY) = UNDEF
              XX(IX,IY) = UNDEF
              XX(IX,IY) = UNDEF
            ENDIF
should be
        DO 290, IY=1, NY
          IF ( MAPSTA(IY,IX) .EQ. 0 ) THEN
              X1(IX,IY) = UNDEF
              X2(IX,IY) = UNDEF
              XX(IX,IY) = UNDEF
              XY(IX,IY) = UNDEF
            ENDIF
April 23, 2002, Delft University of Techn.
Back to index

Currents in W3IOGO :

In the subroutine W3IOGO in the file w3iogo.ftn., current vactors are written improperly. Lines 303 through 305
                  ELSE IF ( IO .EQ.  2 ) THEN
                    CALL W3WRTS ( NDSOG, CX(1), NSEA )
                    CALL W3WRTS ( NDSOG, CX(1), NSEA )
should be
                  ELSE IF ( IO .EQ.  2 ) THEN
                    CALL W3WRTS ( NDSOG, CX(1), NSEA )
                    CALL W3WRTS ( NDSOG, CY(1), NSEA )
April 23, 2002, Identified by Fabrice Ardhuin.
Back to index

Overflow in dissipation source term :

In the subroutine W3SDS2 in the file w3sds2.ftn, the loop labeled 200
       DO 200, IK=1, NK
        FILT    = MIN ( 1., MAX ( 0. , AFILT + BFILT*SIG(IK) ))
        POW     = MIN ( 25. , SDSA1 / ( CDISP*SIG(IK) )**SDSA2 )
        D(1,IK) = (1.-FILT)  * CDIST * K(IK)**2

 
& - FILT * SDSA0 * CDISH * SIG(IK)**3
 
& * (ALFA(IK)/SDSALN)**POW 200 CONTINUE
has the potential to generate a floating point errors on some hardware/compiler combinations in the red piece of the code. A simple work around is to replace this loop with
       DO 200, IK=1, NK
        FILT    = MIN ( 1., MAX ( 0. , AFILT + BFILT*SIG(IK) ))
        POW     = MIN ( 25. , SDSA1 / ( CDISP*SIG(IK) )**SDSA2 )
       IF ( FILT .GT. 0. ) THEN
            D(1,IK) = (1.-FILT)  * CDIST * K(IK)**2
     &            - FILT * SDSA0 * CDISH * SIG(IK)**3
     &                  * (ALFA(IK)/SDSALN)**POW
          ELSE
            D(1,IK) = (1.-FILT)  * CDIST * K(IK)**2
          ENDIF
  200   CONTINUE
where the part of the code marked green is replaced.
April 23, 2002, Identified by Erick Rogers and Roop Lalbeharry.
Solution by Erick Rogers.
Back to index

WW3_PREP 1-D field 'AI' error :

Problem: When provessing ice or water level fields with ww3_prep using the 'AI' option for the format of the data, no data gets transferred to the wave model.
 
Fix: For now, use the 'LL' option with the input grid set identical to the wave model grid. Will be fixed properly in the next release of the model.
April 30, 2002, identified by Fabrice Ardhuin.
Back to index

Water levels in W3ULEV :

In the subroutine W3ULEV in the file w3ulev.ftn, the dimensions of the input water level are in reverse order from the array definitons internal to the wave model. Therefore the following fixes are needed if a water level field is to be read in. Declarations, starting at line 105
      REAL            A(NTH,NK,0:MSEAL), VA(NSPEC,0:MSEAL),
     &                WN(0:NK+1,0:MSEA), CG(0:NK+1,0:MSEA),
     &                ZB(MSEA), DW(MSEA), WLV(MSEA), WLEV(MXI*MYI),
DMIN
C/
C/ -------------------------------------------------------------- /
C/
      INTEGER       ISEA, JSEA, IXY, IK, I1, I2, ISPEC, IK0, ITH
should become
      REAL            A(NTH,NK,0:MSEAL), VA(NSPEC,0:MSEAL),
     &                WN(0:NK+1,0:MSEA), CG(0:NK+1,0:MSEA),
     &                ZB(MSEA), DW(MSEA), WLV(MSEA), WLEV(MXI,MYI),
DMIN
C/
C/ -------------------------------------------------------------- /
C/
      INTEGER       ISEA, JSEA, IX, IY, IXY,
Loop 100, starting at line 149
      DO 100, ISEA=1, NSEA

 
IXY = MAPSF(ISEA,3) DWO(ISEA) = DW(ISEA) WLV(ISEA) = WLEV(IXY) DW (ISEA) = MAX ( DMIN , WLV(ISEA)-ZB(ISEA) ) 100 CONTINUE
should become
      DO 100, ISEA=1, NSEA

 
IX = MAPSF(ISEA,1)
 
IY = MAPSF(ISEA,2) DWO(ISEA) = DW(ISEA) WLV(ISEA) = WLEV(IX,IY) DW (ISEA) = MAX ( DMIN , WLV(ISEA)-ZB(ISEA) ) 100 CONTINUE
April 30, 2002, Identified by Fabrice Ardhuin.
Back to index

Relative wind speeds in W3UWND :

If the switch RWND is used to define wind speeds relative to the current velocity, the flag FLCUR needs to be transfered from the routine W3WAVE in w3wave.ftn to W3UWND in w3uwnd.ftn. In W3WAVE this requires that lines 646 through 648
             CALL W3UWND ( MXI, MYI, NSEA, FLFRST, TIME, MAPSF, CX, CY,
      &                    TW0, WX0, WY0, DT0, TWN, WXN, WYN, DTN,
      &                    UA, UD, AS, ASF, U10, U10D, UST, DW )
should become
             CALL W3UWND ( MXI, MYI, NSEA, FLFRST, TIME, MAPSF, CX, CY,
      &                    TW0, WX0, WY0, DT0, TWN, WXN, WYN, DTN,
      &                    UA, UD, AS, ASF, U10, U10D, UST, DW, FLCUR )
Furthermore, FLCU has to be added to the subroutine call in W3UWND in w3uwnd.ftn, and line 120
      LOGICAL       FLFRST
should become
      LOGICAL       FLFRST, FLCUR
July 8, 2002, Identified by Bechara Toulany.
Back to index