limiter
In order to ensure that classicMusclUpdater (1d, 2d, 3d) remains total
variation dimishing, USim implements slope limiting for second order
reconstruction methods.
Consider two cells, separated by an interface. Label the cell to the
left of the interface L, such that it has coordinates
\(x_\mathrm{L}\) and the cell to the right of the interface R,
such that it has coordinates \(x_\mathrm{R}\). Label the
interface between the cells Face and assign coordinates
\(x_\mathrm{Face}\). We compute a slope limited extrapolation from
of the data from \(x_\mathrm{L}\) to \(x_\mathrm{Face}\)
according to:
\[\notag
\begin{align}
Q_\mathrm{Face} = Q_\mathrm{L} + \frac{\phi \left(r\right) dQ}{2}; \;\;
r = \left\{
\begin{array}{cc}
1 & dQ \le 0.0 \\
\frac{2dV}{dQ}-1 & dQ > 0.0 \\
\end{array}
\right.
\\
dV = 2 \mathbf{l} \cdot \nabla \delta Q; \;\;
\mathbf{l} = x_\mathrm{Face} - x_\mathrm{L}; \;\;
\delta Q = Q - Q_\mathrm{L} \\
dQ = 2 \left[ \left(1 - w_\mathrm{L} \right) Q_\mathrm{R} +
\left( w_\mathrm{L} - 1 \right) Q_\mathrm{L} \right]; \;\;
w_\mathrm{L} = \frac{\left(x_\mathrm{R} - x_\mathrm{L} \right) \cdot \left(x_\mathrm{R} -
x_\mathrm{Face} \right)}{\left(x_\mathrm{R} - x_\mathrm{L} \right)
\cdot \left(x_\mathrm{R} - x_\mathrm{L} \right)}
\end{align}\]
where \(\phi(r)\) is the limiter. A range of different limiters
are available in USim, including:
superbee
- \(\phi(r) = \mathrm{max} \left( \mathrm{max} \left( 0, \mathrm{min} \left( 1, 2r \right) \right), \mathrm{min} \left( 2, r \right) \right)\).
- Should not be used for multi-dimensional problems.
minmod
- \(\phi(r) = \mathrm{max} \left( 0, \mathrm{min} \left( 1, r \right) \right)\).
Should not be used for multi-dimensional problems.
osher
- \(\phi(r) = \mathrm{max} \left( 0, \mathrm{min} \left( 2, r \right) \right)\).
Advanced users only.
muscl
- \(\phi(r) = \frac{r + \left| r \right|}{1 + \left| r \right|}\).
General purpose multi-dimensional limiter for explicit problems.
mc
- \(\phi(r) = \mathrm{max} \left( 0, \mathrm{min} \left( 2 r, \mathrm{min} \left( \frac{1 + r}{2}, 2 \right) \right) \right)\).
Should not be used for multi-dimensional problems.
vanAlbada
- \(\phi(r) = \frac{r^2 + r}{r^2 + 1}\). General purpose multi-dimensional limiter for implicit and explicit problems.
differentiable
- \(\phi(r) = \frac{r^2 + 2r}{r^2 + r +2}\). General purpose multi-dimensional limiter for implicit and explicit problems.
none
- \(\phi(r) = 1\). Should only be used for systems that do not admit shocks.