Limiters

Limiters, generally speaking, limit the slope when doing high-order (e.g. accuracy order greater than 1, e.g. non-constant polynomial) interpolations from finite volume cell centroids to faces. This limiting is done to avoid creating oscillations in the solution field in regions of steep gradients or discontinuities. Slope limiters, or flux limiters, are generally employed to make the solution Total Variation Diminishing (TVD). Borrowing notation from here, the Total Variation when space and time have been discretized can be defined as

TV(un)=TV(u(,tn))=juj+1nujnTV(u^n) = TV(u(\centerdot,t^n)) = \sum_j \vert u_{j+1}^n - u_j^n \vert

where uu is the discretized approximate solution, nn denotes the time index, and ujn=u(xj,tn)u_j^n = u(x_j,t^n). A numerical method is TVD if

TV(un+1)TV(un)TV(u^{n+1}) \leq TV(u^n)

Limiting Process

Borrowing notation from (Greenshields et al., 2010), we will now discuss computation of limited quantities, represented by Ψf±\bm{\Psi}_{f\pm} where ++ represents one side of a face, and - represents the other side. To be clear about notation: the equations that follow will have a lot of ±\pm and \mp. When computing the top quantity (e.g. ++ for ±\pm) we select the top quantities throughout the equation, e.g. we select ++ for ±\pm and - for \mp. Similarly, when computing bottom quantities we select the bottom quantities throughout the equation. We will also have a series of "ors" in the text. In general left of "or" will be for top quantities and right of "or" will be for bottom quantities.

Interpolation of limited quantities proceeds as follows:

Ψf±=(1gf±)Ψ±+gf±Ψ\bm{\Psi}_{f\pm} = \left(1 - g_{f\pm}\right)\bm{\Psi}_{\pm} + g_{f\pm}\bm{\Psi}_{\mp}

where Ψ±\bm{\Psi}_{\pm} denotes the ++ or - cell centroid value of the interpolated quantity and

gf±=β(r±)(1wf±)g_{f\pm} = \beta\left(r_{\pm}\right)\left(1 - w_{f\pm}\right)

where β(r±)\beta\left(r_{\pm}\right) represents a flux limiter function and

wf±=df/(df++df) w_{f\pm} = \vert \bm{d}_{f\mp}\vert/\left(\vert \bm{d}_{f+}\vert + \vert\bm{d}_{f-}\vert\right)(1)

where df\vert\bm{d}_{f-}\vert is the norm of the distance from the face to the - cell centroid and df+\vert\bm{d}_{f+}\vert is the norm of the distance from the face to the ++ cell centroid. Note that this definition of wf±w_{f\pm} differs slightly from that given in (Greenshields et al., 2010) in which the denominator is given by d+\vert\bm{d}_{-+}\vert, the norm of the distance between the - and ++ cell centroids. The definition given in Eq. (1) guarantees that wf++wf=1w_{f+} + w_{f-} = 1. Note that for a non-skewed mesh the definition in Eq. (1) and (Greenshields et al., 2010) are the same.

The flux limiter function β(r±)\beta(r_{\pm}) takes different forms as shown in Table 1. r±r_{\pm} is computed as follows

r±=2d±(Ψ)±(dΨ)f±1r_{\pm} = 2 \frac{\bm{d}_{\pm}\cdot\left(\nabla \bm{\Psi}\right)_{\pm}}{\left(\nabla_d \bm{\Psi}\right)_{f\pm}} - 1

where (Ψ)±\left(\nabla \bm{\Psi}\right)_{\pm} corresponds to the ++ or - cell centroid gradient and (dΨ)f±=ΨΨ±\left(\nabla_d \bm{\Psi}\right)_{f\pm} = \bm{\Psi}_{\mp} - \bm{\Psi}_{\pm}.

The following limiters are available in MOOSE. We have noted the convergence orders of each (when considering that the solution is smooth), whether they are TVD, and what the functional form of the flux limiting function β(r)\beta(r) is.

Table 1: Limiter Overview

Limiter class nameConvergence OrderTVDβ(r)\beta(r)
VanLeer2Yesr+abs(r)1+abs(r)\frac{r +\text{abs}(r)}{1 + \text{abs}(r)}
Upwind1Yes0
CentralDifference2No1
MinMod2Yesmax(0,min(1,r))\text{max}(0, \text{min}(1, r))
SOU2Norr
QUICK2No3+r4\frac{3+r}{4}

References

  1. Christopher J Greenshields, Henry G Weller, Luca Gasparini, and Jason M Reese. Implementation of semi-discrete, non-staggered central schemes in a colocated, polyhedral, finite volume framework, for high-speed viscous flows. International journal for numerical methods in fluids, 63(1):1–21, 2010.[BibTeX]