Limiter face contracts
ROI priority 1 (solver / numerical): the slope limiter sits on every reconstructed face value. Pure scalar policies and neighbor-range construction are already isolated; this page locks the face geometry steps shared by Barth and Venkat.
Pipeline
[neighbor offset bounds] --> [per face]
| |
| +--> dq_f = g . (x_f - x_c)
| +--> (Barth only) s = orient * (n . d) / (|d|+eps)
| +--> phi_face = Barth/Venkat(dq_f, ...)
| +--> phi_cell = min(phi_cell, phi_face)
v
global eps for Venkat from offset range (once per equation)
Formulas
Unlimited face increment:
\[\Delta q_f = \nabla q_c \cdot (\mathbf{x}_f - \mathbf{x}_c)\]
Barth side direction factor:
\[s = \sigma \frac{\mathbf{n}\cdot\mathbf{d}}{|\mathbf{d}| + \varepsilon},
\quad \sigma = +1 \text{ (left)},\ -1 \text{ (right)}\]
Venkat regularization (global, once per field):
\[\varepsilon_{\mathrm{reg}} = \big(c \cdot \max(\Delta_{\max}-\Delta_{\min}, 1)\big)^2 + \delta\]
where \(\Delta\) are global neighbor offset ranges.
Pure entry points (ULimiterPolicy.h)
ReconstructFaceIncrementFaceSideDirectionDotTightenLimiterBarthFunction/VencatFunction/VencatRegularizationEpsilonBuildCellNeighborOffsetBounds(ULimiterRange.h)
Header tags @doc-algorithm slope-limiter-face mark the face stages for
optional extraction. Tests: limiter_policy_test, limiter_range_test.