OpenFOAM v2212 を RHEL 8.3 にインストールメモ

2023年1月29日

はじめに

OpenFOAM v2212 をインストールする。

インストール対象マシン

Red Hat Enterprise Linux 8.3

OpenFOAM のインストール

ソースコードの展開

ソースからコンパイルする。ここ からソースコードをダウンロードする。

  • OpenFOAM-v2212.tgz
  • ThirdParty-v2212.tgz

パッケージを展開。

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

Open MPI をコンパイルする。設定ファイルを修正する。

~/OpenFOAM/OpenFOAM-v2212/etc/bashrc

#export WM_MPLIB=SYSTEMOPENMPI
export WM_MPLIB=OPENMPI

設定を読み込む。

$ . ~/OpenFOAM/OpenFOAM-v2212/etc/bashrc

ThirdParty のコンパイル

CMake の準備

CMake は yum でインストールすればよい。

Open MPI

$ cd $WM_THIRD_PARTY_DIR
$ ./makeOPENMPI

HYPRE

PETSc で使うために、HYPRE をコンパイルする。以下のパッケージをダウンロードする。

各バージョンの情報は BUILD.md に書いてあるようで、これと設定ファイルのものが一致している必要がありそうである。BUILD.md の HYPRE のバージョンが 2.24.0 で、$WM_PROJECT_DIR/etc/config.sh/hypre のバージョンが 2.23.0 なので、修正する。

$WM_PROJECT_DIR/etc/config.sh/hypre

#hypre_version=hypre-2.23.0
hypre_version=hypre-2.24.0

設定ファイルを読み直す。

$ . ~/OpenFOAM/OpenFOAM-v2212/etc/bashrc

ソースコードは $WM_THIRD_PARTY_DIR/sources に展開する。

コンパイル。

$ ./makeHYPRE

OpenBLAS

PETSc で使うために、OpenBLAS をコンパイルする。こちらは自力でやる。ここ からパッケージを入手する。

ここではコンパイル済みのものを用いる。

設定。

~/.bashrc

export OPENBLAS=~/OpenBLAS
export LIBRARY_PATH=$OPENBLAS/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=$OPENBLAS/lib:$LD_LIBRARY_PATH

読み直す。

PETSc

マトリックスソルバー PETSc を利用できるように、コンパイルする。

$ cd $WM_THIRD_PARTY_DIR
$ tar xvzf petsc-lite-3.18.2.tar.gz -C sources
$ ./makePETSC hypre-2.24.0

OpenFOAM のコンパイル

$ foam
$ ./Allwmake -j -s -l

エラーが出た。

/usr/bin/ld: warning: libfftw3.so.3, needed by /home/kasuga/OpenFOAM/OpenFOAM-v2212/platforms/linux64GccDPInt32Opt/lib/librandomProcesses.so, not found (try using -rpath or -rpath-link

LD_LIBRARY_PATH の fftw3 のパスがおかしいようだったかが、設定を読みなおしたらなおった。

再度コンパイル実行すると、またエラーが出た。

/opt/OpenFOAM/ThirdParty-v2206/platforms/linux64GccDPInt32/petsc-3.17.2/include/petscsys.h:104:6: エラー: #error "PETSc was configured with one OpenMPI mpi.h version but now appears to be compiling using a different OpenMPI mpi.h version"

これも設定の問題のようだったので、ログインしなおしたらなおった。

PETSc が有効になっているかどうかの確認は、次のようにする。

$ foamHasLibrary -verbose petscFoam
Could not load "petscFoam"

有効にするには、次のようにする。

$ eval $(foamEtcFile -sh -config petsc -- -force)
$ foamHasLibrary -verbose petscFoam
Can load "petscFoam"

~/.bashrc などに次のように設定する。

~/.bashrc

alias of2212='. ~/OpenFOAM/OpenFOAM-v2212/etc/bashrc; eval $(foamEtcFile -sh -config petsc -- -force)'

次のようにすれば設定が有効になる。

$ of2212