This page presents errata to the WAVEWATCH III v. 3.14 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.
REAL, INTENT(OUT) :: UST, USTD, Z0, CD
with
REAL, INTENT(INOUT) :: UST
REAL, INTENT(OUT) :: USTD, Z0, CD
Fix: In the
post-processor gx_outp.ftn, on lines 825 and following, add
!/ST3 TAUWY = 0.
!/ST3 LLWS(:,:) = .TRUE.
USTAR = 1.
Fix: In the
post-processor ww3_outp.ftn, on lines 1195 and following, add
!/ST2 ZWND = ZWIND
!/ST3 ZWND = ZZWND
!/ST0 USTAR = 1.
!/ST1 USTAR = 1.
!/ST2 USTAR = 1.
Problem: When using
a mosaic of two-way nested grids, artificial obstructions may appear at
the boundaries of inner grids, when obstructions are defined between
grid points (FLAGTR = 1 or FLAGTR = 3 in ww3_grid.inp).
Fix: We have not
yet pursued a software fix for this. For now, use no obstructions
(FLAGTR = 0) of obstructions defined at the grid points instead (FLAGTR
= 2 or FLAGTR = 4, the latter is the NCEP operational default approach).
!/ ------------------------------------------------------------------- / !/ Local parameters !/ INTEGER :: IFILE, IERR, I, J, NKI, NTHI, IX, IY,& ISEA, IP, ISP, NPTS, ISOUT, IS, IGRD !/T1 INTEGER :: IK, ITH !/S INTEGER, SAVE :: IENT = 0 REAL :: XFRI, FR1I, TH1I !/T1 REAL :: HS, HS0with
!/ ------------------------------------------------------------------- / !/ Local parameters !/ INTEGER, SAVE :: IFILE, IERR, I, J, NKI, NTHI, IX, IY,& ISEA, IP, ISP, NPTS, ISOUT, IS, IGRD !/T1 INTEGER :: IK, ITH !/S INTEGER, SAVE :: IENT = 0 REAL, SAVE :: XFRI, FR1I, TH1I !/T1 REAL :: HS, HS0Full fix: Add relevant parameters to be saved to the data structure in w3odatmd.ftn to be saved for each separate grid individually. In file w3odatmd.ftn, make the following additions (green text) around lines 335,
!/ TYPE OTYPE5 INTEGER :: NBI, NBI2, NFBPO, NBO(0:9), & NBO2(0:9), NDSL(9), NKI, NTHI !/MPI INTEGER :: NRQBP, NRQBP2 INTEGER, POINTER :: IPBPI(:,:), ISBPI(:), & IPBPO(:,:), ISBPO(:) !/MPI INTEGER, POINTER :: IRQBP1(:), IRQBP2(:) REAL :: XFRI, FR1I, TH1I REAL, POINTER :: XBPI(:), YBPI(:), RDBPI(:,:), & XBPO(:), YBPO(:), RDBPO(:,:), & ABPI0(:,:), ABPIN(:,:), ABPOS(:,:), &around line 427,
!/ TYPE OTYPE5 INTEGER :: NBI, NBI2, NFBPO, NBO(0:9), & NBO2(0:9), NDSL(9), NKI, NTHI !/MPI INTEGER :: NRQBP, NRQBP2 INTEGER, POINTER :: IPBPI(:,:), ISBPI(:), & IPBPO(:,:), ISBPO(:) !/MPI INTEGER, POINTER :: IRQBP1(:), IRQBP2(:) REAL :: XFRI, FR1I, TH1I REAL, POINTER :: XBPI(:), YBPI(:), RDBPI(:,:), & XBPO(:), YBPO(:), RDBPO(:,:), & ABPI0(:,:), ABPIN(:,:), ABPOS(:,:), &and around line 1330
NBO => OUTPTS(IMOD)%OUT5%NBO
NBO2 => OUTPTS(IMOD)%OUT5%NBO2
NDSL => OUTPTS(IMOD)%OUT5%NDSL
NKI => OUTPTS(IMOD)%OUT5%NKI
NTHI => OUTPTS(IMOD)%OUT5%NTHI
XFRI => OUTPTS(IMOD)%OUT5%XFRI
FR1I => OUTPTS(IMOD)%OUT5%FR1I
TH1I => OUTPTS(IMOD)%OUT5%TH1I
FLBPI => OUTPTS(IMOD)%OUT5%FLBPI
FLBPO => OUTPTS(IMOD)%OUT5%FLBPO
FILER => OUTPTS(IMOD)%OUT5%FILER
Furthermore, in the file w3iobcmd,ftn, around line 170 add
USE W3ADATMD, ONLY: CG
USE W3ODATMD, ONLY: NDSE, NDST, IAPROC, NAPROC, NAPERR, NAPBPT, &
NBI, NBI2, NFBPO, NBO, NBO2, NDSL, &
NKI, NTHI, XFRI, FR1I, TH1I, &
IPBPI, ISBPI, XBPI, YBPI, RDBPI, &
IPBPO, ISBPO, XBPO, YBPO, RDBPO, &
ABPI0, ABPIN, ABPOS, FLBPI, FILER, FILEW, &
and around line 190 remove (red text)
!/ ------------------------------------------------------------------- / !/ Local parameters !/ INTEGER :: IFILE, IERR, I, J, NKI, NTHI, IX, IY,& ISEA, IP, ISP, NPTS, ISOUT, IS, IGRD !/T1 INTEGER :: IK, ITH !/S INTEGER, SAVE :: IENT = 0 REAL :: XFRI, FR1I, TH1I !/T1 REAL :: HS, HS0 REAL, ALLOCATABLE :: TMPSPC(:,:) LOGICAL :: FLOK
!/MPI INTEGER, POINTER :: IRQRS(:), IRQRSS(:), VAAUX(:,:,:)
with
!/MPI INTEGER, POINTER :: IRQRS(:), IRQRSS(:)
!/MPI REAL, POINTER :: VAAUX(:,:,:)
!
BBPI0(:,0) = 0.
BBPIN(:,0) = 0.
ABPI0(:,0) = 0.
ABPIN(:,0) = 0.
!
DO IBI=1, NBI
ISEA = ISBPI(IBI)
IF ( FLGHG1 .AND. .NOT.FLGHG2 .AND. &
GRDHGH(I,0).GT.0 ) THEN
MAPST2 = MAPST2 + 8*MAPMSK
MAPSTA = ABS(MAPSTA)
DO IX=1, NX
DO IY=1, NY
IF ( MAPST2(IY,IX) .GT. 0 ) &
SUBROUTINE W3SRCE ( IX, IY, IMOD, SPEC, ALPHA, WN1, CG1, DEPTH, &
with
SUBROUTINE W3SRCE ( IX, IY, IMOD, SPEC, ALPHA, WN1, CG1, D_INP, &
In the use statement for the grid data structure replace
USE W3GDATMD, ONLY: NK, NTH, NSPEC, SIG, TH, DTMAX, DTMIN, &
FACTI1, FACTI2, FACSD, FACHFA, FACP, &
with
USE W3GDATMD, ONLY: NK, NTH, NSPEC, SIG, TH, DMIN, DTMAX, &
DTMIN, FACTI1, FACTI2, FACSD, FACHFA, FACP, &
In the declaration of the parameter list, replace
REAL, INTENT(IN) :: WN1(NK), CG1(NK), DEPTH, U10ABS, &
with
REAL, INTENT(IN) :: WN1(NK), CG1(NK), D_INP, U10ABS, &
In the declaration of variables internal to the subroutine add
REAL :: DTTOT, FHIGH, DT, AFILT, DAMAX, AFAC,&
HDT, ZWND, FP, DEPTH
Finally, around line 367, add the lines
!
!/T FLTEST = .TRUE.
!
DEPTH = MAX ( DMIN , D_INP )
!
!/LN0 VSLN = 0.
!/SEED VSLN = 0.
!/ST0 VSIN = 0.
Problem: In w3partmd.f90, the subroutine PTMEAN returns NP, the number of the NP_MAX partitions for which HS >= HSPMIN, but it doesn't return information about *which* partitions were selected. The code that combines wind-seas assumes that the NP partitions selected are the *first* NP of the NP_MAX partitions, which is not necessarily the case.
Fix:
INTEGER :: PMAP(DIMXP)
CALL PTMEAN(NP_MAX,IMO,ZP,DEPTH,UABS,UDIR,WN,NP,XP,DIMXP)to
CALL PTMEAN(NP_MAX,IMO,ZP,DEPTH,UABS,UDIR,WN,NP,XP,DIMXP,PMAP)
IPW = INDEX(1) DO IP=2, NWS IPT = INDEX(IP) DO ISP=1, NSPEC IF ( IMO(ISP) .EQ. IPT ) IMO(ISP) = IPW END DO END DOwith
IPW = PMAP(INDEX(1)) DO IP=2, NWS IPT = PMAP(INDEX(IP)) DO ISP=1, NSPEC IF ( IMO(ISP) .EQ. IPT ) IMO(ISP) = IPW END DO END DO
INTEGER, INTENT(OUT) :: PMAP(DIMXP)
NPO = NPO + 1 XP(1,NPO) = HSto
NPO = NPO + 1 IF (IP.GT.0) PMAP(NPO) = IP XP(1,NPO) = HS
Problem: When point output for the global grid (grid that wraps around) lies between NX and 1, we get an out of bounds error in the initialization routine.
Fix: On line 313 in wmiopomd.ftn add the following line
IF ( GLOBAL .AND. IX1 .EQ. NX ) IXS = 1-NX