一维 Euler 守恒律
三行分别表示质量、动量和总能量守恒。数值通量只在网格界面上让相邻两格交换这些量。
可压缩流 · 双曲守恒律
激波管的隔膜一破,为什么会同时生出激波、接触间断和稀疏扇? 一维 Euler 方程里的信号有三种传播速度:流速减声速、流速本身、流速加声速。初始跳变就按这三族拆成三道波:一道激波;一个接触间断,两侧密度不同,压强和速度却相同;还有一个稀疏扇。
分别设定左右两侧的初态,用 HLL、Rusanov 或 HLLC 有限体积通量推进一维 Euler 方程,再把结果和精确 Riemann 解叠在一起比较。管内密度、x–t 波系图、四个变量的剖面和守恒量漂移同步更新。
物理教程
背景激波管里,一道隔膜把两段均匀气体隔开。隔膜一瞬间撤掉,管内只有一处不连续,它却会自己分成激波、接触间断和稀疏扇:激波压缩气体,接触间断是两种气体的分界面,稀疏扇让气体连续膨胀。
为什么值得理解Gary Sod 在 1978 年把这组初值定为检验可压缩流代码的经典算例。这里还用了 Harten、Lax 和 van Leer 在 1983 年提出的两波近似通量,数值解的每一格都和精确的自相似 Riemann 解对照。
先抓重点
三行分别表示质量、动量和总能量守恒。数值通量只在网格界面上让相邻两格交换这些量。
比热比把内能、压强和声速联系起来;改变它,三族波的速度都会跟着变。
左信号速度为负、右信号速度为正时,HLL 在两者之间只用一个平均的中间态。这样做仍然守恒,代价是接触间断比精确解宽。
一步之内,最快的波走不出一个网格宽。网格一加密,时间步就自动变短。
容易误解密度仍有跳变,所以中间那条线只是另一条小激波。
正确理解接触间断两侧的压强和速度都连续,跳变的只有密度和气体种类。它随星区里的气流一起移动。
容易误解图上的激波跨了好几个网格,真实的无黏激波应该也这么厚。
正确理解在 Euler 方程里,激波是一个间断。图上看到的宽度,主要来自一阶 HLL 格式的数值耗散和有限的网格分辨率。
选择“Sod 基准”,保持精确解叠加显示,一直运行到自动暂停。
你会看到: 左边展开一个连续的稀疏扇,中间的接触间断随气流移动,右边的激波跑在最前面。数值曲线紧贴着虚线画的精确解。切换到“强激波”,逐步增加网格数,同时看密度误差。
你会看到: 激波速度和星区压强都大幅上升。网格越多,激波前沿越窄,整体误差越小,但时间步也越短。打开 x–t 特征线图,比较“对撞流”和“对称膨胀”。
你会看到: 两股气流对撞时,两侧的波都是激波;向外分开时,两侧都是稀疏扇。每一侧出现哪种波,要看星区压强比这一侧的初始压强高还是低。概念灵感:FluidMotion。模拟和图形都是原创,模型的适用范围见上文。