Many of the convection schemes in OpenFOAM are based on the Normalised Variable (NV) [40] and Total Variation Diminishing (TVD) [23] methods. These provide a set tools to characterise scheme properties such as boundedness (1-D).
![]() |
![]() |
Properties🔗
- Offer a blend between a low order scheme and a higher order scheme based on the calculation of a limiter
- Boundedness of NVD/TVD schemes is only guaranteed for 1-D cases
- Boundedness can be improved in 2-D and 3-D cases by limiting the gradient
Limiter calculation🔗
For arbitrary unstructured meshes it is not straightforward to identify the upstream and downstream locations reliably. The limiters are evaluated using a compact stencil as described in Jasak et al. [26], where:
TVD: Limiter \(\Psi(r)\) defined as a function of \(r\) \(r = 2 \frac{\vec{d} \dprod \left( \grad{\phi} \right)_P}{\vec{d} \dprod \left(\grad{\phi} \right)_f} - 1 = 2 \frac{\vec{d} \dprod \left( \grad{\phi} \right)_P}{\phi_N - \phi_P} - 1\) NVD: Limiter \(\widetilde{\phi_f}\) defined as a function of \(\widetilde{\phi_c}\) \(\widetilde{\phi_c} = 1 - 0.5 \frac{\vec{d} \dprod \left( \grad{\phi} \right)_f}{\vec{d} \dprod \left( \grad{\phi}\right)_P } = 1 - 0.5 \frac{\phi_N - \phi_P}{\vec{d} \dprod \left(\grad{\phi}\right)_P}\) Where the gradient at cell P \(\left( \grad{\phi} \right)_P\) is calculated using the user-selected gradient scheme, and the vector \(\vec{d}\) \(\vec{d} = \vec{C}_{N} - \vec{C}_{P}\)
Further information🔗
Source code:
- $FOAM_SRC/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/LimitedScheme/NVDTVD.H
- $FOAM_SRC/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/LimitedScheme
API: