Skip to content

OpenFOAM基于超算互联网的并行计算及前后处理详解

OpenFOAM是由OpenCFD公司开发的开源计算流体力学(CFD)软件,广泛应用于工程和科学领域,拥有来自汽车、能源和航空航天领域庞大的用户群体。OpenFOAM可以解决广泛而复杂的流体仿真问题,包括化学反应、湍流和传热过程,以及声学、固体力学和电磁学等过程的仿真。

1.png

本次实操,我们将介绍如何在超算互联网使用OpenFOAM进行多节点并行计算,以“mixerVesselAMI”算例为例,通过模拟流体速度场和压力场来优化搅拌器设计,并讲解相关前后处理技巧。涉及软件包括OpenFOAM-2306、Paraview5.9.1和Linux桌面模块。

一、OpenFOAM安装配置

首先,安装OpenFOAM运行算例所需软件:

(1)登录超算互联网https://www.scnet.cn

2.png

(2)搜索并安装“OpenFOAM-com-v2306版本”

3.png

(3)搜索并安装前后处理工具“Paraview v5.9.1版本”

4.png

(4)搜索并安装操作系统工具“Linux桌面(三维)”

5.png

(5)安装上述软件工具后,进入Linux桌面(三维)的DCV模式,完成对paraview和paraFoam的部署和验证,依次运行代码:

shell
[accs_1114@gpu3 桌面]$ source ~/apprepo/paraview/5.9.1-
python3.8_64bit/scripts/env.sh

6.png

shell
[accs_1114@gpu3 ~]$ module purge
[accs_1114@gpu3 ~]$ source ~/apprepo/OpenFOAM_com/v2306-
intelmpi_2021_3_0_Gcc_9_3_0/scripts/env.sh

7.png

二、OpenFOAM目录结构介绍

验证完成后进入命令行模式,我们可以看到在OpenFOAM目录结构下包括app、case、scripts三个文件夹和install.log文件,其中:

app包含应用软件主体和依赖库;

8.png

case包含相关运行算例、作业日志、作业提交脚本等信息;

9.png

scripts包含软件环境变量;

10.png

install.log 包含OpenFOAM安装日志文件;

shell
[accs_1114@login04 v2306-intelmpi_2021_3_0_Gcc_9_3_0]$ cat 
install.log 
==== INSTALL OpenFOAM_com-v2306-intelmpi_2021_3_0_Gcc_9_3_0 ING ====
  % Total    % Received % Xferd  Average Speed   Time    Time     
Time  Current
                                 Dload  Upload   Total   Spent
 Left  Speed
100   809  100   809    0     0   7965      0 --:--:-- --:--:-- --:-
-:--  8009
===DOWNLOAD PHASE OVER===
  % Total    % Received % Xferd  Average Speed   Time    Time     
Time  Current
                                 Dload  Upload   Total   Spent
Left  Speed
100    38    0    38    0     0    190      0 --:--:-- --:--:-- --:-
-:--   190
No need to install split pkg.
===UNPACK PHASE OVER===
APPREPO_EXITCODE=0

三、多节点运行算例

这里,我们选择OpenFOAM官方提供的用于模拟搅拌器中的流体流动的测试算例“mixerVesselAMI”,通过数值模拟,研究搅拌器内部的流体流动特性,评估混合效果,优化设计参数。

case目录下包含的是测试算例文件和作业提交脚本,主要分为四部分,constant包含物理属性和模型参数配置文件,system目录包含网格生成、求解参数和并行计算等配置文件。此外,还包括清理、预处理和运行脚本文件(Allclean、Allrun.pre、Allrun),以及作业提交脚本(OpenFOAM.slurm)。

下图详细展示了case目录中包含的文件及其作用。

11.png

多节点算例运行前需要编写OpenFOAM.slurm脚本,分别为作业提交参数、加载环境和启动算例。

12.png

此脚本使用4个节点,每个节点调用4个cpu核心,即使用16核心计算算例。

需要同时设置system文件夹中的decomposeParDict文件,将此文件中的numberOfSubdomains参数设置为16核。

shell
[accs_1114@login04 case]$ vi system/decomposeParDict

13.png

接下来,使用sbatch OpenFOAM.slurm命令提交作业。使用squeue命令可以观察OpenFOAM运行作业号,使用sacct -j 运行作业号命令可以查看OpenFOAM的运行状态。

shell
[accs_1114@login04 case]$ squeue
             JOBID       PARTITION     NAME     USER ST       TIME  NODES                    NODELIST(REASON)
          20920484      xahcnormal openfoam accs_111  R      52:31      4                       c03r3n[13-16]
[accs_1114@login04 case]$ 
[accs_1114@login04 case]$ sacct -j 20920484
       JobID    JobName  Partition    Account  AllocCPUS      State ExitCode 
------------ ---------- ---------- ---------- ---------- ---------- -------- 
20920484       openfoam xahcnormal   accs_110         16    RUNNING      0:0 
20920484.ba+      batch                       accs_110          4    RUNNING       0:0 
20920484.ex+     extern                       accs_110         16    RUNNING      0:0 
20920484.0   hydra_bst+                      accs_110         16    RUNNING      0:0 
[accs_1114@login04 case]$

14.png

作业完成用sacct -j 运行作业号显示如下信息:

15.png

通过观察作业的执行结果和输出日志log文件,可以确认OpenFOAM软件是否在超算互联网正常求解运算,以及查看作业计算结果。

四、128核计算结果展示

16.png

此算例使用128核的运行时间为998.17s,即16.64分钟。

五、64核计算结果展示

17.png

18.png

此算例使用64核运行时间为1466.78s,即24.45分钟。

19.png

六、16核计算结果展示

20.png

此算例使用16核运行时间为3158.09s,即52.63分钟。

21.png

七、多核心多节点计算结果分析

通过多节点测试可知,OpenFOAM算例运行时间随着核数的增加呈现明显的线性关系。由于本示例模型简单,不能进行256核及以上的算力进行仿真运算。

八、后处理

算例成功运行后,我们使用图形化工具Paraview和Linux桌面(三维)进行结果后处理,超算互联网已部署多版本的ParaView和Linux桌面(三维),可直接部署使用,操作过程如下:

首先,进入Linux桌面(三维)界面:

22.png

根据中心开通Linux桌面(三维)服务:

23.png

点击桌面按钮进入Linux桌面(三维)界面,在终端输入nvidia-smi,确认系统安装GPU显卡:

24.png

终端输入paraview确认ParaView模块成功安装:

25.png

进入求解计算文件夹:

shell
[accs_1114@gpu3 桌面]$ cd ~/apprepo/OpenFOAM_com/v2306-
intelmpi_2021_3_0_Gcc_9_3_0/case/

26.png

在此目录下输入

shell
[accs_1114@gpu3 case]$ ../app/OpenFOAM-
v2306/bin/paraFoam

则paraview自动创建Created temporary 'case.foam'文件并将模型文件导入图形界面中:

27.png

最后,通过界面操作可以得到统计信息:

28.png

九、总结

本文详细介绍了如何使用OpenFOAM-2306在超算互联网上进行多节点算例运行,并使用Linux桌面(三维)模块和Paraview模块进行前后处理的全过程。这一系列的应用技巧不仅简化了CFD模拟的工作流程,还极大地提升了数据分析的可视化效果,为高效地进行流体动力学模拟,解决实际工程问题提供参考。

希望本篇最佳实践为您提供一些有价值的信息和实践技巧。