OpenFOAM

【OpenFOAM(円筒内の流れ)】cfMeshでメッシュ作成(3)

こんにちは(@t_kun_kamakiri

本記事ではOpenFOAMのメッシュ生成で使われるcfMeshを使って円柱内部のメッシュ生成を行いたいと思います。
最終的には以下のようになります。

本記事の内容

cfMeshを使って円筒内部のメッシュ生成を行う

以前の記事でも解説したようにsnappyHexMeshでの境界層はなかなかきれいに生成することができません。

そんな時には今回紹介するcfMeshを試してみるのも良いです。ただ、cfMeshよりsnappyHexMeshの方が設定項目が多く融通が利きますが慣れが必要です。未だに使うかは悩ましいところですね。

cfMeshの基本的な使い方や境界層の設定のコツなどは以下の記事で解説していますのでご参考ください。

円筒内部の流れは理論的にもよく理解されている基本的な流れです。

  • レイノルズ数の大きさによる層流・乱流遷移
  • 層流と乱流の助走区間の違い
  • 層流と乱流の速度分布の違い

これらの内容は流体力学の参考書にもある話です。
流体のシミュレーションをしていると何となく結果はでるけども「あってるのどうなの?」と思うこともしばしばあります。
実験とシミュレーションの結果を比較するというのもひとつの手ではありますし、流体力学の中でも条件を限定すると解析解を導くことができ、シミュレーションとの比較を行うことができます。

近似的に解析解が出せるなら、シミュレーションの結果と比較して妥当性を検証することは重要なことです。

今回はシミュレーションが正しく行えているのかを確認するために、円筒のモデルを作成して流体解析を行い、解析解とシミュレーションとの比較を行うことにします。
今回はメッシュだけを作ります。

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

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

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

FreeCADで円柱モデルを作成

FreeCAD(0.20)でΦ10mm×1200mmの円柱モデルを作成します。
snappyHexMeshでの形状の認識のために形状stlファイルが必要であるためです。

また、FreeCADにはソリッドを面分割して面に名前を付ける機能があります。
ここで面に名前を付けておくことと便利です。面に名前を付けることで、境界条件の設定やsnappyHexMeshでの面まわりのメッシュの再分割などにも使えます。

面に名前をつけたstlファイルを結合してひとつのファイルにまとめるFreeCADのマクロは以下の記事をご参考ください。

出力したstlファイルは「constant/triSurface」に保存します。

FreeCADでの「mm単位」の表記は実は数値しか拾っていないので、実際流体解析で使用する単位系がm単位であればスケール変換する必要があります。

スケール変換は以下のコマンドで簡単に行うことができます。

今回使用するのはm単位系になった「model_m.stl」です。

cfMeshのチュートリアルをコピーする

cfMeshはESI版のOpenFOAMを使っている場合は「$WM_PROJECT_DIR/modules/cfmesh」に保存されているので、適当なチュートリアルからコピーして編集して使います。

cfMeshは以下のメッシュの種類を選択することができます。

cfMeshで対応のメッシュ生成のコマンド

  • tetMesh
    テトラメッシュ(四面体メッシュ)
  • cartesian2DMesh
    四分木法による2Dメッシュ
  • cartesianMesh
    八分木法によるメッシュ
  • pMesh
    ポリヘドラルメッシュ

チュートリアルはメッシュの種類で分かれていますが設定ファイルは共通しているのでどれを使っても良いです。今回は設定項目がデフォルトで多く記述されている以下のチュートリアルをコピーします。

フォルダを移動します。

フォルダ構成を確認しておきましょう。

同じフォルダに形状のstlファイルを置く必要があるので、円柱形状の「model_m.stl」ファイルを保存しておきます

※「multipleOrifices.stl」は使わないので消しても構いません。

特徴線の抽出

特徴線の抽出には以下のコマンドを行う必要があります。

また、隣り合った面での法線ベクトルがなす角度を指定して出力することもできます。
以下の例は角度30°以下の角度の線は特徴線とみなされます。
指定なしの場合は角度は45°。

ここまででファイル構成は以下となります。

  • model_m.stl:m単位の形状ファイル
  • model_m.fms:特徴線を持った形状ファイル

fmsの方が精度よくメッシュ生成を行うことができるため、基本的にはfmsを使うことをお勧めします。
※といってもfmsファイルを直接ParaViewで確認することができないので、今回はstlファイルを形状ファイルとして使います。
ちなみにfmsファイルからstlファイルには以下のコマンドで変換可能です。stlファイルにするとParaViewで可視化ができます。

メッシュ生成

メッシュの設定は「system/meshDict」ファイルで行います。

meshDictの設定

cfMeshに最低限必要なのが、

の2つです。

  • surfaceFile:stlファイルかfmsファイル
  • maxCellSize:ベースのメッシュサイズ

特定の面でのメッシュサイズや、特定の面での境界層を設定したい場合などをオプションで色々と設定することができます。

system/meshDict

cfMeshはデフォルトで面のメッシュサイズや境界層を設定できますが、できれば特定の面に対して個別で設定する方が良いでしょう。なぜなら、想定外にメッシュサイズが多くなったり、設定が二重になってどちらが効いているのかがわからなくなるからです。

メッシュの設定は終わりです。
snappyHexMeshと比べると設定項目が非常に少なく、簡単な形状ならばcfMeshを使う方が良いでしょう。円柱くらいならblockMeshでもできるかもしれませんが、cfMeshはstlファイル形状に沿ってメッシュを簡単に生成することができるので使いやすいです。

メッシュ生成(cartesianMesh)

cfMeshの設定は終わりましたのでメッシュ生成コマンドを実行します。

六面体ベースのメッシュの場合は「cartesianMesh」を使います。

できたのをParaViewで確認するとこんな感じになっています。

断面を切っても境界層がきれいに入っています。

テトラメッシュのメッシュの場合は「tetMesh」を使います。

テトラメッシュだと今回の設定では境界層を作ってくれませんでした。
テトラメッシュの場合形状が複雑になると直交性が悪いメッシュになり、流体解析では収束性が悪く発散する原因にもなりうるのでよっぽどの事情がない限り使わない方が良いでしょう。tetMeshを使うくらいならcartesianMeshで十分です。

ポリヘドラルメッシュの場合は「pMesh 」を使います。

今回はエラーが出てメッシュを作ってくれなかったので割愛します。
たぶん設定の問題です。

メッシュ品質の確認

結局メッシュはcartesianMeshの結果を使うことにします。

以下のコマンドでメッシュ品質も確認しておきましょう。

以下の部分は最低確認するようにしましょう。

  • Max aspect ratio:アスペクト比(縦横の比率)→境界層で大きくなりやすいので大きすぎる場合は確認
  • non-orthogonality:直交性→70°以上であれば修正
  • Max skewness:歪度→4以上だと修正

メッシュ品質の基準は以下のファイルにも記載がありますで確認してみましょう。

コマンドでファイルを探す場合は、

以下のように出力されます。

primitiveMeshCheck.Cの中身を確認しましょう。

該当箇所は「/primitiveMesh」と打って「n(下へ)」「shift + n(上へ)」で探すことができます。

viを終了するには
ESCボタンを押して「:q」か「:q!」で終了することができます。

シミュレーションを行う場合、低品質なセルや面によって生じる数値誤差を低減できる数値スキームを選択します。

おすすめ参考図書

☟こちらは、OpenFOAMの日本語書籍が無い中唯一わかりやすい参考書だと思います。

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

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

3,520円(05/18 11:52時点)
Amazonの情報を掲載しています

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

乱流の数値シミュレーション 改訂版

乱流の数値シミュレーション 改訂版

梶島 岳夫
4,975円(05/18 12:23時点)
Amazonの情報を掲載しています

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

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

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

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

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

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

関連記事もどうぞ

COMMENT

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