以前Openfoamのinterfoamの話がでたので、気になって自分でコーディングしてみました。 延べ2週間以上かかりました。苦労しました。
いろんなことがわかったので書いておきます。
参考資料
このあたりです。
https://www.jstage.jst.go.jp/article/jscejoe/69/2/69_I_748/_pdf
https://www.slideshare.net/takuyayamamoto1800/openfoaminterfoam
特徴
- interfoamはVOFですが、SOLA-VOFのようにドナーアクセプタとか考えるのが煩わしいので、そこを簡易的に扱ってます。言葉で説明できないですが、支配方程式をみれば多分わかります。
- あくまでも、二相流のソルバーです。密度の異なる2相を同一の方程式で解いてます。
- 今回は省きましたが、運動方程式の表面張力項や占有率の保存則の付加項により、界面がきれいに表現できるらしい。
モデルと結果
- とりあえず鉛直二次元です。
- 空間解像度は、0.1m、dtを0.0001secです。fortran2008で書いており、gfortranでコンパイルしてます。
- ノートパソコンですが、10secの計算に30分程度かかります。
- dtを大きくしても回りますが、結果がおかしくなります。
- スキームはHSMACを使ってます。openfoamは、PISOなので、計算時間に関係しているのかもしれないです。
- PISOって、SIMPLEを非定常場に適用できるように拡張したものらしいですが、線形化を行ってる点は同じですね。openfoamの公式をみると、PISO+SIMPLEでPIMPLEという名前になってましたが、独自の名前っぽいです。以下を参照しました。
- 上記の川崎先生の論文の条件と合わせてましたが、計算時間短縮のため、メッシュサイズは5倍です。
- なんとなく雰囲気はでてますよね。
結論
- 界面の表現に注力しすぎてて、流れの内部構造に関する議論がない。ほんとに大丈夫?
- 精度を上げるためには、四分木(八分木)は必須じゃないかと。
- 密度や動粘性係数の評価方法に物理的根拠はない。
- こんなの物理じゃない。なので、VOFはもう辞めます。
コードはDBにfakeInterfoamで。fortranですが、こんなコードをC++で書きたいと思ってます。
2019/5/29追記