OpenFOAM のインストール

2021年1月5日

はじめに

OpenFOAM のインストールについて。

動作環境

OpenFOAM の動作環境は以下の通り。

  • OpenCFD 版:
    • Linux: Ubuntu、openSUSE、RedHat 系、Docker
    • Windows: Docker、WSL、MinGW
    • macOS: Docker
  • OpenFOAM Foundation 版:
    • Linux: Ubuntu、Docker
    • Windows: WSL
    • macOS: Docker

VirtualBox などの仮想環境上の Linux を使えば、Windows、macOS でも Linux 版を 利用可能。

パッケージの取得

OpenCFD 版

OpenFOAM Foundation 版

非公式 Linux 版パッケージ

非公式 Windows 版パッケージ

OpenCFD 版では OpenFOAM v1906 から WSL 用の Windows バイナリが提供されている。また、v2006 からは MinGW 版バイナリも提供されている。

OpenCFD 版と OpenFOAM Foundation 版

現在、OpenFOAM Foundation 版がベースで、OpenCFD 版がそれの修正・機能拡張版となっている。OpenCFD 版は当初 "OpenFOAM+" ("OpenFOAM v1606+" など) という名前だったが、v1704 から単に "OpenFOAM v1704" となった (OpenFOAM v1704 は OpenFOAM-dev ベース)。

OpenCFD 版のほうが検証をきちんとやっているようなので、OpenCFD 版を使った方がよいだろう。

Linux ディストリビューションの選択

Linux ディストリビューションは、ソースからコンパイルするなら基本的にどれでも動くはずだが、当然、新しいバージョンは比較的新しい開発用パッケージを要求してくる。

バイナリパッケージは、現在は Ubuntu 用のみが提供されている。インストールで悩みたくなければ Ubuntu 系のディストリビューションを選択するのが無難である。

バイナリ版のインストール

OpenFOAM v2012 (OpenCFD 版)

以下のページの指示に従えばよい。

ただし、バイナリ版ではいくつか使えなくなっている機能があることがあるようである。

OpenFOAM v8 (Foundation 版)

Ubuntu 用であれば、こちら の指示に従えばよい。

下の方にあるインストールメモも参照。

ソースからコンパイル

コンパイラの用意

コンパイルにはそれなりのバージョンの GCC が必要。

ソースパッケージの取得

公式ページから、以下のようなパッケージのペアを取得する。

ソースパッケージ

  • OpenFOAM-2.3.1.tgz
  • ThirdParty-2.3.1.tgz

OpenFOAM のコンパイル

パッケージを展開

$ mkdir ~/OpenFOAM
$ tar xvzf OpenFOAM-2.3.1.tgz -C ~/OpenFOAM
$ tar xvzf ThirdParty-2.3.1.tgz -C ~/OpenFOAM

環境設定として、シェルが bash の場合、~/.bashrc に以下を追加する。

. ~/OpenFOAM/OpenFOAM-2.3.1/etc/bashrc

~/.bashrc を読み込む。

$ . ~/.bashrc

OpenFOAM のコンパイル。

$ cd $WM_PROJECT_DIR
$ ./Allwmake

ParaView の用意

ParaView は ThirdParty でコンパイルする方法もあるが、公式バイナリ をダウンロードしてきたほうが早い。ただし、あまり新しすぎるとうまく動かないことがあるので、ほどほどのバージョンにする。

OpenFOAM で ParaView を使う場合は、ふつうは paraFoam を使う。公式バイナリを使う場合は、paraFoam に "-builtin" オプションをつけて実行するが、毎度は面倒なので、シェルの設定で次のように alias を設定しておけばよい。

alias paraFoam="paraFoam -builtin"

実行確認

$ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily .
$ cd pitzDaily
$ blockMesh
$ simpleFoam
$ paraFoam

ソルバーのコンパイルのテスト

$ cp -r $FOAM_SOLVERS/incompressible/simpleFoam .
$ cd simpleFoam
$ vi Make/files

ここで、"EXE = ..." の行を以下のように書き換える。

EXE = mySimpleFoam

コンパイル。

$ wmake

実行。

$ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily .
$ blockMesh -case pitzDaily
$ ./mySimpleFoam -case pitzDaily

