LoginSignup
8
8

More than 5 years have passed since last update.

CentOSにOpenFOAM 4.0をインストール

Posted at

この記事は流体解析のオープンソースソフトウェアであるOpenFOAMのバージョン4.0を,CentOSにインストールした際の手順を備忘録としてまとめたものです.

OpenFOAMのダウンロード

OpenFOAMのバイナリパッケージ及びソースコードは以下のサイトから入手できます.

1つめのサイトはESIグループによるものでLinux版以外にもWindows版も入手できます.一方,2つめのサイトはOpenFOAM Foundationによるものであり,バージョン4.0は現在の時点(2016/6)でこちらのサイトからのみ入手できます.なぜ2つのグループがあるのかはいろいろ経緯があるそうで,私も良く知りません.

インストールの種類

OpenFOAM Foundationのサイトでは,ubuntuにapt-getでインストールする方法と,ソースからビルドする方法が掲載されています.ソースからビルドする方法については,ubuntu及びSuSEに対する手順がまとめられていますが,Red Hat/CentOSに関するインストール情報は載っていません.しかしながら,CentOSは数値計算用サーバのOSとして採用されることが多いため,この記事ではOpenFOAMをCentOS上でソースからビルドすることを試みます.CentOSのバージョンは6.xを対象としています.

インストールの方針

  • OpenFOAMはコンパイラやライブラリの要件があり,システムにインストール済みのものではバージョンが古いことがあります.システムにインストール済みのコンパイラ・ライブラリはアップデートせずに,OpenFOAMのサードパーティディレクトリで別途ビルドして環境構築を行うことにします(もとのシステム環境を汚さない).
  • 通常のデスクトップPCへのインストールでは$Homeにインストールすることがよくありますが、今回は他のユーザも利用する計算サーバへのインストールを想定し,/opt以下にインストールします.

インストール手順の概要

  1. 管理者権限で必要なrpmパッケージをダウンロード・インストールする.
  2. OpenFOAM本体,サードパーティのビルドに必要となるソースパッケージをダウンロードし,展開する.
  3. 環境設定ファイル・ビルドスクリプトを編集する.
  4. サードパーティ(ツール,ライブラリ)のビルドする.
  5. OpenFOAM本体をビルドする.
  6. ビルドしたOpenFOAM本体(ソルバー)の動作検証を行う.
  7. 可視化に用いるParaView及び可視化用データリーダーのビルドする.
  8. 流体解析の一連の流れである,前処理(メッシュ生成),計算実行, 後処理(可視化)ができることを確認する.

手順7.のParaViewのビルドは失敗することが多々あり,どうしてもうまくいかないときはあきらめます.ParaViewはCentOSサーバ以外にも別途インストールできるので,計算データを手元の環境にダウンロードして可視化を行うことができます.

必要な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種類から構成されています.ソースパッケージをOpenFOAM Foundationのサイトからダウンロードするとバージョンが'4.0'と付いているtar.gzファイルが入手できますが,gitを使うと'4.x'になっています.ここではgitを使ってパッケージをcloneし,バージョン名を'4.x'から'4.0'に変更します.

$ mkdir /opt/OpenFOAM
$ cd /opt/OpenFOAM
$ git clone git://github.com/OpenFOAM/OpenFOAM-4.x.git
$ mv OpenFOAM-4.x OpenFOAM-4.0
$ git clone git://github.com/OpenFOAM/ThirdParty-4.x.git
$ mv ThirdParty-4.x ThirdParty-4.0

各パッケージを展開したのちのディレクトリ・ファイルの構成は以下のようになります.

  • OpenFOAM-4.0/
Allwmake    README.org      bin/        etc/        tutorials/
COPYING     applications/   doc/        src/        wmake/
  • ThirdParty-4.0/
Allclean            README.org      makeLLVM
Allwmake            etc/            makeParaView
AllwmakeLibccmio    makeCGAL        makeParaView3
COPYING             makeCmake       scotch_6.0.3/
ParaView-5.0.1/     makeGcc
README.html         makeGperftools

OpenFOAMのインストール方法はOpenFOAM Foundationに詳しく掲載されていますが,展開したOpenFOAM-4.0及びThirdParty-4.0にあるReadme.orgも熟読します.

サードパーティパッケージに必要なソースのダウンロード・展開

上記のThirdPart-4.0以下で必要となるコンパイラ・ライブラリは以下のとおりです.

  • gcc-4.8.5, gmp-5.1.2, mpfr-3.1.2, mpc-1.0.1, openmpi-1.10.2, scotch_6.0.3, boost_1_58_0, CGAL-4.8, cmake-3.2.1, qt-4.8.6

コンパイラはGCC以外のintelコンパイラなどでも可能ですが,OpenFOAMの実行速度はそれほど変わらないようです.GCCのバージョンは4.8.5より新しいものでも大丈夫ですが,後で出てくる設定を合わせて変更する必要があります.QtのバージョンはCentOSに元々入っているものはバージョンが古く,4.7以上が必要とされます.

