CAEソリューションズ フルイド事業部CAE Solutions

CAE効率向上のソフトウエア販売と受託解析サービス、あらゆる場面で貢献します。

ソフトウエア製品名から探す解析対象から探す受託開発・受託解析お問い合わせ
| フルイド事業部 トップ | アクセス | サイトマップ |

機 能

1.ソルバーの作成

OpenFOAM®は複数の偏微分方程式(PDE)で記述された工学的問題を解くためのプログラミングツールです。OpenFOAM®はPDE を時系列3次元の任意形状セルによる非構造メッシュで離散化するために、有限体積法(FV)を用いています。そのコードは本質的にはOpenFOAM® C++ライブラリを用いて記述されており、各々の問題に対してわずか50行程度の非常に短いアプリケーションプログラムとなっています。これらのアプリケーションプログラムでは方程式を次のような記述によって表現しています。


   solve
   (
       fvm::ddt(rho, U)
     + fvm::div(phi, U)
     - fvm::laplacian(mu, U)
       ==
     - fvc::grad(p)
   );
このような数式的表現を用いることで
  • 専用プログラム開発効率が格段に向上します。
  • サブルーチン形式のものとは違い、意図する数学的オブジェクトを直接組み合わせることができるので、研究/開発に適しています。
  • 分かり易いアルゴリズム表記により、コードの保守・発展が容易になります。
先進のC++をプログラミング言語として用いることにより
  • コンパイル/実行時共に、高度なエラーチェックが可能です。
  • 洗練されたアプリケーションオブジェクトが作成可能です。
  • 効率の良いメモリ管理と高速ソルバーで高速計算が可能です。
  • プロセッサの数に比例する高速化が可能です。

OpenFOAM®では標準的な微分演算子(Ñ2,Ñ·,Ñ,Ñ´,¶/¶t,¶2/¶t2など)が任意形状セルに対応した2次および4次精度有限体積法を用いて定義されています。詳しくはプログラマーズガイドをご覧ください。

Table 1 OpenFOAM® C++ライブラリの微分演算子
Term description Implicit / Explicit Text expression fvm::/fvc:: functions
Laplacian Imp/Exp

laplacian(phi)


laplacian(Gamma, phi)
Time derivative Imp/Exp

ddt(phi)


ddt(rho,phi)

Second time derivative Imp/Exp d2dt2(rho, phi)
Convection Imp/Exp

div(psi,scheme)*

div(psi, phi, word)*

div(psi, phi)

Divergence Exp div(chi)
Gradient Exp

grad(chi)

gGrad(phi)

lsGrad(phi)

snGrad(phi)

snGradCorrection(phi)

Grad-grad squared Exp sqrGradGrad(phi)
Curl Exp curl(phi)
Source Imp

Imp/Exp†

Sp(rho,phi)

SuSp(rho,phi)

†fvm::SuSp source is discretised implicit or explicit depending on the sign of rho.
†An explicit source can be introduced simply as a vol<Type>Field, e.g. rho*phi.
Function arguments can be of the following classes:
phi: vol<Type>Field
Gamma: scalar volScalarField, surfaceScalarField, volTensorField, surfaceTensorField.
rho: scalar, volScalarField
psi: surfaceScalarField.

OpenFOAM®では多種の離散化スキームを提供しています。これらはFoamXのGUI上で方程式の項別に選択して解くことができるので、計算の精度、有解性、保存性などの全てについて実行時に制御することが可能です。
よく知られている方程式にカップリングしたアルゴリズム(PISO、SIMPLEなど)の例は、アプリケーションのトップレベル・コードの中で記述されています。
OpenFOAM®ライブラリによる洗練された文法はアルゴリズム自身の最も分かり易い記述法と見ることもできます。OpenFOAM®パッケージにはC++ライブラリ、及び標準アプリケーションの全ソースコードが含まれています。これらは専用アプリケーションを開発する際の参考として使用できます。

上に戻る

2.OpenFOAM®の標準ソルバー

OpenFOAM®のパッケージには以下の標準アプリケーションとそのコードが含まれています。ただしOpenFOAM®の適用範囲は以下に限ったものではありません。

Table 2 OpenFOAM®標準アプリケーションリスト
'Basic' CFD codes
boundaryFoam 1次元で乱流モデルを解くシンプルな境界層コード.
icoFoam 非圧縮性、層流の速度-圧力コード.非ニュートン流体も可.
icoFoamAutoMotion 移動メッシュによる非圧縮非定常層流コード.
laplacianFoam 熱伝導問題などの例題コード.
potentialFoam シンプルなポテンシャル流のコード.完全ナビエ-ストークスコードを解く際の保存された初期値の生成にも使用できる.
turbFoam 低レイノルズ数あるいは壁関数による線形,非線形またはレイノルズ応力乱流モデルを用いた非圧縮性乱流コード.

