高性能计算服务
>
最佳实践
>
OpenFOAM基于超算互联网的并行计算及前后处理详解
OpenFOAM是由OpenCFD公司开发的开源计算流体力学(CFD)软件,广泛应用于工程和科学领域,拥有来自汽车、能源和航空航天领域庞大的用户群体。OpenFOAM可以解决广泛而复杂的流体仿真问题,包括化学反应、湍流和传热过程,以及声学、固体力学和电磁学等过程的仿真。
本次实操,我们将介绍如何在超算互联网使用OpenFOAM进行多节点并行计算,以“mixerVesselAMI”算例为例,通过模拟流体速度场和压力场来优化搅拌器设计,并讲解相关前后处理技巧。涉及软件包括OpenFOAM-2306、Paraview5.9.1和Linux桌面模块。
首先,安装OpenFOAM运行算例所需软件:
(1)登录超算互联网https://www.scnet.cn
(2)搜索并安装“OpenFOAM-com-v2306版本”
(3)搜索并安装前后处理工具“Paraview v5.9.1版本”
(4)搜索并安装操作系统工具“Linux桌面(三维)”
(5)安装上述软件工具后,进入Linux桌面(三维)的DCV模式,完成对paraview和paraFoam的部署和验证,依次运行代码:
[accs_1114@gpu3 桌面]$ source ~/apprepo/paraview/5.9.1-
python3.8_64bit/scripts/env.sh
[accs_1114@gpu3 ~]$ module purge
[accs_1114@gpu3 ~]$ source ~/apprepo/OpenFOAM_com/v2306-
intelmpi_2021_3_0_Gcc_9_3_0/scripts/env.sh
验证完成后进入命令行模式,我们可以看到在OpenFOAM目录结构下包括app、case、scripts三个文件夹和install.log文件,其中:
app包含应用软件主体和依赖库;
case包含相关运行算例、作业日志、作业提交脚本等信息;
scripts包含软件环境变量;
install.log 包含OpenFOAM安装日志文件;
[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目录中包含的文件及其作用。
多节点算例运行前需要编写OpenFOAM.slurm脚本,分别为作业提交参数、加载环境和启动算例。
此脚本使用4个节点,每个节点调用4个cpu核心,即使用16核心计算算例。
需要同时设置system文件夹中的decomposeParDict文件,将此文件中的numberOfSubdomains参数设置为16核。
[accs_1114@login04 case]$ vi system/decomposeParDict
接下来,使用sbatch OpenFOAM.slurm命令提交作业。使用squeue命令可以观察OpenFOAM运行作业号,使用sacct -j 运行作业号命令可以查看OpenFOAM的运行状态。
[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]$
作业完成用sacct -j 运行作业号显示如下信息:
通过观察作业的执行结果和输出日志log文件,可以确认OpenFOAM软件是否在超算互联网正常求解运算,以及查看作业计算结果。
此算例使用128核的运行时间为998.17s,即16.64分钟。
此算例使用64核运行时间为1466.78s,即24.45分钟。
此算例使用16核运行时间为3158.09s,即52.63分钟。
通过多节点测试可知,OpenFOAM算例运行时间随着核数的增加呈现明显的线性关系。由于本示例模型简单,不能进行256核及以上的算力进行仿真运算。
算例成功运行后,我们使用图形化工具Paraview和Linux桌面(三维)进行结果后处理,超算互联网已部署多版本的ParaView和Linux桌面(三维),可直接部署使用,操作过程如下:
首先,进入Linux桌面(三维)界面:
根据中心开通Linux桌面(三维)服务:
点击桌面按钮进入Linux桌面(三维)界面,在终端输入nvidia-smi,确认系统安装GPU显卡:
终端输入paraview确认ParaView模块成功安装:
进入求解计算文件夹:
[accs_1114@gpu3 桌面]$ cd ~/apprepo/OpenFOAM_com/v2306-
intelmpi_2021_3_0_Gcc_9_3_0/case/
在此目录下输入
[accs_1114@gpu3 case]$ ../app/OpenFOAM-
v2306/bin/paraFoam
则paraview自动创建Created temporary 'case.foam'文件并将模型文件导入图形界面中:
最后,通过界面操作可以得到统计信息:
本文详细介绍了如何使用OpenFOAM-2306在超算互联网上进行多节点算例运行,并使用Linux桌面(三维)模块和Paraview模块进行前后处理的全过程。这一系列的应用技巧不仅简化了CFD模拟的工作流程,还极大地提升了数据分析的可视化效果,为高效地进行流体动力学模拟,解决实际工程问题提供参考。
希望本篇最佳实践为您提供一些有价值的信息和实践技巧。