OpenFOAM

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

こんにちは(@t_kun_kamakiri

本記事ではOpenFOAMのメッシュ生成ユーティリティであるblockMeshを使って円柱のメッシュを6面体で生成したいと思います。
最終的には以下のようになります。

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

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

以下のコマンドでチュートリアルをコピーします。

ちなみに「$FOAM_TUTORIALS」は環境変数が割り当てられており、以下のコマンドで確認することができます。

環境変数「FOAM_TUTORIALS = /opt/OpenFOAM/OpenFOAM-v2012/tutorials」であることが確認できます。

blockMeshを編集

コピーしたフォルダに移動してメッシュを作ります。

ファイル構成を確認します。

メッシュ生成用のファイルであるblockMeshの設定は「system/blockMeshDict」で行います。blockMeshDictを以下のように編集します。

長さ12000mm、半径10mmの円柱にしています。
作成のイメージはこんな感じ。

system/blockMeshDict

設定が終わったらblockMeshを実行しましょう。

blockMeshDictには変数設定をしているため、コンパイルが必要になりメッシュ生成に少々時間がかかります。ただし、変数の値を変えると再度コンパイルされますが、変数部分以外を変更したとしても再度コンパイルすることはないので時間はかかりません。

※追記
2023年現在はblockMeshも進化しているようです。

ParaViewで確認

OpenFOAMでは拡張子「.foam」という空ファイルを読み込むだけで結果を確認できます。

ParaViewを起動してメッシュを確認しましょう。

断面を切っても全てのメッシュが6面台であることがわかります。

メッシュ品質も確認しておきましょう。

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

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

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

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

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

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

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

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

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

おすすめ参考図書

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

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

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

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

関連記事もどうぞ

COMMENT