Extend-bazaar/Toolkits/ImmersedBoundary
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
2 Installation
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: Install from a Git repository on 1.6-ext
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://www.openfoamworkshop.org/2012/downloads/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
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
6 History
19:16, 5 April 2014 (CEST): Kicked off this page, since it was nowhere to be found on the wiki.