VOF法 — CAE用語解説
VOF法
先生、タンクのスロッシング解析でVOF法を使うって指示されたんですけど、VOFって何の略ですか?
理論と物理
VOF法の基本概念
VOF法って、名前はよく聞くんですけど、具体的に何を計算している手法なんですか?
Volume of Fluid法は、複数の非混和性流体(例えば水と空気)の界面の位置と形状を追跡する手法だ。各セルに「体積率」というスカラー量を定義する。水がセル体積の60%を占めていれば体積率は0.6、空気が40%なら0.4だ。この値が0から1の間で連続的に変化することで、界面をぼかした形で表現する。
「ぼかした形」というのは、界面がはっきりしないということですか? それだと精度が悪くならないでしょうか。
良い指摘だ。確かに界面は数セルにわたってぼやけるが、その代わりに計算が非常に安定する。界面をシャープに保つために、移流計算後に「界面再構築」という処理を行う。例えば、PLIC (Piecewise Linear Interface Calculation)法では、体積率の分布から界面の法線方向と位置を推定し、各セル内で直線の界面を再構築する。これにより、界面の厚さは実質的に1セル程度までシャープに保たれる。
支配方程式は、通常のNavier-Stokes方程式に加えて、体積率の輸送方程式を解くということですか?
その通り。連続の式と運動量方程式は全流体で共通だが、密度と粘度は体積率に応じてセルごとに混合則で決定する。体積率αの輸送方程式は、非圧縮性を仮定すると次のようになる。
数値解法と実装
界面の移流と再構築
体積率の輸送方程式を単純な風上差分で解くと、界面がどんどんぼやけてしまう気がします。どうやって界面の鮮明さを保っているんですか?
君の懸念は正しい。一次の風上法では数値拡散が大きく界面は崩壊する。そこで、幾何学的VOF法が開発された。例えば、OpenFOAMの`interFoam`ソルバーで使われるMULES (Multidimensional Universal Limiter with Explicit Solution)は、移流フラックスを制限することで体積率の有界性(0≤α≤1)を保証しつつ、高解像度を実現する代数的手法だ。一方、Ansys FluentのGeo-Reconstructスキームは、セル界面を通過する流体の体積を幾何学的に計算する方法で、より精度が高い。
「幾何学的に計算する」というのは具体的にどういう処理ですか?
まず、現在の体積率分布から、各セル内の界面の向き(法線ベクトル)と位置をPLIC法で求める。次に、流速と時間ステップから、隣接セルに流出する「流体の形」を多面体として幾何学的に計算する。この多面体の体積が、移流される体積率そのものだ。計算コストは高いが、界面の形状を非常に正確に保つことができる。Fluentのマニュアルによれば、この方法は液滴の合体や分裂のような劇的な界面変化にも比較的頑健だとされている。
表面張力はどう扱うんですか? ぼやけた界面で曲率を計算するのは難しそうですが。
これがVOF法の大きな課題の一つだ。表面張力は界面の曲率κに比例するが、ぼやけたαフィールドからκを直接計算するとノイズが大きくなる。そこでCSF (Continuum Surface Force)モデルが使われる。このモデルでは、表面張力を界面付近の体積力としてスムーズに分布させる。曲率κは、一度αフィールドをスムージングした後、その勾配から計算される単位法線ベクトル
実践ガイド
解析設定のワークフロー
実際に水と空気のスロッシングをVOF法で解析しようとすると、最初に気をつけるべき設定は何ですか?
まずは「多相モデル」の選択でVOFを選ぶ。次に、各相の物性値を正確に入力する。水の密度は998.2 kg/m³、動粘度は1.003e-6 m²/s (20°C)。空気は1.225 kg/m³、1.4607e-5 m²/sだ。界面のスケールを捉えるために、界面が通過する領域は少なくとも5~10層の細かいメッシュが必要で、セルサイズは界面の曲率半径の1/10以下が目安だ。例えば直径5mmの気泡を解析するなら、界面付近のメッシュサイズは0.5mm以下にする。
時間刻みはどう決めればいいですか? 自動で決まるのでしょうか。
CFL (Courant–Friedrichs–Lewy)条件に基づいて決める。特に界面の移流の安定性のために、界面近傍のCFL数は0.25以下に抑えることが推奨される。Ansys Fluentでは「Adaptive Time Stepping」で最大CFL数を0.25に設定すれば、ソルバーが自動で時間刻みを調整する。また、表面張力が支配的な現象では、毛管波の時間スケールに基づく「表面張力時間刻み制限」も有効になることがある。
初期条件で、水面を平らに設定したいのですが、単にα=0.5の等値面では階段状になってしまいます。どうすればいいですか?
その通り、メッシュに沿った階段状の初期界面は望ましくない。多くのソフトウェアには「パッチ」機能がある。Fluentなら「Adapt Region」で水面の高さを指定する領域を選択し、その中で水の体積率を1に設定する。より正確に行うには、初期化後に「interface smoothing」を数回実行する方法もある。あるいは、CADデータからインポートした水面形状を「壁」として定義し、その片側を水で満たすという方法も取れる。
ソフトウェア比較
各ソルバーの特徴と選択基準
Ansys Fluent、OpenFOAM、COMSOLでVOF法を実装していると思いますが、具体的にどう違うんですか?
核心的な違いは、界面追跡のアルゴリズムとユーザーインターフェースだ。
2. **OpenFOAM (`interFoam`)**: オープンソース。MULES法を用いた代数式VOFが基本。ユーザーがソースコードを直接改変できるため、研究開発向き。ただし、設定はすべてテキストファイルで、習得曲線が険しい。
3. **COMSOL Multiphysics**: 「二相流、移動メッシュ」インターフェースなどでVOFを提供。最大の強みは電磁場や構造変形など他の物理場と直接連成させやすいことだ。界面追跡自体の機能はFluentに比べて特化していない印象だ。
FreeCADやAutodesk CFDのような他のツールではどうでしょうか?
**Autodesk CFD** もVOF法を搭載している。使いやすさとCAD連携に重点を置いており、比較的簡単に自由表面流れの解析を始められる。ただし、学術論文でベンチマークされるような極限的な精度や複雑な現象(激しい界面破裂など)には、FluentやOpenFOAMの方がアルゴリズムの選択肢が豊富だ。
**FreeCAD** のCfdOFワークベンチは、実質的にOpenFOAMのフロントエンドなので、`interFoam`の機能をGUIから利用できる。無料で本格的なVOF解析が可能という点が最大の利点だ。
計算速度はソフトウェアによって大きく違いますか?
アルゴリズムと並列化効率に依存する。幾何学的再構築法(Fluent)は精度が高いが、代数式VOF(OpenFOAMのMULES)に比べて1タイムステップあたりの計算コストは高い。ただし、安定した時間刻みで計算できるため、総合的な計算時間はケースによる。また、FluentやCOMSOLは高度に最適化された商用ソルバーなので、コア数増加に対する並列化効率は非常に良い。OpenFOAMも並列計算は可能だが、大規模計算クラスターでの設定は専門知識が必要だ。
トラブルシューティング
よくある収束問題と界面の不安定性
計算中に、水面がメッシュの壁に沿って這い上がるように見える「寄生流」が発生しました。これはなぜですか?
それは「spurious currents」または「寄生流」と呼ばれるVOF法の古典的な問題だ。主な原因は、表面張力のバランスが離散化誤差によって崩れること。界面の曲率計算に誤差があると、それに比例した偽の圧力勾配が生じ、実際には動かないはずの界面付近で微小な流れが発生する。この流速は通常、毛管速度
この寄生流を低減する方法はありますか?
いくつかの対策がある。
1. **メッシュを細かくする**: 界面の曲率を正確に表現できるようにする。特に界面付近を均一な直交メッシュにすると効果的だ。
2. **曲率平滑化を強化する**: Fluentでは「Curvature Refinement」の反復回数を増やす(デフォルトは2、5くらいまで増やしてみる)。
3. **界面張力モデルの変更**: CSFモデルより、より高度なSSF (Smooth Surface Force)モデルや、Brackbillのモデルにおける「壁面アドヒージョン」の設定を見直す。
4. **圧力-速度連成を強化する**: PISOスキームなど、非定常計算に強い連成解法を使う。また、圧力補正式の緩和係数を小さく(0.1程度)設定する。
計算が進むにつれて、水の体積が明らかに減少(または増加)してしまいます。質量保存がうまくいっていないようです。
体積(質量)保存不良は深刻な問題だ。原因と対策は以下の通り。
**原因1: 時間刻みが大きすぎる** → CFL数を0.25以下に厳守する。
**原因2: 圧力-速度の収束基準が甘い** → 連続の式の残差を1e-4から1e-5程度に厳しくする。Fluentでは「残差モニタ」で連続の式の収束を確認せよ。
**原因3: 界面移流スキームの問題** → 可能であれば、より保存性の高い幾何学的再構築スキームに切り替える。OpenFOAMでは、`interFoam`のMULESは比較的保存性が良いが、`multiphaseEulerFoam`のようなソルバーも検討する。
定期的に領域内の水の体積をモニタリングし、初期値からの変動が数%以内に収まっているか確認する習慣をつけよう。
界面がちぎれて、意図しない微小な液滴(スプリアス液滴)が発生します。メッシュを細かくしても改善しません。
それは「numerical fragmentation」と呼ばれる現象だ。物理的には合体すべき微小な界面が、数値拡散と移流誤差によって人工的に分裂してしまう。対策としては、
1. **界面の厚さを人工的に調整する**: いくつかのソルバーでは、界面のスムージング係数を大きくして、事実上の界面厚さを増やすオプションがある。ただし、界面形状自体が鈍るトレードオフがある。
2. **界面鋭化アルゴリズムの使用**: Fluent 2023R1以降の「Sharp Interface Modeling」オプションのような、意図的に界面を鋭く保つアルゴリズムを試す。
3. **アルゴリズムの根本的変更**: 激しい界面の分裂・合体が主な現象なら、VOF法ではなく、粒子ベースのSPH法や、界面追跡型のLevel Set法の採用を検討する段階かもしれない。
関連トピック
なった
詳しく
報告