SpECTRE
v2025.03.17
|
A minmod-based generalized slope limiter. More...
A minmod-based generalized slope limiter.
Implements the three minmod-based generalized slope limiters from [41] Sec. 2.4:
The MUSCL and
Note that we do not require the MUSCL and
The
For all three types of minmod limiter, the algorithm can be relaxed from TVD (total variation diminishing) in the means to TVB (total variation bound) in the means. This may avoid limiting away smooth extrema in the solution that would otherwise look like spurious oscillations. When this correction is enabled, the limiter will not reduce the slope (but may still linearize) on elements where the slope is less than
The choice of the TVB constant
This implementation can act on an arbitrary set of tensors; the limiting algorithm is applied to each component of each tensor independently. This is a convenient and general interface. However, when the evolution system has multiple evolved variables, the recommendation of the reference is to apply the limiter to the system's characteristic variables to reduce spurious post-limiting oscillations. In SpECTRE, applying the limiter to the characteristic variables requires specializing the limiter to each evolution system.
The limiter acts in the Frame::ElementLogical
coordinates, because in these coordinates it is straightforward to formulate the algorithm. This means the limiter can operate on generic deformed grids — however, some things can start to break down, especially on strongly deformed grids:
Frame::ElementLogical
to Frame::Inertial
) varies across the element, then the limiter fails to be conservative. This is because the integral of a tensor u
over the element will change after the limiter activates on u
.Frame::Inertial
can appear to have a kink in Frame::ElementLogical
. The Minmod implementation includes some (tested but unproven) corrections based on the size of the elements that try to reduce spurious limiter activations near these fake kinks.When an element has multiple neighbors in any direction, an effective mean and neighbor size in this direction are computed by averaging over the multiple neighbors. This simple generalization of the minmod limiter enables it to operate on h-refined grids.
VolumeDim | The number of spatial dimensions. |
TagsToLimit | A typelist of tags specifying the tensors to limit. |