====== OpenFOAM v8 ======
===== Ubuntu 18.04 =====
==== 管理者権限を所有する場合(その1) ====
パッケージからインストールをする手順.
# sh -c "wget -O - https://dl.openfoam.org/gpg.key | apt-key add -"
# add-apt-repository http://dl.openfoam.org/ubuntu
# apt-get update
# apt-get -y install openfoam8
==== 管理者権限を所有する場合(その2) ====
=== 1. 必要なライブラリをインストール===
* OpenFOAMに必要なパッケージ
# apt-get install build-essential flex bison git-core cmake zlib1g-dev libboost-system-dev libboost-thread-dev
libopenmpi-dev openmpi-bin gnuplot libreadline-dev libncurses-dev libxt-dev
* ParaViewに必要なパッケージ
# apt-get install libqt5x11extras5-dev libxt-dev qt5-default qttools5-dev curl
=== 2. OpenFOAMをダウンロード&ディレクトリ名変更===
ディレクトリ名はインストーラのスクリプトで利用されるため,ディレクトリ名を変更したい場合,インストーラの中身を編集する必要がある.
$ mkdir -p $HOME/OpenFOAM
$ cd OpenFOAM
$ wget -O - http://dl.openfoam.org/source/8 | tar xvz
$ mv OpenFOAM-8-version-8 OpenFOAM-8
$ wget -O - http://dl.openfoam.org/third-party/8 | tar xvz
$ mv ThirdParty-8-version-8 ThirdParty-8
wgetがリンク切れの場合,以下からダウンロード.
* {{ :openfoam:openfoam-8.tar.xz |}}
* {{ :openfoam:thirdparty-8.tar.xz |}}
=== 3. インストールの設定 ===
* デフォルトのインストール先は$HOME/OpenFOAMである.インストールディレクトリを変更したい場合,[[v8#インストールディレクトリの変更|インストールディレクトリの変更]]を参照.
*
=== 4. 環境変数等の設定読み込み ===
$ unset C_INCLUDE_PATH CPLUS_INCLUDE_PATH G_BROKEN_FILENAMES G_FILENAME_ENCODING
$ source $HOME/OpenFOAM/OpenFOAM-8/etc/bashrc
並列ビルドのため,WM_NCOMPPROCに並列プロセス数を設定可能である.WM_NCOMPPROCSが定義されていない場合,1プロセスでビルドされる.
$ export WM_NCOMPPROCS=8
=== 5. Third partyライブラリのインストール===
$ foam
$ cd ../ThirdParty-8
$ ./Allwmake
$ ./makeParaView
$ wmRefresh
=== 6. OpenFOAMのインストール ===
$ foam
$ ./Allwmake
==== 管理者権限を所有しない場合 ====
==== 必須ライブラリ ====
管理者権限を所有しない場合でも,gccなどの最低限のライブラリは必須.
最低限のライブラリは以下によりインストール.
# apt install build-essential
未記載
==== 設定ファイルの編集 ====
=== インストールディレクトリの変更 ===
/path/to/install/OpenFOAM-/etc/bashrcの一部を以下のように編集
[ "$BASH" -o "$ZSH_NAME" ] && \
export FOAM_INST_DIR=$(cd $(dirname ${BASH_SOURCE:-$0})/../.. && pwd -P) || \
export FOAM_INST_DIR=/path/to/install
# 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
=== コンパイラの変更 ===
Note: コンパイラを変更する場合,それに依存するライブラリのコンパイラも変更する必要がある
自分用のコンパイラとして,MyCompilerを設定する.ここでは,OpenFOAMのインストールディレクトリは/path/to/install/,versionはと記載する.
a. /path/to/install/OpenFOAM-/etc/bashrcの一部を以下のように編集
...
#export WM_COMPILER=Gcc
export WM_COMPILER=MyCompiler
...
b. /path/to/install/OpenFOAM-/etc/config.sh/compilerを以下のように編集
case "$WM_COMPILER" in
MyCompiler)
export WM_CC='gcc-10'
export WM_CXX='g++-10'
;;
esac
c. MyCompiler用のwakeルールを作成
$ cp -r /path/to/install/OpenFOAM-/wmake/rules/linux64Gcc /path/to/install/OpenFOAM-/wmake/rules/linux64MyCompiler
c-1. /path/to/install/OpenFOAM-/wmake/rules/linux64MyCompiler/cを以下のように編集.
...
cc = ${WM_CC} -m64
...
c-2. /path/to/install/OpenFOAM-/wmake/rules/linux64MyCompiler/c++を以下のように編集.
...
CC = ${WM_CXX} -std=c++11 -m64
...
=== MPIライブラリの変更 ===
デフォルトでは"etc/bashrc"には"WM_MPLIB=SYSTEMOPENMPI"が設定されており,システムのmpicc, mpic++を使用する.
任意のパスに置かれたMPIライブラリを使用する方法を記載する.
b. /path/to/install/OpenFOAM-/etc/bashrcの一部を以下のように編集
...
# export WM_MPLIB=SYSTEMOPENMPI
export WM_MPLIB=MPI
...
b. /path/to/install/OpenFOAM-/etc/config.sh/mpiの一部を以下のように編集
...
MPI)
export FOAM_MPI=mpi
export MPI_ARCH_PATH=/opt/mpi
export MPI_ARCH_FLAGS="-DOMPI_SKIP_MPICXX"
export MPI_ARCH_INC="-isystem $MPI_ARCH_PATH/include"
export MPI_ARCH_LIBS="-L$MPI_ARCH_PATH/lib -lmpi"
_foamAddPath $MPI_ARCH_PATH/bin
_foamAddLib $MPI_ARCH_PATH/lib
;;
...
c. /path/to/install/OpenFOAM-/OpenFOAM-8/wmake/rules/General/mplibMPIを以下のように編集.
PFLAGS = ${MPI_ARCH_FLAGS}
PINC = ${MPI_ARCH_INC}
PLIBS = ${MPI_ARCH_LIBS}
=== SCOTCHライブラリの変更 ===
/path/to/install/OpenFOAM-/etc/config.sh/scotchを編集.(scotch version 6.1.0の場合)
export SCOTCH_VERSION=scotch_6.1.0
export SCOTCH_ARCH_PATH=/opt/scotch/v6.1.0
=== zlib ===
a. /path/to/install/OpenFOAM-/src/OpenFOAM/Make/optionsを次のように変更.
EXE_INC = \
-I$(OBJECTS_DIR) \
-I/opt/zlib/1.2.11/include
LIB_LIBS = \
$(FOAM_LIBBIN)/libOSspecific.o \
-L$(FOAM_LIBBIN)/dummy -lPstream \
-L/opt/zlib/1.2.11/lib/ -lz
b. lnIncludeにシンボリックリンクを作成.
-lOpenFOAMを参照する場合,zlibのヘッダのインクルードが必要である.
依存関係のインクルードを簡便化するためにlnIncludeが用意されており,そこにシンボリックリンクを作成することでインクルードの問題が解消される.
$ ln -s /opt/zlib/1.2.11/include/zlib.h zlib.h
$ ln -s /opt/zlib/1.2.11/include/zconf.h zconf.h
これはスクリプト内に記述すべき.wmake OpenFOAMのあとかな
=== flexの変更 ===
a. /path/to/install/OpenFOAM-/wmake/src/Makefileを編集.
...
$E /opt/flex/2.6.4/bin/flex wmkdep.l; \
...
b. /path/to/install/OpenFOAM-/wmake/rules/General/flexを編集.
SUFFIXES += .l
ltoo = $E $(call QUIET_MESSAGE,flex,$(
c. /path/to/install/OpenFOAM-/wmake/rules/General/flex++を編集.
SUFFIXES += .L
Ltoo = $E $(call QUIET_MESSAGE,flex++,$(
d. /path/to/install/OpenFOAM-/applications/utilities/thermophysical/chemkinToFoam/Make/optionsを編集
EXE_INC = \
-IchemkinReader \
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
-I/opt/flex/2.6.4/include
-
EXE_LIBS = \
-lchemistryModel