Skip to content

OpenFoam 安装及使用

OpenFOAM 是对连续介质力学问题进行数值计算的 C++ 自由软件工具包,其代码遵守 GNU 通用公共许可证。它可进行数据预处理、后处理和自定义求解器,通常用于流体力学领域的计算。本教程将介绍如何在 SonmiHPC 集群上编译及安装 OpenFOAM。

安装依赖工具

编译安装 OpenFOAM 需要依赖下面的一些工具:

  1. GCC,集群中默认已集成 11.5版本
  2. CMake,参考安装文档
  3. 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

参考链接

  1. OpenFOAM Github仓库
  2. OpenFOAM源码编译官方教程

本站内容未经授权禁止转载
联系邮箱: [email protected]