polyDualMesh を使う

2011年6月25日

はじめに

デュアルメッシュ (いわゆるポリヘドラメッシュ) を作る polyDualMesh を使ってみる。

使用バージョン

  • OpenFOAM 1.7.1/2.0.0
  • Netgen 4.9.13

ファイル

STL ファイル

テトラメッシュの作成

まずはテトラ (四面体) メッシュを用意する。STL ファイルから Netgen を使ってメッシュを作成する。

モデルの読み込み

  1. Netgen を起動。
  2. メニュー [File]-[Load Geometry...] で STL ファイルを読み込む。

メッシュの作成

  1. メニュー [Mesh]-[Analyze Geometry]
  2. メニュー [Mesh]-[Mesh Surface]
  3. メニュー [Mesh]-[Optimize Surface]
  4. メニュー [Mesh]-[Surface Optim. Step]-[Mesh Smoothing]
  5. メニュー [Mesh]-[Mesh Volume]
  6. メニュー [Mesh]-[Optimize Volume]
  7. メニュー [Mesh]-[Smooth Opt Volume]

あるいは単に "Generate Mesh" ボタン (メニュー [Mesh]-[Generate Mesh]) でよいかもしれない。

メッシュの細分化

  1. メニュー [Refinement]-[Refine uniform]
  2. メニュー [Mesh]-[Optimize Volume]
  3. メニュー [Mesh]-[Smooth Opt Volume]

メッシュの出力

  1. メニュー [Mesh]-[Save Mesh...] でメッシュを保存。
  2. メニュー [File]-[Export Filetype] から "OpenFOAM" を選択。
  3. メニュー [File]-[Export Mesh...] で OpenFOAM 用メッシュを出力。

constant ディレクトリができる。

境界名は createPatch で設定する (Netgen で設定してもよい)。

polyDualMesh を使う

polyDualMesh でテトラメッシュをデュアルメッシュに変換する。

$ polyDualMesh 130

オプションは特徴角度 (feature angle)。checkMesh でエラーが出ない値を探して設定した (ただし、パイプ同士の接合部がなまってしまっている)。

できたメッシュ。

メッシュ線を見てもなにがどうなったのかよくわからない。線を消してみるとポリヘドラメッシュっぽく見える。

セル数は、もとのテトラメッシュが 8,778、それに対してデュアルメッシュは 2,211 である。

計算

デュアルメッシュで計算性能がどう変わるのか試しに計算してみた。

計算ケース

左下の入り口を in1、右下の入り口を in2 とする。右上を出口 out とする。流体の動粘性係数を 0.01 とし、それぞれの入り口から流速 in1 = (1, 0, 0) m/s, in2 = (0, 0, 5) m/s で流入するものとする。

simpleFoam

収束判定 convergence 1e-6 で計算。テトラメッシュでの計算回数が 150 回であったのに対し、デュアルメッシュのほうは 45 回であった。

pisoFoam

deltaT = 0.00005、endTime = 0.005 で計算。テトラメッシュは PISO パラメタ nCorrectors = 10 で計算できたのに対し、デュアルメッシュは nCorrectors = 2 で計算できた。

デュアルメッシュを使うと計算が安定するようである。ただし結果が変わるので注意 (メッシュが粗くなるせいか)。

パイプ接合部のなまりの問題

パイプ接合部がなまっているのが気になっていたが、オプションを発見。

$ polyDualMesh 30 -concaveMultiCells

これで feature angle = 30 でも checkMesh でエラーが出ないようになり、パイプ接合部のなまりをなくすことができた。

ポリヘドラメッシュの表示

ParaView 3.10.0-RC1 により表示。OpenFOAM 2.0.0 で ParaView 3.10.1 になったので、paraFoam で "Use VTKPolyhedron" を有効にすると表示できる。