(注意) foam-extend 3..2はgcc 4.9.2以上が必要なようです。
OpenFOAMのforkしたバージョンであるfoam-extend 3.2が昨年9月にリリースされ、前から気になっていたImmersed boundary methodが正式にリリースされていたので、知らべてみた。現在は、nextReleaseとして4.0の作業を進めているらしいです。
ライブラリ:src/immersedBoundary
ソルバー:applications/solvers/immersedBoundary/ (六つ)
icoIbFoam porousSimpleIbFoam simpleIbFoam
icoDyMIbFoam interIbFoam potentialIbFoam
チュートリアル:tutorials/immersedBoundary/*
テスト1(Tutorial・・・cylinderInChannelIcoIbFoam)
2次元チャネル内に、2次元stlファイルでIB(Immersed boundary)が静止している計算。ここで設定として
- IBはstlないしftrで指定(ベースメッシュで考慮は不要)する。ファイル名がboundary名になる。stlファイルはsurfaceConvertコマンドでftr形式にも変換して、同じフォルダにおいておく。
- IBのconstant/boundaryには、以下のように記述する。nFacesは0で、それ以外のfaceIDに合わせて適宜startFaceを指定する。
ibCylinder
{
type immersedBoundary;
nFaces 0;
startFace 3650;
internalFlow no;
}
- 0/U,pファイルは、以下のように記述する。
0/U
ibCylinder
{
type immersedBoundary;
refValue uniform (0 0 0);
refGradient uniform (0 0 0);
fixesValue yes;
setDeadCellValue yes;
deadCellValue (0 0 0);
}0/p
ibCylinder
{
type immersedBoundary;
refValue uniform 0;
refGradient uniform 0;
fixesValue no;
setDeadCellValue yes;
deadCellValue 0;
value uniform 0;
}
テスト2(Tutorial・・・cylinderInChannelIcoIbFoam)
2次元チャネル内に、2次元stlファイルでIB(Immersed boundary)が変動している計算。ソルバーはicoDyMIbFoamになる。
下記のとおり、dynamicMeshDictの中で、往復するsolidBodyMotionを定義している。
- constant/dynamicMeshDict
dynamicFvMesh immersedBoundarySolidBodyMotionFvMesh;
immersedBoundarySolidBodyMotionFvMeshCoeffs
{
motionFunctions
(
ibCylinder
{
// solidBodyMotionFunction translation;
// translationCoeffs
// {
// velocity (0.1 0 0);
// }
solidBodyMotionFunction linearOscillation;
linearOscillationCoeffs
{
amplitude (0.5 0 0);
period 2.5;
}
}
);
}