Contents
1 Description
This toolkit was created by Zeljko Tukovic and Hrvoje Jasak, according to this presentation. The original source code is provided here: ZeljkoTukovic-ImmersedBoundaryMaterial.tgz
There are at least two other implementations of Immersed Boundary Method for OpenFOAM:
- This code was adapted and further extended by ICONCFD, but it does not seem to have been made available to the public: Implementation of a moving immersed boundary method on a dynamically refining mesh with automatic load balancing
- Before this publication was made, there was the following discussion thread: Immersed Boundary Cylinder Tutorial using IcoIbFoam application - start reading from post #4
- The CFDEM project has a solver: cfdemSolverIB in CFDEMcoupling at GitHub
- Installation instructions are available here: CFDEMcoupling Manual - Section 'Installation'
- See also a community contributed solver for 2D flow: Contrib/IBSBM:_Immersed-Boundary_Suspension_Solver
2 Installation
As of foam-extend 3.2, this toolkit is integrated into foam-extend and has been considerably improved. At the time of this writing (11:15, 5 September 2015 (CEST)) foam-extend 3.2 wasn't officially released yet, but instructions on how to get the pre-release version can be found here: FOAM on Windows, Linux and Mac
As for previous versions of foam-extend, it depends on the origin from which you wish to download:
- From the original source code, follow the steps from this section: Install from the original source code on 1.6-ext
- From a git repository:
2.1 Install from the original source code on 1.6-ext
To download and install, run these commands:
mkdir -p $FOAM_RUN cd $FOAM_RUN/.. wget "http://sourceforge.net/projects/openfoam-extend/files/OpenFOAM_Workshops/OFW7_2012_Darmstadt/Training/ZeljkoTukovic/ZeljkoTukovic-ImmersedBoundaryMaterial.tgz" tar -xzf ZeljkoTukovic-ImmersedBoundaryMaterial.tgz cd ImmersedBoundary tar -xzf ImmersedBoundary_HJ_ZT.tgz cd ImmersedBoundary_HJ_ZT/src ./Allwclean ./Allwmake
2.2 Install from a Git repository on 1.6-ext
To download and install, run these commands:
mkdir -p $FOAM_RUN cd $FOAM_RUN/.. git clone git@github.com:wyldckat/ImmersedBoundary.git ImmersedBoundary cd ImmersedBoundary/src ./Allwmake
Note: If you have problems using git to clone from the official repository, then try these mirrors:
- wyldckat's ImmersedBoundary repository at Github - you can use any of the following commands:
git clone git@github.com:wyldckat/ImmersedBoundary.git ImmersedBoundary git clone https://github.com/wyldckat/ImmersedBoundary.git ImmersedBoundary
2.3 Install from a Git repository on foam-extend 3.1
To download and install, run these commands:
mkdir -p $FOAM_RUN cd $FOAM_RUN/.. git clone git@github.com:wyldckat/ImmersedBoundary.git ImmersedBoundary cd ImmersedBoundary git checkout fe31 cd src ./Allwmake
Note: If you have problems using git to clone from the official repository, then try these mirrors:
- wyldckat's ImmersedBoundary repository at Github - you can use any of the following commands:
git clone git@github.com:wyldckat/ImmersedBoundary.git ImmersedBoundary git clone https://github.com/wyldckat/ImmersedBoundary.git ImmersedBoundary
3 Usage examples
There are 2 tutorial folders present in this toolkit:
- tutorials which provides a set of tutorials by Zeljko Tukovic, with the following folders:
cavity damBreakWithCylinder flowOverCylinder flowOverSphere pitzDailyLaminar pitzDailyLaminarSimpleIbFoam
- tutorials_HJ provides a set of tutorials by Hrvoje Jasak, with the following folders:
cylBumpinterIbFoam cylinderInChannelFineicoIbFoam cylinderInChannelicoIbFoam cylinderInChannelPotential cylinderInChannelScalarTransport cylinderInSquareLaplace cylinderInSquarePotential pitzDailyBodyFitted pitzDailyLaminaricoIbFoam pitzDailyLaminarsimpleIbFoam pitzDailyTurbulentsimpleIbFoam simpleSilencerLaminaricoIbFoam sphereInChannel thickPlateRefinedMesh
To use them, simply go into the respective folder, e.g.:
cd tutorials/cavity/cavity
And run the script Allrun:
./Allrun
4 Documentation
Some documentation is available in this presentation.
Quoting from post #11 on the thread Is Immersed Boundary Method already available in OF 2.1.x or 2.2.x:
- Note that the IB method in OF-1.6-ext uses IBMask (0 - inside IB boundary, 1 - fluid domain) to calculate various fields (e.g. p. U), hence physical behaviour inside the immersed body is not solved.
4.1 Creating new solvers that use this toolkit
Transcript from the instructions present in the file src/SOLVER_COOKBOOK, documenting the procedure for creating new solvers that use this toolkit:
Make/options: add -I$(LIB_SRC)/triSurface/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I../immersedBoundary/lnInclude -ltriSurface \ -lmeshTools \ -L$(FOAM_USER_LIBBIN) -limmersedBoundary \ createFields.H: add # include "createIbMasks.H" solver: 1) add immersed boundary headers #include "immersedBoundaryFvPatch.H" #include "immersedBoundaryAdjustPhi.H" 2) on calculation of face fluxes (or their components), mask with faceIbMask 3) before to adjustPhi, add: // Adjust immersed boundary fluxes immersedBoundaryAdjustPhi(phi, U); 4) on explicit updates, add correctBoundaryConditions(); eg. U = fvc::reconstruct(phi); U.correctBoundaryConditions(); 5) On reports of continuity error, add masking: Info<< "IB-masked continuity error = " << mag(cellIbMask*fvc::div(phi))().weightedAverage(mesh.V()).value() << endl; or use immersedBoundaryContinuityErrs.H 5) Chenge Courant number check to be IB-sensitive, using immersedBoundaryCourantNo.H
5 Discussion threads
Here is a list of known discussion threads regarding this toolkit:
- Is Immersed Boundary Method already available in OF 2.1.x or 2.2.x
- Immersed Boundary Cylinder Tutorial using IcoIbFoam application
- Immersed Boundary Method in OpenFOAM-3.1-ext
- For other threads on the topic of [ImmersedBoundary], see Threads in Forum 'OpenFOAM Community Contributions' with the prefix [ImmersedBoundary]
6 History
21:23, 7 April 2015 (CEST): Repaired links here on this wiki page.
19:16, 5 April 2014 (CEST): Kicked off this page, since it was nowhere to be found on the wiki.