OpenFOAMチュートリアルで学ぶ!回転体解析:Propeller編

まくまく
まくまく
OpenFoamを使って流体解析をしよう!今回はpropellerチュートリアルを実行してみようと思います。



チュートリアル:propeller

最近回転体の解析に挑戦していたので、そのあたりのまとめとしてチュートリアルのpropellerを再度実行して理解を深めていきたいと思います。propellerは以下のフォルダから。/incompressible/pimpleFoam/RAS/propeller


フォルダ構成はこのようになってます。先日の記事に書いたようにsystemフォルダにはstlファイルがありません。中身を確認するときは手動で解凍しましょう。「OpenFOAM propellerのobj.gzファイルを解凍する

実行

まずは「./Allrun」実行してみます。そうするとAllrun.preとAllrunのなかに記載されているコマンドが実行されます。

Allrun

#!/bin/sh
cd "${0%/*}" || exit                                # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions        # Tutorial run functions
#------------------------------------------------------------------------------

if notTest "$@"
then

    ./Allrun.pre

    restore0Dir

    runApplication decomposePar

    runParallel $(getApplication)

    runApplication reconstructPar

fi

#------------------------------------------------------------------------------

Allrun.pre

#!/bin/sh
cd "${0%/*}" || exit                                # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions        # Tutorial run functions
#------------------------------------------------------------------------------

# copy propeller surface from resources directory
cp -rf \
    "$FOAM_TUTORIALS"/resources/geometry/propeller \
    constant/triSurface

runApplication blockMesh

runApplication surfaceFeatureExtract

runApplication snappyHexMesh -overwrite

runApplication renumberMesh -overwrite

# force removal of fields generated by snappy
rm -rf 0

# generate face/cell sets and zones
runApplication topoSet -dict system/createInletOutletSets.topoSetDict

# create the inlet/outlet and AMI patches
runApplication createPatch -overwrite

#------------------------------------------------------------------------------

メッシュ作成には数分、解析には数時間要します。とりあえず実行後の様子を確認するだけなら途中で止めてもOKです。decomposeParDictには以下のように4分割で処理するように記載されています。processor0から3までのフォルダが作成され、その中に計算後のファイルが書き出されるので、適当なところで止めてみようと思います。

numberOfSubdomains 4;

method          hierarchical;

coeffs
{
    n           (1 4 1);
}

ちなみにcontrolDictは以下のようになっています。0.001秒ごとに0.1秒まで解析が実行されます。

application     pimpleFoam;

startFrom       startTime;

startTime       0;

stopAt          endTime;

endTime         0.1;

deltaT          1e-5;

writeControl    adjustable;

writeInterval   0.001;

回転条件はconstantフォルダのdynamicMeshDictに記載します。以下の場合、原点は(0,0,0)、Y軸を回転軸として、回転速度は158rad/secです。

origin      (0 0 0);
axis        (0 1 0);
omega       158; // rad/s

今回は0.03秒までの解析にしました。なので、reconstructParで分割されたデータを結合します。

reconstructPar

paraviewで可視化


まずはメッシュの確認をします。左側から軸(propellerStem)がでており、その先にプロペラ本体(propellerTip)がつながっています。プロペラの最大径は100mm強くらいです。

プロペラを囲むように直径200mmの回転領域(innerCylinderSmall)があり、さらにその外側には直径300mmの細分化領域(innerCylinder)があります。

外側の壁(outerCylinder)は、サイズΦ600mm×1000mmとなってます。左側がinlet、右側がoutletです。


開始0.03秒後の速度場。


アニメーションはこんな感じです。

今回は、チュートリアルの実行までです。次回は設定ファイルを色々と変更してみようと思います。

タイトルとURLをコピーしました