Fluent形式からOpenFOAMの複数領域メッシュへの変換
By K.Sugiyama
共役熱伝達問題等の複数領域(multi region)の問題は、TutorialのheatTransfer/chtMultiRegion***のディレクトリーに載っています。 しかし、手ほどきにしては込み入った問題だったり、殆どblockMeshとtopoSetで作成しているので、 実用的な解析には向きません。そこで、外部メッシャー(Ansys Fluent Meshing、Ansys ICEM CFD、Gambitなど)で作成した メッシュをOpenFOAM形式に変換して使うことが多いでしょう。
この記事では、OpenFOAM形式に変換した複数領域間の内部境界がどのように扱われるかを纏めてみました。
モデル
モデルは、gas(属性はfluid)と、solid(属性はsolid)の2つの領域(リージョン, Fluent的にはセルゾーン)からなります。 双方の境界は、明示的に定義しないことも(暗)、例えば、wall-gasという名前でマニュアリーに定義すること(明)も可能です。 ここでは、すべて適合メッシュ(領域間で節点を共有しているメッシュ)を用いる場合を考えます。

(復習)Fluentの時
(暗)固体と流体の境界面は自動的に検出されて、wall-xxxとwall-xxx-shadowと名前が付けられます。 xxxの部分と、どっちの面が流体/固体に属するかは、Fluentが決めます。
(明)wall-xxxの代わりに、wall-gs、wall-gs-shadowが使われます。 どっちの面が流体/固体に属するかは、指定できません。
OpenFOAM形式への変換
ご存知の通り、Fluent形式のメッシュファイル(*.msh)を、OpenFOAMのメッシュに変換するツールは2つあります。 この場合は、次のように使用します。
- fluentMeshToFoam
$ fluentMeshToFoam -writeSets -writeZones (mesh-file-name).msh
- fluent3DMeshToFoam
$ fluent3DMeshToFoam (mesh- file-name).msh
複数領域への分割
領域毎に形状データを分割するためには、splitMeshRegionsコマンドを使います。
$ splitMeshRegions -cellZones -overwrite
OpenFOAMではメッシュの情報は、constantの下のpolyMeshにありますが、 multi regionの場合は、constantの下に領域毎のディレクトリ-があって(ex. gas, solid)、そこに各領域のpolyMeshを持っています。
初期値及び境界条件設定の0ディレクトリーのほか、constant、systemのディレクトリ-も、類似の構造をとります。

その結果、各領域のpolyMesh/boundaryファイルで、固体と流体の境界名は、以下のように付けられます。
- fluentMeshToFoamの場合
(暗)&(明)
gasリージョン: gas-to-solid
solidリージョン: solid-to-gas
外部メッシャーでの命名は考慮されません(fluentMeshToFoamは内部境界を扱えないため無視されます)。
OpenFOAMの例題ではこの方式が用いられています。
- fluent3DMeshToFoam を用いた場合
(暗)
gasリージョン: gas-to-solid
solidリージョン: solid-to-gas
(明)
双方の領域で、外部メッシュで付けた名称(ex. wall-gs)になります。
結論
この結果から考えると、内部境界を明示的に定義しない、または、fluentMeshToFoamの方が使いやすいように見えます。
豆
外部メッシュで領域の名前に大文字を用いると、msh ファイルには反映されますが、 Fluentに読み込むき、小文字に直されてしまいます。 OpenFOAMのメッシュ変換ツールは、当然、大文字小文字を区別します。
弊社の解析事例
弊社の流体解析事例については、下記のリンクからご覧ください。