高性能计算服务
>
软件专区
>
最佳实践
>
Nektar++亚音速圆柱绕流模拟分析
Nektar++是一款基于谱元法的开源计算流体力学软件,可以实现高阶空间离散精度,数值耗散低。
为实现高精度瞬态问题的模拟,Nektar++中除了实现高阶hp型谱元空间离散外,也实现了高阶时间积分方法。为适应具有曲线或曲面的计算几何上的高精度计算,与Nektar++捆绑在一起的网络生成软件NekMesh可用于高阶网格的生成,并支持多种高阶网格生成方法。
软件主要用于水动力学线性稳定性分析的数值计算,还可以用于其它计算领域如动脉流、超声速流场。
本次实操,我们将通过模拟亚音速圆柱绕流,来介绍如何在超算互联网平台使用Nektar++软件。
本次模拟需要提前配置相应的软硬件资源,包括:
软件支持CPU并行计算,您可以在算力市场申请使用相应配置的算力资源,本例使用的是“曙光智算旗舰店-X86 32C 2.5GHz 128GB-华东一区【昆山】”。 
超算互联网平台已部署不同版本的Nektar++软件,可以直接申请使用。本次模拟使用的是由Intelmpi2017和gcc9.3.0编译的Nektar v5.5.0版本。
如下图所示,您可以按照Step1→Step3的顺序,通过点击“已购商品”→“应用软件”→“命令行”通过命令行快速打开软件。
本次使用算例为2D亚音速圆柱绕流-“CylinderSubsonic_NS”,求解器选择可压缩流求解器CompressibleFlowSolver。这里我们简单了解一下算例与求解器的相关内容。
可压缩流求解器允许我们使用离散的变量求解非定常可压缩欧拉和1D/2D/3D问题的Navier-Stokes方程。对于2D可压缩N-S方程,二阶偏微分方程可以写成: 
其中q是守恒变量的向量,
上式中ρ是密度,u和υ分别是x和y方向的速度,p是压力,E是总能量。几者的关系如下:
其中γ是比热容比。通量f和g的向量形式可以写成:
无粘通量fi和gi的形式为:
粘性通量fυ和gυ的形式为:
其中τxx、τxy、τyx、τyy是应力张量的分量
其中μ是使用Sutherland定律计算得到的动力粘度,k是导热系数。
算例的目标是通过可压缩流求解器来模拟绕圆柱体流动的N-S方程,流体参数:马赫数Mach=0.2,雷诺数Re=200,普朗特数为0.72,压力P=101325Pa,密度ρ为1.225 Kg/m3。流场的网格模型如下图,流体从左边界流入,从有边界流出。
图10: 网格模型
在使用Nektar++开始计算前,我们需要准备计算所需的xml文件并上传至平台。
xml文件是软件计算必需的参数文件,包含几何信息、优化参数和计算参数三大部分。几何信息部分主要是网格信息(包含点、边、单元、区域划分等信息),去混叠技术参数部分为谱元法的参数信息,计算参数部分包含求解参数、边界条件、初始条件等信息。
①VERTEX—网格各元素顶点空间坐标
②EDGE—连接顶点的边
③ELEMENT—网格单元
④CURVED—曲线
⑤COMPOSITE—复合体
⑥DOMAIN—区域

①PARAMETERS—物理常量参数 该参数包括时间步长度、迭代步数、写出结果步数、打印信息步数、雷诺数、普朗特数、温度、压强、马赫数等。
②SOLVERINFO—求解器参数 包含时间格式、数值格式等参数。
③TIMEINTEGRATIONSCHEME—时间格式 这里使用四阶龙格库塔格式进行时间推进。
④VARIABLES—求解变量
⑤BOUNDARYREGIONS—边界区域关联
⑥BOUNDARYCONDITIONS—边界条件设置
⑦FUNCTION—求解变量初始化方式
超算互联网平台通过命令行的方式使用Nektar++软件、通过Slurm作业调度系统进行作业提交、查询、修改等操作。软件申请成功后,在家目录下的~/apprepo/nektar/v5.5.0-gcc930_intelmpi2017/case/会中自动生成nektar.slurm文件。为将计算任务提交至超算平台,需要将相关计算命令写入到slurm脚本中。脚本内容包括两部分,一部分为slurm命令,另一部分为Nektar++运行命令,可根据实际算例对nektar.slurm进行修改,如下图所示。
其中:
本算例使用32个CPU核来进行计算。这里设置N=1,n=32,即使用一个节点,每个节点使用32个CPU核进行计算。 
使用“mkdir”命令新建测试文件夹Nektar_case。
点击E-Shell的文件管理功能,选择本地上传文件,将算例文件上传至新建的测试文件夹Nektar_case中,同时将~/apprepo/nektar/v5.5.0-gcc930_intelmpi2017/case/的nektar.slurm文件复制到当前测试文件夹。完成操作后测试文件夹内容如下图所示。 




算例模拟结束后,会在当前文件夹中生成许多结果文件,我们可以使用Nektar++软件集成的FieldConvert程序进行文件转换,将fld文件转换为vtu文件。 
编写格式转换脚本文件convert.sh,进入计算结果文件夹CylinderSubsonic_NS_0.chk,以批处理的形式将并行计算结果fld文件合并、转换为vtu文件。 

用户可以将所有转换后的vtu文件下载至本地,使用paraview软件进行计算结果可视化。部分后处理结果如下图所示。 
用户将CylinderSubsonic_NS.fld文件夹中的文件进行格式转换,首先生成涡度结果的fld文件,然后将文件格式转换为vtu文件,再使用paraview软件进行涡度可视化。转换脚本如下。 
涡度结果如下所示。 
在本次实践中,我们详细介绍了如何在超算互联网平台申请软硬件资源,利用Nektar++软件对亚音速圆柱绕流进行模拟,并且对模拟结果进行可视化处理,对亚音速流体的流动机理研究具有一定的参考意义。