OpenFOAM v2206 を RHEL 8.3 にインストールメモ2022年11月18日 | |
はじめにOpenFOAM v2206 をインストールする。 インストール対象マシンRed Hat Enterprise Linux 8.3 OpenFOAM のインストールソースコードの展開ソースからコンパイルする。ここ からソースコードをダウンロードする。
パッケージを展開。 $ mkdir ~/OpenFOAM $ tar xvzf OpenFOAM-v2206.tgz -C ~/OpenFOAM $ tar xvzf ThirdParty-v2206.tgz -C ~/OpenFOAM Open MPI をコンパイルすることにする。システムのものを用いたら、計算が途中で止まってしまうことがあったため。設定ファイルを修正する。 ~/OpenFOAM/OpenFOAM-v2206/etc/bashrc #export WM_MPLIB=SYSTEMOPENMPI export WM_MPLIB=OPENMPI 設定を読み込む。 $ . ~/OpenFOAM/OpenFOAM-v2206/etc/bashrc ThirdParty のコンパイルCMake の準備CMake は yum でインストールすればよい。 $ sudo yum install cmake Open MPI$ cd $WM_THIRD_PARTY_DIR $ ./makeOPENMPI HYPREPETSc で使うために、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-v2206/etc/bashrc ソースコードは $WM_THIRD_PARTY_DIR/sources に展開する。 コンパイル。 $ ./makeHYPRE OpenBLASPETSc で使うために、OpenBLAS をコンパイルする。こちらは自力でやる。ここ からパッケージを入手する。
適当なところに展開してコンパイル、インストール。 $ make $ mkdir ~/OpenBLAS $ make install PREFIX=~/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.17.2.tar.gz -C sources $ ./makePETSC hypre-2.24.0 OpenFOAM のコンパイル$ foam $ ./Allwmake -j -s -l PETSc が有効になっているかどうかの確認は、次のようにする。 $ foamHasLibrary -verbose petscFoam Could not load "petscFoam" 有効にするには、次のようにする。 $ eval $(foamEtcFile -sh -config petsc -- -force) $ foamHasLibrary -verbose petscFoam Can load "petscFoam" ~/.bashrc などに次のように設定する。 ~/.bashrc alias of2206='. ~/OpenFOAM/OpenFOAM-v2206/etc/bashrc; eval $(foamEtcFile -sh -config petsc -- -force)' 次のようにすれば設定が有効になる。 $ of2206 PETSc の利用petscFoam を読み込む。 system/controlDict libs (petscFoam); ソルバーの設定は次のようにする。 system/fvSolution
p
{
solver petsc;
petsc
{
options
{
ksp_type cg;
ksp_cg_single_reduction true;
ksp_norm_type none;
// pc_type bjacobi;
// sub_pc_type ilu;
pc_type hypre;
pc_hypre_type boomeramg;
pc_hypre_boomeramg_max_iter "1";
pc_hypre_boomeramg_strong_threshold "0.25";
pc_hypre_boomeramg_grid_sweeps_up "1";
pc_hypre_boomeramg_grid_sweeps_down "1";
pc_hypre_boomeramg_agg_nl "1";
pc_hypre_boomeramg_agg_num_paths "1";
pc_hypre_boomeramg_max_levels "25";
pc_hypre_boomeramg_coarsen_type HMIS;
pc_hypre_boomeramg_interp_type ext+i;
pc_hypre_boomeramg_P_max "1";
pc_hypre_boomeramg_truncfactor "0.3";
}
caching
{
matrix
{
update always;
}
preconditioner
{
update always;
}
}
}
tolerance 1e-06;
relTol 0.01;
}
U
{
solver petsc;
petsc
{
options
{
ksp_type bicg;
pc_type bjacobi;
sub_pc_type ilu;
}
caching
{
matrix
{
update always;
}
preconditioner
{
update always;
}
}
}
tolerance 1e-05;
relTol 0.1;
}
スレッドが効くので、スレッドの数を環境変数 OMP_NUM_THREADS で指定する。シリアルで計算すると、標準ソルバーよりも速く見えるが、CPU 使用率が 100% を超えたりしているので注意。 | |
| PENGUINITIS | |