In the study of partial differential equations, the MUSCL scheme is a finite volume method that can provide highly accurate numerical solutions for a given system, even in cases where the solutions exhibit shocks, discontinuities, or large gradients. MUSCL stands for Monotonic Upstream-centered Scheme for Conservation Laws (van Leer, 1979), and the term was introduced in a seminal paper by Bram van Leer (van Leer, 1979). In this paper he constructed the first high-order, total variation diminishing (TVD) scheme where he obtained second order spatial accuracy.
The idea is to replace the piecewise constant approximation of Godunov's scheme by reconstructed states, derived from cell-averaged states obtained from the previous time-step. For each cell, slope limited, reconstructed left and right states are obtained and used to calculate fluxes at the cell boundaries (edges). These fluxes can, in turn, be used as input to a Riemann solver, following which the solutions are averaged and used to advance the solution in time. Alternatively, the fluxes can be used in Riemann-solver-free schemes, which are basically Rusanov-like schemes.
We will consider the fundamentals of the MUSCL scheme by considering the following simple first-order, scalar, 1D system, which is assumed to have a wave propagating in the positive direction,
ut+Fx\left(u\right)=0.
Where
u
F
The basic scheme of Godunov uses piecewise constant approximations for each cell, and results in a first-order upwind discretisation of the above problem with cell centres indexed as
i
dui | |
dt |
+
1 | |
\Deltaxi |
\left[F\left(ui\right)-F\left(ui-1\right)\right]=0.
This basic scheme is not able to handle shocks or sharp discontinuities as they tend to become smeared. An example of this effect is shown in the diagram opposite, which illustrates a 1D advective equation with a step wave propagating to the right. The simulation was carried out with a mesh of 200 cells and used a 4th order Runge–Kutta time integrator (RK4).
To provide higher resolution of discontinuities, Godunov's scheme can be extended to use piecewise linear approximations of each cell, which results in a central difference scheme that is second-order accurate in space. The piecewise linear approximations are obtained from
u\left(x\right)=ui+
\left(x-xi\right) | |
\left(xi+1-xi\right) |
\left(ui+1-ui\right) \forallx\in(xi,xi+1].
Thus, evaluating fluxes at the cell edges we get the following semi-discrete scheme
dui | |
dt |
+
1 | |
\Deltaxi |
\left[F\left(ui\right)-F\left(ui\right)\right]=0,
where
ui
ui
ui=0.5\left(ui+ui\right),
ui=0.5\left(ui-1+ui\right).
Although the above second-order scheme provides greater accuracy for smooth solutions, it is not a total variation diminishing (TVD) scheme and introduces spurious oscillations into the solution where discontinuities or shocks are present. An example of this effect is shown in the diagram opposite, which illustrates a 1D advective equation
ut+ux=0
MUSCL based numerical schemes extend the idea of using a linear piecewise approximation to each cell by using slope limited left and right extrapolated states. This results in the following high resolution, TVD discretisation scheme,
dui | |
dt |
+
1 | |
\Deltaxi |
\left[F\left(
* | |
u | |
i+1/2 |
\right)-F\left(
* | |
u | |
i-1/2 |
\right)\right]=0.
Which, alternatively, can be written in the more succinct form,
dui | |
dt |
+
1 | |
\Deltaxi |
\left[
* | |
F | |
i+1/2 |
-
* | |
F | |
i-1/2 |
\right]=0.
The numerical fluxes
* | |
F | |
i\pm1/2 |
The symbols
* | |
u | |
i+1/2 |
* | |
u | |
i-1/2 |
* | |
u | |
i+1/2 |
=
* | |
u | |
i+1/2 |
\left(
L | |
u | |
i+1/2 |
,
R | |
u | |
i+1/2 |
\right),
* | |
u | |
i-1/2 |
=
* | |
u | |
i-1/2 |
\left(
L | |
u | |
i-1/2 |
,
R | |
u | |
i-1/2 |
\right),
where, using downwind slopes:
L | |
u | |
i+1/2 |
=ui+0.5\phi\left(ri\right)\left(ui+1-ui\right),
R | |
u | |
i+1/2 |
=ui+1-0.5\phi\left(ri+1\right)\left(ui+2-ui+1\right),
L | |
u | |
i-1/2 |
=ui-1+0.5\phi\left(ri-1\right)\left(ui-ui-1\right),
R | |
u | |
i-1/2 |
=ui-0.5\phi\left(ri\right)\left(ui+1-ui\right),
and
ri=
ui-ui-1 | |
ui+1-ui |
.
The function
\phi\left(ri\right)
r\le0
r=1
The algorithm is straight forward to implement. Once a suitable scheme for
* | |
F | |
i+1/2 |
A precursor to the Kurganov and Tadmor (KT) central scheme, (Kurganov and Tadmor, 2000), is the Nessyahu and Tadmor (NT) a staggered central scheme, (Nessyahu and Tadmor, 1990). It is a Riemann-solver-free, second-order, high-resolution scheme that uses MUSCL reconstruction. It is a fully discrete method that is straight forward to implement and can be used on scalar and vector problems, and can be viewed as a Rusanov flux (also called the local Lax-Friedrichs flux) supplemented with high order reconstructions. The algorithm is based upon central differences with comparable performance to Riemann type solvers when used to obtain solutions for PDE's describing systems that exhibit high-gradient phenomena.
The KT scheme extends the NT scheme and has a smaller amount of numerical viscosity than the original NT scheme. It also has the added advantage that it can be implemented as either a fully discrete or semi-discrete scheme. Here we consider the semi-discrete scheme.
The calculation is shown below:
* | |||||
F | = | ||||
|
1 | |
2 |
\left\{ \left[F
R | ||||||
\left(u | ||||||
|
\right)+F
L | ||||||
\left(u | ||||||
|
\right)\right] -
a | ||||||
|
R | ||||||
\left[u | ||||||
|
-
L | ||||||
u | ||||||
|
\right]\right\}.
* | |||||
F | = | ||||
|
1 | |
2 |
\left\{ \left[F
R | ||||||
\left(u | ||||||
|
\right)+F
L | ||||||
\left(u | ||||||
|
\right)\right] -
a | ||||||
|
R | ||||||
\left[u | ||||||
|
-
L | ||||||
u | ||||||
|
\right]\right\}.
Where the local propagation speed,
a | ||||||
|
F\left(u\left(x,t\right)\right)
{i},{i\pm1}
a | ||||||
|
\left(t\right)=max\left[\rho\left(
| |||||||||
\partialu |
\right), \rho\left(
| |||||||||
\partialu |
\right),\right]
and
\rho\left( | \partialF\left(u\left(t\right)\right) |
\partialu |
\right)
\partialF\left(u\left(t\right)\right) | |
\partialu |
.
Beyond these CFL related speeds, no characteristic information is required.
The above flux calculation is most frequently called Lax-Friedrichs flux (though it's worth mentioning that such flux expression does not appear in Lax, 1954 but rather on Rusanov, 1961).
An example of the effectiveness of using a high resolution scheme is shown in the diagram opposite, which illustrates the 1D advective equation
ut+ux=0
The scheme can readily include diffusion terms, if they are present. For example, if the above 1D scalar problem is extended to include a diffusion term, we get
ut+Fx\left(u\right)=Qx\left(u,ux\right),
for which Kurganov and Tadmor propose the following central difference approximation,
dui | |
dt |
=-
1 | |
\Deltaxi |
\left[
* | ||||||
F | ||||||
|
-
* | ||||||
F | ||||||
|
\right]+
1 | |
\Deltaxi |
\left[
P | ||||||
|
-
P | ||||||
|
\right].
Where,
P | ||||||
|
=
1 | |
2 |
\left[Q\left(ui,
ui+1-ui | |
\Deltaxi |
\right)+Q\left(ui+1,
ui+1-ui | |
\Deltaxi |
\right) \right],
P | ||||||
|
=
1 | |
2 |
\left[Q\left(ui-1,
ui-ui-1 | |
\Deltaxi-1 |
\right)+Q\left(ui,
ui-ui-1 | |
\Deltaxi-1 |
\right). \right]
Full details of the algorithm (full and semi-discrete versions) and its derivation can be found in the original paper (Kurganov and Tadmor, 2000), along with a number of 1D and 2D examples. Additional information is also available in the earlier related paper by Nessyahu and Tadmor (1990).
Note: This scheme was originally presented by Kurganov and Tadmor as a 2nd order scheme based upon linear extrapolation. A later paper (Kurganov and Levy, 2000) demonstrates that it can also form the basis of a third order scheme. A 1D advective example and an Euler equation example of their scheme, using parabolic reconstruction (3rd order), are shown in the parabolic reconstruction and Euler equation sections below.
It is possible to extend the idea of linear-extrapolation to higher order reconstruction, and an example is shown in the diagram opposite. However, for this case the left and right states are estimated by interpolation of a second-order, upwind biased, difference equation. This results in a parabolic reconstruction scheme that is third-order accurate in space.
We follow the approach of Kermani (Kermani, et al., 2003), and present a third-order upwind biased scheme, where the symbols
* | ||||||
u | ||||||
|
* | ||||||
u | ||||||
|
* | ||||||
u | ||||||
|
=f\left(
L | ||||||
u | ||||||
|
,
R | ||||||
u | ||||||
|
\right),
* | ||||||
u | ||||||
|
=f\left(
L | ||||||
u | ||||||
|
,
R | ||||||
u | ||||||
|
\right),
and
L | ||||||
u | ||||||
|
=ui+
\phi\left(ri\right) | |
4 |
\left[\left(1-\kappa\right)\delta
u | ||||||
|
+\left(1+\kappa\right)\delta
u | ||||||
|
\right],
R | ||||||
u | ||||||
|
=ui+1-
\phi\left(ri+1\right) | |
4 |
\left[\left(1-\kappa\right)\delta
u | ||||||
|
+\left(1+\kappa\right)\delta
u | ||||||
|
\right],
L | ||||||
u | ||||||
|
=ui-1+
\phi\left(ri-1\right) | |
4 |
\left[\left(1-\kappa\right)\delta
u | ||||||
|
+\left(1+\kappa\right)\delta
u | ||||||
|
\right],
R | ||||||
u | ||||||
|
=ui-
\phi\left(ri\right) | |
4 |
\left[\left(1-\kappa\right)\delta
u | ||||||
|
+\left(1+\kappa\right)\delta
u | ||||||
|
\right].
Where
\kappa
\delta
u | ||||||
|
=\left(ui+1-ui\right), \delta
u | ||||||
|
=\left(ui-ui-1\right),
\delta
u | ||||||
|
=\left(ui+2-ui+1\right), \delta
u | ||||||
|
=\left(ui-1-ui-2\right),
and the limiter function
\phi\left(r\right)
Parabolic reconstruction is straight forward to implement and can be used with the Kurganov and Tadmor scheme in lieu of the linear extrapolation shown above. This has the effect of raising the spatial solution of the KT scheme to 3rd order. It performs well when solving the Euler equations, see below. This increase in spatial order has certain advantages over 2nd order schemes for smooth solutions, however, for shocks it is more dissipative - compare diagram opposite with above solution obtained using the KT algorithm with linear extrapolation and Superbee limiter. This simulation was carried out on a mesh of 200 cells using the same KT algorithm but with parabolic reconstruction. Time integration was by RK-4, and the alternative form of van Albada limiter,
\phiva(r)=
2r | |
1+r2 |
For simplicity we consider the 1D case without heat transfer and without body force. Therefore, in conservation vector form, the general Euler equations reduce to
\partialU | + | |
\partialt |
\partialF | |
\partialx |
=0,
where
U=\begin{pmatrix}\rho\ \rhou\ E\end{pmatrix} F=\begin{pmatrix}\rhou\\p+\rhou2\ u(E+p)\end{pmatrix},
U
F
The equations above represent conservation of mass, momentum, and energy. There are thus three equations and four unknowns,
\rho
u
p
E
E=\rhoe+
1 | |
2 |
\rhou2,
where
e
In order to close the system an equation of state is required. One that suits our purpose is
p=\rho\left(\gamma-1\right)e,
where
\gamma
\left[cp/cv\right]
We can now proceed, as shown above in the simple 1D example, by obtaining the left and right extrapolated states for each state variable. Thus, for density we obtain
* | ||||||
\rho | ||||||
|
=
* | ||||||
\rho | ||||||
|
\left(
L | ||||||
\rho | ||||||
|
,
R | ||||||
\rho | ||||||
|
\right),
* | ||||||
\rho | ||||||
|
=
* | ||||||
\rho | ||||||
|
\left(
L | ||||||
\rho | ||||||
|
,
R | ||||||
\rho | ||||||
|
\right),
where
L | ||||||
\rho | ||||||
|
=\rhoi+0.5\phi\left(ri\right)\left(\rhoi-\rhoi-1\right),
R | ||||||
\rho | ||||||
|
=\rhoi+1-0.5\phi\left(ri+1\right)\left(\rhoi+1-\rhoi\right),
L | ||||||
\rho | ||||||
|
=\rhoi-1+0.5\phi\left(ri-1\right)\left(\rhoi-\rhoi-1\right),
R | ||||||
\rho | ||||||
|
=\rhoi-0.5\phi\left(ri\right)\left(\rhoi+1-\rhoi\right).
Similarly, for momentum
\rhou
E
u
p
Having obtained the limited extrapolated states, we then proceed to construct the edge fluxes using these values. With the edge fluxes known, we can now construct the semi-discrete scheme, i.e.,
dUi | |
dt |
=-
1 | |
\Deltaxi |
\left[
* | ||||||
F | ||||||
|
-
* | ||||||
F | ||||||
|
\right].
The solution can now proceed by integration using standard numerical techniques.
The above illustrates the basic idea of the MUSCL scheme. However, for a practical solution to the Euler equations, a suitable scheme (such as the above KT scheme), also has to be chosen in order to define the function
* | ||||||
F | ||||||
|
The diagram opposite shows a 2nd order solution to G A Sod's shock tube problem (Sod, 1978) using the above high resolution Kurganov and Tadmor Central Scheme (KT) with Linear Extrapolation and Ospre limiter. This illustrates clearly demonstrates the effectiveness of the MUSCL approach to solving the Euler equations. The simulation was carried out on a mesh of 200 cells using Matlab code (Wesseling, 2001), adapted to use the KT algorithm and Ospre limiter. Time integration was performed by a 4th order SHK (equivalent performance to RK-4) integrator. The following initial conditions (SI units) were used:
The diagram opposite shows a 3rd order solution to G A Sod's shock tube problem (Sod, 1978) using the above high resolution Kurganov and Tadmor Central Scheme (KT) but with parabolic reconstruction and van Albada limiter. This again illustrates the effectiveness of the MUSCL approach to solving the Euler equations. The simulation was carried out on a mesh of 200 cells using Matlab code (Wesseling, 2001), adapted to use the KT algorithm with Parabolic Extrapolation and van Albada limiter. The alternative form of van Albada limiter,
\phiva(r)=
2r | |
1+r2 |
Various other high resolution schemes have been developed that solve the Euler equations with good accuracy. Examples of such schemes are,
More information on these and other methods can be found in the references below. An open source implementation of the Kurganov and Tadmor central scheme can be found in the external links below.