MMS: 压缩欧拉方程

类别: 分析 | 综合版 2026-04-06
CAE visualization for mms euler theory - technical simulation diagram
MMS: 压缩欧拉方程

可压缩欧拉方程MMS的理论基础

守恒形式与验证对象

可压缩欧拉方程是密度、动量、总能的守恒律方程组(二维、带源项):

$$ \frac{\partial \mathbf{Q}}{\partial t} + \nabla\cdot\mathbf{F}(\mathbf{Q}) = \mathbf{S}, \qquad \mathbf{Q} = \begin{pmatrix} \rho \\ \rho\mathbf{u} \\ E \end{pmatrix}, \quad E = \frac{p}{\gamma - 1} + \frac{1}{2}\rho|\mathbf{u}|^2 $$

MMS的做法是先取原始变量 \( (\rho_m, \mathbf{u}_m, p_m) \) 的制造解,代入守恒形式的左端,导出各方程的源项 \( \mathbf{S} = (s_\rho, \mathbf{s}_{\rho u}, s_E) \)。由于没有粘性项,推导本身比Navier-Stokes短,但双曲型方程组特有的难点——基于特征理论的边界条件、正定性、与激波捕捉格式的相互作用——才是验证的主战场。

制造解的设计——正定性与光滑性

🙋

我照着热传导MMS的套路放了个sin型制造解,结果算例立刻因为"负压力"崩掉了……


🎓

这是可压缩MMS的第一课。欧拉方程组中密度和压力必须在物理上为正,求解器本身也是按正定性前提写的。所以制造解的定番设计是"常数值+小幅扰动"的形式,例如 \( \rho_m = \rho_0\,[1 + 0.1\sin(\pi x)\cos(\pi y)] \),把扰动幅值压在基准值的10~20%,保证全场 \( \rho_m > 0,\ p_m > 0 \)。顺带一提,马赫数分布也是设计对象,一开始就要决定全场统一为亚声速还是超声速——因为边界条件的处理方式完全不同。

特征理论与边界条件的个数

在双曲型方程组中,边界上可以指定的条件数由入射特征的条数决定。二维欧拉的特征速度为 \( u_n - c,\ u_n,\ u_n,\ u_n + c \) 共4条(\( c \) 为声速),指定个数随边界处的流动状态而变。

边界状态入射特征数(二维)应指定量的示例
超声速入流4(全部)全部变量由制造解给定
亚声速入流3例:总温、总压、气流角(1个变量从内部外推)
亚声速出流1例:仅指定静压,其余外推
超声速出流0全部外推(什么都不指定)

MMS同样遵守这条规则:只对允许指定的条数给出制造解的值,才是正确的验证。若在所有边界把全部变量都用Dirichlet条件固定,亚声速情形就成了过约束,会在边界附近产生非物理的误差层,污染观测精度阶。这是可压缩MMS最高频的失败。

源项推导与精度阶验证的手法

推导要在守恒形式上做

源项要按求解器实际离散的形式推导。有限体积求解器解的是守恒形式,如果按原始变量写的非守恒形式导出源项再注入,即使在连续层面等价,作为离散层面的验证也是不合格的做法。用SymPy等的流程为:①定义原始变量的制造解,②符号化地构造守恒变量与通量,③对 \( \partial_t \mathbf{Q} + \nabla\cdot\mathbf{F} \) 求导得到各式的源项,④做CSE(公共子表达式消除)后生成代码。能量方程的源项因为牵涉压力功与动能的导数而最为冗长,务必通过与数值微分的随机点比对

关闭限制器与人工粘性再测量

可压缩求解器标配了用于激波捕捉的限制器与人工粘性。它们在光滑解上也可能被触发,把局部精度阶压到一阶,妨碍对格式固有精度阶的验证。验证的规矩分两段:

  1. 第一段:关闭限制器(或使用在光滑区不激活的限制器)确认名义精度阶——验证离散化本身
  2. 第二段:在实际运行配置(限制器开启)下记录精度阶还能保持到什么程度——把握实用状态的误差行为。此处掉阶本身是设计使然,目的是知道掉多少

误差评估按守恒变量分别进行

误差范数要对 \( \rho, \rho u, \rho v, E \)(或原始变量 \( \rho, u, v, p \))分别计算,以所有变量都以名义精度阶收敛作为合格判据。若只有一个变量精度阶偏低,就能把缺陷缩小到与该变量相关的边界处理或通量计算上(例如只有能量偏低→典型原因是边界处温度、压力外推的精度阶不足)。含时间推进时,与NS-MMS一样把空间与时间的验证分开做。

实务应用流程

标准验证方案的构成

  1. 二维亚声速MMS——马赫0.3~0.5左右的光滑流场。连同特征边界(入流指定3个、出流指定1个)的实现一起确认精度阶
  2. 二维超声速MMS——马赫1.5~3左右。全指定入流+全外推出流,验证边界的另一条代码路径
  3. 三维化——用各方向波数不同的制造解,检出维度相关的缺陷(下标搞错等)
  4. 实用配置下的复测——记录限制器与人工粘性开启时的有效精度阶

这四项一套下来,通量计算、边界处理、多维推广这几条主要路径就基本覆盖了。若要验证壁面(滑移边界),一开始就要决定:是把制造解的速度场设计成在边界上与壁面平行,还是当作允许穿透的带源项边界来处理。

MASA收录解与已知精确解的利用

