MUSCL-Hancock Method

MUSCL-Hancock Method

Scroll Down

Summary of the MUSCL-Hancock Method

For a give domain $[0,L]$ and a mesh size $\Delta x$, determined by the choice of the number $M$ of computing cells, one first sets the initial conditions $U^0 \equiv U(x,0)$ at time $t = 0$. Then, for each time step $n$ one performs the following operations

Operation (I): Boundary condition.

This is carried out according to these boundary condition:

  • Transmissive boudary conditions

where $W$ may be the vector of conserved variables or some other variables, such as the primitive variables.

  • Reflective boundary condidtions



where $u_
$ is the speed of a reflective solid boundary at $x=L$.

Operation (II): Computation of time step.

This is carried out according to
\Delta t=C_
\frac{\Delta x}{S_^{(n)}}
where $\Delta x$ is the mesh spacing, $S_
^{(n)}$ is the maximum wave speed present at time level $n$ and $C_$ coefficient, with $C_\in (0,1]$. A practical choice is
where the range of $i$ must include data arising from boundary from boundary conditions.
A choice of $C_^n|+a_i^n}
$ must be made at the beginning of the computations. One usually takes $C_=0.9$. Recall however that the choice of $S_^{(n)}$ is crucial and given that the practical choice above produces somewhat unreliable estimates for the true speeds we recommend that when solving problems with shock-tube like data, the CFL coefficient $C_$ be set to small number, e.g. 0.2, for a few time steps.

Operation (III): Boundary extrapolated values.

This involves Step (I) and Step (II)

  • Step (I): Data Reconstruction.
    In the following, we assume a choice of variables $W$ has been made. One possibility is the conserved variables $W = U$ of course; another choice is offered by the primitive or physical variables. For the Euler equations, these are $W=(\rho,u,p)^T$. Here we present the scheme in terms of the conserved variables $U$. In the data reconstruction step, data cell everage values $U_i^n$ are locally replaced by pievewise linear functions in each call $I_i=[x_{i-\frac{1}{2}},x_{i+\frac{1}{2}}]$, namely
    U_i(x)=U_i^n+\frac{(x-x_i)}{\Delta x} \Delta_i,~~x \in [0,\Delta x]
    where $\Delta_i$ is a suitably chosen slope vector (actually a difference) of $U_i(x)$ in cell $I_i$. The extreme points $x = 0$ and $x = \Delta x$, in local co-ordinates, correspond to the intercell houndaries $x_{i-\frac{1}{2}}$ and $x_{i+\frac{1}{2}}$, in global co-ordinates, respectively. The values of $U_i(x)$ at the exteme points are
    and are usually called boundary extrapolated values. Note that $U$ and $\Delta_i$ are vectors of three components for the Euler equations and thus there six scalar extrapolated values in above fomulae.
  • Step (II): Evolution.
    For each cell $I_i$, the boundary extrapolated values $U_i^L$, $U_i^R$ are evolved by a time $\frac{1}{2} \Delta t$, according to

$$\overlinei^L=U_i^L+\frac{1}{2}\frac{\Delta t}{\Delta x}[F(U_i^L) - F(U_i^R)],$$
i^R=U_i^R+\frac{1}{2}\frac{\Delta t}{\Delta x}[F(U_i^L) - F(U_i^R)]$$
Note that this evolution step is entriely contained in each cell $I_i$, as the intercell fluxes are evaluated at the boundary extrapolated values of each cell. At each intercell position $i + \frac{1}{2}$ there are two fluxes, namely $F(U_i^R)$ and $F(U
{i+1}^L)$, which are in general distinct. This does not really affect the conservative character of the overall method, as this step is only an intermediate step; the intercell flux $F
{i+\frac{1}{2}}$ to be used in the conservative formula is yet to be evaluated;
In Step (I) and Step (II), the slopes $\Delta_i$ are replaced by the limited slopes $\overline{\Delta}_i$, which are to operation results in TVD, evolved boundary extrapolated values $\overline
_i^{L,R}$, for each cell $i$.

Operation (IV): Solution of Riemann problem.

At each intercell position $i + \frac{1}{2}$ one finds the solution of Riemann problem with data $(\overline_i^R,\overline_{i+1}^L)$ and computes the intercell flux according to
F_{i + \frac{1}{2}}=F(U_{i + \frac{1}{2}}(0))
The intercell flux $F_{i + \frac{1}{2}}$ is now computed in exactly the same way as in the Godunov first order upwind method.

Operation (V): Updating of solution.

Proceed to update the conserved variables according to conservative formula.
U_i^{n+1}=U_i^n+\frac{\Delta t}{\Delta x}[F_{i-\frac{1}{2}} - F_{i + \frac{1}{2}}]

Operation (VI): Next time level.

Go to (I).