5-2.推奨メッシュ生成法
OpenFOAMに限らず、CFDにおいてメッシュ作成は実用上の最重要課題といってよいだろう。商用ソフトであれば、たいていそのソフトにメッシュ作成ソフトが付属しているのでそれだけで済ませている人も居れば、メッシュ作成の為の専用ソフトも市販されており、そういったソフトを使っている人も居るようだ。結局、何がベストかは、目的や自分が使用可能なリソースに応じてケースバイケースということである。
市販ソフトを使っている人でさえそうであって、OpenFOAMはオープンな環境で使うものであるので、メッシュ作成法の選択肢はより一層の拡がりがある。
ここでは、OpenFOAMのメッシュとは何なのかという基本事項を説明し、オープンソースだけでなく市販ツールを含めた環境で使用可能な様々なメッシュ作成法のケースバイケースを総覧的に説明しておく。
しかる後、オープンソースだけを使うDEXCS-OFの推奨作成法について具体的に説明することにする。
- そもそもメッシュとは
- 様々なメッシュ作成法
- メッシュ作成法のケースバイケース
- FreeCADの基本
- FreeCADマクロの使い方
5-2.1.そもそもメッシュとは
OpenFOAMは有限体積法で定式化されているので、有限要素法のようなメッシュ形状に制限はなく、空間を隙間なく多面体(cell, セル, 要素と呼ぶ)で分割できていればよい。
しかし、OpenFOAMの場合、この多面体情報を、
- points(節点座標情報)
- face(面番号情報)
- owner/neighbour(セル番号情報)
- boundary(境界面情報)
に分けて、constant/polyMesh下に所定書式にて収納するという決まりになっている。ここが他のソフトに比べて独特で、特にセル(要素)情報を直接明示することが出来なくなっている点で、初心者が戸惑うところであろう。
文章で書いただけでは理解できない人向けに、6面体の2要素だけからなる簡単なメッシュを例題に、具体的なファイルの内容がどうなっているのかを、以下の図5-2-1.〜4.で例示しておくので参考にされたい。
ちなみに、このメッシュデータは、以下のbockMeshDict ファイルを使って、blockMeshコマンドによって作成されたものである。
convertToMeters 1.0; vertices ( (2 1 0) (2 0 0) (0 0 0) (0 1 0) (2 1 1) (2 0 1) (0 0 1) (0 1 1) ); blocks ( hex (4 5 6 7 0 1 2 3) (1 2 1) edgeGrading ( 1 1.0 1.0 1 1 1 1 1 1.0 1.0 1.0 1.0) ); patches ( patch inlet ( (2 6 7 3) ) patch outlet ( (0 4 5 1) ) wall walls ( (0 1 2 3) (4 7 6 5) (1 5 6 2) (4 0 3 7) ) ); edges ( ); mergePatchPairs ( );
すなわち、節点(points)情報、面(faces)情報までは、直感的に理解のできる書式であるが、セル情報を明示するでなく、面がどのセルに(owner/neighbourで)属するのか?という情報の持ち方をしている点。またface情報にしても、内部faceと表面faceに区分されており、boundary情報を簡略表記出来ている点で独特であることが理解できるであろう。
5-2-2.様々なメッシュ作成法
以上の観点から、OpenFOAM用のメッシュ作成には、以下の方法(作成原理)が考えられよう。
- polyMesh情報を直接作成
- 標準ツールで作成(要パラメタ設定ファイル)
- チュートリアルケース等を参考に手修正
- スクリプトで作成
- GUIツールを利用
- 準標準ツールで作成(要パラメタ設定ファイル)
- 同上
- 多面体分割は外部ツールで作成
- polyMesh直接出力
- メッシュ変換
- 標準ツールで付加情報追加・修正
企業内で取り扱うような問題で、1番目の方法はほとんどあり得ないが、プリミティブな形状に対してスクリプトで作成したという学術的な研究例はいくつか公開されている。
2番目の標準ツールというのは、blockMesh, snappyHexMesh を使うもので、これらを使えるようにするには、bockMeshDict なり、snappyHexMeshDict なりのパラメタ設定ファイルが必要になる。このDictファイルの作成法として大きく3つのやり方があるということである。
3つのやり方というのは、後で詳しく説明するが、標準チュートリアルケースが多く存在するので、これを雛形にして直接手修正するなり、スクリプトを作り直す、またはHelyx-OSに代表されるGUIツールがあるということである。
3番目の準標準ツールというのは、cfMeshの事で、この設定ファイルはmeshDictというパラメタ設定ファイルが必要で、これをいかに作るかは標準ツールの場合と同じである。GUIツールとしては、DEXCS-OFに搭載のFreeCADマクロがある。
4番目は、市販ソフトなり、オープン系のメッシュ作成専用ソフトを使う方法であり、特に市販ソフトにおいて近年、直接polyMeshファイル出力出来るものも出てきているようである。一方、OpenFOAMの方からもメジャーなメッシュファイル形式に対してはファイルコンバータが用意されている。
5番目は、上記4つの方法とは少々位置づけが異なる。様々なメッシュ加工ツールが用意されており、上記4つの方法で作られたメッシュに対して情報の追加や変更が出来るということであり、特に4番目のメッシュコンバート方式で作られたメッシュの場合、パッチ情報が欠落することが多く、その際に、これらのツールを駆使してパッチ情報を再構築する事などやっている。
次に、よく知られた(使われている)具体的なツールを紹介しておこう。但し、あくまで著者のこれまでの経験に基づいてピックアップしたものであり、これら以外にも存在することは間違いない点はお断りしておく。
ひとくちにメッシュ作成といってその具体的な内容は、CADで形状作成⇒CADデータ⇒メッシュ設定⇒メッシュ作成⇒変換・加工という多くのプロセスを経て、最終ゴールのpolyMeshができ上がる。全工程を一貫して使えるツールというものはほとんど存在しない。各ツール名を囲う四角形の幅が工程のどのあたりで使用されるかを表すようにして配したプロセス図としたものである。
各ツールの名前は一部は略称等もあり、具体的な説明はここでは割愛するが、四角形の色で、商用ツール、OSS(オープンソースソフトウェア)、OpenFOAM標準ツールを区別している。先に述べた多くの選択肢があるという点がご理解いただけよう。
5-2.3.ケースバイケース
先に、ケースバイケースは「目的や自分が使用可能なリソースに応じて」と記した。色んな考え方があるとは思うが、以下のように分けて考えて推奨方法を取り纏めてみた。
- お金を使えるので勉強時間をかけるよりも費用で購う
- お金を使えないので勉強時間でOpenFOAMをじっくり極めたい
- お金を使えないので勉強時間でオープンCAEを駆使できるようになりたい
推奨方法1
この場合は、作成原理の4番目の方法そのものを指している。
なおこの場合においても、OF-tools と記した様々なメッシュ加工ツールの存在を勉強しておくことは推奨される。この活用如何で、出来る事の範囲が大きく拡がる。
推奨方法2
推奨方法の2番目は、OpenFOAMの原理主義的な使い方のように見えるかもしれない。作成方法の如何は問わないで、①形状定義したSTLデータ、もしくは②他のソフトなりで作成したメッシュデータさえあれば、後はOpenFOAMさえあれば何とか出来てしまう、というやり方である。
図5-2-5.では説明紙面の関係上、blockMesh と、その下の m4 / codeDtream の横幅を短く描いてあったが、実際には形状定義(CAD)機能も、メッシュ分割設定機能も有しており、図5-2-7.の横幅が正しい。
こういった方法を駆使して業務に活用できるまでの道のりは長いが、もっとも効率的に活用出来るよう為の回り道なのかもしれない。また、手元のパソコンを使うのであれば、以下の推奨方法3が使えるとしても、スーパーコンピュータなどの環境では、この方法で使うしかないだろう。
推奨方法3
推奨方法の3番目は、余分なお金をかけないで、当面の結果(成果)を出す為に使えるオープン系ツールは何か?という観点で取り纏めたものである。太字で記したツールはDEXCS-OFに同梱されているツールでもある(注記1)。
様々なツールがあって、それぞれに一長一短がある。DEXCS-OFでは最下段のFreeCADで形状作成、FCMacro(DEXCSランチャーから起動できるマクロ)を使ってメッシュ作成することを推奨しており、その使用方法も別項で説明しているが、この方法も万能ではない。不得手な部分は、他の方法で補完できる。本書の中で、全ての方法について説明は出来ないが、参考になりそうな公開資料は存在する。そういう背景を知った上で活用いただきたい。
本当の初心者向けには上記方法を推奨しているが、すでに他のツールで経験を有しておられる人には、そちらを使った方が、当面の成果は出しやすいかもしれない。そういう意味においても、何がベストであるかはケースバイケースであるという点を改めて強調しておく。
以上、3つの推奨方法について概説したが、習得時間効果、すなわち習得(勉強)時間に応じて、どの程度の成果を上げられるようになるかを大雑把なイメージで比較表現したのが図5-2-9.である。定性的な表現でしかないので、異論があったり、ピンと来ないかもしれないが、もう少し補足する為の参考図である。
それは、3つの方法があたかも独立した方法のように思われたかもしれないが、根は同じ(polyMeshを作成)であるので、これらを組み合わせるなり、プロセスを移行するなりの工夫で、時間効果はもっと上げられるという事である。
さらに言うと、方法1の商用ソフトを使う点だけを除いて、DEXCS-OFの環境があれば、どの方法も直ぐにでも取り組み(勉強)を開始できるという点は記しておきたい。
注記1 DEXCS2014より、推奨CADをblender から、FreeCADに変更。デフォルトメッシャーも、snappyHex から cfMeshに変更している。それに伴い、blender , swiftBlock, swiftSnapp は、DEXCS2018より、同梱していない。