OpenFoam 安装及使用
OpenFOAM 是对连续介质力学问题进行数值计算的 C++ 自由软件工具包,其代码遵守 GNU 通用公共许可证。它可进行数据预处理、后处理和自定义求解器,通常用于流体力学领域的计算。本教程将介绍如何在 SonmiHPC 集群上编译及安装 OpenFOAM。
安装依赖工具
编译安装 OpenFOAM 需要依赖下面的一些工具:
- GCC,集群中默认已集成 11.5版本
- CMake,参考安装文档
- OpenMPI,参考安装文档
系统还需额外安装如下的依赖库:
shell
dnf -y install git flex bison cmake zlib-devel zlib qt5-qtbase-devel openssl openssl-devel libXt-devel libX11-devel qt5-qtx11extras-devel qt5-qttools-devel
dnf -y install git flex bison cmake zlib-devel zlib qt5-qtbase-devel openssl openssl-devel libXt-devel libX11-devel qt5-qtx11extras-devel qt5-qttools-devel
获取源码
直接将源码克隆到本地:
shell
cd /share/apps/
git clone --branch version-12 https://github.com/OpenFOAM/OpenFOAM-12.git
git clone --branch version-12 https://github.com/OpenFOAM/ThirdParty-12.git
cd /share/apps/
git clone --branch version-12 https://github.com/OpenFOAM/OpenFOAM-12.git
git clone --branch version-12 https://github.com/OpenFOAM/ThirdParty-12.git
编译安装
加载环境变量及依赖的环境模块:
shell
source OpenFOAM-12/etc/bashrc
module load cmake/3.30.0
module load openmpi/5.0.3
source OpenFOAM-12/etc/bashrc
module load cmake/3.30.0
module load openmpi/5.0.3
注意,如果是使用 《Open MPI 安装及使用 》该教程安装的Open MPI版本,需要做一个软链接解决寻找mpi链接库报错问题:
shell
ln -s /share/apps/openmpi/5.0.3/lib /share/apps/openmpi/5.0.3/lib64
ln -s /share/apps/openmpi/5.0.3/lib /share/apps/openmpi/5.0.3/lib64
安装第三方组件:
shell
cd ThirdParty-12
./Allwmake
cd ../OpenFOAM-12
./Allwmake -q -j 8
cd ThirdParty-12
./Allwmake
cd ../OpenFOAM-12
./Allwmake -q -j 8
Modulefile 文件编写
编译好的程序可以通过 Module 模块的方式提供给集群上其他用户使用,可以编写如下的 Modulefile 文件,首先创建文件夹:
shell
mkdir -p /share/apps/modulefiles/openfoam
mkdir -p /share/apps/modulefiles/openfoam
在该路径下创建modulefile文件:
shell
vim /share/apps/modulefiles/openfoam/12
vim /share/apps/modulefiles/openfoam/12
文件内容如下:
tcl
#%Module###########################################
set modulefilename "OpenFOAM"
set modulefilever "12"
set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
puts stderr " "
puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
puts stderr "Your system reports that tclsh version $tcl_version is installed."
exit 1
}
if { [ module-info mode load ] } {
puts stderr "Loading $modulefilename version $modulefilever"
}
if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
puts stderr "Removing $modulefilename version $modulefilever"
puts stderr "Use to view any remaining dependent modules."
}
prereq openmpi/5.0.3
set root /share/apps/OpenFOAM-12
source-sh bash $root/etc/bashrc
#%Module###########################################
set modulefilename "OpenFOAM"
set modulefilever "12"
set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
puts stderr " "
puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
puts stderr "Your system reports that tclsh version $tcl_version is installed."
exit 1
}
if { [ module-info mode load ] } {
puts stderr "Loading $modulefilename version $modulefilever"
}
if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
puts stderr "Removing $modulefilename version $modulefilever"
puts stderr "Use to view any remaining dependent modules."
}
prereq openmpi/5.0.3
set root /share/apps/OpenFOAM-12
source-sh bash $root/etc/bashrc
保存文件后,设置一下权限:
shell
chmod -R 755 /share/apps/modulefiles
chmod -R 755 /share/apps/modulefiles
集群上面用户可以通过下面的命令来查看该模块:
shell
[sonmi@sonmi ~]$ module avail
------------------- /share/apps/modulefiles -------------------
openfoam/12
[sonmi@sonmi ~]$ module avail
------------------- /share/apps/modulefiles -------------------
openfoam/12
用户可以通过下面的命令来加载该模块:
shell
module load openfoam/12
module load openfoam/12