使用Lax-Wendroff数值方法来求解激波管问题,绝热指数为1.4,初始物理分布含小于零部分和其他部分,求t=0.2的数值解,计算域为(-0.5,0.5)
时间: 2024-05-25 21:12:29 浏览: 139
shock tube_laxtube_LAXShocktube_激波管_Lax-Wendroff_数值模拟_
5星 · 资源好评率100%
激波管问题可以用一维欧拉方程来描述:
$$
\frac{\partial}{\partial t}\begin{pmatrix} \rho \\ \rho u \\ E \end{pmatrix} + \frac{\partial}{\partial x}\begin{pmatrix} \rho u \\ \rho u^2+p \\ u(E+p) \end{pmatrix} = 0
$$
其中,$\rho$是密度,$u$是速度,$p$是压强,$E$是总能量密度,满足如下关系:
$$
E = \frac{p}{\gamma-1} + \frac{1}{2}\rho u^2
$$
其中,$\gamma$是绝热指数。
为了使用Lax-Wendroff数值方法求解上述方程,我们需要将方程转化为守恒变量形式。定义守恒变量:
$$
\mathbf{W} = \begin{pmatrix} \rho \\ \rho u \\ E \end{pmatrix}
$$
以及通量函数:
$$
\mathbf{F}(\mathbf{W}) = \begin{pmatrix} \rho u \\ \rho u^2 + p \\ u(E+p) \end{pmatrix}
$$
则欧拉方程可以写成守恒变量形式:
$$
\frac{\partial}{\partial t}\mathbf{W} + \frac{\partial}{\partial x}\mathbf{F}(\mathbf{W}) = 0
$$
接下来,我们需要使用Lax-Wendroff数值方法对上述方程进行离散化。假设我们在计算区间$[x_{i-1/2},x_{i+1/2}]$上进行离散,将时间$t$离散化为$t_n=n\Delta t$,则有:
$$
\mathbf{W}_i^n = \mathbf{W}_i^{n-1} - \frac{\Delta t}{\Delta x}(\mathbf{F}_{i+1/2}^{n-1/2}-\mathbf{F}_{i-1/2}^{n-1/2}) + \frac{(\Delta t)^2}{2(\Delta x)^2}(\mathbf{G}_{i+1/2}^{n-1/2}-2\mathbf{G}_i^{n-1/2}+\mathbf{G}_{i-1/2}^{n-1/2})
$$
其中,
$$
\mathbf{F}_{i+1/2}^{n-1/2} = \frac{1}{2}(\mathbf{F}(\mathbf{W}_i^{n-1})+\mathbf{F}(\mathbf{W}_{i+1}^{n-1}))
$$
$$
\mathbf{G}_{i+1/2}^{n-1/2} = \frac{1}{2}(\mathbf{F}(\mathbf{W}_{i+1}^{n-1})-\mathbf{F}(\mathbf{W}_i^{n-1}))+\frac{1}{2}\Delta x(\mathbf{A}\frac{\partial\mathbf{F}}{\partial\mathbf{W}}|_{i+1/2}+\mathbf{B}\frac{\partial\mathbf{F}}{\partial\mathbf{W}}|_{i+1/2}\mathbf{C})
$$
$\mathbf{A}$,$\mathbf{B}$和$\mathbf{C}$是Lax-Wendroff矩阵,其中:
$$
\mathbf{A} = \frac{1}{2}(\mathbf{I}-\frac{\Delta t}{\Delta x}\mathbf{J}+\frac{(\Delta t)^2}{2(\Delta x)^2}\mathbf{J}^2)
$$
$$
\mathbf{B} = \mathbf{I}+\frac{\Delta t}{\Delta x}\mathbf{J}+\frac{(\Delta t)^2}{2(\Delta x)^2}\mathbf{J}^2
$$
$$
\mathbf{C} = \frac{1}{2}(\mathbf{I}+\frac{\Delta t}{\Delta x}\mathbf{J}+\frac{(\Delta t)^2}{2(\Delta x)^2}\mathbf{J}^2)
$$
其中,
$$
\mathbf{J} = \frac{\partial\mathbf{F}}{\partial\mathbf{W}}
$$
为了求解激波管问题,我们还需要确定初始值。假设初始时刻$t=0$,密度、速度和压强在计算区间内的分布如下:
$$
\rho(x) = \begin{cases} 3 & x<-0.2 \\ 1+0.2\sin(5\pi x) & -0.2 \leq x \leq 0.2 \\ 1 & x>0.2 \end{cases}
$$
$$
u(x) = 0
$$
$$
p(x) = \begin{cases} 3 & x<-0.2 \\ 1 & -0.2 \leq x \leq 0.2 \\ 2 & x>0.2 \end{cases}
$$
根据上述方法,我们可以编写求解激波管问题的代码:
阅读全文