この記事は流体解析のオープンソースソフトウェアであるOpenFOAMのバージョンv2606を,Rocky Linux 8.xにインストールした際の手順を備忘録としてまとめたものです.
OpenFOAMのダウンロード
OpenFOAMのバイナリパッケージ及びソースコードは以下のサイトから入手できます.
1つめのサイトはOpenCFDによるものです.一方,2つめのサイトはOpenFOAM Foundationによるものです.リリースされた年月でバージョンがついてるもの,すなわち今回のv2606(2026年6月リリース)は前者のOpenCFDのサイトから入手できます.
インストールの種類
OpenCFDのサイトでは,Windows,Mac,Linuxのバイナリがダウンロードできます.Windowsでは,Windows Subsystem for Linux (WSL)によるインストールもできます.ソースからビルドする方法については,レポジトリに最新の情報が掲載されています.この記事ではOpenFOAMをRocky Linux 8.xにソースからビルドすることを試みます. Rocky Linux 8.xではソースからビルドする以外に, yumによるパッケージインストールやspackによるビルドもできます.
インストールの方針
- OpenFOAMはコンパイラやライブラリの要件があり,システムにインストール済みのものではバージョンが古いことがあります.システムにインストール済みのコンパイラ・ライブラリはアップデートせずに,OpenFOAMのサードパーティディレクトリで別途ビルドして環境構築を行うことにします(もとのシステム環境を汚さない).→Rocky Linuxに移行してコンパイラのバージョンは要件を満たしていました.
- 通常のデスクトップPCへのインストールでは
$Homeにインストールすることがよくありますが、今回は他のユーザも利用する計算サーバへのインストールを想定し,/opt以下にインストールします.
インストール手順の概要
- 管理者権限で必要なrpmパッケージをダウンロード・インストールする.
- OpenFOAM本体,サードパーティのビルドに必要となるソースパッケージをダウンロードし,展開する.
- 環境設定ファイル・ビルドスクリプトを編集する.
- サードパーティ(ツール,ライブラリ)のビルドする.
- OpenFOAM本体をビルドする.
- ビルドしたOpenFOAM本体(ソルバー)の動作検証を行う.
- 可視化に用いるParaViewをビルドする.
- 流体解析の一連の流れである,前処理(メッシュ生成),計算実行, 後処理(可視化)ができることを確認する.
手順7.のParaViewのビルドは失敗することが多々あり,どうしてもうまくいかないときはあきらめます.ParaViewは Rocky Linuxサーバ以外にも別途インストールできるので,計算データを手元の環境にダウンロードして可視化を行うことができます.
必要なrpmパッケージのインストール
必要なパッケージは以下のとおりです.
- git, gcc-c++, bison, flex, m4, glibc-devel, glibc-devel.i686, zlib-devel
管理者権限でyumを使って上記のパッケージをインストールします.
$ yum install gcc gcc-c++ bison flex m4 glibc-devel glibc-devel.i686 zlib-devel
OpenFOAMソースパッケージのダウンロード・展開
OpenFOAMのパッケージは本体ソースコードとサードパーティパッケージの2種類から構成されています.ここでは異なるバージョンも管理できるように/opt/OpenFOAMというディレクトリを作成し,その下にwgetでダウンロードして展開します.
$ mkdir /opt/OpenFOAM
$ cd /opt/OpenFOAM
$ wget https://dl.openfoam.com/source/v2606/OpenFOAM-v2606.tgz
$ tar zxvf OpenFOAM-v2606.tgz
$ wget https://dl.openfoam.com/source/v2606/ThirdParty-v2606.tar.gz
$ tar zxvf ThirdParty-v2606.tar.gz
認証の関係でHTTPSのダウンロードができない場合は,--no-check-certificateをオプションを付けるか,.wgetrcの設定などによって回避してください.
各パッケージを展開したのちのディレクトリ・ファイルの構成は以下のようになります.
OpenFOAM-v2606/
Allwmake CODE_OF_CONDUCT.md META-INFO doc plugins
Allwmake-modules CONTRIBUTING.md README.md etc src
Allwmake-plugins CONTRIBUTORS.md applications etc-mingw tutorials
CITATION.cff LICENSE.md bin modules wmake
ThirdParty-v2606/
Allclean makeAdios2 makeLLVM makeParaView
Allwmake makeCCMIO makeMETIS makeParaView.example
BUILD.md makeCGAL makeMGridGen makeQt
COPYING makeCmake makeMPICH makeSCOTCH
Environ.md makeFFTW makeMVAPICH makeUMPIRE
README.md makeGcc makeMesa makeVTK
Requirements.md makeGperftools makeMesa.example makeVTK.example
SOURCES.md makeHDF5 makeOPENMPI makeZLIB
etc makeHYPRE makeOPENMPI.example minCmake
makeADIOS makeKAHIP makePETSC sources
OpenFOAMのビルド方法はOpenFOAM® Quick Build Guideに掲載されていますが,展開したOpenFOAM-v2606及びThirdParty-v2606にあるREADME.md,Requirements.md,BUILD.md, Environ.mdを熟読し,SOURCES.txtもチェックします.
最小限のシステム要件
公式サイトで指定されている要件は以下のとおりです.
- gcc: 7.5.0 (最小限、必ずしも推奨されるわけではない)
- cmake: 3.8 (ParaViewとCGALのビルドに必要)
- boost: 1.48 (CGALのビルドに必要)
- fftw: 3.3.7 (FFTに関する機能を使う場合は必要)
- paraview: 5.6.3 (可視化用)
- Qt: 5.9 (ParaViewビルドに必要)
元のOSシステムのgcc, cmake, openmpiのバージョンは以下のコマンドで確認できます.
$ gcc --version
$ cmake --version
$ orterun --version
私の環境では, gccは8.5.0,cmakeは3.26.5,openmpiは1.7.3でした. gccとcmakeは要件を満たしているのでThirdPary以下でビルドする必要はなさそうです.
サードパーティパッケージに必要なソースのダウンロード・展開
上記のThirdParty-v2606以下で必要となるコンパイラ・ライブラリは以下のとおりです
(BUILD.mdにダウンロード先の記載があります).
- gcc-7.5, gmp-6.2.0, mpfr-4.0.2, mpc-1.1.0, openmpi-4.1.2, scotch_6.1.0, boost_1_74_0, CGAL-4.14.3, cmake-3.8.2(ParaView 5.7-5.8利用にはcmake-3.10が必要), qt-5.6.3 or qt-5.9.3 (ParaView 5.9にはqt-5.12以上), fftw-3.3.10, libccmio-2.6.1, kahip-3.15, ADIOS2-2.10.1
コンパイラはGCC以外のintelコンパイラなどでも可能です.
GCC
今回はシステムのコンパイラを使うのでダウンロード不要です.
GNUライブラリ(gmp, mpfr, mpc)
今回はシステムのコンパイラを使うのでダウンロード不要です.
OpenMPI
sources以下に用意されています.
Scotch
sources以下に用意されています.
Boost
sources以下に用意されています.
CGAL
sources以下に用意されています.
Cmake
今回はシステムのコンパイラを使うのでダウンロード不要です.
Qt (qmake)
$ wget https://download.qt.io/archive/qt/5.12/5.12.11/single/qt-everywhere-src-5.12.11.tar.xz
$ tar Jxvf qt-everywhere-src-5.12.11.tar.xz
$ mv qt-everywhere-src-5.12.11 qt-everywhere-opensource-src-5.12.11
FFTW
sources以下に用意されています.
libccmio
STAR-CCM+のメッシュコンバータが必要な場合のみビルドします.以前のダウンロード先が無くなってしまったので,foam-extendから持ってきます.
$ wget https://sourceforge.net/projects/foam-extend/files/ThirdParty/libccmio-2.6.1.tar.gz
$ tar zxvf libccmio-2.6.1.tar.gz
ParaView
sources以下に用意されています.
ADIOS2
sources以下に用意されています.
環境設定ファイル・ビルドスクリプトを編集
OpenFOAM本体の環境設定
OpenFOAM本体の環境設定を,viやemacsなどの適当なエディタで編集します.シェルはbash利用で説明します.
$ vi ../OpenFOAM-v2606/etc/bashrc
確認・修正箇所
# [WM_COMPILER_TYPE] - Compiler location:
# = system | ThirdParty
export WM_COMPILER_TYPE=system
メッシュのラベルサイズを32ビットから64ビットにしたい場合は以下のように変更してください.
# [WM_LABEL_SIZE] - Label size in bits:
# = 32 | 64
export WM_LABEL_SIZE=64
# [WM_MPLIB] - MPI implementation:
# = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPI | MPICH | MPICH-GM |
# HPMPI | CRAY-MPICH | FJMPI | QSMPI | SGIMPI | INTELMPI | USERMPI
# Specify SYSTEMOPENMPI1, SYSTEMOPENMPI2 for internal tracking (if desired)
# Can also use INTELMPI-xyz etc and define your own wmake rule
export WM_MPLIB=OPENMPI
# [projectDir] - directory containing this OpenFOAM version.
# \- When this file is located as $WM_PROJECT_DIR/etc/bashrc, the next lines
# should work when sourced by BASH or ZSH shells. If this however fails,
# set one of the fallback values to an appropriate path.
#
# This can be removed if an absolute path is provided for WM_PROJECT_DIR
# later on in this file
# --
projectDir="${BASH_SOURCE:-${ZSH_NAME:+$0}}";
[ -n "$projectDir" ] && projectDir="$(\cd $(dirname $projectDir)/.. && \pwd -L)" ||\
#projectDir="$HOME/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
projectDir="/opt/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
# projectDir="/usr/local/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
コンパイラはシステムのものを使うので,コンパイラ・GNUライブラリの指定を変更する必要はありません.
GCCビルドの設定
Gccのビルドは行わないのでスキップします.
CGALビルドの設定
CGALのビルドスクリプトを確認します.
$ vi makeCGAL
確認箇所
# CGAL, boost and gmp/mpfr versions from OpenFOAM etc/config.sh files.
# Get compiler first and let CGAL config override GMP and MPFR
_foamConfig compiler
_foamConfig CGAL
BOOST_PACKAGE="${boost_version:-boost-system}"
GMP_PACKAGE="${gmp_version:-gmp-system}"
MPFR_PACKAGE="${mpfr_version:-mpfr-system}"
CGAL_PACKAGE="$cgal_version"
OpenFOAM本体でのCGALの設定を確認します.
vi ../OpenFOAM-v2606/etc/config.sh/CGAL
確認箇所
boost_version=boost_1_74_0
cgal_version=CGAL-4.14.3
FFTWビルドの設定
FFTWのビルドスクリプトを確認します.
vi makeFFTW
確認箇所
# Obtain version from OpenFOAM etc/config.sh file:
_foamConfig FFTW
PACKAGE="${fftw_version:-none}"
OpenFOAM本体でのFFTWの設定を確認します.
vi ../OpenFOAM-v2606/etc/config.sh/FFTW
確認箇所
fftw_version=fftw-3.3.10
export FFTW_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$fftw_version
サードパーティのビルド
はじめにOpenFOAMの環境設定を読み込みます.
$ . /opt/OpenFOAM/OpenFOAM-v2606/etc/bashrc
このとき,下記のようなメッセージが出力されますが,OpenFOAMのビルドがまだなので無視して進めます.
No completions for /home/cfd/OpenFOAM/OpenFOAM-v2606/platforms/linux64GccDPInt32Opt/bin
[ignore if OpenFOAM is not yet compiled]
GCCのビルド
スキップします.
Cmakeのビルド
スキップします.
サードパーティパッケージのビルド
必要なパッケージのビルドをAllwmakeで行います.実行する前に念のためOpenFOAMの環境設定を読み込みます.
$ . /opt/OpenFOAM/OpenFOAM-v2606/etc/bashrc
$ ./Allwmake
ADIOS2のビルド時に以下のようなエラーが出てしまいます.
CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:19 (project)
-- Configuring incomplete, errors occurred!
Error building: ADIOS2-2.10.1
---------------------------------------------------
Optional component (ADIOS2) had build issues
OpenFOAM will nonetheless remain largely functional
---------------------------------------------------
========================================
Done ThirdParty Allwmake
========================================
Cmakeに対するエラーなのですが現状解決できていないのでそのまま進めます.
以上のサードパーティのビルドが終わったら,OpenFOAM本体ビルドのための条件を満たしているかどうかを以下のコマンドでチェックします.
$ foamSystemCheck
System check: PASS
==================
Can continue OpenFOAM installation.
PASSが表示されたら,OpenFOAM本体のビルドに移ります.
OpenFOAM本体のビルド
再度OpenFOAMの環境設定を読み込んでからビルドします.Allwmakeスクリプトを利用しますが,-jオプションで並列コンパイルのcpu数を指定できるので,環境に合わせて設定します.また,エイリアスコマンドfoamを用いると,OpenFOAMのプロジェクトディレクトリ(インストールディレクトリ)$WM_PROJECT_DIRに移動できます.
$ . /opt/OpenFOAM/OpenFOAM-v2606/etc/bashrc
No completions for /opt/OpenFOAM/OpenFOAM-v2606/platforms/linux64GccDPInt32Opt/bin
[ignore if OpenFOAM is not yet compiled]
$ foam
$ ./Allwmake –j4
もしエラーが出て正常終了しないときは,エラーメッセージから足りないライブラリがないかどうかなどを確認します.
OpenFOAM本体のビルド検証
OpenFOAM本体のビルドが正常終了したら,環境設定読み込みを再度行い,テストのためのプログラムを実行します.
$ . /opt/OpenFOAM/OpenFOAM-v2606/etc/bashrc
$ foamInstallationTest
ライブラリパスなどの確認結果が出力され,最後に以下のような要約が出力されればOKです.
Summary
-------------------------------------------------------------------------------
Base configuration ok.
Critical systems ok.
Done
gcc -vのバージョン出力で日本語が含まれる場合は上記のfoamInstallationTestがエラーとなるので,その前に
export LANG=C
などとして日本語を使用しないようにしてください.
ParaViewのビルド
Qtのビルド
自分でビルドしなくても問題ないので(逆にエラーとなりやすい),スキップします.
ParaViewのビルド
次にParaViewをビルドします.今回はParaView 6.1.1をビルドします.
$ ./makeParaView
モジュールparaviewができてビルド完了です.
$ ls platforms/linux64Gcc/ParaView-6.1.1/bin/paraview
platforms/linux64Gcc/ParaView-6.1.1/bin/paraview
OpenFOAMでの前処理,計算実行,後処理の動作確認
上記のインストール作業がすべて終了したら,OpenFOAMによって流体解析の一連の流れである,前処理(メッシュ作成),計算実行,後処理(可視化)が正常にできるかどうかを,チュートリアルケースであるpitzDailyを利用して確かめます.
$ cd
$ . /opt/OpenFOAM/OpenFOAM-v2606/etc/bashrc
$ mkdir –p $FOAM_RUN
$ run
$ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily ./
$ cd pitzDaily
$ blockMesh
$ simpleFoam
$ paraFoam
ここで出てくるOpenFOAMのコマンドの意味は以下のとおりです.
-
run: ユーザの計算実行ディレクトリ$FOAM_RUNに移動する. -
blockMesh: 基本的なメッシュを生成する. -
simpleFoam: 非圧縮性流体計算用の定常解析ソルバーsimpleFoamの実行. -
paraFoam: OpenFOAMの計算出力をParaViewに読み込める形式に変換し,ParaViewを起動して可視化する.
ここで行った動作確認では並列計算の確認ができていません.並列計算を行うチュートリアルケースはどれも計算時間がかかるので気軽に動作確認ができませんが,比較的軽い計算としてpipeCyclicを実行してみます.並列数はデフォルでは5であり,利用しているシステムのCPU数(コア数)が少ない場合はエラーとなるので,その場合はsystem/decomposeParDictを修正して並列数を変更します.
$ run
$ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pipeCyclic ./
$ cd pipeCyclic
$ ./Allrun
Allrunはメッシュ生成から解析条件設定・計算実行を自動的に行うスクリプトです.pitzDaily及びpipeCyclicがエラーなしで計算実行できれば無事にインストール完了です.