NOAA Privacy Policy | NWS Disclaimer | ||
![]() |
![]() |
![]() |
Version 1.18 - Errata, Problems and Fixes |
Last update:
October 15, 2004
Point of contact: NCEP.EMC.wavewatch@NOAA.gov Return to WAVEWATCH III page |
This page presents errata to the WAVEWATCH III version 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
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-6to FAC = 1.E-4in 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. 33with 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)/100with
KPDS(21) = 1 + (FTIME(1)/10000-1)/100
Replace line 378
KPDS( 8) = MOD(TIME(1),1000000) / 10000with
KPDS( 8) = 1 + MOD(TIME(1),1000000) / 10000
Replace line 386
KPDS( 8) = MOD(FTIME(1),1000000) / 10000with
KPDS( 8) = 1 + MOD(FTIME(1),1000000) / 10000
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. 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, NKwith DO 640, IK=MIN(NK,NKH), NKSee 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 - 1900with 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.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 200DO 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)**2has 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 CONTINUEwhere 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, NSEAshould become DO 100, ISEA=1, NSEA
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 648CALL 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 FLFRSTshould become
LOGICAL FLFRST, FLCUR
July 8, 2002, Identified by Bechara Toulany.
Back to index Return to WAVEWATCH III page.
|