MASA库中收录了欧拉方程用的、已验证的制造解(二维/三维、亚声速设计),可作为自行推导结果的比对对象。此外可压缩领域还有等熵涡(isentropic vortex)输运这一精确解,无需注入源项即可测量时间推进格式的精度阶,是经典基准算例。"先用等熵涡确认基本功→再用MMS覆盖边界与全部项"的两段式,是代码验证方案在实务上的定番构成。

报告格式

报告书中应记载:①制造解的公式与幅值、马赫数设计,②各边界类型下所指定的量,③网格序列与加密比,④分变量的误差范数表与观测精度阶,⑤限制器开启/关闭各自的结果。其中②尤其是可重现性的关键——没有写明"亚声速入流指定了什么"的验证报告,第三方无法复现。

各求解器的实施方法

各求解器对应表

求解器源项的注入方式实务备注
SU2改造源代码(开源),或经Python wrapper自定义源项验证套件中有MMS算例;研究用途实绩丰富
OpenFOAM(rhoCentralFoam等)fvOptions/改造求解器注意中心迎风类格式的限制器设置
Ansys Fluent(密度基)UDF(DEFINE_SOURCE,逐方程)核对能量方程源项的单位(W/m³)与E的定义
自研代码生成的代码直接嵌入验证自由度最大,易于把精度阶测试接入CI

实现前应确认的"定义差异"检查清单

  • 总能的定义——用的是 \( E \)(单位体积总能)、\( e \)(内能)还是 \( h_0 \)(总焓)?能量方程源项的形式会随之改变
  • 比热比与气体常数——推导时用的 \( \gamma, R \) 必须与求解器设置一致。注意空气默认值(1.4 / 287)的隐含假设
  • 无量纲化——若求解器内部为无量纲,源项也要用相同的参考量无量纲化后再传入
  • 源项的符号约定——是加在右端还是移到左端?以手册中方程的写法为准

前沿研究动态

高阶格式(DG·FR)的验证竞赛

间断伽辽金(DG)与Flux Reconstruction类高阶格式的名义精度阶高达四阶、六阶,因此用MMS实证精度阶已成为其开发文化的一部分。在国际研讨会(高阶CFD方法的对比活动)上,以共同的MMS与等熵涡问题横向比较"误差 vs 自由度""误差 vs 计算时间"已是标准流程,MMS由此超越了单纯的内部验证,成为格式间比较的共同语言

熵稳定格式与结构保持

随着在离散层面满足熵不等式的熵稳定格式不断发展,验证项目也从单纯的"精度阶"扩展到结构的保持(熵收支、动能守恒性、自由流保持)。先用MMS确认精度阶,再叠加自由流保持测试(均匀来流会不会被扰乱)与熵收支测量的多层验证,已是当代可压缩求解器开发的标准。

含激波的验证研究

光滑的MMS无法验证激波捕捉能力。针对含间断的验证,学界正在研究严格满足激波关系式的分片制造解、运动激波的精确解、与激波贴体网格的比较等。实务上的整理是这样的分工:"光滑区的精度阶用MMS,激波的位置与强度用Riemann问题类基准算例"。跨越激波的全局范数其精度阶在理论上就会降到一阶,在那里要求高阶属于验证设计上的错误。

故障排查

按症状的原因与对策

症状可能原因对策
出现负密度·负压力后立刻发散制造解的扰动幅值过大把幅值降到基准值的10~20%。推导时确认全场 \( \rho_m, p_m \) 的最小值
仅边界附近误差偏大且掉阶亚声速边界过约束、ghost cell外推精度阶不足按特征理论修正指定条数。边界外推取与内部格式同阶
精度阶在全场卡在一阶限制器·人工粘性在光滑解上被触发第一段验证中予以关闭。检查TVB常数等阈值
只有能量的精度阶偏低E的定义不一致、边界处温度/压力外推有缺陷对照定义检查清单。用分变量误差把边界单独评估
加入源项后定常计算不收敛漏掉了源项的时间依赖部分/定常MMS混入了时间项做定常验证就从制造解中去掉 \( t \)。确认残差停滞的量级
二维合格但三维出不来精度阶方向下标搞错、z方向通量有缺陷用各方向波数不同的制造解,确认误差的方向依赖性

排查的最短路径

🙋

到底是边界有问题、通量有问题,还是源项有问题……排查有没有先后顺序?


🎓

三步就能锁定。第一步:源项的随机点比对——先给推导与代码生成洗清嫌疑。第二步:周期边界的制造解(用全方向周期的流场)——把边界处理排除在验证之外,只测内部格式的精度阶。这里若出不来精度阶,凶手就是通量或重构。第三步:把边界类型一种一种加回来——按周期→超声速进出流→亚声速进出流的顺序提高难度,定位在哪种边界上崩掉。再结合误差的空间分布来看,凶手在边界附近还是遍布全场就一目了然。这套步骤不限于可压缩,对双曲型方程组的MMS普遍适用。

相关文章:MMS源项的自动推导NS方程MMS的故障排查MMS收敛精度阶的故障排查

相关模拟器

通过本领域的交互式模拟器直观感受理论

模拟器一览

相关领域

结构分析流体分析热分析
评价本文
感谢您的反馈!

帮助
想了解
更多
报告
错误
有帮助
0
想了解更多
0
报告错误
0
Written by NovaSolver Contributors
Anonymous Engineers & AI — 网站地图
查看简介