この計算は、OpenFOAMを用いた二相流(空気と水)のVOF(Volume of Fluid)解析であり、界面の動きを追跡する高度なシミュレーションを目的としています。
以下、設定ファイルから読み取れる構成とその物理的意味、さらに界面波打ち現象への対策について解説します。2相流体の計算をしようとしている人は参考にしてもらえればと思います。
モデル
水をためたプール(2m×2m×深さ1m)の上からパイプ内を通して水を落下させることを想定して以下のモデルを作成しています。

このモデルの周りをblockMeshでメッシュ化しています。

1. 使用されている物理モデルの概要
- 二相流モデル:
phaseProperties
により、水と空気のフェーズが定義しています。 - 界面張力(
sigma
):transportProperties
にてsigma 0.072;
が指定し、水と空気の物理的な表面張力と一致させています。 - 乱流モデル:
momentumTransport
でlaminar
(層流モデル)を指定しています。層流にしないと、不安定性になりやすいです。)
2. 数値スキームと解法(fvSchemes
, fvSolution
)
fvSchemes
の特徴
divSchemes
{
div(phi,U) Gauss linearUpwind grad(U);
div(rhoPhi,U) Gauss linearUpwind grad(U);
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss interfaceCompression;
div((nuEff*dev2(T(grad(U))))) Gauss linear;
}
vanLeer
はTVD型スキームで、界面を比較的シャープに保ちつつ安定性を確保。
interfaceCompression
により、VOF界面のぼやけ防止を行う。
gradSchemes
{
default Gauss linear;
}
fvSolution
の特徴
solvers
{
"alpha.water"
{
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-8;
relTol 0;
nAlphaCorr 1;
nAlphaSubCycles 2;
cAlpha 1;
MULESCorr yes;
nLimiterIter 5;
}
alpha.waterFinal
{
$alpha.water;
}
}
PIMPLE
{
momentumPredictor yes;
nOuterCorrectors 2;
nCorrectors 3;
nNonOrthogonalCorrectors 1;
nAlphaCorr 1;
nAlphaSubCycles 2;
cAlpha 1;
}
PIMPLE
ループにより、圧力-速度連成が実行しています。smoothSolver
による反復解法が使用され、alpha.water
に対してはMULES
(界面の数値的振る舞いの補正)が有効。
3.主な原因と対策一覧
界面が波打つ原因として考えられる点や気が付いた点をまとめます。
原因 | 対策 |
界面張力(sigma)の値が高い | sigmaは水と空気の場合は0.072としておく |
nCorrectors が少ない | PIMPLEループのnCorrectors を 2〜3 に増やすことで連成精度UP(計算時間は増えるが、、、) |
メッシュの粗さ | 界面周囲の細分化が必要 |
cAlpha 設定の確認 | transportProperties に cAlpha の追加(例:1.5)で界面圧縮強化 |
時間ステップが大きい | maxCo を 0.3 程度に下げるとより安定性が増す |