Skip to content
solids4foamPublic

About

Integrate finite volume beam solver with CFD solvers in OpenFOAM

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

177 Commits

Folders and files

Repository files navigation

moorFV

moorFV is a coupling library for mooring applications in OpenFOAM, with extensions for beam-fluid interaction problems. It provides finite-volume-based tools and examples for coupling floating-body motion, mooring-line dynamics, and beam-fluid interaction workflows.

moorFV demonstration figure 1 moorFV demonstration figure 2

Requirements

  • OpenFOAM, tested with OpenFOAM.com-style installations.
  • beamFoam, which is a mandatory submodule for this library.
  • A working OpenFOAM build environment with wmake available in the shell.

Initialize the required submodule after cloning:

git submodule update --init --recursive

This checks out the beamFoam commit that moorFV is pinned to, which is a commit on the beamFoam main branch. The submodule is then on a detached HEAD, which is expected. This is the combination that CI builds and tests on every pull request.

To use the latest beamFoam main instead (the branch = main entry in .gitmodules), run:

git submodule update --remote src/beamFoam

If beamFoam main has moved on since the pinned commit, git status in moorFV then shows src/beamFoam as modified.

The beamFoam submodule is located at:

src/beamFoam

By default, moorFV builds against this bundled submodule. If you want to use your own beamFoam checkout instead, set BEAMFOAM_DIR before building:

export BEAMFOAM_DIR=/path/to/beamFoam

The selected beamFoam installation must already be compiled, because moorFV uses beamFoam headers from:

$BEAMFOAM_DIR/src/wireBunchingModels/lnInclude

If that directory is missing, compile beamFoam first:

cd "$BEAMFOAM_DIR"
./Allwmake -j

Building

Load your OpenFOAM environment first, then build from the repository root:

./Allwmake

The root Allwmake delegates to src/Allwmake. The src/Allwmake script resolves BEAMFOAM_DIR as follows:

  • If BEAMFOAM_DIR is set, it validates and uses that path.
  • If BEAMFOAM_DIR is not set, it uses the bundled submodule at src/beamFoam.
  • If the submodule is missing or uninitialized, it prints the required git submodule update --init --recursive src/beamFoam command.

It then checks that beamFoam is on its main branch, or at a commit on main. The bundled submodule passes this check as it is after git submodule update, which leaves it at the pinned commit.

This means both of the following are valid:

./Allwmake
cd src
./Allwmake

To clean generated build files:

./Allwclean

Tutorials

Example cases are provided in:

tutorial/

The tutorials are grouped by application:

  • tutorial/mooring/: moored floating body cases (mooringCase-H12T20, mooringCase-H15T18)
  • tutorial/twoWayBeamFluidInteraction/: two-way actuator-line coupling of a flexible beam with the flow (beamInChannel, oscillatingBeam, flexibleVegetation); each has its own README.md

Each case should be run from its own directory using the local Allrun and Allclean scripts when available.

Citation

If you use moorFV or the finite-volume mooring-line method in your work, please cite:

Taran, A., Bali, S., Tukovic, Z., Pakrashi, V., and Cardiff, P. (2025). A finite volume Simo-Reissner beam method for moored floating body dynamics. Applied Ocean Research, 165, 104845. https://doi.org/10.1016/j.apor.2025.104845

Contacts

For questions, please contact:

License

This project is distributed under the GNU General Public License v3.0. See LICENSE for details.

About

Integrate finite volume beam solver with CFD solvers in OpenFOAM

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages