Extend-bazaar/Toolkits/ImmersedBoundary

From OpenFOAMWiki

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:

2 Installation

Valid versions: OF Version 16ext.png OF Version 31ext.png OF Version 32ext.png OF Version 40ext.png

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:

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:

  1. 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:

  1. 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:

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.