Heat transfer熱輸送

buoyantFoam 換気と熱輸送問題の乱流、浮力コード.

Compressible flow 圧縮性流れ

sonicFoam 圧縮性,遷音速/超音速層流気体コード.
sonicFoamAutoMotion 移動メッシュによる圧縮性コード.
sonicLiquidFoam 圧縮性,遷音速/超音速層流液体コード
sonicTurbFoam 圧縮性,遷音速/超音速乱流コード.

Direct numerical simulation (DNS) and large eddy simulation (LES)

channelFoam チャンネル流のDNS/LESコード.
dnsFoam 等方性乱流のDNSコード.
oodles 非圧縮LESコード.

Combustion 燃焼

dieselFoam ディーゼル燃焼モデリングの研究用コード.
engineFoam SIエンジン用コード.
dieselEngineFoam ディーゼルエンジン用噴射/燃焼用コード
xiFoam 圧縮性予混合/部分的予混合乱流燃焼コード.
xoodles 圧縮性予混合/部分的予混合乱流燃焼LESコード.

Two-phase flow 2相流れ

bubbleFoam 非圧縮分散性2相2流体コード.
interFoam 非圧縮2相流のinterface trackingコード.
settlingFoam 分散相の設定シミュレーション用の非圧縮2相流コード.

Stress analysis応力解析

stressedFoam 線形弾性体の応力解析コード.
contactStressFoam 非線形弾性体の応力解析コード.
stressedFemFoam 有限要素法静的線形応力解析コード

Electromagnetics電磁流体

mhdFoam 非圧縮性層流電磁流体コード.
electrostaticFoam 静電方程式コード.

Finance金融工学

financialFoam Black-Scholes方程式を解き商品価格を求める.

上に戻る

3.ユーティリティアプリケーション

OpenFOAM®では数値計算以外の部分(メッシュ生成およびプリ/ポストプロセスなど)をサポートする多数のユーティリティアプリケーションを提供しています。次の図はOpenFOAM®パッケージの主要なユーティリティと作業データの流れを表しています。

Fig. 2.ユーティリティアプリケーションと作業データの流れ

上に戻る


3.1 プリプロセス

OpenFOAM®ケースマネージャFoamX

すべてのOpenFOAM®チュートリアルはJAVA/C++によるグラフィックユーザインターフェース (GUI)ツールFoamXにより管理されます。そしてこれはCommon Object Request Broker Architecture (CORBA)を用いた分散ネットワーク環境で使用できます。FoamXによるGUI環境はそれぞれのアプリケーションが要求しているデータエントリのみを扱うように個々に設定できるので、冗長な入力をする必要がありません。ユーザは新規に作成する全てのアプリケーションに対してFoamX環境を設定し、アプリケーションの実行を管理することができます。

Fig.3 FoamXのメインウインドウからユーティリティの実行


Fig. 4 境界条件の選択



                         Field window



          Patch selection











Vector specification
Fig. 5 境界面の選択と条件の設定
 
Fig. 6 計算パラメータの設定ウインドウ



              

Table3 その他のプリプロセスユーティリティ
AdiabaticFlameT 与えられた燃料の未燃温度と当量比の範囲から断熱火炎温度を求める
BoxTurb 与えられたエネルギースペクトルから連続式をみたす乱流のboxを生成する
EquilibriumCO 一酸化炭素の平衡レベルを求める
EquilibriumFlameT 与えられた燃料と圧力の未燃温度と当量比の範囲から平衡火炎温度を求める
LeanSl 与えられた圧力(bar),温度(K),当量比における希薄燃料の層流火炎速度を計算し表示する
mixtureAdiabaticFlameT 与えられた温度と燃料の混合における断熱火炎温度を求める
NMRreader NMRスキャニングデバイスから標準形式の点データを読み込む
RedirectUinlet ユーティリティで定められた境界面における速度の法線方向成分を消去する
set<field>, e.g. setAlpha フィールド<field>に初期フィールドと境界条件を与える, e.g. alpha
Sl 与えられた圧力(bar),温度(K),当量比における燃料の層流火炎速度を計算し表示する

上に戻る

3.2 メッシュコンバータ

