趣味で計算流砂水理 Computational Sediment Hydraulics for Fun Learning

数値計算とか河川工学とかプログラミングのことを書いています

MENU

似非VOF:like interfoam

スポンサーリンク

 

 

 

以前Openfoamのinterfoamの話がでたので、気になって自分でコーディングしてみました。 延べ2週間以上かかりました。苦労しました。

いろんなことがわかったので書いておきます。

参考資料

このあたりです。

https://www.jstage.jst.go.jp/article/jscejoe/69/2/69_I_748/_pdf

https://www.researchgate.net/publication/235679014_Influence_of_surface_tension_implementation_in_Volume_of_Fluid_and_coupled_Volume_of_Fluid_with_Level_Set_methods_for_bubble_growth_and_detachment

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という名前になってましたが、独自の名前っぽいです。以下を参照しました。

http://zzchina2010.blog.shinobi.jp/%E3%82%BD%E3%83%AB%E3%83%90%E3%83%BC%EF%BC%9Aopenfoam/openfoam%E3%82%BD%E3%83%AB%E3%83%90%E3%83%BC%E9%96%8B%E7%99%BA%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AA%E7%9F%A5%E8%AD%98

  • 上記の川崎先生の論文の条件と合わせてましたが、計算時間短縮のため、メッシュサイズは5倍です。
  • なんとなく雰囲気はでてますよね。

f:id:SedimentHydraulics:20170715124150g:plain

結論

  • 界面の表現に注力しすぎてて、流れの内部構造に関する議論がない。ほんとに大丈夫?
  • 精度を上げるためには、四分木(八分木)は必須じゃないかと。
  • 密度や動粘性係数の評価方法に物理的根拠はない。
  • こんなの物理じゃない。なので、VOFはもう辞めます。

コードはDBにfakeInterfoamで。fortranですが、こんなコードをC++で書きたいと思ってます。


2019/5/29追記

ソースコードをみたいとのコメントがありましたのでgithubに上げました. 非常に稚拙なコードで恥ずかしいです...

github.com