OpenFOAM

【OpenFOAM】任意の断面での流量計算(cellZone)

こんにちは(@t_kun_kamakiri

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

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

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

本記事の内容

OpenFOAMで任意の断面での流量を計算する。

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

カマキリ

もっといい方法があったらコメントで教えてください_(._.)_

流量を出力する方針

流量を計算する方法はパッと考えると以下の方法があるでしょう。

  1. 流量計測したい断面にあらかじめ面かセル領域を用意しておく
  2. cellZoneSetを使ってfunction objectを使う
  3. codedFunctionObjectという機能で直接コードを埋め込む

①の方法はあらかじめ計算する前に用意する必要があると考えて今回は試しませんでした。
今回は解析計算が終わった後でも出力できる方法として②と③を試したのでご紹介します。

②が本記事の内容

とはいえ、任意の断面での流量を直接出力するのはわからなかったので任意の領域を通過する平均流速を求めて面積を掛けて流量$Q=vA$とする方針にしました
※任意の面を通過する流量とすると、入ってきて出ていく量の合計を計算するのことになって結局0になってしまいました。なので、いったん平均流速を求めて面積を掛けて流量を求めればいいやと思った次第です。

②cellZoneSetを使ってfunction objectを使う

まずは指定した領域を作るためにcellZoneをtopoSetで作ります。
以下のピンクの領域ですね。

topoSetの設定ファイルはデフォルトでは無いため適当なチュートリアルからコピーしてきます。

例えば以下のようなコマンドでtopoSetが使われているチュートリアルを探して適当にコピーします。

以下のように候補が出てきます。

適当にコピーします。

topoSetの作り方はこちらの公式サイトを参考にします。

system/topoSetDict

領域の作り方は1つではありません。
今回は以下の2つを使った方法を示していますが、どちらを使っても良いです。

  • boxToCell; //範囲の指定方法 boxToCellは六面体により指定
  • cylinderToCell; //始点終点と半径から円柱領域を指定

では、topoSetを実行します。

constant/polyMesh/setに以下のようにファイルができます。

例えば「c1」を見ると、

1216個のセルがあるということでしょうか。
この数字は次のcodedFunctionObjectでも出てきますのでちょっと記憶の片隅に残しておきましょう。

topoSetで作ったcellZoneはParaViewで確認することができます。

次にcontrolDictのfunction objectに以下を追加します。

cellZoneによる領域の物理量は平均流速以外にも以下の量を出力することができます。

実行すればcellZoneでの平均流速と平均圧力が出力されます。

計算が終わった後にcontrolDictのfunction objectだけを実行したい場合は、

とします。

例えばc1に対しては、

postProcessing/volFieldValue1/0/volFieldValue.dat

流速が「-6.84017444e-06 -5.02236067e-06 1.00543984e-01」なので断面積を掛けると流量$Q=0.000126284$になりますね。

理論値との誤差は0.54%です。

その他にもc2~c5も同様に平均流速がpostProcessingに出力されています。

まとめ

今回は流量を出力する方法をまとめました。

  • 任意の断面の流量計算(topoSet)

lob.simpleFoamのログファイルに、以下同じc1領域を計算したものを出力しています。

  • topoSetDictで作った領域からvolFieldValueで計算したのが上
  • codedFunctionObjectで計算したのが下

平均流速、平均圧力ともに同じ値になっていますね。
また、topoSetで作ったセルの数が1216でしたが、コードで計算したものも同じ1216です。

さらにコードの中で平均流速に面積を掛けて流量を計算して$Q=vA=0.000126284$と出しています。

topoSetとcodedFuctionの結果は同じになりましたので、慣れればcodedFuctionが汎用性が効きますね。

参考書

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

数値流体力学 [第2版]

数値流体力学 [第2版]

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

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

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

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

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

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

3,520円(04/23 10:08時点)
Amazonの情報を掲載しています

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

OpenFOAMプログラミング

OpenFOAMプログラミング

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

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

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

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

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

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

関連記事もどうぞ

COMMENT

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