2026年9月27日更新
CFD シミュレーション
かつて CFD (Computational Fluid Dynamics: 数値流体力学)と言えば、専門家がスーパーコンピュータで実施するものであり、コードのコンパイルやメッシュ生成だけで多大な労力を要しました(私もその専門家の一人でした)。しかし、現在ではツールチェーンが洗練され、オープンソース(OSS)を中心にローカル PC 上で完結する非常に快適な環境が整っていますので、ある程度の知識があれば、以下の CFD プロセスが比較的簡単に回せるようになりました。
1. 3D モデル作成(CAD・形状準備)
CFD の前処理では、パラメータ指定による形状変更の容易さや、流体領域の抽出(幾何形状の引き算)および面張り修正(Geometry Clean-up)機能が重要視されます。
- CadQuery (プラントや装置の作成には推奨)
- 特徴: Python コードで 3D 形状を記述する Code-CAD(プログラマブル CAD)。
- 強み:
- プラント・装置作製に最適: 配管網、フランジ、弁、圧力容器などの繰り返し構造や規格寸法モデルを関数化・モジュール化して極めて簡単に作成可能です。
- CFD 親和性: カーネルに Open CASCADE (OCCT) を採用しているため、精度の高いソリッドデータ(STEP 形式)が得られ、流体領域(インナーボリューム)の引き算(ブーリアン演算)もスクリプトで自動化できます。
- Git 管理: 形状が
.py スクリプトになるため、バージョン管理やモデル生成のバッチ処理化(自動化)が容易です。
- FreeCAD
- 特徴: オープンソース 3D CAD の代表格。パラメトリックモデリングに対応。近年は拡張機能(アドオン)を介して後続のメッシャーやソルバーを呼び出す「統合同合環境」としても機能します。
- SALOME (Geometry / SHAPER モジュール)
- 特徴: プラットフォーム SALOME に組み込まれた CAD モジュール。外部 CAD(STEP / IGES 等)インポート後の面修復や、流体領域の抽出加工において高い操作性と機能性を備えています。
2. メッシュ生成(Meshing)
CFD では壁面近傍の流動(
y+ や剥離、壁面摩擦)を解くために、壁面に沿った高アスペクト比の薄い層のメッシュで構成する必要があるため、生成が容易な Gmsh などのテトラ(4面体)メッシュはお勧めできません。ここでは、層状の6面体、7面体、8面体などで構成できる手法をご紹介します。
- snappyHexMesh / cfMesh(OpenFOAM 付属メッシャー)
- 特徴: STL 等の 3D 表面形状データから、自動で構造化 / 非構造化ヘキサ主体のメッシュを切り出します。マルチコア PC 上での並列処理にも対応しており、実務で広く利用されています。
- SALOME (Mesh モジュール / Netgen)
- 特徴: GUI 上で視覚的にメッシュ境界条件や境界層の厚み設定を行いたい場合に最適なツールです。Python スクリプトによる自動化やバッチ処理(CUI 操作)にも完全対応している点が大きな特徴です。
3. シミュレーション(ソルバー)
方程式の離散化、並列計算処理、各種物理モデル(粘性・熱・多相流など)の実装領域です。
- OpenFOAM(私は専らこちらを使用します)
- 特徴: オープンソース CFD における事実上の業界標準(De facto standard)。Navier-Stokes 方程式をはじめ、非定常、圧縮性、多相流、化学反応、熱移動など幅広い問題に対応します。PC の並列処理性能向上に伴い、大規模モデルもローカルで実用的速度で計算可能です。
- SU2
- 特徴: スタンフォード大学発のオープンソースコード。特に**空気力学(Aerodynamics)や形状最適化(Adjoint 法)**に強みがあり、圧縮性流体解析などで選択されます。
4. 可視化(Post-Processing)
計算結果の解析および図・動画作成を行う工程です。
- ParaView(私は専らこちらを使用します)
- 特徴: CFD ポスト処理における標準ツール。流線、断面スライス、等値面(Isosurface)、ベクトル表示、時間変化の動画出力まで幅広く対応。OpenFOAM の計算結果データを直接読み込み可能です。
- VisIt
- 特徴: 米ローレンス・リバモア国立研究所(LLNL)主導で開発されているツール。非常に大規模なデータセットのレンダリングや並列ポスト処理を得意としています。
OpenFoam による CFD 解析例
OpenFoam のチュートリアルにある motorBike の解析・可視化例を示します。 snappyHexMesh でメッシュを生成し、 OpenFOAM の \(k-ω \mathrm{ SST}\) 乱流モデルを使用した非圧縮性・定常解析ソルバーである simpleFoam で解析し、 ParaView で可視化しています。この際、OpenFOAM は、 Windows の WSL(Ubuntu26.04LTS)上にインストールし、ParaView は Windows 直下にインストールしています。
ただし、乱流エネルギーの過大評価が問題となるのは、よどみ点付近ばかりではなく、その後方や円錐渦と呼ばれる領域でも発生しますので、 \(k-ω \mathrm{ SST}\) 乱流モデルや定常解法が全てを解決する万能手法ではないことを承知した上で、自分の使用目的を達成することができる手法であるかを検証しながら適用することをお勧めします。
なお、乱流モデルを改良して実現象に近づければ近づけるほど、非定常性が出てきますので、定常解法が適用できなくなり、計算コストが爆発的に増加することを付記しておきます。この意味で、\(k-ω \mathrm{ SST}\) 乱流モデルは、実用的な手法の一つと言えるでしょう。