OpenFOAM

【OpenFOAM】境界面での流量計算(volFieldValue)

こんにちは(@t_kun_kamakiri

今回はOpenFOAMで以下のような配管内の水の流れを解析し、境界と任意の断面での流量を計算します。

本記事の内容

OpenFOAMで境界面での流量を計算する。

境界の「inlet」「outlet1」「outlet2」での流量はOpenFOAMのfunction objectの機能を使うことで簡単に出力することができます。

c1~c5の断面での流量を出力するにはどうしたらいいのかなと思って自分なりに試してみた内容は以下の記事に書いています。

【使用環境】
OpenFOAM-v2012(WSL2)

モデルを作成

まずはモデルを作成する必要があるので簡単に手順を解説します。

  • モデル作成と面に名前を付ける:FreeCAD→modelフォルダ
  • メッシュ作成:cfMesh→meshフォルダ
  • 計算実行:simpleFoam→runフォルダ

それぞれを保存するフォルダを作ります。

モデル作成と面に名前を付ける:FreeCAD

モデルを保存するmodelフォルダに移動します。

今回FreeCADで作成したモデルは以下です。
形状に特に意味はありません。太い円柱と細い円柱があった方が面白いかなと思っただけです。

FreeCADでモデル作成して、面に名前を付けてstlファイルとしてまとめて出力します。

FreeCADでstlファイル自動出力のマクロはこちらをご参考ください。

作成したmodel.stlをmodelフォルダに保存します。

FreeCADで出力されたモデルは寸法は数値しか拾っていないのでm単位に変換する必要があります。

次に、メッシュ作成の際にcfMeshで使う特徴線を持ったモデルに変換しておきます。

メッシュ作成時に使うのは.stlファイルではなくこちらの.fmsファイルです。

メッシュ作成:cfMesh→meshフォルダ

円柱のようなメッシュはsnappyHexMeshよりcfMeshの方が簡単・早い・きれいに作れるのでcfMeshを使います。

GPL版のcfMeshはソースコードが公開されています。

ESI版のOpenFOAMであれば、OpenFOAMをインストールすると「$WM_PROJECT_DIR/modules/cfmesh」(「/opt/OpenFOAM/OpenFOAM-v2012/modules/cfmesh/」)にcfMeshがインストールされているので、追加でインストールすることなく使うことができます。

以下に過去に検討した記事を書きましたのでご参考ください。

snappyHexMeshは特に境界層がきれいに入らないという問題があります。

meshフォルダに移動します。

cfMeshのチュートリアルをコピーしてきて編集します。

cfMeshは「テトラメッシュ」「ヘキサメインのメッシュ」「ポリヘドラルメッシュ」とあり、チュートリアルが分かれていますが共通のファイルで良く、コマンドが変わるだけなのでチュートリアルのどれを持ってきても良いです。
自分はデフォルトで色々設定が書いている上記のチュートリアルをコピーして使っています。

model作成で作った「model_m.fms」をコピーします。

フォルダ構成は以下です。

 

system/meshDicr

以下のコマンドでメッシュを作ります。

メッシュができれば 「post.foam」など拡張子が.foamという空ファイルを作ってParaViewで読み込んで確認します。

形状変化に対して最低4点メッシュを入れるという感覚でメッシュサイズを決めればよい感じになります。

計算実行:simpleFoam→runフォルダ

メッシュができたので計算をさせます。

フォルダ移動、チュートリアルのコピーをします。

そして先ほどcfMeshで作成したメッシュ情報を一式コピーします。

そして以下適当に解析条件を設定していきます。

constant/turbulenceProperties
乱流モデルは使いません。

constant/transportProperties
できるだけ層流での計算をさせたいのであえて粘性を少し大きくします。
デフォルトの10倍(レイノルズ数$Re=\frac{UL}{\nu}=\frac{0.1\times 0.04}{10^{-4}}=40$)。

あとは境界条件を設定します。

0/U

0/p

非圧縮の層流だとこれだけですね。

スキームも何でもよかったのでほとんどデフォルトのままです。

system/fvSchemes

system/fvSolution

 

これでだいたい計算条件設定は終了です。
あとは「system/controlDict」に計算制御や出力設定などをします。

まずは境界の流量出力から見ていきます。

境界面の流量出力

system/controlDict

では計算を実行します。

ParaViewで確認します。

流量、残差、質量保存のデータは「postProcessing」に出力されます。
これをPythonなどでグラフ化すると以下のようになります。

いつもは残差が小さくなりながら収束しているかを見ています。
それだけではなく、連続の式(非圧縮であれば$\nabla \cdot \boldsymbol{v}=0$)を満たすのでlocalやglocalが0に近くなっていれば問題ないです。

流量はoutlet1とoutlet2が自然流出の条件にしているので定常解析とは言え揺らぎながら落ちついていきます。

inetl部分は$Q=vA=0.1\times (\pi0.2^2 )=0.01256$[m3/s]です。
(ちょっと理論値とずれてる?)

境界面流量はこのようにfunction objectに面指定で流量出力を設定すると得ることができます。

まとめ

本記事では境界面の流量を出力する方法を解説しました。
境界面の流量はOpenFOAMの既存のfunction objectを使えば簡単に出力することができます。

では、c1~c5のような中途半端なところでの流量を知りたい場合はどうすればいいのか?

 

参考書

有限体積法の勉強にはこの本で間違いないです。
対流項目が中心差分で安定しないことを理論的に評価しておりとても参考になります。

数値流体力学 [第2版]

数値流体力学 [第2版]

H.K.Versteeg, W.Malalasekera
10,450円(06/19 16:58時点)
Amazonの情報を掲載しています

OpenFOAMの基本的な設定を学ぶことができる書籍として以下の参考書がお勧めです。

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

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

川畑 真一
2,376円(06/20 10:44時点)
発売日: 2022/04/15
Amazonの情報を掲載しています
OpenFOAMによる熱移動と流れの数値解析(第2版)

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

3,520円(06/20 14:48時点)
Amazonの情報を掲載しています

本書はESI版ではなくFoundation版でありOpenFOAMv2.xで書かれたやや古い内容です。その点に注意してESI版のお使いのversionとの違いを丁寧に調べることができる方であれば、十分参考になる書籍です。

OpenFOAMプログラミング

OpenFOAMプログラミング

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

OpenFOAM全般の設定などまとめられた書籍として以下のものがあります。
こちらもFoundation版なので、ESI版のお使いのversionとの違いを丁寧に調べることができる方であれば、十分参考になる書籍です。

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

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

株式会社テラバイト, 人見 大輔
16,500円(06/20 01:07時点)
Amazonの情報を掲載しています

こちらのオープンCAE学会から技術書典にOpenFOAMでメッシュ作成【PDF版】が出ています。難しい内容ではありますが、OpenFOAMのメッシュに関する内容が1000円で学べます。

関連記事もどうぞ

COMMENT

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