SU2 软件套装由一系列基于 C++ 的软件模块组成,可执行各种 CFD 分析和 PDE 约束优化任务。 下文将对每个模块进行总体描述,以便了解套装由的功能,更多详情可参阅《开发人员指南》。 某些模块可以单独执行,特别是用于执行高保真(high-fidelity)分析的 SU2_CFD,但该套件的真正功能在于通过模块耦合来执行复杂的活动,包括设计优化和自适应网格细化等。

C++ 模块的一个主要特点是,每个模块的设计都尽可能将功能分开,并充分利用编程语言类继承结构的优势。 这使得 SU2 成为一个理想的平台,用于原型开发新的数值方法、离散格式、控制方程组、网格扰动算法、自适应网格细化方案、并行化方案等。 您只需定义一个新的子类,然后就可以开始工作了。 这种理念使 SU2 能够快速扩展到适合用户需求的各种 PDE 分析,并且正在为未来的 SU2 版本添加其他功能。 SU2 软件套装中的主要 C++ 和 Python 工具将在下文简要介绍,但请注意,模块可能会随着未来的开发而添加或删除。

C++软件模块

  • SU2_CFD (计算流体力学代码,Computational Fluid Dynamics Code): SU2_CFD 可解决欧拉(Euler)、纳维-斯托克斯(Navier-Stokes)和雷诺平均纳维-斯托克斯(RANS)等方程组的直接、伴随和线性化问题。 SU2_CFD 可以串行运行,也可以使用 MPI 并行运行。 它采用有限体积法(FVM)和基于边的数据结构。 间断伽辽金有限元法求解器目前正在开发中,并将在即将发布的版本中向公众提供。 可采用中心/迎风格式以及显式/隐式时间离散方法。 该软件还具有多种高级功能,包括残差平滑、预处理和多重网格,以提高鲁棒性和收敛性。
  • SU2_DOT (梯度映射代码,Gradient Projection Code): 计算与气动表面变化有关的函数的偏导数。 SU2_DOT 使用表面灵敏度、流动解决方案和几何变量的定义来评估特定函数(如阻力、升力等)的导数。 这实质上是对特定设计变量参数化的临界灵敏度和几何灵敏度进行大点乘积运算。
  • SU2_DEF (网格形变代码,Mesh Deformation Code): 计算空气动力学表面和周围体积网格的几何变形。 一旦定义了变形类型,SU2_DEF 就会通过求解体积网格上的线性弹性方程来执行网格变形。 三维几何参数化是通过自由变形来定义的,而二维问题可以通过自由变形或凹凸函数(如 Hicks-Henne)来定义。
  • SU2_MSH (网格自适应代码,Mesh Adaptation Code): 根据对收敛的流场、邻接解和线性化问题的分析,使用各种技术执行网格调整,从而战略性地完善关键流特征的网格。 该模块还包含一个预处理器,可为周期性边界条件创建适当的结构。
  • SU2_SOL (求解输出代码,Solution Export Code): 根据 SU2 重启文件生成体积解和表面解文件。
  • SU2_GEO (几何定义代码,Geometry Definition Code): 几何预处理和定义代码。 特别是,该模块用于计算形状优化的几何约束条件。

虽然它们不是 C++ 模块,但源代码发行版中还有两个类似的目录值得一提。 首先,SU2_IDE(集成开发环境)目录包含与各种集成开发环境(Eclipse、VisualStudio、Wing、Xcode)相关的文件,以帮助开发人员。 其次,SU2_PY 目录包含构成 Python 框架的所有文件,其中一些文件将在下文中重点介绍。

算法微分支持和离散伴随

SU2 包括对基于操作符重载的算法微分(AD)的集成支持,以计算任意导数。 该功能的一个应用是 SU2 中实现的离散伴随求解器。 与连续积分法不同的是,使用该求解器需要 SU2_CFD 和 SU2_DOT 模块的特殊版本。

  • SU2_CFD_AD: 在 AD 的帮助下,利用流动求解器的一致线性化,求解离散伴随方程。 虽然它的功能与 SU2_CFD 完全相同,但由于 AD 的开销,将它用于其他求解器会导致速度稍慢。
  • SU2_DOT_AD: 离散伴随公式不包括网格变形的影响,因此该模块将计算函数相对于计算网格变化的所需偏导数。 与 SU2_DOT 不同,SU2_DOT_AD 使用体积敏感度来计算导数。 最后,气动表面上的敏感度会被投射到特定的设计参数上。

Python 脚本

SU2 的各个软件模块可结合在一起,使用提供的 Python 脚本执行复杂的分析和设计任务。 下文简要介绍了当前版本软件中包含的脚本。

  • 高保证分析脚本(High-fidelity analysis scripts): 这些脚本旨在提高 SU2 框架的灵活性。 更具体地说,它们简化了并行任务的执行、网格适应或与其他软件的连接。
  • parallel_computation.py: 在多核或集群计算架构上处理并行 CFD 作业的设置和执行。 该脚本可并行执行 SU2_CFD,并在计算完成后运行 SU2_SOL,以提供可由您选择的后处理软件打开的解决方案。
  • mesh_deformation.py: .在多核或集群计算架构上处理并行网格变形作业的设置和执行。 该脚本可并行执行 SU2_DEF。
  • 最优形状设计脚本(Optimal shape design scripts): 这些脚本的设计目的是使优化形状设计过程自动化,其中包括函数和梯度计算、网格变形和优化算法。
  • continuous_adjoint.py: 使用连续伴随法自动计算指定函数对设计参数扰动(在 SU2_CFD 配置文件中指定)的敏感度。 调用 SU2_CFD 和 SU2_DOT 模块来执行分析。
  • discrete_adjoint.py: 使用离散伴随法自动计算指定函数对设计参数扰动(在 SU2_CFD 配置文件中指定)的敏感度。 调用 SU2_CFD_AD 和 SU2_DOT_AD 模块来执行分析。
  • finite_differences.py: 使用有限差分法自动计算指定函数对设计参数扰动的敏感度。 与 continuous_adjoint.py 脚本一样,从配置文件中读取设计变量信息,然后反复调用 SU2_CFD 计算相应的梯度元素。
  • shape_optimization.py: 协调所有 SU2 模块执行形状优化。 目标函数的选择、设计变量和指定优化问题的其他模块设置都通过配置文件中的选项进行控制。
Energier-CFD

Views: 8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注