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的にはセルゾーン)からなります。
ℹ️ 境界定義の方法
1️⃣ 暗示的定義: 境界を明示的に定義しない
2️⃣ 明示的定義: 例えばwall-gasという名前でマニュアリーに定義
ここでは、すべて適合メッシュ(領域間で節点を共有しているメッシュ)を用いる場合を考えます。

(復習)Fluentの時
(暗)固体と流体の境界面は自動的に検出されて、wall-xxxとwall-xxx-shadowと名前が付けられます。 xxxの部分と、どっちの面が流体/固体に属するかは、Fluentが決めます。
(明)wall-xxxの代わりに、wall-gs、wall-gs-shadowが使われます。 どっちの面が流体/固体に属するかは、指定できません。
OpenFOAM形式への変換
Fluent形式のメッシュファイル(*.msh)を、OpenFOAMのメッシュに変換するツールは2つあります。
🔧 変換ツール一覧
✅ fluentMeshToFoam - セットとゾーンの書き出しオプションあり
✅ fluent3DMeshToFoam - シンプルな変換
fluentMeshToFoam の使用例:
$ fluentMeshToFoam -writeSets -writeZones (mesh-file-name).msh
fluent3DMeshToFoam の使用例:
$ fluent3DMeshToFoam (mesh-file-name).msh
複数領域への分割
領域毎に形状データを分割するためには、splitMeshRegionsコマンドを使います。
$ splitMeshRegions -cellZones -overwrite
📁 Multi Regionのディレクトリ構造
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のメッシュ変換ツールは、当然、大文字小文字を区別します。
弊社の解析事例
弊社の流体解析事例については、下記のリンクからご覧ください。