Skip to content
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
dccf4b9
Communication is added after boundary conditions are applied in PDLIB…
kestonsmith-noaa Mar 26, 2026
ace2d37
Scaling of lateral boundary conditions by group velocity are simplifi…
kestonsmith-noaa Apr 16, 2026
ed516b8
Added a test within regtest ww3_tp2.17 to illustrate a failure of res…
kestonsmith-noaa Apr 23, 2026
3e59145
Fix failure of restart reproducability in cases with variable water l…
kestonsmith-noaa Apr 24, 2026
98362ec
Add a unique NDSTABSPC for each point for ww3_outp ITYPE=1, OTYPE=3 (…
JessicaMeixner-NOAA May 6, 2026
62a9744
revert grib2 back to jpeg (#1599)
JessicaMeixner-NOAA May 19, 2026
a48d81d
Bugfix for spurious wave energy along coastlines of nested SMC grid m…
ukmo-rwdavies Jun 15, 2026
e9792e4
Removes extra comma on line 1355 of w3iogrmd.F90 to fix a bug when us…
EJRainville-NOAA Jun 17, 2026
5529eab
Changes in switches for regtest ww3_tp2.17 case deep to reflect desir…
kestonsmith-noaa Jul 24, 2026
c3b0d04
ST6 source term updated for coupled simulation. Memory leak addressed…
stefanzieger Jul 27, 2026
454a7f8
Merge remote-tracking branch 'origin/develop' into HEAD
mingchen-NOAA Aug 5, 2026
da2067e
Add double precision option to ounf namelist. (#1610)
ukmo-daisybrown Aug 18, 2026
9f9717e
Fix convergence stall in IMPTOTAL solver with JGS_TERMINATE_DIFFERENC…
leahcicon Aug 28, 2026
cb744f6
Added a test case to ww3_ufs1.1 that includes the -N flag and adjuste…
EJRainville-NOAA Aug 28, 2026
761cf79
Fix additional compiler warnings and remarks. (#1624)
mingchen-NOAA Sep 4, 2026
f1b8604
Merge remote-tracking branch 'origin/develop' into HEAD
mingchen-NOAA Sep 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions cmake/FindGKLIB.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
find_library(gklib_lib NAMES libGKlib.a libGKlib.so libGKlib.dylib HINTS ENV METIS_PATH PATH_SUFFIXES lib)
find_path(gklib_inc GKlib.h HINTS ENV METIS_PATH PATH_SUFFIXES include)

add_library(GKLIB::GKLIB STATIC IMPORTED)

set_target_properties(GKLIB::GKLIB PROPERTIES
IMPORTED_LOCATION "${gklib_lib}"
INTERFACE_INCLUDE_DIRECTORIES "${gklib_inc}")

include(FindPackageHandleStandardArgs)

if(gklib_inc MATCHES "NOTFOUND" OR gklib_lib MATCHES "NOTFOUND")
set(${CMAKE_FIND_PACKAGE_NAME}_FOUND False)
else()
find_package_handle_standard_args(
${CMAKE_FIND_PACKAGE_NAME}
REQUIRED_VARS gklib_lib
gklib_inc)
endif()
10 changes: 8 additions & 2 deletions cmake/FindMETIS.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,18 @@ set_target_properties(METIS::METIS PROPERTIES
IMPORTED_LOCATION "${metis_lib}"
INTERFACE_INCLUDE_DIRECTORIES "${metis_inc}")

find_package(GKLIB)
if(NOT GKLIB_FOUND)
message(STATUS "GKLIB not found")
target_link_libraries(METIS::METIS)
else()
target_link_libraries(METIS::METIS INTERFACE GKLIB::GKLIB)
endif()

## Finalize find_package
include(FindPackageHandleStandardArgs)

find_package_handle_standard_args(
${CMAKE_FIND_PACKAGE_NAME}
REQUIRED_VARS metis_lib
metis_inc)

message(STATUS "Found METIS: ${metis_lib}")
2 changes: 1 addition & 1 deletion cmake/FindOASIS.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ else()
endif()

message(STATUS " Searching for mod_oasis...")
find_path(oasis_inc mod_oasis.mod PATHS $ENV{OASISDIR}/build/lib/psmile.MPI1)
find_path(oasis_inc NAMES mod_oasis.mod HINTS ENV OASISDIR PATH_SUFFIXES build/lib/psmile.MPI1 include)
if(oasis_inc)
message(STATUS " Found: ${oasis_inc}")
else()
Expand Down
2 changes: 0 additions & 2 deletions cmake/FindParMETIS.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,3 @@ find_package_handle_standard_args(
${CMAKE_FIND_PACKAGE_NAME}
REQUIRED_VARS parmetis_lib
parmetis_inc)

message(STATUS "Found ParMETIS: ${parmetis_lib}")
64 changes: 49 additions & 15 deletions manual/eqs/ST6.tex
Original file line number Diff line number Diff line change
Expand Up @@ -225,31 +225,39 @@ \subsubsection{~$S_{in} + S_{ds}$: Rogers et al. 2012 \& Zieger et al. 2015} \la
\begin{table} \begin{center}
\footnotesize
\begin{threeparttable}
\begin{tabular}{|l|c|c|c|c|c|} \hline \hline
Parameter & WWATCH var. & namelist & vers.\,4.18 & vers.\,5.16 & vers.\,6.07 \\
\begin{tabular}{|l|c|c|c|c|c|c|} \hline \hline
Parameter & WWATCH var. & namelist & vers.\,4.18 & vers.\,5.16 & vers.\,6.07 & vers.\,7.14 \\
\hline
$F_{\mathrm{T}}$ & SDSET & SDS6 & T & T & T \\
$a_1$ & SDSA1 & SDS6 & 6.24E-7 & 3.74E-7 & 4.75E-6 \\
$p_1$ & SDSP1 & SDS6 & 4 & 4 & 4 \\
$a_2$ & SDSA2 & SDS6 & 8.74E-6 & 5.24E-6 & 7.00E-5 \\
$p_2$ & SDSP2 & SDS6 & 4 & 4 & 4 \\
$F_{\mathrm{T}}$ & SDSET & SDS6 & T & T & T & T \\
$a_1$ & SDSA1 & SDS6 & 6.24E-7 & 3.74E-7 & 4.75E-6 & 4.75E-6 \\
$p_1$ & SDSP1 & SDS6 & 4 & 4 & 4 & 4 \\
$a_2$ & SDSA2 & SDS6 & 8.74E-6 & 5.24E-6 & 7.00E-5 & 7.00E-5 \\
$p_2$ & SDSP2 & SDS6 & 4 & 4 & 4 & 4 \\
\hline
$\Upsilon$\tnote{\textdagger} & SINWS & SIN6 & n/a & n/a & 32.0 \\
$N_{hf}$\tnote{\textdagger} & SINFC & SIN6 & n/a & n/a & 6.0 \\
$a_0$ & SINA0 & SIN6 & 0.04 & 0.09 & 0.09 \\
$b_1$ is constant& CSTB1 & SWL6 & n/a & F & F \\
$b_1$, $B_1$ & SWLB1 & SWL6 & 0.25E-3 & 0.0032 & 0.0041 \\
$\mathrm{FAC}$ & CDFAC & FLX4 & 1.00E-4 & 1.00E-4 & 1.0\tnote{\textdaggerdbl} \\
$\Upsilon$\tnote{\textdagger} & SINWS & SIN6 & n/a & n/a & 32.0 & 32.0 \\
$N_{hf}$\tnote{\textdagger} & SINFC & SIN6 & n/a & n/a & 6.0 & 6.0 \\
$a_0$ & SINA0 & SIN6 & 0.04 & 0.09 & 0.09 & 0.09 \\
$\hat{\alpha}$ & CHKMIN & SIN6 & n/a & n/a & n/a & 0.0095 \\
$\hat{\alpha}_\infty$ & CHKINF & SIN6 & n/a & n/a & n/a & 1.0E-4 \\
$U_c$ & CHKCAP & SIN6 & n/a & n/a & n/a & 0.0\tnote{\S} \\
$\sigma_U$ & CHKSIG & SIN6 & n/a & n/a & n/a & 5.0 \\
\hline
$C$ & NLPROP & SNL1 & 3.00E7 & 3.00E7 & 3.00E7 \\
$b_1$ is constant& CSTB1 & SWL6 & n/a & F & F & F \\
$b_1$, $B_1$ & SWLB1 & SWL6 & 0.25E-3 & 0.0032 & 0.0041 & 0.0041 \\
\hline
$\mathrm{FAC}$ & CDFAC & FLX4 & 1.00E-4 & 1.00E-4 & 1.0\tnote{\textdaggerdbl} & 1.0 \\
\hline
$C$ & NLPROP & SNL1 & 3.00E7 & 3.00E7 & 3.00E7 & 3.00E7 \\
\hline \hline
\end{tabular}
\begin{tablenotes}
\item[\textdagger] In WW3 version 4.18 and 5.16, $\Upsilon = 28.0$
\item[\textdagger] In WW3 version 4.18 and 5.16, $\Upsilon = 28.0$
and $N_{hf} = 6.0$ were hard-coded in {\code ST6} module.
\item[\textdaggerdbl] For the CFS winds from 2011 onwards, $\mathrm{CDFAC} \sim 1.0$
is recommended for global simulations; for the ERA5 reanalysis winds,
$\mathrm{CDFAC} \sim 1.08$ is suggested \citep{Liu2019, Liu2021}.
\item[\S] Capped Charnock parameter in Eq.~(\ref{eq:ST627}) disabled

\end{tablenotes}
\end{threeparttable} \end{center}
\caption{Summary of calibration parameters for {\code ST6} when it is applied with
Expand Down Expand Up @@ -386,6 +394,32 @@ \subsubsection{~$S_{in} + S_{ds}$: Rogers et al. 2012 \& Zieger et al. 2015} \la
means \emph{the high-frequency spectral tail evolves freely without any
prescribed slope.}

\noindent
\paragraph{Charnock parameter}
We introducted the calculation of the Charnock parameter $\alpha$
within the ST6 source term in vers.\,7.14. The Charnock parameter
is calculated from the wave supported stress, $\tau_{w}$ in Eq.~(\ref{eq:ST609}),
the total stress $\tau_{tot}$, and the minimum Charnock parameter,
$\hat{\alpha}$.
\begin{equation}\label{eq:ST626}
\alpha = \hat{\alpha} \ \left [ 1- \frac{\tau_{w}}{\tau_{tot}}\right ]^{-1/2}
\end{equation}
Following \citet{art:BET22}, we included an option to reduce the minimum
Charnock parameter for high wind speed and to allow reaching an asymptotic
minimum value $\hat{\alpha}_\infty$. Using a threshold $U_c$ for
wind speed $U$, and blending window $\sigma_U$, the minimum Charnock
parameter takes the functional form given in Eq.~(\ref{eq:ST627}).
A wind speed threshold greater than zero will trigger Eq.~(\ref{eq:ST627}).
\begin{equation}\label{eq:ST627}
\hat{\alpha} = \hat{\alpha}_\infty + \frac{1}{2} \left [ \hat{\alpha} - \hat{\alpha}_\infty \right ] \left [ 1 - \tanh \frac{U-U_c}{\sigma_U} \right ]
\end{equation}
While there is no consensus on the choice of parameters yet, we extended
the namelist parameters {\code \&SIN6} in Table~\ref{tab:ST601}
for minimum Charnock $\hat{\alpha}$,
asymptotic Charnock $\hat{\alpha}_\infty$,
wind speed threshold $U_c$, and
blending window $\sigma_U$.

\noindent
\paragraph{Dominant Wave Breaking Probability}
Following \citet[][their Fig.~12]{art:BBY01}, the dominant wave breaking probability $b_T$ can be estimated from the wave spectrum $F(f, \theta)$ according to the following parametric form
Expand Down
10 changes: 10 additions & 0 deletions manual/manual.bib
Original file line number Diff line number Diff line change
Expand Up @@ -3786,3 +3786,13 @@ @ARTICLE{Srokosz1986
keywords={altimeter;sea state bias},
}

@ARTICLE{art:BET22,
author = "Breivik, {\O}yvind and Carrasco, Ana and Haakenstad, Hilde and Aarnes, Ole Johan and Behrens, Arno and Bidlot, Jean-Raymond and Bj{\"o}rkqvist, Jan-Victor and Bohlinger, Patrik and Furevik, Birgitte R. and Staneva, Joanna and Reistad, Magnar",
title = "The Impact of a Reduced High-Wind Charnock Parameter on Wave Growth With Application to the North Sea, the Norwegian Sea, and the Arctic Ocean",
journal = JGR,
volume = 127,
number = 3,
pages = "e2021JC018196",
year = 2022,
}

8 changes: 0 additions & 8 deletions model/bin/build_utils.sh
Original file line number Diff line number Diff line change
Expand Up @@ -530,14 +530,6 @@ check_switches()
echo ' ' ; exit 14
fi

if [ "$oasis" = 'OASIS' ] && [ "$str_st3" = 'no' ]
then
echo ' '
echo " *** !/OASIS cannot be used in combination with !/$stress"
echo " Stresses embedded in source terms, use FLX0."
echo ' ' ; exit 15
fi

if [ -n "$thread1" ] && [ "$s_nl" = 'NL2' ]
then
echo ' '
Expand Down
2 changes: 1 addition & 1 deletion model/bin/comp.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@
# oasis coupler include dir
if [ "$oasis_mod" = 'yes' ]
then
opt="$opt -I$OASISDIR/build/lib/psmile.MPI1"
opt="$opt -I$OASISDIR/include -I$OASISDIR/build/lib/psmile.MPI1"
fi

# netcdf include dir
Expand Down
1 change: 0 additions & 1 deletion model/bin/switch_NCEP_rwps

This file was deleted.

1 change: 1 addition & 0 deletions model/bin/switch_NWS_rwps
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
NCO NOGRB TRKNC NC4 DIST MPI MLIM PR3 UQ FLX0 PDLIB SCOTCH LN1 ST4 STAB0 NL1 BT1 DB1 TR1 BS0 IS0 IC4 REF1 WNT1 WNX1 RWND CRT1 CRX1 O0 O1 O2 O3 O4 O5 O6 O7 O14 O15
1 change: 1 addition & 0 deletions model/bin/ww3_from_ftp.sh
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ cp -r data_regtests/ww3_tp2.14/input/toy/toy_coupled_field.nc.OASACM regtests/ww
cp -r data_regtests/ww3_tp2.14/input/toy/toy_coupled_field.nc.OASACM regtests/ww3_tp2.14/input/toy/toy_coupled_field.nc.OASACM6
cp -r data_regtests/ww3_tp2.14/input/toy/*.nc regtests/ww3_tp2.14/input/toy/
cp -r data_regtests/ww3_tp2.17/input/* regtests/ww3_tp2.17/input/
cp -r data_regtests/ww3_tp2.17/input_ice/* regtests/ww3_tp2.17/input_ice/
cp -r data_regtests/ww3_tp2.19/input/* regtests/ww3_tp2.19/input/
cp -r data_regtests/ww3_tp2.21/input/* regtests/ww3_tp2.21/input/
cp -r data_regtests/mww3_test_09/input/* regtests/mww3_test_09/input/
Expand Down
5 changes: 2 additions & 3 deletions model/src/cmake/switches.json
Original file line number Diff line number Diff line change
Expand Up @@ -744,10 +744,9 @@
"valid-options": [
{
"name": "OASIS",
"requires": ["MPI"],
"build_files": ["w3oacpmd.F90"],
"conflicts": ["FLX1", "FLX2", "FLX3", "FLX4"]

"requires": ["MPI"],
"conflicts": ["FLX1", "FLX2", "FLX3"]
}
]
},
Expand Down
2 changes: 1 addition & 1 deletion model/src/gx_outp.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1174,7 +1174,7 @@ SUBROUTINE GXEXPO
#endif
#ifdef W3_ST6
CALL W3SIN6 (A, CG, WN2, UABS, USTAR, UDIRR, CD, &
DAIR, TAUWX, TAUWY, TAUWNX, TAUWNY, XWI, DIA )
DAIR, TAUWX, TAUWY, TAUWNX, TAUWNY, CHARN, XWI, DIA )
#endif
END IF
IF ( FLSRCE(3) ) THEN
Expand Down
2 changes: 1 addition & 1 deletion model/src/w3flx4md.F90
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ SUBROUTINE W3FLX4 ( ZWND, U10, U10D, UST, USTD, Z0, CD )
! Formats
!
1000 FORMAT (/' *** WAVEWATCH III ERROR IN W3FLX4 : '/ &
' HIGHT OF WIND SHOULD BE 10m IN THIS APPRACH '/ &
' HIGHT OF WIND SHOULD BE 10m IN THIS APPROACH '/ &
' ZWND =',F8.2,'m'/)
!/
!/ End of W3FLX4 ----------------------------------------------------- /
Expand Down
23 changes: 15 additions & 8 deletions model/src/w3gdatmd.F90
Original file line number Diff line number Diff line change
Expand Up @@ -840,11 +840,11 @@ MODULE W3GDATMD
REAL :: DUMMY
#ifdef W3_FLD1
INTEGER :: Tail_ID
REAL :: Tail_Lev, TAIL_TRAN1, TAIL_TRAN2
REAL :: Tail_Lev, TAIL_TRAN1, TAIL_TRAN2, FLDALPHA
#endif
#ifdef W3_FLD2
INTEGER :: Tail_ID
REAL :: Tail_Lev, TAIL_TRAN1, TAIL_TRAN2
REAL :: Tail_Lev, TAIL_TRAN1, TAIL_TRAN2, FLDALPHA
#endif
END TYPE FLDP
TYPE SFLP
Expand Down Expand Up @@ -920,9 +920,9 @@ MODULE W3GDATMD
!
#ifdef W3_ST6
REAL :: SIN6A0, SDS6A1, SDS6A2, SWL6B1, &
SIN6WS, SIN6FC
SIN6WS, SIN6FC, SIN6CHKMIN, SIN6CHKINF, SIN6CHKCAP, SIN6CHKSIG
INTEGER :: SDS6P1, SDS6P2
LOGICAL :: SDS6ET, SWL6S6, SWL6CSTB1
LOGICAL :: SDS6ET, SWL6S6, SWL6CSTB1, SIN6FLCAP
#endif
END TYPE SRCP
!
Expand Down Expand Up @@ -1279,11 +1279,11 @@ MODULE W3GDATMD
!/
#ifdef W3_FLD1
INTEGER, POINTER :: TAIL_ID
REAL, POINTER :: TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2
REAL, POINTER :: TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2, FLDALPHA
#endif
#ifdef W3_FLD2
INTEGER, POINTER :: TAIL_ID
REAL, POINTER :: TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2
REAL, POINTER :: TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2, FLDALPHA
#endif
!/
!/ Data aliasses for structure SFLP(S)
Expand Down Expand Up @@ -1344,9 +1344,9 @@ MODULE W3GDATMD
#endif
#ifdef W3_ST6
REAL, POINTER :: SIN6A0, SDS6A1, SDS6A2, SWL6B1, &
SIN6WS, SIN6FC
SIN6WS, SIN6FC, SIN6CHKMIN, SIN6CHKINF, SIN6CHKCAP, SIN6CHKSIG
INTEGER, POINTER :: SDS6P1, SDS6P2
LOGICAL, POINTER :: SDS6ET, SWL6S6, SWL6CSTB1
LOGICAL, POINTER :: SDS6ET, SWL6S6, SWL6CSTB1, SIN6FLCAP
#endif
REAL, POINTER :: WWNMEANPTAIL, SSTXFTFTAIL
!/
Expand Down Expand Up @@ -2595,12 +2595,14 @@ SUBROUTINE W3SETG ( IMOD, NDSE, NDST )
TAIL_LEV => MPARS(IMOD)%FLDPS%TAIL_LEV
TAIL_TRAN1 => MPARS(IMOD)%FLDPS%TAIL_TRAN1
TAIL_TRAN2 => MPARS(IMOD)%FLDPS%TAIL_TRAN2
FLDALPHA => MPARS(IMOD)%FLDPS%FLDALPHA
#endif
#ifdef W3_FLD2
TAIL_ID => MPARS(IMOD)%FLDPS%TAIL_ID
TAIL_LEV => MPARS(IMOD)%FLDPS%TAIL_LEV
TAIL_TRAN1 => MPARS(IMOD)%FLDPS%TAIL_TRAN1
TAIL_TRAN2 => MPARS(IMOD)%FLDPS%TAIL_TRAN2
FLDALPHA => MPARS(IMOD)%FLDPS%FLDALPHA
#endif
!
! Structure SFLPS
Expand Down Expand Up @@ -2726,6 +2728,11 @@ SUBROUTINE W3SETG ( IMOD, NDSE, NDST )
SIN6A0 => MPARS(IMOD)%SRCPS%SIN6A0
SIN6WS => MPARS(IMOD)%SRCPS%SIN6WS
SIN6FC => MPARS(IMOD)%SRCPS%SIN6FC
SIN6CHKMIN => MPARS(IMOD)%SRCPS%SIN6CHKMIN
SIN6CHKINF => MPARS(IMOD)%SRCPS%SIN6CHKINF
SIN6CHKCAP => MPARS(IMOD)%SRCPS%SIN6CHKCAP
SIN6CHKSIG => MPARS(IMOD)%SRCPS%SIN6CHKSIG
SIN6FLCAP => MPARS(IMOD)%SRCPS%SIN6FLCAP
SDS6ET => MPARS(IMOD)%SRCPS%SDS6ET
SDS6A1 => MPARS(IMOD)%SRCPS%SDS6A1
SDS6P1 => MPARS(IMOD)%SRCPS%SDS6P1
Expand Down
Loading
Loading