The library waves2Foam is a toolbox used to generate and absorb free surface water waves. Currently the method applies the relaxation zone technique (active sponge layers) and a large range of wave theories are supported and the relaxation zones can take arbitrary shapes.
Release of the waves2Foam Manual
As of the 17th of August 2017, the waves2Foam Manual is released. Consequently, the content of this Wiki-page is reduced.
It is still possible to find download/installation instructions and information on the code contributions.
1 waves2Foam - Information
1.1 Link to the manual
The waves2Foam Manual is freely available through ResearchGate. Click here for download .
1.2 Report Bugs via the Mantis on Sourceforge
Please report bugs (not compilation errors, unless they are bugs) here:
There is a subsection for waves2Foam. This will make it easier to keep track of issues, which needs attention.
1.3 Discussions on cfd-online.com
There are two main threads on cfd-online.com, which are related to waves2Foam.
For announcements please consider . Note that questions will generally not be answered here. It is a source of communication on development/release topics. For enquiries, discussion, etc., please use .
2 Download and Installation
Besides the standard dependencies in OpenFoam, waves2Foam also depend on a number of additional third-party packaged. These are:
- GNU Scientific Library (GSL)
- Subversion (SVN)
Make sure that these dependencies are installed on the system prior to installation of waves2Foam. Refer to the manual for further installation instructions.
2.2 SVN on SourceForge
The toolbox is available through the OpenFoam-Extend SourceForge SVN. Check out the code in the following manner:
- Install all third-party dependencies
- Obtain the source code via SVN as described above
- Execute the Allwmake script in the folder waves2Foam
- The Allwmake script might cast an error in terms of instructions. Merely follow these.
- Other errors could be a lot of things:)
3 Modifications to the Source Code (History)
- 2021-10-24 12:38:00: (r2151) Bug fix for foam-extend-4.0
- 2021-07-23 10:36:16: (r2150) Tutorial combining porousWaveFoam and GABC
- 2021-07-21 20:55:02: (r2149) Compatibility with OpenFoam-v2106 ESI
- 2021-04-24 13:35:34: (r2148) Increased support for IHFoam from v. 2012 onwards. setWaveParameters and setWaveField now works with combined BCs and there is a tutorial
- 2021-04-05 18:39:48: (r2147) Minor changes to curvedChannel tutorial
- 2021-04-05 15:19:41: (r2146) Curved channel gabc tutorial
- 2021-04-02 13:55:31: (r2145) Updated options files for v2012 solvers
- 2021-04-02 13:32:24: (r2144) Release GABC v1812 w. code and tutorials + newWaveJONSWAP wave theory
- 2021-01-20 19:42:22: (r2143) Added waveFoam and waveIsoFoam solver for v2012
- 2021-01-19 19:31:18: (r2142) Compatibility with v2012 and co-existence with IHFoam
- 2021-01-10 17:56:36: (r2141) First steps towards compilation on v2012
- 2020-07-03 17:03:38: (r2140) waveGaugesNProbes does not read the fvMesh
- 2020-03-23 08:51:36: (r2139) Bug options in waveIsoFoam 1812
- 2020-03-10 13:31:33: (r2138) Bugfix on complex exponential in early versions
- 2020-02-22 17:20:43: (r2137) Compiled waves2Foam for 1912 + waveFoam solver
- 2019-11-12 18:28:00: (r2136) Minor code changes to support ISAMBARD - Reported by Scott Brown/Ed. Ransley
- 2019-08-01 10:58:14: (r2135) Resolved parallel computing bug overtopping under SamplingNew
- 2019-07-31 09:43:43: (r2134) Added waveIsoFoam to 1812 and overtopping functionality for waves2FoamSamplingNew
- 2019-07-22 14:10:15: (r2133) Minor interface update to waveTheory.H
- 2019-06-05 15:39:46: (r2132) Updated waves2Foam to v1812 with waveFoam solver
- 2018-11-30 12:09:25: (r2131) Added irregularFast + Make file
- 2018-11-30 12:05:48: (r2130) Added irregularFast
- 2018-10-11 19:59:00: (r2129) Consistency update of FOAM_USER to WAVES. Decay function to streamFunction (optional)
- 2018-09-28 11:17:21: (r2128) IOstream flushing bug in surface elevation sampling resolved
- 2018-09-21 10:15:36: (r2127) Bug resolved in bichromaticSecond in evaluation of eta
- 2018-07-01 10:24:09: (r2125) Libraries compile on OFv1806; solvers to follow
- 2018-06-10 11:25:40: (r2124) Added flag to waveTheories for non-initialising theories
- 2018-05-27 13:02:23: (r2123) Removed ddxPd method from waveTheory, changed name from p to pExcess for clarity, and added additional pExcess implementation. Removed wavePressure boundary condition; never used/finalised
- 2018-05-25 11:36:12: (r2122) Added rAUf to cross version compatibility
- 2018-05-15 09:54:00: (r2121) Minor changes to setWaveParameters and sampleIncidentWaveField
- 2018-03-29 15:51:32: (r2120) sampleIncidentWaveField also writes the velocity field in the specified points
- 2018-03-06 19:55:01: (r2119) Missing file for porousDamBreak
- 2018-03-05 17:49:43: (r2118) New implementation of surfaceElevation to work on newer versions. Solvers for 1712
- 2018-01-24 21:16:02: (r2116) Part compatibility with OF1712. Solvers and surfaceElevation support to follow
- 2017-10-16 09:14:35: (r2115) Minor edit in jjc2014Zones.C
- 2017-09-15 11:48:27: (r2114) Added porousWaveFoam 1606PLUS
- 2017-07-23 19:46:17: (r2113) Continue adding pressures to wave theories: Now chappelear and corrects for still water level
- 2017-07-15 22:07:26: (r2112) Added solitary wave theory (Chappelear) and fixed bug in solitaryFirst
- 2017-07-14 18:01:19: (r2111) Adding pressure distribution to stokesSecond
- 2017-05-17 17:12:03: (r2107) Added a small interface correction to waveTheory.H
- 2017-05-07 21:53:13: (r2106) Added utility to compute the (analytical) wave field in a multiple of points: sampleIncidentWaveField
- 2017-04-09 20:23:26: (r2105) Added breeder version of catenary mooring line (v1606). Also coded pressure to StokesFirst
- 2017-01-15 18:50:23: (r2104) Support for foam-extend-4.0
- 2016-11-08 18:41:24: (r2103) waves2Foam available for v1606+
- 2016-10-13 16:00:22: (r2102) Preparing for better treatment of KC; no functional change
- 2016-09-27 07:31:45: (r2101) porousWaveFoam for OpenFoam-v3.0+ (only explicit advection of alpha.water)
- 2016-08-12 15:48:56: (r2100) Added compatibility with OpenFoam-v3.0+ and solvers for foam-extend-3.2
- 2016-07-08 10:40:35: (r2096) Minor change to pEqn.H for foam-extend-3.1 to support on-going developments. No functional change.
- 2016-07-01 22:41:30: (r2095) Added support for OpenFoam-4.0.0. porousWaveFoam not created and sampling library broken in OpenFoam-4.0.0
- 2016-05-19 22:05:52: (r2094) Support for stream function wave theory
- 2016-05-19 10:27:57: (r2093) Debug overtopping: results of rhoU2A were bugged, not the overtopping rate itself.
- 2016-04-29 11:11:26: (r2092) Minor cosmetic changes. Only functional change: Extruded faceSetToSTL always have outward pointing normal.
- 2016-04-04 14:52:42: (r2091) Changed source location for OceanWave3D. New version resolves bugs with respect to wave generation with the use of a paddle signal. Otherwise no functional effects are expected.
- 2016-04-04 09:48:18: (r2090) Resolved need for dual compilation, if WAVES_LIBBIN does not exist at the beginning of the compilation. WAVES_LIBBIN and WAVES_APPBIN are made manually.
- 2016-03-08 11:05:46: (r2089) Minor downstream dependencies. No functional change
- 2016-02-03 10:58:03: (r2088) Minor bug corrected in compilation procedure; effect on foam-extend branch
- 2016-02-02 10:50:34: (r2087) Corrected minor bug in oceanWave3D-coupling.
- 2016-01-08 17:42:13: (r2086) Update tutorial porousDamBreak + porousWaveFoam for OF2.3.0
- 2015-12-18 18:29:10: (r2085) Added time control checks to oceanWave3D.C
- 2015-11-23 07:27:38: (r2084) Added solver for OpenFoam-3.0.0
- 2015-11-20 18:50:30: (r2083) Preparation of compatibility with OpenFoam-3.0.0 - do not use this revision
- 2015-10-15 22:09:38: (r2082) Debugging of ThirdParty/Allwmake compile script
- 2015-10-15 21:17:44: (r2081) Additional of OceanWave3D coupling + related tutorial + documentation in 'doc'
- 2015-10-01 20:00:40: (r2080) src+utilities compiles with foam-extend-3.2. Solvers to follow
- 2015-09-16 09:27:48: (r2079) Minor issues with options and file for solvers
- 2015-09-09 16:07:37: (r2078) Added the possibility of using the sea level as vertical reference. Tutorials and setWaveParameters modified accordingly.
- 2015-08-24 17:10:42: (r2077) Added '- phi' to the argument in stokesFifth.C
- 2015-07-27 09:44:25: (r2073) Minor changes related to external wave forcing (e.g. nicer closing in solver + works with setWaveField)
- 2015-07-12 13:48:09: (r2072) waves2Foam compiles on OF2.4 + waveFoam solver
- 2015-06-06 18:22:46: (r2068) Added zero-crossing functionality + porosity model can be used for non-wave related things
- 2015-04-14 21:24:03: (r2066) Streamlined the code (removed duplication) for the setWaveProperties and related classes. Change in input format in waveProperties.input.
- 2015-03-25 09:05:40: (r2064) surfaceElevation now gives correct results on moving meshes in runTime (tested on foam-extend-3.1). Increase computational time.
- 2015-03-16 14:38:06: (r2063) Small change to porosityCoefficients. NO functional change. Also, corrected bug in surfaceElevation.C, which affected foam-extend branch.
- 2015-03-12 15:14:46: (r2062) Small change in the interface for the porosity module. No functional change.
- 2015-02-05 13:28:26: (r2060) Added porousWaveFoam for foam-extend-3.1
- 2014-10-30 11:01:34: (r2057) Resolving naming match between waves2Foam and 2+ OF-versions [DO NOT USE REVISION 2056]
- 2014-10-30 10:18:49: (r2056) Made the porosity runTime-selectable. Currently only one method available. Commit includes derived modifications.
- 2014-10-24 22:03:27: (r2055) Directional check on wave directions in wave theories. 3Dwaves tutorial corrected accordingly
- 2014-09-09 14:41:16: (r2051) Small interface change in the external wave classes (constructs now with fvMesh as well)
- 2014-09-04 14:43:15: (r2050) Modified options files so the compilation works with local installations of GSL
- 2014-09-04 11:36:01: (r2049) Changes to the output location of some applications and libraries. Now uses WAVES_APPBIN/WAVES_LIBBIN
- 2014-06-21 18:04:47: (r2045) Compiling on foam-extend-3.1, waveFoam 3.1 and waveFoam/porousWaveFoam added directly from OF2.2.1 to OF2.2.2
- 2014-05-31 22:02:48: (r2044) waveFoam support to foam-extend 3.0 + minor bug-fixes + new relaxation zone shape
- 2014-05-17 11:28:34: (r2043) Minor maintanence, i.e. waveProperties.input in waveFlume tutorial.
- 2014-04-12 17:35:52: (r2042) Corrected OF2.3.0 issue with the test case bejiBattjes
- 2014-04-06 12:33:09: (r2041) Release to facilitate planned future open-source contribution(s) [No functional change in execution].
- 2014-03-27 21:17:38: (r2040) Additional corrections to the tutorials to run in 2.3.0. Also corrected periodicSolitary, so the tutorial runs for recent cyclic definition.
- 2014-03-26 19:22:46: (r2039) Corrected tutorials, such that they can actually execute (adding the 0.org-directory)
- 2014-03-20 11:11:40: (r2038) Added a single post-processing functionality (writeIndexLocation)
- 2014-03-11 20:57:55: (r2037) Updated structure of tutorials to easier accommondate future changes. Now runs for OF2.3 with alpha.water.
- 2014-03-01 19:05:46: (r2036) Adjusted to be used with OF2.3. Furthermore, the porousDamBreak case now offers comparison with experiments. The tutorials are not yet adjusted to work with the changes from OF2.2 -> OF2.3.
- 2014-01-26 16:13:27: (r2026) Compatibility of waves2Foam libraries and utilities with foam-extend-3.0. Still no solver (waveFoam)
- 2013-12-28 11:43:19: (r2025) Porosity module with solvers (OF1.6, 2.1.0, 2.1.1, 2.2.0, 2.2.1) and a single tutorial.
- 2013-11-25 19:35:06: (r2024) Modified the fatal error message in the compilation, such that it is easy to understand how to resolve the issue with a wrong WAVES_DIR environmental variable.
- 2013-10-24 09:11:15: (r2022) Added a new relaxationScheme and a new relaxationShape
- 2013-10-07 20:36:24: (r2021) Modified src/waves2Foam*/Make/options.* to include XVERSION flag
- 2013-09-15 09:37:28: (r2020) Added phase focusing as an option for irregular waves.
- 2013-09-05 13:31:41: (r2019) Trivial bug-fix, not affecting results (Thanks: Bjarne Jensen)
- 2013-09-03 10:38:12: (r2018) Increased flexibility for setting wave spectra for JONSWAP.
- 2013-08-12 14:40:19: (r2017) Minor bug-fix in src/waves2Foam/waveTheories/irregular/irregular/irregular.C
- 2013-08-07 23:34:24: (r2016) Faster evaluation of irregular waves
- 2013-08-06 21:59:56: (r2015) A bit of code maintenance/simplification
- 2013-07-28 12:15:35: (r2014) Fourth revision on code style change according to: www.openfoam.org/contrib/code-style.php. [No functionality change]
- 2013-07-27 22:03:15: (r2013) Third revision on code style change according to: www.openfoam.org/contrib/code-style.php. [No functionality change]
- 2013-07-27 19:31:35: (r2012) Second revision on code style change according to: www.openfoam.org/contrib/code-style.php. [No functionality change]
- 2013-07-22 22:53:39: (r2011) First revision on code style change according to: www.openfoam.org/contrib/code-style.php. [No functionality change]
- 2013-07-15 13:09:08: (r2010) Corrected missing files in src/waves2FoamProcessing/Make/files
- 2013-07-13 11:32:48: (r2009) waves2Foam now compiles under OF2.2.1
- 2013-07-09 15:12:25: (r2008) Added an additional point distribution (user-defined) for wave gauges
- 2013-07-07 19:28:45: (r2007) Release of pre- and post-processing utilities, overtopping sampling and modified tutorials.
- 2013-07-07 18:37:43: (r2004-r2006) Temporary revision: Restructuring the src-directory
- 2013-07-07 17:41:18: (r2003) Bug in bichromatic second.
- 2013-06-11 20:46:14: (r2000) Resolve incompatibility between version 2.2.0 and 2.2.x for waveFoam header files
- 2013-06-09 09:13:39: (r1997) Added a small script for the creation of new wave theories in waves2Foam/doc/templateWaveTheory
- 2013-06-08 21:11:23: (r1996) Updated compilation system
- 2013-06-07 21:38:02: (r1991-r1995) Temporary commit during updating to new SVN
- 2012-12-03 12:52:40: (r1984) Added second order bichromatic waves. Set numerical beach type to "Empty" as defalt.
- 2012-11-29 15:10:18: (r1983) Added wave theory. Automatic enhanced write precision for cnoidal waves parameters. Slight change to waveTheory interface.
- 2012-11-23 15:52:01: (r1982) Changed setWaveParameters so (i) parameters are read from waveProperties.input and written to waveProperties and (ii) it does not depend on the mesh. The latter speeds up the execution (a lot!).
- 2012-11-18 21:48:17: (r1981) Added a check for validity of second order stokes in the properties file
- 2012-10-31 15:29:27: (r1980) Bug in compiling setWaveParameters for OFVERSION >= 17. Added pre-processor statement
- 2012-10-31 14:38:18: (r1979) (i) Bug in bichromaticFirstProperties.C. (ii) Cosmethics in the *Properties files, when writing waveProperties-file
- 2012-10-18 17:00:21: (r1977) (i) Added solvers for 2.1. (ii) Changed the approach used by setWaveParameters to write waveProperties file. (iii) Updated headers with publication data on the journal article. (iv) Added the file sourceCodeStructure_r1923.svg in the doc directory.
- 2012-10-17 12:04:01: (r1976) Removed all pre-processing if's related to version 15. Altered the OFVERSION pre-processor to work on e.g. 211 and 160 rather than 21 and 16.
- 2012-10-01 11:49:20: (r1975) Modified the tutorials, so they are also running under OF2.1
- 2012-09-10 21:29:21: (r1973) Corrected infinite loop in the computation of the wave number, when kh > 60 (extreme deep water).
- 2012-08-16 09:44:50: (r1972) Added an option for a local sealevel in potentialCurrent
- 2012-07-13 20:51:52: (r1969) Added the following: (i) runTime selection of relaxation zone weights, (ii) a local correction to relaxation weight based on the local Courant number, (iii) update of relaxationZoneLayout to show the weight and (iv) added interface for numerical beach in UEqn.H but still not functional.
- 2012-06-08 12:09:21: (r1967) Added some post-processing utilities to be used in matlab and modified the misc/matlab file structure. Minor bug-fix in generateStreamFile.m so the output file is consistent with the format in waves2Foam.
- 2012-05-16 10:44:43: (r1966) Corrected bug in matlab script for stream function theory (previous results correct, if the program could finalise!)
- 2012-05-15 12:01:18: (r1965) Additional output time control for the surfaceElevation utility. Especially needed under functionObject functionality
- 2012-05-10 14:37:47: (r1961) Added a optional starting time for the surface elevation sampling
- 2012-05-09 14:18:23: (r1960) Added phase-lag (phi_) in streamFunction.C
- 2012-05-03 13:22:43: (r1953) Added functionObject functionality for sampledSurfaceElevation. Included in the tutorial waveFlume.
- 2012-05-02 10:11:01: (r1952) Modification to Allwmake and src/Allwmake so "sed" also works under Mac OSX.
- 2012-04-30 21:28:20: (r1951) Added a post-processing utility, which can be used to extract the surface elevation. As of now, version 1.5 is no longer supported.
- 2012-04-11 10:13:10: (r1947) Bug in Allwmake script
- 2012-03-26 21:45:20: (r1945) Changed the way setWaveProperties output irregular wave properties. Adjusted irregular waveTheory accordingly.
- 2012-03-17 15:56:02: (r1944) Solved bug in convexPolyhedral. Furthermore added an addition relaxation shape (semiCircular)
- 2012-03-13 16:13:42: (r1943) Minor changes
- 2012-02-19 14:45:14: (r1940) Added the possibility of a wind vector, which is constant in space and time.
- 2012-01-29 19:15:41: (r1938) Changed the Make/files and Make/options to have the output files in FOAM_USER_LIBBIN and FOAM_USER_APPBIN.
- 2012-01-28 15:55:34: (r1937) Added a Pierson-Moskowitz spectrum
- 2012-01-27 13:28:00: (r1936) Added framework for irregular wave spectra - properties and wave theory
- 2012-01-24 13:20:58: (r1935) Small changes to src/Make/files and the overall Allwmake script in order to avoid the recompilation of waves2Foam on non-dev/ext versions of OF
- 2012-01-19 16:50:48: (r1934) Modified the code, so PI can be used both in pre- and post-2.0 versions of OpenFoam. It is replaced by PI_(4.0*atan(1.0)) a few neccesary places as a protected member variable.
- 2011-12-04 20:07:35: (r1932) Added a tutorial showing how to generate a standing wave from a fully reflecting sea wall
- 2011-11-22 10:02:44: (r1929) Added a tutorial utilising the cylindrical relaxation zone
- 2011-11-19 01:01:19: (r1928) Added "waveFoam" for 1.7, modified Allwmake script and added necessary files to tutorials due to above change.
- 2011-11-16 19:22:22: (r1937) setWaveParameters now also works for cnoidalFirst
- 2011-11-14 20:04:08: (r1926) Added matlab tools for cnoidal and stream function waves
- 2011-11-14 17:52:52: (r1925) Added a 3D wave tank tutorial
- 2011-11-10 11:30:30: (r1923) Initial release of waves2Foam - all files
--NGJ 20:10, 04 December 2011 (CET)