高性能计算服务
>
最佳实践
>
SU2模拟计算实操
SU2 是一款开源的计算流体力学(CFD)和多物理场仿真软件,主要用于解决空气动力学、气动声学、热传递等问题。它由斯坦福大学开发,具有高度的模块化和可扩展性,支持多种数值方法,包括有限体积法和有限元法。SU2可以处理各种流动问题,如不可压缩和可压缩流动,常用于飞机设计、汽车工程和能源研究等领域。
本文,我们将通过SU2官方算例,介绍如何通过超算互联网来启动SU2软件进行ONERA M6机翼的跨音速流动模拟。
目前,超算互联网提供多个版本已编译好的SU2软件,支持一键使用。本案例使用由GCC-7.3.1和hpcx编译的SU2 v7.1.1版本,您可以通过以下链接购买或者在超算互联网首页搜索“SU2 v7.1.1”版本快速使用。
已购买该软件的用户,通过“我的商品”,在“应用软件”中找到“SU2 v7.1.1版本”,点击“命令行”,即可选择区域中心、命令行快速使用该软件。
在超算互联网开始SU2计算之前,首先要准备好SU2计算的网格文件、算例配置文件以及slurm作业提交脚本。
本次实践,我们通过ICEM、Pointwise等软件生成网格,设置求解器为SU2,并导出su2格式网格文件。本算例使用网格基于ONERA M6机翼的非结构网格,网格视图如下:
远场网络
翼面网络
本算例计算域是一个大型平行六面体,机翼的半跨度安装在 x-z 平面上的一个边界上。网格由 582752个四面体元素和 108,396 个节点组成。设置三种边界条件:翼面上的欧拉壁面条件、远场处为基于特征的远场条件,以及机翼半跨度附着点的对称边界条件。对称条件使流动在 x-z 平面上镜像,从而减少了网格的复杂性和计算成本。
此测试用例适用于无粘流中的 ONERA M6 机翼。ONERA M6 机翼由 ONERA 空气动力学部门于 1972 年设计,作为一种实验几何结构,用于研究具有一些复杂流动现象(跨音速激波、激波-边界层相互作用、分离流)的三维、高雷诺数流动。由于简单的几何结构、复杂的流动物理场和实验数据的可用性,它已成为 CFD 代码的经典验证案例。这项特殊的研究将在 SU2 中使用以跨音速马赫数进行。
本算例初始条件为:
这些跨声速流动条件将导致在升力机翼的上表面形成典型的“lambda”型冲击波。
除网格文件之外,求解配置文件也必不可少。SU2计算的配置文件为.cfg后缀的文件,其中包含了对计算问题的定义、输入网格名称、计算数值方法、流动条件、流动时间、收敛参数以及输出文件的定义等。本算例配置文件名为inv_ONERAM6.cfg,关键配置内容如下:
1、求解问题以及流动参数设置
对于无粘问题选用EULER方程进行计算,流动条件完全由自由来流马赫数、自由来流压力和自由来流温度定义。输入马赫数为 0.8395,属于跨声速范围;自由来流温度和压力设置为标准海平面空气的值,分别为101325.0 N/m²和288.15 K。flow 流场将把计算域内的每个点初始化为这些自由来流值。
2、无量纲参考系定义
SU2 允许用户为计算力系数提供任意参考值。用户可以通过 REF_AREA 变量指定参考面积(例如,梯形翼面积)来计算力系数。如果 REF_AREA 设置为零,参考面积将通过对 3D 计算中监测点上正 z 方向的所有表面法向分量进行求和来自动计算。对于本案例,SU2将问题无量纲化(REF_DIMENSIONALIZATION = FREESTREAM_VEL_EQ_ONE)。此选项控制压缩流动问题的无量纲方案。如果想要进行有量纲模拟,可以选择 DIMENSIONAL 选项。对于无量纲化情况 FREESTREAM_PRESS_EQ_ONE,远场的自由流值为(压力 = 1.0,密度 = 1.0,温度 = 1.0)。对于 FREESTREAM_VEL_EQ_MACH,远场的自由来流数值为(速度 = 马赫数,密度 = 1.0,温度 = 1.0),而对于 FREESTREAM_VEL_EQ_ONE,远场的自由来流数值为(速度 = 1.0,密度 = 1.0,温度 = 1.0)。
3、多重网格参数设置
在SU2中,多重网格被用于加速收敛,特别是采用了全近似存储(Full-Approximation Storage, FAS)多重网格方法。这种方法会自动将原始网格聚合为一系列更粗的表示,并在每个非线性求解器迭代中在所有网格级别上执行平滑迭代,以提供更好的残差更新。用户可以通过MGLEVEL选项设置多网格的层数。如果将MGLEVEL设置为零,则多网格功能将被关闭,仅使用原始(精细)网格,也可以选择一个整数级别的层数。
例如,在ONERA M6测试案例中,使用3个更粗的网格级别加上原始网格,总共4个网格级别。此外,还可以指定循环类型(V或W),通常情况下,尽管W循环计算量更大,但它提供了更好的收敛率。除了循环类型外,还有其他调优参数,这些参数控制每个级别上的前平滑和后平滑迭代次数(MG_PRE_SMOOTH、MG_POST_SMOOTH和MG_CORRECTION_SMOOTH),以及有助于实现稳定性的阻尼因子(MG_DAMP_RESTRICTION和MG_DAMP_PROLONGATION)。
值得注意的是,多重网格算法的性能高度依赖于初始网格,并且聚合过程受到并行划分的影响。因此,可能需要大量的调优和实验来优化这些参数。如果在调优多重网格时遇到困难,建议将其关闭(将MGLEVEL设置为0),并在单独的精细网格上使用更高的CFL数,同时收紧隐式系统的收敛容差(使用LINEAR_SOLVER_ERROR和LINEAR_SOLVER_ITER选项)来尝试解决问题。
SU2作为命令行计算的软件,该算例的计算命令为:SU2_CFD turb_ONERAM6.cfg 超算集群使用slurm作业调度系统,需要把计算命令写入slurm脚本中提交计算,以下是脚本SU2.slrum的脚本内容,包含了作业名、核数等计算资源调度设置以及计算命令:
使用以下命令提交计算:
sbatch SU2.slurm
1、输出文件
SU2计算结果可输出为tecplot或paraview软件可视化结果文件,将写入包含流动结果的文件(文件名中包含 "flow")。计算结果数据可在 ParaView (.vtu) 或 Tecplot (.dat 或 .szplt) 中进行可视化。更具体地说,这些文件包括:
flow.vtu(或 flow.szplt)- 全区域流动解 surface_flow.csv(或surface_flow.vtu或surface_flow.szplt)-包含翼型表面数值的文件 restart_flow.dat - 内部格式的重启文件,用于在 SU2 中重启该模拟 history.csv (或 history.dat)- 包含收敛历史信息的文件 *.out – slurm计算日志 利用ParaView读取flow.vtu文件进行后处理。
计算后算例目录文件
2、后处理
文件输出结果后,使用ParaView读取flow.vtu文件进行后处理。超算互联网已部署多个版本的ParaView,可直接部署使用,步骤如下:
(1)搜索软件并安装
(2)打开图形作业提交界面
(3)选择三维桌面
(4)载入算例文件
(5)打开视图,选择物理量,开始制图
(6)完成并输出图片
ONERA M6 上表面的压力系数等值线图
ONERA M6 机翼上表面的马赫数等值线图
本算例网格数较小,并行扩展性差,适合用较少核数并行。测试使用分别使用单节点1核、4核、8核、16核、32核以及跨节点16*2核进行计算,结果如下:
从计算结果来看,该算例展现了较强的并行性能,从1核到32核并行加速比基本呈线性。而同核数下,跨节点计算比单节点计算稍慢,这是由于跨节点计算通信占比更大,符合并行计算的计算规律。
本次实践,我们详细介绍了如何在超算互联网使用SU2软件进行CFD仿真模拟的基本流程。从选择合适的软件版本到准备网格文件、编辑配置文件,再到使用超算资源提交计算任务进行结果可视化。通过ONERA M6机翼这个经典的测试案例,深入探讨了无粘流条件下跨音速流动的模拟,并重点讲解了多重网格技术的应用及其参数调优策略。
希望本篇最佳实践为您提供一些指导和建议。