A set of tutorials, covering the use of olaFlow is available here.

All the cases include runCase and cleanCase scripts.

The first one runs all the steps needed to simulate the case and sampling/validation (when available).

The second one resets the case to its initial state (i.e. with a very small size).

BaseWaveFlume

A simple wave flume in 2D.

  • Waves are generated on the left patch (inlet).
  • Waves are absorbed on the right patch (outlet), according to the 2D theory.
  • Water depth is set to 0.4 m.
  • The wave conditions are specified in constant/waveDict.
  • Regular waves, 0.1 m high and with 3 s of period are generated according to the cnoidal theory.
  • No porosity involved.
  • The case can be run very fast in serial.

IrregTank

A 3D wave tank in which an irregular sea state is generated at patch X = 0, and absorbed elsewhere.

  • A directional, irregular sea state is generated (842 wave components).
  • Note nPaddles value for directionality.
  • On the rest of the patches, the waves are absorbed according to the 3D theory.
  • Note also nPaddles, nEdgeMin and nEdgeMin values.
  • No porosity involved.
  • Case to be better run in parallel.

CR35_dambreak

A 2D dam break in a tank, classic benchmark case to validate free surface flow through a porous medium.

  • Porosity involved.
  • Note the porosityIndex field at the 0 folder.
  • porosityIndex is set using setFields, check setFieldsDict.
  • The porous variables are set in constant/porosityDict.
  • Validation is included.
  • Sampling is not needed as free surface is obtained with a function object (included in controlDict).
  • Requirement: matplotlib
  • A python script (plotValidation.py) can be run in the end to plot a comparison between the experimental and numerical data.
  • The case can be run very fast in serial.

Breakwater

A composite breakwater within a wave flume in 2D. This case involves turbulence modelling.

  • Porosity involved.
  • Note the porosityIndex field at the 0 folder.
  • porosityIndex is set using setFields, check setFieldsDict for setting porosity inside STL files.
  • The porous variables are set in constant/porosityDict.
  • Several porous media are included."
  • Waves are generated on the left patch (inlet).
  • Waves are absorbed on the right patch (outlet), according to the 2D theory.
  • Water depth is set to 0.8 m.
  • The wave conditions are specified in constant/waveDict.
  • Regular waves, 0.25 m high and with 3 s of period are generated according to the cnoidal theory.
  • Sampling of free surface elevation and pressure is included.
  • Requirement: matplotlib.
  • Python scripts are included for postprocessing the results: postSens*.py
  • Python scripts are included for plotting postprocessed results: plotSens*.py
  • The case can be run very fast in serial.

PistonFlumeABS

A simple wave flume in 2D, in which waves are absorbed by a piston wavemaker.

  • Waves are generated on the left patch (inlet).
  • Waves are absorbed on the right patch (outlet), according to the 2D theory, with a moving boundary (piston).
  • The case runs very fast with olaDyMFlow.

CurrentWaveFlume

A simple wave flume in which waves and a current are generated simultaneously.

  • Waves and the current are generated on the left patch (inlet).
  • Waves and the current are absorbed on the right patch (outlet), according to the 2D theory.
  • You can check the differences with baseWaveFlume to see how to set up the currents: 0.org/U, constant/waveDict, system/setFieldsDict.
  • The case runs with olaFlow.

WavemakerFlume

A simple wave flume in which waves are generated either by a piston or a flap wavemaker.

  • Waves are generated on the left patch (inlet).
  • Waves are absorbed on the right patch (outlet), according to the 2D theory.
  • Python scripts included in constant directory to create wavemaker displacement according to linear theory. Parameters can be modified.
  • flapWaveGen.py for flap wavemaker.
  • pistonWaveGen.py for piston wavemaker.
  • The case runs with olaDyMFlow.
  • runCaseFlap script for flap wavemaker.
  • runCasePiston script for piston wavemaker.

WavemakerTank

A simple wave flume in which oblique waves are generated either by a multi-piston or a multi-flap wavemaker (10 individual paddles).

  • Waves are generated on the left patch (inlet), with 10 individual moving paddles.
  • Waves are absorbed on the right patch (outlet), according to the 2D theory.
  • Python scripts included in constant directory to create wavemaker displacement according to linear theory. Parameters can be modified.
  • flapWaveGen.py for flap wavemaker.
  • pistonWaveGen.py for piston wavemaker.
  • The case runs with olaDyMFlow.
  • runParallelCaseFlap script for flap wavemaker (it will only run in serial in foam-extend).
  • runParallelCasePiston script for piston wavemaker (it will only run in serial in foam-extend).

OppositeSolitaries

A simple wave flume in 2D, in which two identical solitary waves travel in opposite directions.

  • Waves are generated at both ends.
  • Waves are absorbed at both ends after interacting.
  • The case runs very fast with olaFlow.

setOlaFlume

about-image

A 2D wave flume with an irregular bottom, in which the wave field is set as initial condition with the setOla utility.

  • Additional parameters need to be defined in the waveDict file.
  • The case is run normally with olaFlow.
  • You can learn more about setOla in this blog post.