GCC

$ cd ThirdParty-4.0.x
$ wget https://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gz
$ tar zxvf gcc-4.8.5.tar.gz

GNUライブラリ(gmp, mpfr, mpc)

$ wget http://ftp.gnu.org/gnu/gmp/gmp-5.1.2.tar.bz2 
$ tar jxvf gmp-5.1.2.tar.bz2
$ wget http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.gz 
$ tar zxvf mpfr-3.1.2.tar.gz
$ wget http://ftp.gnu.org/gnu/mpc/mpc-1.0.1.tar.gz 
$ tar zxvf mpc-1.0.1.tar.gz

OpenMPI

$ wget https://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.2.tar.gz
$ tar zxvf openmpi-1.10.2.tar.gz

認証の関係でHTTPSのダウンロードができない場合は,--no-check-certificateをオプションを付けるか,.wgetrcの設定などによって回避してください.

Scotch

$ wget https://gforge.inria.fr/frs/download.php/file/34099/scotch_6.0.3.tar.gz
$ tar zxvf scotch_6.0.3.tar.gz

Boost

$ wget http://sourceforge.net/projects/boost/files/boost/1.58.0/boost_1_58_0.tar.gz
$ tar zxvf boost_1_58_0.tar.gz

CGAL

$ wget https://github.com/CGAL/cgal/releases/download/releases/CGAL-4.8/CGAL-4.8.tar.xz
$ tar Jxvf CGAL-4.8.tar.xz

Cmake

$ wget https://cmake.org/files/v3.2/cmake-3.2.1.tar.gz
$ tar zxvf cmake-3.2.1.tar.gz

Qt (qmake)

$ wget https://download.qt.io/archive/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.tar.gz
$ tar zxvf qt-everywhere-opensource-src-4.8.6.tar.gz

環境設定ファイル・ビルドスクリプトを編集

OpenFOAM本体の環境設定を,viemacsなどの適当なエディタで編集します.シェルはbash利用で説明します.

$ vi ../OpenFOAM-4.0/etc/bashrc

修正箇所

export WM_PROJECT=OpenFOAM
export WM_PROJECT_VERSION=4.0
# Please set to the appropriate path if the default is not
correct.
#
[ $BASH_SOURCE ] && \
export FOAM_INST_DIR=${BASH_SOURCE%/*/*/*} || \
# export FOAM_INST_DIR=$HOME/$WM_PROJECT
# export FOAM_INST_DIR=~$WM_PROJECT
export FOAM_INST_DIR=/opt/$WM_PROJECT
# export FOAM_INST_DIR=/usr/local/$WM_PROJECT
#- Compiler location:
#    WM_COMPILER_TYPE= system | ThirdParty (OpenFOAM)
export WM_COMPILER_TYPE=ThirdParty
#- MPI implementation:
#    WM_MPLIB = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPICH | MPICH-GM | HPMPI
#               | MPI | QSMPI | SGIMPI
export WM_MPLIB=OPENMPI

コンパイラ・GNUライブラリの指定は上記のパッケージをダウンロードしていれば問題ありませんが,念のため確認します.

$ more ../OpenFOAM-4.0/etc/config.sh/compiler

確認箇所

case "$WM_COMPILER_TYPE" in
OpenFOAM | ThirdParty)

    # Default versions of GMP, MPFR and MPC, override as necessary
    gmp_version=gmp-5.1.2
    mpfr_version=mpfr-3.1.2
    mpc_version=mpc-1.0.1

    case "$WM_COMPILER" in
    Gcc | Gcc48)
        gcc_version=gcc-4.8.5
        ;;

CGALのビルドスクリプトを編集します.

$ vi makeCGAL

変更箇所

cgalPACKAGE=${cgal_version:-CGAL-4.8}
boostPACKAGE=boost_1_58_0
gmpPACKAGE=gmp-5.1.2
mpfrPACKAGE=mpfr-3.1.2

OpenFOAM本体でのCGALの設定を変更します.

vi ../OpenFOAM-4.0/etc/config.sh/CGAL

変更箇所

boost_version=boost_1_58_0
cgal_version=CGAL-4.8

サードパーティのビルド

GCCのビルド

はじめにOpenFOAMの環境設定を読み込みます.

$ . /opt/OpenFOAM/OpenFOAM-4.0/etc/bashrc

このとき,下記のようなメッセージが出力されますが,GCCがビルドがまだなので当たり前のエラーであり,GCCのビルドを進めます.

Warning in /opt/OpenFOAM/OpenFOAM-4.0/etc/config.sh/
settings:
    Cannot find /opt/OpenFOAM/ThirdParty-4.0/platforms/linux64/gcc-4.8.5 installation.
    Please install this compiler version or if you wish to use the system compiler,
    change the 'WM_COMPILER_TYPE' setting to 'system'
$ ./makeGcc

Cmakeのビルド

Cmakeをビルドします.

./makeCmake

残りのサードパーティパッケージのビルド

