Skip to content

gunnups/FOAM-FSI

 
 

Repository files navigation

FOAM-FSI

wercker status

Features

  • Partitioned Fluid-Structure Interaction solvers build with standard foam-extend fluid and solid solvers.

  • Algorithms for strongly coupled FSI: Aitken under relaxation, IQN-ILS or Anderson acceleration, manifold mapping acceleration, and space mapping acceleration.

  • Consistent first and second order time integration schemes for incompressible flow, structural dynamics and FSI.

  • Efficient implementation of mesh motion solver based on radial basis function interpolation.

  • Run fluid-structure-acoustics simulations with the coupling tool preCICE.

  • Block-coupled transient incompressible flow solver.

  • Arbitrary high order time discretization for incompressible flow, solid mechanics and FSI simulations.

Installation

First, compile foam-extend-3.2. A detailed description for the compilation of foam-extend-3.2 can be found here: https://openfoamwiki.net/index.php/Installation/Linux/foam-extend-3.2. Clone the repository as follows:

git clone git://git.code.sf.net/p/foam-extend/foam-extend-3.2

It is highly advised to the use the system installed gcc (>= 4.8) and OpenMPI library for foam-extend and FOAM-FSI. This is due to the fact that the bundled OpenMPI version of foam-extend disables the fortran compiler, and a set of MPI routines which are needed when running a fluid-structure-acoustics simulation with preCICE.

On Ubuntu, the following environment variables should be set before compiling foam-extend-3.2:

# Use the system installed libraries
export PARAVIEW_SYSTEM=1
export CUDA_IGNORE=1
export SWAK4FOAM_SYSTEM=1
export WM_MPLIB=SYSTEMOPENMPI
export OPENMPI_DIR=/usr
export OPENMPI_BIN_DIR=$OPENMPI_DIR/bin

With this grep command, you can ensure that the mpicxx compiler is used during compilation:

sed -i s/"CC          = g++ -m64"/"CC          = mpicxx -m64"/g foam-extend-3.2/wmake/rules/linux64Gcc/c++

Set the environment variable $FOAM_INST_DIR in case foam-extend is installed in a non-standard location:

export FOAM_INST_DIR=`pwd`

You can make a distinction between a debug build and a release build. Generally, it is advised to first setup a test case with a debug build, and then do the production run with the production build. By default, foam-extend is configured to build the release version. With the environment variable WM_COMPILE_OPTION you can switch between debug and release builds. So for a debug build:

export WM_COMPILE_OPTION=Debug

and for a release build:

export WM_COMPILE_OPTION=Opt

For optimal performance of the production run, it is advised to add the NDEBUG compiler flag in order to disable all assertions as follows:

sed -i s/"c++OPT      = -O3"/"c++OPT      = -O3 -DNDEBUG"/g foam-extend-3.2/wmake/rules/linux64Gcc/c++Opt

Finally, the compilation process of foam-extend is started with

cd foam-extend-3.2
source etc/bashrc
./Allwmake.firstInstall

To compile the FOAM-FSI library:

git clone --recursive https://github.com/davidsblom/FOAM-FSI.git
cd FOAM-FSI
./Allwmake.firstInstall

The first time the library is compiled, use the Allwmake_firstInstall script which installs the necessary settings in foam-extend-3.2/etc/prefs.sh, and compiles several third party packages. Thereafter, you can use the Allwmake script.

Prerequisites

gcc 4.8 or higher due to C++11 features. The gfortran compiler is used for the compilation of the deal.II library, and is therefore also needed.

Test suite

A test suite is available implementing a large number of unit and functional tests within the googletest framework. In case you run into problems with the FSI solver, preferably run the test suite and attach a log of the test results to your bug report. To run the test suite:

tests

Credits

The FOAM-FSI project has been started by David Blom. Many other people have also contributed. Here is an alphabetical list:

Philip Cardiff
Thijs Gillebaart
Eline ter Hofstede
Vahid Kazemi-Kamyab

About

Fluid-Structure Interaction solvers for foam-extend

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 65.6%
  • C 15.6%
  • Fortran 15.5%
  • CMake 2.1%
  • Shell 0.5%
  • Python 0.5%
  • Other 0.2%