LoginSignup
7
11

More than 5 years have passed since last update.

CentOSにOpenFOAM 5.0をインストール

Last updated at Posted at 2017-08-04

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

OpenFOAMのダウンロード

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

1つめのサイトはESIグループによるもので,通称plus版と呼ばれるバージョンが入手できます.一方,2つめのサイトはOpenFOAM Foundationによるものであり,今回インストールするバージョン5.0はこちらのサイトから入手できます.

インストールの種類

OpenFOAM Foundationのサイトでは,ubuntuにapt-getでインストールする方法,Dockerを使ってLinuxやMac OSにインストールする方法,ソースからビルドする方法が掲載されています.ソースからビルドする方法については,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サーバ以外にも別途インストールできるので,計算データを手元の環境にダウンロードして可視化を行うことができます.

注意
ParaViewは今回バージョン5.4.0までインストールできるようですが,何かと失敗&面倒であったため,今回の記事では5.0.1をインストールしています.

必要な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のサイトと同様にwgetでダウンロード,tarで展開します.バージョン名が'5.x-version-5.0'となっていますので,公式サイトと同様に'5.0'に変更します.

$ mkdir /opt/OpenFOAM
$ cd /opt/OpenFOAM
$ wget -O - http://dl.openfoam.org/source/5-0 | tar xvz
$ wget -O - http://dl.openfoam.org/third-party/5-0 | tar xvz
$ mv OpenFOAM-5.x-version-5.0 OpenFOAM-5.0
$ mv ThirdParty-5.x-version-5.0 ThirdParty-5.0

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

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

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

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

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

  • gcc-4.8.5, gmp-5.1.2, mpfr-3.1.2, mpc-1.0.1, openmpi-2.1.1, scotch_6.0.3, boost_1_55_0, CGAL-4.8.1, cmake-3.2.1, qt-4.8.7, ParaView-v5.0.1

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

GCC

$ cd ThirdParty-5.0
$ 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/v2.1/downloads/openmpi-2.1.1.tar.bz2
$ tar jxvf openmpi-2.1.1.tar.bz2

認証の関係で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 --no-check-certificate http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.bz2/download
$ tar jxvf boost_1_55_0.tar.bz2

CGAL

$ wget -O CGAL-4.8.1.tar.xz https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-4.8.1/CGAL-4.8.1.tar.xz
$ tar Jxvf CGAL-4.8.1.tar.xz

ファイル名が長い,というエラーが出る場合があるので,上記のように-Oオプションをつけてダウンロードしています.

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.7/qt-everywhere-opensource-src-4.8.7.tar.gz
$ tar zxvf qt-everywhere-opensource-src-4.8.7.tar.gz

ParaView

$ wget --no-check-certificate http://www.paraview.org/files/v5.0/ParaView-v5.0.1-source.tar.gz
$ tar zxvf ParaView-v5.0.1-source.tar.gz
$ mv ParaView-v5.0.1-source ParaView-v5.0.1

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

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

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

修正箇所

export WM_PROJECT=OpenFOAM
export WM_PROJECT_VERSION=5.0

################################################################################
# USER EDITABLE PART: Changes made here may be lost with the next upgrade
#
# FOAM_INST_DIR is the location of the OpenFOAM installation which defaults to
# the directory containing this file if sourced by a bash shell.
#
# Please set to the appropriate path if the default is not correct.
#
[ ${BASH_SOURCE:-$0} ] && \
export FOAM_INST_DIR=$(cd $(dirname ${BASH_SOURCE:-$0})/../.. && pwd -P) || \
# 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-5.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.1}
boostPACKAGE=boost_1_55_0
gmpPACKAGE=gmp-5.1.2
mpfrPACKAGE=mpfr-3.1.2

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

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

変更箇所

boost_version=boost_1_55_0
cgal_version=CGAL-4.8.1

サードパーティのビルド

GCCのビルド

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

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

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

Warning in /opt/OpenFOAM/OpenFOAM-5.0/etc/config.sh/
settings:
    Cannot find /opt/OpenFOAM/ThirdParty-5.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-5.0/etc/bashrc 
$ ./Allwmake

OpenFOAM本体のビルド

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

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

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

OpenFOAM本体のビルド検証

OpenFOAM 4.xまでは,OpenFOAM本体のビルドが正常終了したら,環境設定読み込みを再度行い,テストのためのプログラムfoamInstallationTestを以下のように実行するのが慣例でした.しかし,OpenFOAM 5.0ではfoamInstallationTest無いので以下はスキップします.

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

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-5.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.7
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-5.0/platforms/linux64Gcc/qt-4.8.7/bin/"

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

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

ビルドするバージョンを指定するために,`OpenFOAM-5.0/etc/config.sh/paraview'を編集します.

$ vi ../OpenFOAM-5.0/etc/config.sh/paraview

修正箇所

#- ParaView version, automatically determine major version
#export ParaView_VERSION=3.12.0
#export ParaView_VERSION=4.0.1
#export ParaView_VERSION=4.1.0
#export ParaView_VERSION=4.3.1
#export ParaView_VERSION=4.4.0
#export ParaView_VERSION=5.0.0
export ParaView_VERSION=5.0.1
#export ParaView_VERSION=5.4.0
export ParaView_MAJOR=detect

注意
ParaView 5.0.1以降のビルドでは,OpenGLに関する指定ができます.しかしながら,システムで利用できるOpenGLのバージョンが2.xより古い場合,ビルドできてもParaViewが起動しません.OpenGLのドライバをアップデートするか,もしくは以下のようにOpenGLライブラリ2.x以上の機能を利用しないようにします.

$ vi etc/tools/ParaViewFunctions

修正箇所(コメントアウト)

# Choose the new rendering engine
#addCMakeVariable  "VTK_RENDERING_BACKEND=OpenGL2"

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がエラーなしで計算実行できれば無事にインストール完了です.

7
11
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
7
11