OpenFOAM®アプリケーションは任意面数の多面体が混在するような非構造メッシュに対応しています。多面体は単純にそれを構成する面のリストとして表され、各々の面はそれを構成する点のリストとして表されます。このような方法でメッシュを生成することにより、境界付近の複雑形状や、局所的に再分割されたメッシュなどを容易に扱うことができます。OpenFOAM®には標準のメッシュジェネレータblockMeshが付属していますが、他のメッシュジェネレータおよびCADが生成したメッシュも利用可能です。OpenFOAM®に付属しているコンバータの表を次に示します。

Table4 メッシュコンバータ
コンバータ 対応製品 読込ファイル
FluentMeshToFoam Fluent .msh形式のメッシュファイル、2-Dと3-D両形式に対応
StarToFoam STAR-CD proAMメッシュファイル
smapToFoam STAR-CD SMAPデータファイル
gambitToFoam GAMBIT .neu形式のニュートラルファイル
ideasToFoam I-DEAS I-DEASからANSYS入力用に書き出された.ans形式のメッシュファイル
CfxToFoam CFX .geo形式のメッシュファイル
kivaToFoam KIVA-3V kiva3vのメッシュファイル

上に戻る

4. ポストプロセス

OpenFOAM®にはparaFoamというポストプロセッサが標準で付属しています。これはVTK仕様のParaViewというオープンソースソフトウェアを用いて開発されたものです。OpenFOAM®にはその他にEnSightやFIELDVIEWなどのポストプロセッサに対応するためのプログラムも用意されています。また、OpenFOAM®から他のデータ形式へ変換するためのデータコンバータもいくつか用意されています。これら以外のデータ形式の場合は、既存のコンバータ・ソースを参考に変換プログラムを作ることができます。

Table 5 ポストプロセスユーティリティ
dxFoamExec openDXを用いたポストプロセスユーティリティ
ensight74FoamExec EnSight7.4を用いたポストプロセスユーティリティ
patchToOBJ パッチとfaceZone面を.objフォーマットにダンプするユーティリティ
vxpFoam AVS/Expressを用いたポストプロセスユーティリティ
foamDataToFluent OpenFOAM®データをFluent形式へ変換する
foamMeshToFluent OpenFOAM®メッシュをFluentメッシュへ変換する
foamToDX OpenFOAM®データをopenDX形式へ変換する
foamToEnsight OpenFOAM®データをEnSight形式へ変換する
 foamToFieldview OpenFOAM®データをFieldview-UNSフォーマット(バイナリ)へ変換する。
 foamToFieldview9 OpenFOAM®データをFieldview Rel.9 -UNSフォーマット (Version3/バイナリ)へ変換する。
dxFoam screen shot
Fig. 7 ポストプロセッサdxOpenFOAM®による可視化

上に戻る

5. OpenFOAM®ライブラリ例

OpenFOAM®では関連したツールの集合をライブラリとして作成することができます。このようなライブラリはアプリケーションのコンパイル時にリンクすることができるので、例えば特別な離散化手法などを簡単にアプリケーションに組み込むことが可能になります。OpenFOAM®では効率的なalgebraic multigrid (AMG)法および前処理付共役勾配法による線型方程式ソルバーを使用しています。ソルバー技術の選択によりOpenFOAM®ライブラリを並列計算機で効果的に使用できます。

cfdTools CFD一般に関するツール
errorEstimation 後天的な誤差解析ツール
meshMotion 移動メッシュライブラリ
engine エンジンシミュレーションツール(点火モデリング、エンジン用移動メッシュ)
amgSolver AMG(Algebraic Multigrid)線形方程式ソルバー
shapeMeshTools 誤差による自動メッシュ再分割/結合ライブラリ

上に戻る

5.1 移動メッシュライブラリ

OpenFOAM®には移動メッシュライブラリが用意されており、解や時間の変化に応じて計算領域が変形する問題も解くことができます。OpenFOAM®で用いている「移動メッシュ有限体積法」はメッシュの移動は解の一部として自動的に計算されます。いくつかの商用CFDパッケージでは移動メッシュを扱っているものの、それらの多くは全ての格子点の座標について、計算ステップ毎に何らかの方法で定義する必要があります。これに対しOpenFOAM®で採用している方法は次のような特徴があります。
メッシュの移動は境界あるいはその一部の移動によって定義されます。そうすればメッシュ内の全ての点の移動は計算コード自身によって自動的に計算されます。例として内燃機関を扱うengineライブラリでは境界面“chamberWall”の動きを

という移動関数で与えてピストンの動きを定義しています。
境界の移動関数には計算から得られるいかなる値も用いることができます。

