工作需要在CentOS7服务器上安装OpenFOAM-2.3.x , 但由于OF版本较老,CentOS7有很新,缺少系统教程,在此记录安装编译过程。
#ref https://xiaopingqiu.github.io/2015/09/13/OpenFOAM-install-centOS/
yum groupinstall 'Development Tools'
yum install glibc-devel.i686
yum install zlib.x86_64
yum install zlib-devel.x86_64
OF源码包括:OpenFOAM-2.3.x ,ThirdParty-2.3.x
,这两个目前在OpenFOAM的官网已经下架,可以从github仓库中clone, 在$HOME (/root)
下创建一个目录 OpenFOAM,然后将OpenFOAM-2.3.x 以及 ThirdParty-2.3.x 拷贝到该目录下。 gcc-4.8.2、 mpfr-3.1.2、gmp-5.1.2、 mpc-1.0.1、 boost-1.55.0、openmpi-1.6.5、scotch_6.0.0、cmake-2.8.12.1、CGAL-4.3、libccmio-2.6.1
这些可以ThirdParty的 github 仓库里找到链接,但部分网站已经不能访问,更新部分下载链接如下。
因为有移植的需要,所以这里单独编译gcc 和openmpi,这样可以不依赖集群系统上的 gcc 和 openmpi 版本。
#下载openfoam 和 ThirfParty 建议放在 /root/OpenFOAM 路径下
git clone https://github.com/OpenFOAM/OpenFOAM-2.3.x.git
git clone https://github.com/OpenFOAM/ThirdParty-2.3.x.git
#ref https://github.com/OpenFOAM/ThirdParty-2.3.x.git
# Download under path ThirdParty-2.3.x
#Compiler
#The minimum version of gcc required is 4.5.0
wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
wget https://ftp.gnu.org/gnu/gmp/gmp-5.1.2.tar.bz2
wget https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.bz2
#wget http://www.multiprecision.org/mpc/download/mpc-1.0.1.tar.gz
wget https://ftp.gnu.org/gnu/mpc/mpc-1.0.1.tar.gz
#Parallel Processing
wget http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.5.tar.bz2
wget https://gforge.inria.fr/frs/download.php/file/31831/scotch_6.0.0.tar.gz
#ParaView
wget http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz
wget http://www.paraview.org/files/v4.1/ParaView-v4.1.0-source.tar.gz
#CGAL
#wget https://gforge.inria.fr/frs/download.php/file/31175/CGAL-4.3.tar.bz2
wget https://github.com/CGAL/cgal/archive/refs/tags/releases/CGAL-4.3.tar.gz
wget http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.bz2/download
#Miscellaneous
wget http://portal.nersc.gov/svn/visit/trunk/third_party/libccmio-2.6.1.tar.gz
解压gcc-4.8.2、 mpfr-3.1.2、gmp-5.1.2、 mpc-1.0.1、 boost-1.55.0、openmpi-1.6.5、scotch_6.0.0、cmake-2.8.12.1、CGAL-4.3、libccmio-2.6.1
到 $HOME/ThirdParty-2.3.x
下,并将 boost-1.55.0 重命名为 boost-system。
后缀tar.gz
使用 tar -xvf
命令 , 后缀tar.bz2
使用 tar -xjf
命令。
tar -xvf cmake-2.8.12.1.tar.gz
tar -xjf gmp-5.1.2.tar.bz2
tar -xvf CGAL-4.3.tar.gz
tar -xjf mpfr-3.1.2.tar.bz
tar -xjf openmpi-1.6.5.tar.bz2
tar -xvf ParaView-v4.1.0-source.tar.gz
tar -xvf scotch_6.0.0.tar.gz
tar -xvf mpc-1.0.1.tar.gz
tar -xjf boost_1_55_0.tar.bz2
tar -xvf libccmio-2.6.1.tar.gz
对应解压缩后的文件名如下,如果有不同自行修改。
gcc-4.8.2、 mpfr-3.1.2、gmp-5.1.2、 mpc-1.0.1、 boost-system 、openmpi-1.6.5、scotch_6.0.0、cmake-2.8.12.1、CGAL-4.3、libccmio-2.6.1
在编译之前,需要修改配置文件。OpenFOAM
的gcc
编译器和OpenMPI
都可以使用system
或ThirdParty
的版本,这里都选择ThirdParty
版本避免和系统冲突。
$HOME/OpenFOAM/OpenFOAM-2.3.x/etc/bashrc
文件$HOME/OpenFOAM
system
代表是用系统安装的gcc
,ThirdParty
代表使用三方包里面的gcc
,选择ThirdParty
MPI
,SYSTEMOPENMPI
代表使用系统openMPI
,OPENMPI
代表使用ThirdParty
的openMPI
foamInstall=$HOME/OpenFOAM
#- Compiler location:
# foamCompiler= system | ThirdParty (OpenFOAM)
foamCompiler=ThirdParty
#- MPI implementation:
# WM_MPLIB = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPICH | MPICH-GM | HPMPI
# | MPI | QSMPI | SGIMPI
export WM_MPLIB=OPENMPI
$HOME/OpenFOAM/OpenFOAM-2.3.x/etc/config/settings.sh
文件严格按照settings.sh
文件中规定的版本下载相应的包并解压到ThirdParty目录下,解压后的名字和settings.sh
中的一致。
gcc-4.8.2、 mpfr-3.1.2、gmp-5.1.2、 mpc-1.0.1、 boost-system 、openmpi-1.6.5、scotch_6.0.0、cmake-2.8.12.1、CGAL-4.3、libccmio-2.6.1
case "${foamCompiler}" in
OpenFOAM | ThirdParty)
case "$WM_COMPILER" in
Gcc | Gcc++0x | Gcc48 | Gcc48++0x)
gcc_version=gcc-4.8.2
gmp_version=gmp-5.1.2
mpfr_version=mpfr-3.1.2
mpc_version=mpc-1.0.1
;;
export FOAM_MPI=openmpi-1.6.5
检查一下 ThirdParty-2.3.x 目录下编译脚本makeGcc, makeCGAL, makeCmake
设置是否正确。检查项目仍然是看脚本里设置的软件包版本和实际下载的是否一致。
例如,makeGcc
中,gccPACKAGE
需要修改为gccPACKAGE=gcc-4.8.2
,需要保证设置与 ThirdParty-2.3.x 目录下实际的源码包的版本一致!!!
gmpPACKAGE=gmp-5.1.2
mpfrPACKAGE=mpfr-3.1.2
mpcPACKAGE=mpc-1.0.1
gccPACKAGE=gcc-4.8.2
加载和OpenFOAM相关的环境变量
vi ~/.bashrc
source $HOME/OpenFOAM/OpenFOAM-2.3.x/etc/bashrc
# :wq 退出
source ~/.bashrc
配置完成上述文件后,按如下顺序进行编译:
./makeGcc > log_gcc 2>&1 &
source ~/.bashrc
gcc -v #看看当前gcc版本
如果版本号不同可能是编译出错,cat log_gcc | grep error
检查错误选项并修复。
gcc
是编译下面其他库的工具,必须要确保gcc-4.8.2
版本编译成功
./Allwmake > log_all 2>&1 & #(Builds CGAL OpenMPI, Scotch etc.)
Allwmake
包括了CGAL
, OpenMPI
和 Scotch
的编译。
编译成功可以看到mpirun, mpicc
等命令,运行 whereis mpirun
检查编译是否成功。
./makeCmake > log_cmake 2>&1 & #(if the system cmake version is < 2.8.8)
./makeParaView4 > log_pv 2>&1 &
cmake --version
确保Cmake 编译成功,运行paraview
可以直接打开paraview窗口,这里我还没有安装界面就看不到了。
cd $HOME/OpenFOAM/OpenFOAM-2.3.x
./Allwmake > log_all 2>&1 &
运行 Allwmake,进行 OpenFOAM 的编译,可能需要数个小时。
编译结束以后,运行dambreak算例测试是否成功。
# 创建run文件夹
mkdir -p $HOMEOpenFOAM/-2.3.x/run
run
cp -r $FOAM_TUTORIALS/multiphase/interFoam/laminar/damBreak .
cd damBreak
blockMesh 生成网格
checkMesh
setFields #设置初始场
decomposPar
interFoam | tee log
至此安装成功,后续继续更新使用Docker建立CentOS7-OpenFOAM-2.3.x 的虚拟环境。
在 CentOS 上安装 OpenFOAM
Installation/Linux/OpenFOAM-2.3.0/CentOS SL RHEL
https://openfoam.org/download/2-3-1-source/
https://github.com/OpenFOAM/OpenFOAM-2.3.x.git
https://github.com/OpenFOAM/ThirdParty-2.3.x.git