OpenFOAM

【OpenFOAM(混相流)】円の液相率で初期状態を作る

こんにちは(@t_kun_kamakiri

今回は境界条件の設定ファイルに直接C++のコードを埋め込んで初期化設定を行う方法について解説をします。C++と言ってもOpenFOAMで用意されている関数を上手く使って書くため特別すごいアルゴリズムを組むわけではありません。

前回の記事では境界条件に関数を与えるためにC++のコードを書きました。

今回は境界条件ではなく内部の領域に関数で条件を与える方法を解説します。

以下のように$(x-x_{0})^2+(y-y_{0})^2\leq r^2$を液体領域($\alpha=1$)とするにはどうするのかというのが本記事の主題です。

OpenFOAMv2012(WSL2)

チュートリアルのコピー

今回は気液混相流ソルバのinterFoamのdamBreakのチュートリルをコピーします。

コピーしてきたチュートリアルを編集します。
具体的にはメッシュのスケールを「scale 1;」に変更します。

これでメッシュを作ると以下のようになります。

blockMeshを実行して、ParaViewで確認します。

damBreakのチュートリアルは液体領域($\alpha=1$)はsetFieldsで作るのですが、以下のように自身で好きなように配置させたい場合は難しかったりします。

$(x-x_{0})^2+(y-y_{0})^2\leq r^2$を液体領域($\alpha=1$)とするにはどうするのか?

内部領域をcodeStreamで与える

では、「0/alpha」を以下のように編集します。

一番初めに「fvCFD.H」をインクルードしています。
fvCFD.Hをインクルードすることで以下のクラスを全て継承していることになります。

「fvMesh」のクラスを使うことでメッシュ情報はだいたい取得できます。
以下の表を参考に関数を呼び出し必要な情報を取得します。

ClassDescriptionSymbolAccess function
volScalarFieldCell volumes $V$V()
surfaceVectorFieldFace area vector$\boldsymbol{S_{f}}$Sf()
surfaceScalarFieldFace area magnitude|$\boldsymbol{S_{f}}$ |magSf()
volVectorFieldCell centres$\boldsymbol{C}$C()
surfaceVectorFieldFace centres$\boldsymbol{C_{f}}$Cf()
surfaceScalarFieldFace fluxes$\boldsymbol{\phi_{f}}$Phi()

今回のように、

とすればセル中心の座標を取得することができます。

1つ目の[]がセルのidに対応し、2つ目の[]が座標(x->0,y->1,z->0)に対応します。

では、inerFoamを実行して計算しましょう。
計算をスタートさせると「0/alpha.water」が動的にコンパイルされて内部領域の初期状態を作ってくれます。

ParaViewで確認します。

気体と液体の界面がぼやけることがinterFoam(VOF法)のデメリットですが非常に簡単に気液混相流の解析ができるのが特徴です。

今回は試していませんが、interFoamは界面がぼやけてしまうという問題があり、いくつかの改善点が必要です。

  • 界面圧縮項を大きくする
  • メッシュを細かくする
  • Adaptive mesh refinement(界面のメッシュのみ細かく)
  • interIsoFoamソルバを使う

interIsoFoam
気液混相流に対してisoAdvector位相分率ベースの界面捕捉アプローチを用いたinterFoamから派生したソルバーで、適応的再メッシュを含むメッシュの動きやメッシュトポロジー変更を任意に行うことができます。

interIsoFoamを使うと界面のぼやけるのがinterFoamと比べるとかなり改善されています。

おすすめ参考図書

☟こちらは、OpenFOAMの日本語書籍として重宝しているわかりやすい参考書だと思います。

OpenFOAMによる熱移動と流れの数値解析(第2版)

OpenFOAMによる熱移動と流れの数値解析(第2版)

3,520円(04/20 09:56時点)
Amazonの情報を掲載しています

☟こちらもOpenFOMの古いバージョンでの和訳になります。さすがにこちらはバージョンに対する日本語でのケアはしていないので、OpenFOAMに慣れている方は購入しても良いかと思います。僕は「日本語でまとまっている内容」なので少し重宝しています。

OpenFOAMプログラミング

OpenFOAMプログラミング

Mari´c,Tomislav, H¨opken,Jens, Mooney,Kyle
8,250円(04/19 19:14時点)
Amazonの情報を掲載しています

☟以下に、もっと初心者向けの同人誌を紹介しておきます。
初心者は「ってか、まずどうやってOpenFOAMをインストールするの?」というところからつまずきがちです。
そんな時は、以下の書籍をおすすめします。

改訂新版 OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))

改訂新版 OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))

川畑 真一
2,376円(04/19 17:10時点)
発売日: 2022/04/15
Amazonの情報を掲載しています

インストール方法とチュートリアルで流体解析を体験・・・ちょっと高度な解析まで解説があります。著者曰くOpenFOAMのバージョンの追跡を行いながら、書籍をアップデートするようなので安心ですね。

OpenFOAMコードの辞書的な扱いとしては以下の参考書が大変役に立ちます。
本記事ではESI版のOpenFOAMを使っているため本書のFoundation版で対応していない部分がありますが、その辺を考慮しても持っていて損はないでしょう。

OpenFOAMライブラリリファレンス

OpenFOAMライブラリリファレンス

株式会社テラバイト, 人見 大輔
16,500円(04/20 10:27時点)
Amazonの情報を掲載しています
関連記事もどうぞ

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です