跳到主要内容
Sandbox Physics

可压缩流 · 双曲守恒律

Shock Tube & Riemann Problem

用 HLL 有限体积方法推进一维 Euler 方程,并把每个网格单元与精确 Riemann 解同步叠加。管内密度、x–t 波系、四变量剖面和守恒漂移一起更新。

交互模型Shock Tube & Riemann Problem
无量纲时间0.00000.0000
星区压强 pp_*0.3031p00.3031\,p_0
激波速度 SsS_s1.752a01.752\,a_0
密度误差 L1L_10.00%0.00\,\%
质量漂移0.00%0.00\,\%
能量漂移0.00%0.00\,\%
波系稀疏扇 · 接触间断 · 激波

物理教程

激波管:一个初始跳变怎样拆成三类波

背景激波管先用隔膜分开两侧均匀气体。隔膜瞬间移除后,初值只在一个位置不连续,却会自组织成激波、接触间断与稀疏扇;三者分别传递压缩、物质界面和连续膨胀。

为什么值得理解Gary Sod 在 1978 年把这组初值确立为可压缩流代码的经典测试。这里还采用 Harten、Lax 与 van Leer 在 1983 年提出的两波近似通量思想,让数值解能与精确自相似 Riemann 解逐格比较。

先抓重点

核心问题
同一个隔膜跳变,为什么会同时生成激波、接触间断和稀疏扇?
一句话直觉
一维 Euler 系统有三族特征速度:uau-auuu+au+a。不同守恒量沿这些波族重新分配,因此一个跳变不会只产生一条波。

核心数学模型

一维 Euler 守恒律

t[ρρuE]+x[ρuρu2+pu(E+p)]=0\frac{\partial}{\partial t}\begin{bmatrix}\rho\\ \rho u\\ E\end{bmatrix}+\frac{\partial}{\partial x}\begin{bmatrix}\rho u\\ \rho u^2+p\\ u(E+p)\end{bmatrix}=0

三行分别守恒质量、动量与总能量;数值通量只在网格界面交换这些量。

理想气体闭合与声速

p=(γ1) ⁣(E12ρu2),a=γpρp=(\gamma-1)\!\left(E-\frac12\rho u^2\right),\qquad a=\sqrt{\frac{\gamma p}{\rho}}

比热比决定内能、压强与声速之间的关系,也改变三族特征波的速度。

HLL 两波数值通量

FHLL=SRFLSLFR+SLSR(URUL)SRSLF_{\mathrm{HLL}}=\frac{S_R F_L-S_L F_R+S_LS_R(U_R-U_L)}{S_R-S_L}

当左右信号速度跨过零时,HLL 用一个平均中间态保持守恒;代价是接触间断比精确解更宽。

CFL 稳定步长

ΔtCCFLΔxmaxi(ui+ai)\Delta t\le C_{\mathrm{CFL}}\frac{\Delta x}{\max_i\left(|u_i|+a_i\right)}

每一步都让最快特征波移动不到一个网格宽;提高分辨率会自动缩短时间步。

常见难点

接触间断不是较弱的激波

容易误解密度仍有跳变,所以中间那条线只是另一条小激波。

正确理解接触间断两侧压强与速度连续,只有密度和物质标签跳变;它以星区流速移动。

平滑的激波不代表物理激波很厚

容易误解图上的激波跨越多个网格,所以真实无黏激波也有同样厚度。

正确理解Euler 激波在连续模型中是间断;这里的宽度主要来自一阶 HLL 数值耗散与有限分辨率。

动手实验

  1. 01

    复现 Sod 基准

    选择 Sod 基准,保留精确解叠加并运行到自动暂停。

    应该观察到: 左侧生成连续稀疏扇,中间接触间断随流移动,右侧激波最先前进;数值曲线贴近虚线精确解。
  2. 02

    放大压强比

    切换到强激波,再逐步增加网格数并观察密度误差。

    应该观察到: 激波速度与星区压强显著增大;更多网格让前沿变窄并降低整体误差,但时间步也随之缩短。
  3. 03

    交换波系拓扑

    比较对撞流与对称膨胀,并打开 x–t 特征线图。

    应该观察到: 对撞把两侧波都变成激波;向外分离则生成两个稀疏扇,说明波型由星区压强相对初始压强决定。