# 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.