メッシュを構成している全ての点の移動は、メッシュ自身の連続体問題を解くことにより計算ステップ毎に自動的に得られます。このような手法の利点は最初に適切なメッシュから始めると移動後もメッシュの適切さが維持されることです。このことにより大変形問題に対して極めてロバストになります。
メッシュ移動は外部処理ではなく解の一部として自動的に得られるので、大変形をともなう、あるいは固体-流体の連成を伴うような問題への適用の自由度が大きくなります。
移動メッシュはすべてのOpenFOAM®アプリケーションに簡単に埋め込むことができます。それはOpenFOAM®のFV離散化オペレータが移動メッシュにともなうより複雑な離散化を包含しているからです。

上に戻る

5.2 メッシュユーティリティ

checkMesh メッシュの妥当性をチェックする
deformedGeom PolyMeshを変位場Uと与えられたスケーリングファクタにより変形させる
moveMesh 移動メッシュによるソルバ
moveEngineMesh エンジンシミュレーション用のソルバ
refineShapeMesh meshRefinementDictファイルの定義に基づいてshapeMeshの一部を再分割する
renumberMesh 行列の帯幅を狭くするためにセルリストのインデックスを並べ替える
scalePoints polyMeshの定義点を与えられた係数でスケーリングする
subsetMesh meshSubsetDictで定義されたメッシュの一部を選択する
tetDecomposition face-cell centre分割によりメッシュを四面体に分割する

上に戻る

5.3 粒子追跡

OpenFOAM®にはラグランジュ的粒子追跡モデルが用意されており混相流の解析などに用いることができます。
基本的なモデルではオイラー的な相とのカップリングおよび追跡を提供しているので、スプレーやその他の混相モデルを簡単に実装することができます。
OpenFOAM®では標準で微粒化,分裂、衝突、蒸発などのモデルが用意されています。
OpenFOAM®のオープンアーキテクチャによりユーザ作成のモデルを自由に組み込むことができます。

上に戻る

5.4 連続体モデルライブラリ

OpenFOAM®には数多くの物性モデルとデータベースのライブラリが含まれています。OpenFOAM®のオープンアーキテクチャはユーザが自由に物性データ、モデルを追加することを可能にします。これらは実行時に簡単に選択して組み込むことができます。

thermophysicalModels 実在気体・液体の物性モデル
transportModels 非ニュートン流体モデル
lagrangian 微粒化,分裂,衝突,蒸発モデル
turbulenceModels レイノルズ平均乱流モデル
LESmodels Large Eddy Simulationモデル

上に戻る

5.5 アダプティブ・エラーコントロール

OpenFOAM®ではいくつかの信頼できる後天的な誤差見積りのユーティリティが提供されており、簡単に使用できます。誤差を見積ることでユーザが解やメッシュの品質を向上させることが可能になります。
自動的なエラーコントロールは近い将来OpenFOAM®で提供される予定です。このオプションによりOpenFOAM®ライブラリでサポートしているメッシュの順応性を向上させることができます。
OpenFOAM®で提供されている誤差見積りのユーティリティを次に示します。

icoErrorEstimate 非圧縮層流CFDアプリケーション icoOpenFOAM®での誤差を見積る
EstimateScalarError 標準形式でのスカラー輸送方程式の誤差を見積る

上に戻る

5.6 v並列計算

OpenFOAM®は計算領域を自動的に分割し、複数プロセッサで計算を行います。プロセッサ間の通信はMPIプロトコルを用い、Cray上ではshmemを用います。OpenFOAM®は優れたスケーラビリティを示し、プロセッサ数を増加することにより計算時間を効率よく短縮できます。
OpenFOAM®のスケーラビリティを示す例を次に示します。例題はディーゼルのインジェクタバルブの3次元線形応力解析問題でメッシュは360000 CVs、計算には24CPUのSilicon Graphics Origin 2000をnon-dedicated modeで使用しています。

No of CPUs CPU time to convergence CPU time (600 iter.) Speedup
1 35620.4 s 90785.2 s 1.00
2 22398.8 s 56605.2 s 1.60
4 11406.6 s 29244.2 s 3.10
8 4247.32 s 10218.6 s 8.88
16 2872.58 s 7205.33 s 12.4

CPU time to convergence for the linear stress analysis problem on an SGI Origin 2000 parallel computer.
OpenFOAM®は256プロセッサのCray T3E上で1000万セルの計算に用いられています。

decomposePar 自動的に計算領域をOpenFOAM®コードの並列処理のために分割する
reconstructPar 並列処理で分割された計算領域を再構成する

上に戻る

© 2006 CAE Solutions Corporation. All Rights Reserved
〒102-0072 東京都千代田区飯田橋2-1-10 TUGビル8F |Tel:03-3514-1506|Fax:03-3514-1507