いわて駐在研究日誌

OpenCAE、電子工作、R/C等、徒然なるままに

Immersed boundary method on foam-extend 3.2

(注意) 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;
    }

 

f:id:waku2005:20160627133934p:plain

f:id:waku2005:20160627133939p:plain

f:id:waku2005:20160627133943p:plain

スト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;
            }
        }
    );
}

 

f:id:waku2005:20160627140854p:plain

f:id:waku2005:20160627140901p:plain