
OpenFOAM 情報2013年3月7日 | |
はじめにこれから OpenFOAM を使ってみようかなと考えている人のための OpenFOAM 情報。 そもそも何なの?OpenFOAM (Open source Field Operation And Manipulation) とは、GNU General Public License (GPL) のもとで公開されているオープンソースの数値流体力学 (CFD) ツールボックスである。まず、これは偏微分方程式ソルバー開発用のクラスライブラリであり、C++ のシンタックスをフルに活用して高い記述性と拡張性を実現している。たとえば、スカラー輸送方程式を解くコードは次のように記述できる。
solve
(
fvm::ddt(T)
+ fvm::div(phi, T)
- fvm::laplacian(DT, T)
);
このように、C++ や OpenFOAM を知らなくてもなんとなくわかるような表現で、場 (field) の方程式のソルバーを記述できるのが特徴である。
また、OpenFOAM は上述のクラスライブラリを利用して書かれた標準ソルバーやツールを多数備えている。標準ソルバーの中には、問題によってはすぐに実用可能なレベルのものも含まれる。 もともと英国 Imperial College で開発されたものを Nabla 社が "FOAM" という名で販売していたものが、2004 年、OpenCFD 社から "OpenFOAM" としてオープンソースで公開された。2011 年 8 月、OpenCFD 社は Silicon Graphics 社 (SGI) に買収されたが、OpenFOAM は非営利団体 OpenFOAM Foundation から引き続きオープンソースとして公開されることになった。2012 年 9 月、OpenCFD 社はさらに ESI Group に買収された。 何でないかOpenFOAM は流体解析ソルバーではなく、偏微分方程式ソルバー開発用のクラスライブラリと、それによって作られたいくつかのソルバーおよびツール群である。自分の問題に利用するとき、一般の商用ソルバーのようにほしい機能を有効にするスイッチを押すのではなく、必要な機能を持つソルバーを標準ソルバーから選択する。適当な機能を備えたソルバーが標準ソルバーにない場合は、自分でソルバーを作らなければならない。ある意味なんでもできるが、それなりの知識と時間 (と場合によってはお金) が必要になる。 対象ユーザーOpenFOAM を利用するには、問題にもよるが、ソルバーを組んだり既存のものを修正したりする必要が発生しがちである。また、基本的に Linux 上で動作することを想定している。したがって、ユーザーは Linux の利用に慣れ、C++ によるプログラミングが可能で、数値流体力学の理論と問題の現象を知っている必要がある。そのため、主な対象ユーザーは研究者や学生、数値計算に十分な時間を割けるエンジニアなどになる。 注意すべき点OpenFOAM はフリーの (無料の) 流体解析ソルバーとして使えるが、標準ソルバーをそのまま使える (文字通りライセンス費を無料にできる) 場合もあれば、ソルバーを開発しなければならない (開発コストがかかる) 場合もあるため、利用については十分な事前検討が必要である。また、利用自体が結構めんどくさいため、その分商用ソルバーよりも手間が (お金と時間が) かかることも考慮に入れる必要がある。 どのように使えるかまず、OpenFOAM を商用ソルバーの代替として使うことが考えられるが、OpenFOAM は設定インターフェイスが素朴であり、またソルバーの開発や修正の必要が生じることもあり、一般的な商用ソルバーよりもかなり手間が増えることを覚悟する必要がある。つまり、人件費が増える。商用ソルバーのライセンス費と OpenFOAM によって増える人件費を天秤にかけて判断すること。また、仕事にかかる時間も増えることになる。「フリー」は時間でお金を買うところがある。お金で時間を買ったほうがよい場合もある。 商用ソルバーではライセンス費用が膨大になりがちである大規模並列解析に OpenFOAM を利用することも考えられる。現状、OpenFOAM 利用の費用よりも大規模並列用の商用ライセンスのほうが圧倒的に高くつくため、大規模並列解析で OpenFOAM を利用する価値は高い。ただし、近年のスパコンやクラウドの産業利用の高まりを受けて商用ベンダーもライセンス体系を見直し始めているため、この点を注目していく必要がある。 ある製品の設計など、問題を限定できるのであれば、それについてのソルバーと簡易インターフェイスを整備して、専用の設計ツールとして利用することも考えられる。もちろん初期投資は必要だが、一度作ってしまえばほぼそのまま (ほぼ無料で) 利用しつづけられるため、商用ソルバーを利用した場合を考えれば初期投資はすぐに「回収」できる。 そもそも商用ソルバーを買えないための OpenFOAM の利用 (ある意味商用ソルバーの代替) も考えられる。その場合でも、モデラーやメッシャーにお金をかけるという手もある。 最後に、OpenFOAM はオープンソースであり、コードもわりときれいで、適度に抽象化されているため、数値流体力学の学習のよい教材になる。ただし、C++ のスタイルに慣れるのにひと手間いるかもしれない。 まず何から始めるべきか「おためし」としては、Windows 上の仮想マシン (VirtualBox など) に OpenFOAM インストール済みの Linux (DEXCS-OpenFOAM など) をセットアップするのがお手軽でよい。 OpenFOAM の環境を用意できたら、ユーザーガイド片手にチュートリアルケースを実行してみるところから始めるとよいだろう。 OpenFOAM の利用手段OpenFOAM を使用する方法として、つぎのような手段が考えられる。
Linux マシンを用意して OpenFOAM をインストールするOpenFOAM は Linux 用に開発されているので、まずは Linux マシンを用意するのが素直である。Linux を導入するといっても、つぎのような方法が考えられる。
Linux 専用マシンを用意する一番素直な方法。本格的に使いたい人向け。マシンを用意して自分で Linux をインストールする方法と、Linux プリインストールマシンを購入する方法がある。 Windows/Linux デュアルブート環境にするWindows としても Linux としても使えるマシンを用意する。Windows マシンとしても使えるので、ムダにはならない。まっさらなハードディスクを 2 つに分け、それぞれに Windows と Linux をインストールする。すでに使用中の Windows マシンのハードディスクを分けて Linux をインストールすることも可能かもしれないが、失敗すると Windows 環境を破壊する恐れがある。 Windows 上の仮想マシンにインストールするVMware や VirtualBox などの仮想マシンを使う。そこそこ手軽で安全な方法。仮想化自体の実行負荷が高いのが難点。最近の仮想化支援機能を備えたメニーコア CPU なら快適に使えるかもしれない。 CD/DVD 起動の Linux を使う超お手軽。お試し用。マシンはどれでもいいので CD/DVD を入れて起動すると Linux が立ち上がる。LiveCD/LiveDVD と呼ばれている。認識されていればハードディスクにデータを残すこともできる。データ保存用 USB と一緒に持ち運べば、自分専用の Linux 環境を持ち運び可能かもしれない。 USB メモリ起動の Linux を使うUSB メモリに Linux を入れて使う。どれでもいいので USB ディスク起動が可能なマシンを準備し (Windows マシンでかまわない)、USB メモリを挿して起動すると Linux が立ち上がる。LiveUSB というらしい。LiveCD/LiveDVD を USB で実現するのだが、CD/DVD と違ってデータの保存が可能。ファイルシステム (FAT32) の関係で容量に制限がある (最大 4GB)。たぶん OpenFOAM のバージョン違いを 2 つインストールできるほどの容量はない。 USB メモリを普通のハードディスクとみなして Linux をインストールするという手もある。こちらは上記の制限はないが、Linux のインストールに慣れていないと、うっかりマシンのほうの環境を破壊してしまう危険性がある。 ディストリビューションLinux には Red Hat, openSUSE, Ubuntu などなど「ディストリビューション」(頒布パッケージ) がいろいろあるが、基本的にはなんでもかまわない。ただし、OpenFOAM との相性の良し悪しはある。最近は OpenFOAM の Ubuntu/openSUSE 用バイナリパッケージが配布されているので、この 2 つから選ぶのがよいかもしれない。 問題点
OpenFOAM インストール済みのシステムを導入するLinux や OpenFOAM のセットアップのハードルが高い人向けに、OpenFOAM セットアップ済みの Linux 環境が用意されている。
DEXCS-OpenFOAMもともとはデンソーの社内教育用システムとして開発されたらしい。ADVENTURE を使用したシステムだったが、OpenFOAM 版も登場した。LiveDVD 版と VMware 版がある。ハードディスクにインストールすることも可能。 GUI ランチャーが用意されている。簡単な解析なら GUI で実行できるようだ。 CAELinuxOpenFOAM だけではなく、様々な free の CAE ソフトがインストールされている Linux 環境。LiveDVD。2007, 2008 には VMware 版もある。 GeekoCFDOpenFOAM を中心とした CFD 関連ソフトがインストールされた Linux 環境。LiveDVD として提供されている。 OpenFOAM extensionsOpenFOAM のディープなユーザーさんたちが開発している OpenFOAM 拡張版。 LiveDVD が提供されている。 Windows 版を使う本来は Linux 用の OpenFOAM だが、Windows 移植版もあるにはある。
古い
OpenFOAM extensions1.4 の Cygwin 版を提供している。 OpenFOAM 2.1.x for Win64Windows ネイティブな OpenFOAM 2.1.x。Open MPI によるパラレルに対応。 OpenFlow: OpenFOAM for WindowsWindows 用にビルドした OpenFOAM を有償で提供している。ビルドの仕方 が公開されている (OpenFOAM 2.1.x on Windows 64-bit with MS MPI)。 blueCFDWindows ネイティブな OpenFOAM + α。代理店 (インテック) から入手可能らしい。 古いOpenFOAM for MS windows binary releaseOpenFOAM for MS windows binary release Windows ネイティブな OpenFOAM。1.5 ベース。いくつかのソルバーが移植済みらしい。 OpenFOAM 1.6 binary for win32Windows ネイティブな OpenFOAM 1.6。パラレルには対応していない。 OpenFOAM 1.7.0 for Win32Windows ネイティブな OpenFOAM 1.7。パラレルにも対応しているらしい。 気になるもの
OpenFOAM extensionsOpenFOAM 拡張版。 パッケージは SVN あるいは GIT を使って入手。"Develop" に入手方法が書いてある。
PyFoamPython で OpenFOAM のデータを操作したりできる。計算中の残差の変化を gnuplot で表示するコマンドなどがある。 swak4Foam複雑な境界条件を設定できるツールなどが含まれる。 pythonFluOpenFOAM の Python ラッパー。 Helyx-OSOpenFOAM 用 GUI ツール。 ソースコードを読むためのツールソルバーを使うだけなら必要ないが、ソースコードを理解したいのなら、それ専用のツールを使ったほうがよい。クラスの定義への移動などがとても楽にできる。 プロジェクト作成で、プロジェクトのディレクトリが OpenFOAM のディレクトリになるようにしてやればよい。ファイルが大量にあるので、プロジェクト作成には時間がかかる。 コードを直接読まずに、Doxygen の文書を参照するという手もある。 日本語マニュアルOpenFOAM の日本語マニュアルは ここ (オープン CAE 学会) から入手可能。製本版もあり。 関連リンク
関連記事 | |
| PENGUINITIS Yuu Kasuga | |