Skip to content

Nektar++亚音速圆柱绕流模拟分析

Nektar++是一款基于谱元法的开源计算流体力学软件,可以实现高阶空间离散精度,数值耗散低。
为实现高精度瞬态问题的模拟,Nektar++中除了实现高阶hp型谱元空间离散外,也实现了高阶时间积分方法。为适应具有曲线或曲面的计算几何上的高精度计算,与Nektar++捆绑在一起的网络生成软件NekMesh可用于高阶网格的生成,并支持多种高阶网格生成方法。
软件主要用于水动力学线性稳定性分析的数值计算,还可以用于其它计算领域如动脉流、超声速流场。
本次实操,我们将通过模拟亚音速圆柱绕流,来介绍如何在超算互联网平台使用Nektar++软件。

一、配置资源

本次模拟需要提前配置相应的软硬件资源,包括:

1. 硬件:支持同构计算的CPU资源

软件支持CPU并行计算,您可以在算力市场申请使用相应配置的算力资源,本例使用的是“曙光智算旗舰店-X86 32C 2.5GHz 128GB-华东一区【昆山】”。 1.png

2. 软件:Nektar++ v5.5.0

超算互联网平台已部署不同版本的Nektar++软件,可以直接申请使用。本次模拟使用的是由Intelmpi2017和gcc9.3.0编译的Nektar v5.5.0版本。 2.png 如下图所示,您可以按照Step1→Step3的顺序,通过点击“已购商品”→“应用软件”→“命令行”通过命令行快速打开软件。

二、算例介绍

本次使用算例为2D亚音速圆柱绕流-“CylinderSubsonic_NS”,求解器选择可压缩流求解器CompressibleFlowSolver。这里我们简单了解一下算例与求解器的相关内容。

1. 硬理论依据

可压缩流求解器允许我们使用离散的变量求解非定常可压缩欧拉和1D/2D/3D问题的Navier-Stokes方程。对于2D可压缩N-S方程,二阶偏微分方程可以写成: 3.png
其中q是守恒变量的向量,
4.png
上式中ρ是密度,u和υ分别是x和y方向的速度,p是压力,E是总能量。几者的关系如下:
5.png
其中γ是比热容比。通量f和g的向量形式可以写成:
6.png
无粘通量fi和gi的形式为:
7.png
粘性通量fυ和gυ的形式为:
8.png
其中τxx、τxy、τyx、τyy是应力张量的分量
9.png
其中μ是使用Sutherland定律计算得到的动力粘度,k是导热系数。

2. 问题描述

算例的目标是通过可压缩流求解器来模拟绕圆柱体流动的N-S方程,流体参数:马赫数Mach=0.2,雷诺数Re=200,普朗特数为0.72,压力P=101325Pa,密度ρ为1.225 Kg/m3。流场的网格模型如下图,流体从左边界流入,从有边界流出。 10.png 图10: 网格模型

三、准备算例文件

在使用Nektar++开始计算前,我们需要准备计算所需的xml文件并上传至平台。

1. xml文件解析

xml文件是软件计算必需的参数文件,包含几何信息、优化参数和计算参数三大部分。几何信息部分主要是网格信息(包含点、边、单元、区域划分等信息),去混叠技术参数部分为谱元法的参数信息,计算参数部分包含求解参数、边界条件、初始条件等信息。
11.png

(1)几何信息封装在GEOMETRY标签中,包含:

①VERTEX—网格各元素顶点空间坐标
12.png
②EDGE—连接顶点的边
13.png
③ELEMENT—网格单元
14.png
④CURVED—曲线
15.png
⑤COMPOSITE—复合体
16.png
⑥DOMAIN—区域
17.png

(2)去混叠技术参数封装在EXPANSIONS标签中,主要为优化参数。

18.png

(3)计算参数部分封装在CONDITIONS标签中,包含物理常量参数、求解器参数、区域参数、边界条件、初始条件设置等。

①PARAMETERS—物理常量参数 该参数包括时间步长度、迭代步数、写出结果步数、打印信息步数、雷诺数、普朗特数、温度、压强、马赫数等。
19.png
②SOLVERINFO—求解器参数 包含时间格式、数值格式等参数。
20.png
③TIMEINTEGRATIONSCHEME—时间格式 这里使用四阶龙格库塔格式进行时间推进。
21.png
④VARIABLES—求解变量
22.png
⑤BOUNDARYREGIONS—边界区域关联
23.png
⑥BOUNDARYCONDITIONS—边界条件设置
24.png
⑦FUNCTION—求解变量初始化方式
25.png

2. slurm作业脚本

超算互联网平台通过命令行的方式使用Nektar++软件、通过Slurm作业调度系统进行作业提交、查询、修改等操作。软件申请成功后,在家目录下的~/apprepo/nektar/v5.5.0-gcc930_intelmpi2017/case/会中自动生成nektar.slurm文件。为将计算任务提交至超算平台,需要将相关计算命令写入到slurm脚本中。脚本内容包括两部分,一部分为slurm命令,另一部分为Nektar++运行命令,可根据实际算例对nektar.slurm进行修改,如下图所示。 26.png 其中: 27.png 本算例使用32个CPU核来进行计算。这里设置N=1,n=32,即使用一个节点,每个节点使用32个CPU核进行计算。 28.png

四、上传及修改计算所需文件

1. 新建测试文件夹

使用“mkdir”命令新建测试文件夹Nektar_case。

2. 上传算例文件,修改slurm脚本文件

点击E-Shell的文件管理功能,选择本地上传文件,将算例文件上传至新建的测试文件夹Nektar_case中,同时将~/apprepo/nektar/v5.5.0-gcc930_intelmpi2017/case/的nektar.slurm文件复制到当前测试文件夹。完成操作后测试文件夹内容如下图所示。 29.png

五、提交及查询作业

1. 使用sbatch命令提交Nektar++计算作业

30.png

2. 使用squeue命令查询作业状态

31.png

3. 使用tail -f slurm-jobid.out 动态查看作业运行输出信息。

32.png

4. 计算完成

33.png

六、结果后处理

算例模拟结束后,会在当前文件夹中生成许多结果文件,我们可以使用Nektar++软件集成的FieldConvert程序进行文件转换,将fld文件转换为vtu文件。 34.png

1. 文件格式转换

编写格式转换脚本文件convert.sh,进入计算结果文件夹CylinderSubsonic_NS_0.chk,以批处理的形式将并行计算结果fld文件合并、转换为vtu文件。 35.png36.png

2. 结果可视化

用户可以将所有转换后的vtu文件下载至本地,使用paraview软件进行计算结果可视化。部分后处理结果如下图所示。 37.png

3. 涡度计算

用户将CylinderSubsonic_NS.fld文件夹中的文件进行格式转换,首先生成涡度结果的fld文件,然后将文件格式转换为vtu文件,再使用paraview软件进行涡度可视化。转换脚本如下。 38.png39.png 涡度结果如下所示。 40.png

七、总结

在本次实践中,我们详细介绍了如何在超算互联网平台申请软硬件资源,利用Nektar++软件对亚音速圆柱绕流进行模拟,并且对模拟结果进行可视化处理,对亚音速流体的流动机理研究具有一定的参考意义。