液面付近の不自然な流速の抑制2012年11月15日 | |
はじめにinterFoam において、液面付近で変な速度が出ることがある。この速度を極力抑える方法を検討してみる。 使用バージョンOpenFOAM 2.1.1 問題interFoam のチュートリアルケース damBreak をベースにする。system/setFieldsDict を次のように変更する。
boxToCell
{
//box (0 0 -1) (0.1461 0.292 1);
box (0 0 -1) (1 0.292 1);
fieldValues
(
volScalarFieldValue alpha1 1
);
}
これで setFields を実行すると、つぎのようになる。 ![]() interFoam を実行すると、つぎのようになる。 ![]() ![]() 液面には変化なし。液面上に少し速度がでる。 今度はメッシュを少し変更する。constant/polyMesh/blockMeshDict の vertices の "(4 4 0)" と "(4 4 0.1)" をそれぞれ "(4 3 0)" と "(4 3 0.1)" にする。これで blockMesh を実行するとつぎのようになる。 ![]() setFields 実行結果。 ![]() メッシュ線が液面に沿っていないため、初期がギザギザになる。 interFoam 実行結果。 ![]() ![]() ギザギザの液面が平らになろうとするため、液面が左に移動する。その際の液面付近の速度が速すぎるような気がするので、これを抑えることを考える。 interFoam の修正気相の挙動にたいして興味がないものとして、液相率が小さい領域で速度を 0 にしてみる。 alphaEqnSubCycle.H (先頭)
forAll(alpha1, i)
{
if(alpha1[i] < 0.01)
{
U[i] *= 0.;
}
}
...
計算結果。 ![]() ![]() 多少マシになっている。 もとの damBreak の計算結果。 ![]() ![]() 左: オリジナル、右: 修正版。ちょっとなまった感じになる。 津波解析の場合 (深さ 5 m、波の高さ 3 m)。 ![]() ![]() 左: オリジナル、右: 修正版。オリジナルでは界面がぼけた感じになっているが、修正版ではそれが抑えられている。 確かに計算は安定するが、U = 0 というのは抵抗が強すぎる。もとの U を 0.7 倍するなどの緩和のほうがよいかもしれない。
forAll(alpha1, i)
{
if(alpha1[i] < 0.01)
{
U[i] *= 0.7;
}
}
...
これだと、気相の不自然な速度を抑えつつ、damBreak の結果をそれほど大きくは変えない。 ![]() ![]() ![]() ![]() ![]() ![]() 左: オリジナル、右: 修正版。津波の様子が U = 0 の場合と結構違う。設定した波の高さからすると、こちらのほうがほんものっぽい。 参考文献 | |
| PENGUINITIS | |