开源CFD代码:SU2

来源:CFD之道


提到开源CFD代码,很多人想到的是OpenFOAM,不过今天要介绍的是SU2。

SU2最初由美国斯坦福大学带领开发,是一套基于 C++和Python的用于偏微分方程 (PDE) 的数值求解和求解PDE约束优化问题开源软件工具集,该工具集针对计算流体动力学(CFD)和空气动力学形状优化而设计,但可扩展用于处理其他任意控制方程组,如势流、弹性、电动力学、化学反应流等。近几年在用户和开发人员的不断努力下,SU2已成为一个相对成熟的CFD工具,含有了可压缩和不可压缩流体的Euler、NS和 RANS求解器。可进行从低速不可压流动到高超速可压缩流体的计算。支持OpenMP与MPI并行计算,同时具备了网格自适应功能。SU2开源,其遵循LGPL协议(LGPL协议是一个商用友好的协议)。

SU2相关网站:

关于 SU2 的技术细节,可参阅以下 AIAA 期刊文章:"SU2: An open-source suite for multiphysics simulation and design," AIAA Journal, 54(3):828-846, 2016. http://arc.aiaa.org/doi/10.2514/1.J053813

1 软件安装

SU2支持手动从源代码编译,也可以通过预编译可执行程序安装使用,其目前已经提供了支持Linux、macOS、Windows操作系统的安装程序。源代码及安装程序可以在网址:https://su2code.github.io/download.html 下载。



这里试试在Windows下安装SU2。

  • 先下载上图中的SU2 MPI V8.0.0 for Windows(如果本机上已经安装了MS MPI的话可以安装这个,否则安装上面那个)
  • 下载后得到一个压缩文件,其中包含一个bin文件夹,其内容如下图所示



  •      解压文件,并将bin文件夹改名为SU2,如放置于C盘根路径下
    • 将路径c:\SU2添加到环境变量Path中,确保在cmd中能够直接运行程序SU2_CFD.exe,如下图所示表示一切OK



    2 测试计算

    利用Quick Start文档中提供的案例进行测试。该案例利用SU2计算NACA0012翼型。该案例的网格文件与配置文件可以在SU2源代码QuickStart文件夹中找到。计算结果如下图所示。


    NACA 0012 Pressure

    本案例求解自由流条件的空气,攻角为 1.25 度的 NACA 0012 翼型,计算条件为:

    • Pressure = 101325 Pa
    • Temperature = 273.15 K
    • Mach number = 0.8
    所提供的非结构化网格为本地 .su2 格式。它由 10216 个三角形单元、5233 个点和名为 airfoil 和 farfield 的两个边界组成。翼面使用流动切线欧拉壁边界条件,而远场使用基于标准特性的边界条件。下图为网格视图。



    除网格外,运行 SU2_CFD 求解器所需的唯一文件就是详细的配置选项。它定义了问题,包括数值方法、流动条件、多网格等所有选项,还指定了输入网格和输出文件的名称。为保持本教程的简洁性,这里只讨论两个配置选项。其余教程将讨论更多配置选项。

    在文本编辑器中打开 inv_NACA0012.cfg 文件后,其中一个早期选项是 MATH_PROBLEM:

    % Mathematical problem (DIRECT, CONTINUOUS_ADJOINT)
    MATH_PROBLEM= DIRECT

    SU2 能够运行多组方程的直接问题和邻接问题。直接分析可求解几何体周围的流动,并计算出相关量,如体上的升力和阻力系数。通过求解邻接问题,可以采用一种有效的方法,获得单一目标函数(如阻力系数)相对于大量设计变量(表面变形)的变化。在进行空气动力学形状设计时,直接求解和邻接求解通常可以提供优化器所需的目标分析和梯度信息。在本教程中,我们将首先对 NACA 0012 机翼进行直接模拟。

    用户还可以设置输出文件的格式:

    % Output file format
    OUTPUT_FILES= (RESTART, PARAVIEW, SURFACE_CSV)

    SU2 可以输出 .vtu (ParaView)、.dat (Tecplot ASCII)和 .szplt (Tecplot 二进制)格式的解文件,这些文件可分别在 ParaView 和 Tecplot 可视化软件包中打开。在本教程中,我们将文件类型设置为 PARAVIEW。

    采用以下步骤求解案例:

    • 可以导航到 QuickStart 目录,或者创建一个运行教程的目录。如果创建新目录,请将配置文件 (inv_NACA0012.cfg) 和网格文件 (mesh_NACA0012_inv.su2) 复制到该目录。



    • 在命令行输入 SU2_CFD inv_NACA0012.cfg,运行可执行文件。如果没有设置适当的环境变量,可能需要在命令行中指定 SU2_CFD 可执行文件的路径。



    • SU2 将在流量求解器的每次迭代中输出残差更新,模拟将在达到指定的收敛标准后停止。计算完毕后如下图所示。



    • SU2计算完毕后,将写入包含流动结果的文件(文件名中包含 "flow")。计算结果数据可在 ParaView (.vtu) 或 Tecplot (.dat 或 .szplt) 中进行可视化。更具体地说,这些文件包括:
      • flow.vtu(或 flow.szplt)- 全区域流动解。
      • surface_flow.csv(或surface_flow.vtusurface_flow.szplt)-包含翼型表面数值的文件。
      • restart_flow.dat - 内部格式的重启文件,用于在 SU2 中重启该模拟。
      • history.csv (或 history.dat)- 包含收敛历史信息的文件。

    生成的文件如下图所示。



    利用ParaView读取flow.vtu文件进行后处理。


    NACA0012翼型周围的压力等值线


    NACA0012 机翼周围的马赫数等值线

    计算结果看起来还不错。

    3 其他

    SU2拥有比较完善的文档系统,网站上可以直接查看理论文档、用户文档、开发文档、案例文档、V&V等。



    不过目前从官网提供的案例来看,SU2可以用于流动、传热、多组分、结构计算、多物理场(流固耦合、共轭传热等)、伴随求解优化等方面,目前尚不清楚其是否能够求解多相流、多参考系、动网格之类的问题。

    SU2的求解参数通过一个cfg文件来编写,调试和修改都比较方便。

    SU2的资料似乎挺少,远没有OpenFOAM丰富,不过在可压缩流动方面,SU2似乎比OpenFOAM有更好的表现。

    目前还不清楚SU2的代码开发机制是怎样的,后面有时间可以研究一下。




    原文链接:https://mp.weixin.qq.com/s/KLQPpR_TADzhOg-7b3v_mg