用于冲击波建模的著名且方便的测试用例之一是 1D Sod 的冲击管。这是气体动力学的可压缩欧拉方程的黎曼问题。初始设置是通过用隔膜划分域一半来完成的。域的左侧和右侧具有选择的初始值以生成冲击波。左侧区域的初始压力和密度值高于右侧区域。隔膜两侧的速度为零。
就我而言,我知道冲击波的初始马赫数和右手边的初始值。我想知道当只给出马赫数和初始右侧状态时如何确定左侧的初始值。
用于冲击波建模的著名且方便的测试用例之一是 1D Sod 的冲击管。这是气体动力学的可压缩欧拉方程的黎曼问题。初始设置是通过用隔膜划分域一半来完成的。域的左侧和右侧具有选择的初始值以生成冲击波。左侧区域的初始压力和密度值高于右侧区域。隔膜两侧的速度为零。
就我而言,我知道冲击波的初始马赫数和右手边的初始值。我想知道当只给出马赫数和初始右侧状态时如何确定左侧的初始值。
我已经在 IPython notebook 中使用 PyClaw 实现了下面派生的解决方案。如果您下载它,您可以调整初始值并查看计算的解决方案。
在一维欧拉方程的黎曼问题的解中,一般有 3 个波。其中两个是真正非线性的。另一种是接触不连续性,它只会带来密度的跳跃。我的理解是,您想设置初始左右状态,使得速度在任何地方最初都为零,最右边的波是相对于右状态声速移动的冲击波,最左边的波是稀疏化(您没有指定最后一个要求,但它会使问题类似于 Sod 冲击管)。下图描述了这种情况,它也建立了我将使用的符号。

设
使用 Rankine-Hugoniot 条件,我们发现接触右侧的状态由以下给出:
如果您愿意为左侧状态设置一个非零速度,您可以在这里停下来并使用刚刚为左侧状态导出的值。如果你想要,请继续阅读。
接下来,我们知道左状态和状态必须通过左向稀疏连接。相关的黎曼不变量意味着
和
因此,我们可以为指定任何我们喜欢的值,并根据上面的等式计算剩余的值。唯一的问题是生成的稀疏应该满足熵条件,如果则为真。
我使用Randall Leveque 关于有限体积方法的文本的第 14 章解决了这个问题。
有一个可能的左状态的 1 参数族(一旦您检查未知数和约束的数量,这似乎很明显)。
如果您没有将左态速度限制为零,则可以通过将左态设为来设置仅出现冲击波的问题。但是由于您想要零初始速度,因此有必要使用上述完整过程。
如果我记得我的可压缩物,您想使用正态冲击方程。您还需要选择一个。