密度基求解器
理论:波速差使收敛变慢
概述
听说密度基求解器适合高速流动,低速时有什么问题?
流动中的信息有随流前进的,也有以声波前后传播的。密度基同时求解两者,时间步长和收敛速度由最快的声波与最慢的流动之差决定。高速流动中这个差距小,但低速时声速远大于流速,差距达到几十、几百倍。于是要用适应声波的细小时间步长追踪缓慢的流动变化,迟迟不收敛。而且低马赫数下数值误差带来的人工粘性也变大,精度下降。解决这个问题的就是预处理。
波速与刚性
u为流速,c为声速,N为流动方向网格数。n_step为显式格式下流体穿过计算域一次所需的步数。
Weiss-Smith预处理
适用于理想气体。U_r为参考速度,低速时取流速,超过声速时取声速。马赫数小时最大波速约为流速的1.62倍(黄金比)。
诞生于航空的解法
密度基解法于1970~80年代为计算飞机跨声速、超声速流动而发展起来。代表有MacCormack法、Jameson等的有限体积法与龙格-库塔法组合、Roe近似黎曼求解器等,其优势是能锐利地捕捉激波。但在低速流动中表现不佳,1980~90年代Turkel、Weiss与Smith等提出预处理,使同一求解器能处理从低速到超声速的流动。
算例
例1:马赫数与收敛速度(200格、CFL 1、显式)
| 马赫数 | 波速比(无预处理) | 穿过一次的步数 | 预处理后比值 | 预处理后步数 |
|---|---|---|---|---|
| 0.01 | 101 | 20,200 | 3.2 | 323 |
| 0.05 | 21 | 4,200 | 3.2 | 323 |
| 0.1 | 11 | 2,200 | 3.2 | 324 |
| 0.3 | 4.3 | 866 | 3.0 | 328 |
| 2.0 | 1.5 | 300 | (不需要) | 300 |
预处理后的比值为最大波速(u′ + c′)与最小波速(u′)之比。马赫2时参考速度以声速为上限,预处理不起作用(本来也不需要)。
例2:马赫2正激波(γ = 1.4)
| 量 | 理论值 |
|---|---|
| 压力比 p₂/p₁ | 4.500 |
| 密度比 ρ₂/ρ₁ | 2.667 |
| 温度比 T₂/T₁ | 1.687 |
| 激波后马赫数 | 0.577 |
| 总压比 p₀₂/p₀₁ | 0.721 |
密度基求解器验证常用的值。还要确认激波前后的值在2~3个网格内完成跃变且无振荡。
马赫0.01时,预处理快了60多倍。
按步数看是这样。但预处理改写了时间导数项,中间的时间变化在物理上不正确,只用于求定常解。非定常计算中,与在物理时间步内进行伪时间迭代的双时间步法结合,只对伪时间迭代施加预处理。预处理与激波捕捉本身无关,所以在低速区与超声速区混合的流动中效果最大,例如超声速喷管出口附近的滞止区域。反之若整体都是低速且无可压缩效应,用压力基求解器往往更直接。
选用与设置
- 马赫数大致超过0.3或有激波时考虑密度基。
- 包含低速区域时启用预处理。
- 非定常时用双时间步法,预处理只用于伪时间。
- 用隐式格式或多重网格增大CFL加快收敛。
- 用激波管或正激波理论值验证。
“残差降不下来的通风计算”
某房间通风沿用手头的密度基设置计算,迭代数万次残差几乎不降。风速约0.5 m/s,马赫数约0.0015,波速比约680倍,没有预处理自然不收敛。启用预处理后几百次即收敛,但最终换成压力基求解器更快,结果也更稳定。求解器应根据马赫数来选择。
常见错误
错误与对策
| 错误 | 后果 | 对策 |
|---|---|---|
| 低速无预处理 | 不收敛且精度低 | 启用预处理 |
| 非定常直接预处理 | 时间变化错误 | 双时间步 |
| 激波处振荡 | 压力变负 | 使用限制器 |
| CFL过大 | 发散 | 逐步提高 |
| 整体低速却用密度基 | 计算慢 | 考虑压力基 |
我想了解相关内容。