OpenFOAMのGoogleグループに、表題のメッシュ作成法に関する質問がありました。
質問者の当初の意向は、Netgenを使いたいとの事だったんですが、やりたい事は、SwiftBlockの格好の例題であると判ったので、ここに作成法を公開しておきます。
ファイル一式の説明
blenderにて形状モデル作成
- グリッド(平面格子)を作成して、区分したい境界線毎に高さ方向に積み上げていくだけです。
- x方向は、ここでは区分しないので、中心の分割線は不要ですが、グリッドを起点に作成しており、分割線のないグリッドは作成できなかったのでそのまま残しました。
- 矩形平面をベースに始めることも出来たのですが、モデル作成の手間との兼ね合いです。
SwiftBlockのパラメタ設定
- 風穴など、境界面として識別したい面を選択して、個別に名前を付け、patchやwallなどのType指定しておきます。
blockMeshDictの作成
- SwiftBlockツールのwriteボタンを押せば、blockMeshDictを自動作成してくれます。その時、ファイルの出力先が、constant/polyMesh の下になるように間違えないことが肝要です。
- なお、この書き出しにはそれなりの時間(数分程度)がかかり、その間blenderの画面はフリーズ状態になりますが、システムダウンしている訳ではないので、慌ててリセットボタンを押すことなどしないように。
- モデル作成の手間を惜しまないで、x方向の中心分割線のないモデルで作成していたら、ここでの所要時間は、約1/4になります。
blockMeshの作成
- 作成方法は「省略」というか、blockMesh コマンドを叩くだけ
nPoints: 1636362 nCells: 1574400
- メッシュ作成時間は数分
- 分解能を、一番細長い穴を3分割できるサイズ(0.05)とした為、かなり大きなメッシュになってしまいました。
- y方向とx方向でサイズを変えたりすることができないのがこのツール(SwiftBlock)の難点ですが、自動生成されたblockMeshDictを直接編集で書き換えてしまうという方法も、実際問題としてはありでしょう。
メッシュとpatchの確認(paraFoam)
補足
- ここでは風穴部分だけをpatchとして区分しましたが、壁面の一部だけを加熱したいような場合に、その部分だけを識別できるようにモデル化すれば、同様の手順で出来ることになります。
- 但し、区分したい形状は、基本的に直交平面であることが前提です。
- 形状が傾いていたり、円形などの場合にも、出来無いことはありませんが、モデル作成にひと工夫(多くの手間)が必要になります。