C++で開発された汎用流体解析ソフトウエアです。2004年にオープンソースとして無償公開を開始して以来、ユーザー・開発者ともに増加し続けています。
Product Outline 製品概要
- OpenFOAMはオープンソースによるCFDソフトウェアパッケージです。非構造格子での有限体積法による連続体の方程式の解法がC++のクラスライブラリとして整備され、このライブラリを用いて開発された各種ソルバ、ツールとそのチュートリアルケースが付属しています。
- OpenFOAMは無料で利用可能でCFDの研究や学習において役立ちます。物理モデルのライブラリはソースコードとして提供され、ユーザーは必要に応じて独自のモデルをライブラリに追加できます。
- CAEソリューションズは、OpenFOAM以前の商用ソフトウエア時代からこのソフトウエアのサポート、トレーニング、受託開発をおこなってきました。20年近いサポート経験をいかし、OpenFOAMの導入、運用、カスタマイズを強力にサポートします。
Features 特徴
- OpenFOAMの機能的側面
大規模並列計算に対応
並列計算を前提としてライブラリが設計されており、OpenFOAMのライブラリを使用して作成されたソルバはそのまま並列で動作します。ライセンス料を気にすることなく、大規模計算を実施することができます。
流体ソルバーを含む多様な物理モデルに対応
非圧縮性/圧縮性流体、単相/混相流、乱流モデル、ふく射、浮力、パッシブスカラー、化学反応、ポーラスメディア、 multiple reference frame (MRF) 、移動メッシュなど
マルチブロックメッシャと自動メッシャが付属
構造6面体メッシュと複雑形状用の非構造カットセルを用いた自動メッシャが付属しています。オープンソースの可視化ツールParaViewと組み合わせて、メッシュ生成、流体解析の実行、可視化までのすべてのCFDプロセスをオープンソースツールのみで実行できます。
- OpenFOAMのプログラム的側面
OpenFOAMのプログラミング言語
OpenFOAMはオープンソースソフトウェアであり、基本的にC言語(C++)により作成されていますが、フィールド変数は高度にカプセル化されておりオーバーライドされた微分演算子により抽象的に取り扱う事ができます。例えばfvm::div(phi,U) + fvc::grad(p)などの表記ができます。これらの演算子を使用する事で、移流拡散等を表現する流体の偏微分方程式を直観的に実装する事ができます。
コードストラクチャー(コード構造)
方程式系を記述したソルバのコードとソルバの使用するライブラリは別のツリー上に収められています。ライブラリはFoam名前空間内にあり、熱モデル(thermoPhysicalModels)、乱流モデル(TurbulenceModels)、粒子モデル(lagrangian)、などのモデルごとにクラス分けディレクトリ分けされています。多くがモデル毎にテンプレートを使用した純粋仮想クラスとなっており、個々のモデルの実装はそれを継承する形で実装されています。
コンパイル
OpenFOAM独自のwmakeシステムを使用してコンパイルを行います。wmakeはソース及びインクルードファイル等を指定したfilesファイルとリンカへの指定を行うoptionsファイルに分かれます。システム全体のコンパイルはAllwmakeというシェルスクリプトにより行われます。etc/bashrcファイルによりインストール/実行に必要な環境設定を行うため、このファイルは適切に設定する必要があります。
変数
流体解析で用いられる主要な変数は、ある値が3次元分布したフィールド変数です。OpenFOAMではこれらの変数を表現するvolScalarFieldやvolVectorField、あるいは、セル界面のデータを表現するsurfaceScalarFieldなど、データ表現に必要な変数型(クラス)を用意しています。これらは多くの場合次元付きで初期化され、方程式は次元計算の整合性を失わないようになっています。
並列プログラミング
OpenFOAMは大規模な並列計算が可能で、実装には標準的なMPIの仕様が利用されています。ただしユーザーが新しい方程式系を実装する場合、通常はMPIは意識する必要がありません。境界全域や領域全域のデータを集約したデータが必要な場合は、必要に応じて並列データを収集する必要はありますが、reduce(scalar,minOp<scalar>)のように簡易的に使用する事ができます。
ランタイムセレクション
物理モデルや境界条件は仮想関数テーブルを経由したランタイムセレクションの仕組みが整備されており、実行時に決定する事ができます。これによりプログラム全体を再コンパイルすることなく境界条件を切り替えるなどの操作が可能なっています。この仕組みは境界条件をプログラミングする際には殆ど意識する必要なく、ヘッダをインクルードするだけで登録できます。
データベース
ソルバ等で生成されたフィールド変数は統一的に管理されており、"U"や"p"等のような文字列によりアクセスする事ができます。mesh_あるいはrunTime等のオブジェクトにアクセス可能なスコープからはlookUpなどの関数を通してフィールド変数の参照を取得する事ができます。またフィールド以外のソルバ設定、物理量設定にもアクセスする事ができるため、これらを参照したプログラムの修正は容易に行えます。
Case Study 事例
Operating Environment 動作環境
OS | LINUX (Ubuntuほか) MacOSX(Docker) Windows (Docker,WSL,MinGW) |
---|---|
CPU |
上記OSが稼働するCPUであれば制限はないが、なるべく演算性能のたかいものを推奨。 一部の派生版OpenFOAMはGPUにも対応。 |
メモリ | 64GBi以上を推奨 |
ストレージ | 500GBi以上を推奨 |
Implementation Flow 導入までの流れ
-
お客様のご要望をヒアリングヒアリング
解析の種別、内容、評価したい項目 等 -
複数のソフトから最適なものを選定しますソフトご提案
お客様ご要望に最適なソフトを選定し、ご提案します。実際のソフトの画面や動作などもご覧いただけます。なお、ご提案内容に合わせて、「無料体験セミナー」や「ベンチマーク」も行いお客様要望にあったソフトであることをご確認いただきます
「ベンチマーク」とは?
一般的に解析ソフトはCADと比較しても高額となります。そのため、十分な費用対効果が無いと導入が難しいです。ベンチマークは、どのような解析が出来るのか、実際の現象と比較した差異はどうなるのかなどを検証する作業となります。
-
導入後の運用も踏まえたご提案をいたしますお見積り提示
必要に応じてサポートの費用など下記の項目についてご提案します
School & Support スクール・サポート
Price 価格
サポート等の価格は「製品お問い合わせ」よりお問い合わせください。
参考:OpenFOAM公式サイトはこちら
・The OpenFOAM Foundation Ltd https://openfoam.org/
・OpenCFD Ltd https://www.openfoam.com/
※OpenFOAMには多くの派生版があり、上記は現在最も使用されている2製品です。
FAQ よくある質問
Q. OpenFOAMとは何ですか?
A. OpenFOAMはC++で書かれたオープンソースのソフトウェアです。
Navier-Stokes方程式を非構造格子を用いて有限体積法で離散化した場合の時間項、移流項、拡散項、生成項などの処理がクラスライブラリとして用意されています。これらのライブラリを用いて構築された流体ソルバー、メッシャおよび可視化ツールなどがセットで提供されています。