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-develdnf -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.gitcd /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.3source 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/lib64ln -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 8cd ThirdParty-12
./Allwmake
cd ../OpenFOAM-12
./Allwmake -q -j 8Modulefile 文件编写 
编译好的程序可以通过 Module 模块的方式提供给集群上其他用户使用,可以编写如下的 Modulefile 文件,首先创建文件夹:
shell
mkdir -p /share/apps/modulefiles/openfoammkdir -p /share/apps/modulefiles/openfoam在该路径下创建modulefile文件:
shell
vim /share/apps/modulefiles/openfoam/12vim /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/modulefileschmod -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/12module load openfoam/12