
weirOverflowをコピー
cp -r $FOAM_TUTORIALS/multiphase/interFoam/RAS/weirOverflow
チュートリアルをコピーします。interFoamのRASフォルダの中になります。
実行
Allrunで実行するとこのような感じになります。左側赤色のinletから流入し、堰を超えて右側青色のoutletへ流れていきます。
アニメーションはこちら。
自由表面流れについては、こちらの書籍の「第五章 二層流」に詳細な記載があります。damBreakの基礎が学べると思います。
#include "include/initialConditions"
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
inlet
{
type variableHeightFlowRateInletVelocity;
flowRate $inletFlowRate;
alpha alpha.water;
value uniform (0 0 0);
}
outlet
{
type zeroGradient;
}
lowerWall
{
type noSlip;
}
atmosphere
{
type pressureInletOutletVelocity;
value uniform (0 0 0);
}
defaultFaces
{
type empty;
}
}
Uファイルはこのようになっていて、variableHeightFlowRateInletVelocityで流入量を設定しています。実際の数値はinitialConditionsにあり75となっていました。
inletFlowRate 75;
pressure 0;
turbulentKE 4.14e-03;
turbulentEpsilon 4.39e-05;
試しに、流入量をvolumetricFlowRateで75m^3/sにして実行してみると見た目では大きな差はなさそうです。もっと水面が変化する条件だとvariableHeightFlowRateInletVelocityの効果を感じれるのかもしれませんね。このあたりは今後要検証ということにしておきましょう。
自作STLで実行
チュートリアルweirOverflowは、blockMeshで形状を作成していますが、それを自作STL&snappyHexMesh使用に変更してみました。
サイズは元々の90m×54mに合わせています。z方向は10mとしました。
処理の流れ
copy 0 folda
blockMesh
surfaceFeatureExtract
snappyHexMesh
2フォルダのpolyMeshをconstantフォルダへコピー
1フォルダと2フォルダを削除
setFields
interFoam
注意点:alpha.water
setFieldsで0フォルダのalpha.waterにリストが書き込まれるので、メッシュを再実行する際などは新しい初期条件ファイルで上書きしましょう。alpha.waterに前のリストが残っているとエラーになります。
注意点:フォルダ削除
snappyHexMeshを実行した際に、2つのフォルダが作成されるので数値の大きい方(1フォルダと2フォルダが作成されると2フォルダの中)にあるpolyMeshフォルダをconstantフォルダにコピーします。コピー後、1フォルダと2フォルダを削除する必要があります。