Gcc, Cmakeのビルドが完了したら,残りのパッケージのビルドをAllwmakeで行います.実行する前にもう一度OpenFOAMの環境設定を読み込みます.

$ . /opt/OpenFOAM/OpenFOAM-4.0/etc/bashrc 
$ ./Allwmake

OpenFOAM本体のビルド

再度OpenFOAMの環境設定を読み込んでからビルドします.Allwmakeスクリプトを利用しますが,-jオプションで並列コンパイルのcpu数を指定できるので,環境に合わせて設定します.

$ . /opt/OpenFOAM/OpenFOAM-4.0/etc/bashrc
$ cd /opt/OpenFOAM/OpenFOAM-4.0/
$ ./Allwmake –j4

もしエラーが出て正常終了しないときは,エラーメッセージから足りないライブラリがないかどうかなどを確認します.

OpenFOAM本体のビルド検証

OpenFOAM本体のビルドが正常終了したら,環境設定読み込みを再度行い,テストのためのプログラムを実行します.

$ . /opt/OpenFOAM/OpenFOAM-4.0/etc/bashrc 
$ foamInstallationTest

ライブラリパスなどの確認結果が出力され,最後に以下のような要約が出力されればOKです.

Summary
-------------------------------------------------------------------------------
Base configuration ok.
Critical systems ok.

Done

ParaView及びParaView Readerのビルド

Qtのビルド

OpenFOAM 3.0.xまではQtをビルドするためのスクリプトmakeQtが用意されていましたが,OpenFOAM 4.0ではなぜか見当たりません.3.0.xのものが利用できるので,QtFunctionsという設定ファイルと併せてコピーし,makeQtを編集します.

$ cd /opt/OpenFOAM
$ git clone git://github.com/OpenFOAM/ThirdParty-3.0.x.git
$ cd /opt/OpenFOAM/ThirdParty-4.0
$ cp /opt/OpenFOAM/ThirdParty-3.0.x/makeQt ./
$ cp /opt/OpenFOAM/ThirdParty-3.0.x/etc/tools/QtFunctions ./etc/tools/ 
$ vi makeQt

変更箇所

qtVERSION=4.8.6
qtTYPE=qt-everywhere-opensource-src

Qtをビルドします.

$ ./makeQt

次にParaViewをビルドしますが,ビルドスクリプトmakeParaViewの中ではqmake(Qt)及びCmakeのパスが設定されていないので追記します.

$ vi makeParaView

追記箇所

# Set the path to the Qt-4.5 (or later) qmake if the system Qt is older
QMAKE_PATH="/opt/OpenFOAM/ThirdParty-4.0/platforms/linux64Gcc/qt-4.8.6/bin/"

# Set the path to cmake
CMAKE_PATH="/opt/OpenFOAM/ThirdParty-4.0/platforms/linux64Gcc/cmake-3.2.1/bin"

また,ParaViewでPythonスクリプトを使いたい場合は,makeParaView中でwithPYTHON=trueとし,PYTHON_LIBRARY=""に適切なパスを設定します(今回は設定しない).

ParaViewをビルドします.今回のビルドスクリプトではParaView 5.0.1がビルドされます.

$ ./makeParaView

引き続いてParaView Readerをビルドします.一度クリーンしてからビルドします.

$ cd $FOAM_UTILITIES/postProcessing/graphics/PVReaders 
$ ./Allwclean
$ ./Allwmake

ここで$FOAM_UTILITIESはOpenFOAMのユーティリティがインストールされたパスを表すOpenFOAMの環境変数です.

OpenFOAMでの前処理,計算実行,後処理の動作確認

上記のインストール作業がすべて終了したら,OpenFOAMによって流体解析の一連の流れである,前処理(メッシュ作成),計算実行,後処理(可視化)が正常にできるかどうかを,チュートリアルケースであるcavityを利用して確かめます.

$ . /opt/OpenFOAM/OpenFOAM-4.0/etc/bashrc
$ mkdir –p $FOAM_RUN
$ run
$ cp –r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity ./ 
$ cd cavity
$ blockMesh
$ icoFoam
$ paraFoam

ここで出てくるOpenFOAMのコマンドの意味は以下のとおりです.

  • run: ユーザの計算実行ディレクトリ$FOAM_RUNに移動する.
  • blockMesh: 基本的なメッシュを生成する.
  • icoFoam: 非圧縮性流体計算用の基本ソルバーicoFoamの実行.
  • paraFoam: OpenFOAMの計算出力をParaView Readerによって読み込み,ParaViewを起動して可視化する.

ここで行った動作確認では並列計算の確認ができていません.並列計算を行うチュートリアルケースはどれも計算時間がかかるので気軽に動作確認ができませんが,比較的軽い計算としてpipeCyclicを実行してみます(並列数はデフォルでは5).

$ run
$ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pipeCyclic ./
$ cd pipeCyclic
$ ./Allrun

Allrunはメッシュ生成から解析条件設定・計算実行を自動的に行うスクリプトです.cavity及びpipeCyclicがエラーなしで計算実行できれば無事にインストール完了です.

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8