上手くいかない場合

  • エラーメッセージから必要なプログラムやライブラリを推測し、インストールする。

どうしてもインストールが上手くいかない場合

あきらめよ。深追いは禁物。Linux のディストリビューションを変えるとあっさり上手くいくことがある。OpenFOAM インストール済みの Linux (DEXCS for OpenFOAM、CAELinux など) の導入を考える。

任意の場所へのインストール

※OpenCFD 版は v1812 から設定が不要になった。

初期設定では OpenFOAM は "$HOME/OpenFOAM" にインストールされると想定されている。任意の場所にインストールする場合は $WM_PROJECT_DIR/etc/bashrc の FOAM_INST_DIR の値を変更する。

export WM_PROJECT=OpenFOAM

...

#export FOAM_INST_DIR=$HOME/$WM_PROJECT
export FOAM_INST_DIR=/opt/$WM_PROJECT

古いバージョン (3.0.x 以前) では foamInstall の値を変更する。

#foamInstall=$HOME/$WM_PROJECT
foamInstall=/opt/$WM_PROJECT

システムの Open MPI を使う

システムにインストールされている Open MPI を使う場合、$WM_PROJECT_DIR/etc/bashrc の WM_MPLIB に "SYSTEMOPENMPI" を指定する。

#export WM_MPLIB=OPENMPI
export WM_MPLIB=SYSTEMOPENMPI

ただし、環境によってはうまくいかないことがある。次のように、パスを通す必要があるかもしれない。

export PATH=/usr/lib64/openmpi/bin/:$PATH
export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib/:$LD_LIBRARY_PATH

エラーが出る場合

$WM_PROJECT_DIR/etc/bashrc を読み込んだ時、次のようなエラーが出ることがある。

gcc: error: unrecognized command line option '--showme:link'

これは mpicc のエラーである。この場合、OpenFOAM の並列計算がうまくいかないかもしれない。Anaconda (Python のほう) の MPICH のせいで (Anaconda の mpicc が呼び出されてしまって) このエラーが出て、並列計算がうまくいかなかったことがある。Anaconda のパスを一時的に外したら大丈夫だった。

実行に失敗する

ParaView を独自に用意している場合、mpiexec のパスが ParaView のものに上書きされてしまうことがある。その場合、OpenFOAM の並列計算はうまくいかないかもしれない。その場合、ParaView へのパスの優先度を下げるか、あるいは、mpirun を用いる。

コンパイルの高速化

環境変数 WM_NCOMPPROCS に並列数を設定すると、コンパイルが並列で行われるようになる。

$ export WM_NCOMPPROCS=10

複数のバージョンの混在

複数のバージョンを混在させたい場合、各バージョンの設定ファイルを読み込むエイリアスを作っておけばよい。

~/.bashrc

alias openfoam222='. ~/OpenFOAM/OpenFOAM-2.2.2/etc/bashrc'
alias openfoam230='. ~/OpenFOAM/OpenFOAM-2.3.0/etc/bashrc'

インストールメモ

※古いバージョンのメモを参照する場合、リポジトリのパスが変わっている場合があるので注意。

OpenFOAM v2012

OpenFoam v8

OpenFOAM v2006

OpenFOAM v1912

OpenFOAM 7

OpenFOAM v1906

OpenFOAM v1812

OpenFOAM v1806

OpenFOAM 6

OpenFOAM v1712

OpenFOAM 5.0

OpenFOAM v1706

OpenFOAM 1612+

OpenFOAM 4.1

OpenFOAM 1606+

OpenFOAM 4.0

OpenFOAM 3.0+

OpenFOAM 3.0.1

OpenFOAM 3.0.0

OpenFOAM 2.4.0

OpenFOAM 2.3.1

OpenFOAM 2.3.0

OpenFOAM 2.2.2

OpenFOAM 2.2.1

OpenFOAM 2.2.0

OpenFOAM 2.1.1

OpenFOAM 2.1.0

OpenFOAM 2.0.1

OpenFOAM 2.0.0

OpenFOAM 1.7.1

OpenFOAM 1.7.0

OpenFOAM 1.6

OpenFOAM 1.5

OpenFOAM 1.4.1

OpenFOAM 1.3