:orphan: # PetscLimiterLimit Limit the flux ## Synopsis ``` #include "petscfv.h" PetscErrorCode PetscLimiterLimit(PetscLimiter lim, PetscReal flim, PetscReal *phi) ``` ## Input Parameters - ***lim -*** The `PetscLimiter` - ***flim -*** The input field ## Output Parameter - ***phi -*** The limited field ## Note Limiters given in symmetric form following Berger, Aftosmis, and Murman 2005 ```none The classical flux-limited formulation is psi(r) where r = (u[0] - u[-1]) / (u[1] - u[0]) The second order TVD region is bounded by psi_minmod(r) = min(r,1) and psi_superbee(r) = min(2, 2r, max(1,r)) where all limiters are implicitly clipped to be non-negative. A more convenient slope-limited form is psi(r) = phi(r)(r+1)/2 in which the reconstructed interface values are u(v) = u[0] + phi(r) (grad u)[0] v where v is the vector from centroid to quadrature point. In these variables, the usual limiters become phi_minmod(r) = 2 min(1/(1+r),r/(1+r)) phi_superbee(r) = 2 min(2/(1+r), 2r/(1+r), max(1,r)/(1+r)) For a nicer symmetric formulation, rewrite in terms of f = (u[0] - u[-1]) / (u[1] - u[-1]) where r(f) = f/(1-f). Not that r(1-f) = (1-f)/f = 1/r(f) so the symmetry condition phi(r) = phi(1/r) becomes w(f) = w(1-f). The limiters below implement this final form w(f). The reference methods are w_minmod(f) = 2 min(f,(1-f)) w_superbee(r) = 4 min((1-f), f) ``` ## See Also `PetscLimiter`, `PetscLimiterType`, `PetscLimiterSetType()`, `PetscLimiterCreate()` ## Level beginner ## Location src/dm/dt/fv/interface/fv.c --- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/dm/dt/fv/interface/fv.c) [Index of all FV routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)