Rodin::Distance::Rvachev class

Rvachev normalization for a level set function.

This class implements the Rvachev normalization method, which transforms an arbitrary level set function into an approximate signed distance function. The transformation is given by:

\[ d(x) = \frac{u(x)}{\sqrt{u(x)^2 + |\nabla u(x)|^2}} \]

where $ u $ is the input level set function and $ d $ is the normalized approximate signed distance.

Mathematical Properties

  • Preserves the zero level set: $ d(x) = 0 \iff u(x) = 0 $
  • Preserves the sign: $ \text{sign}(d) = \text{sign}(u) $
  • Gradient magnitude approaches 1 near the interface

References

[8] [7]

Usage Example

GridFunction u(fes);  // Some level set function
Rvachev rvachev;
auto dist = rvachev(u);  // Normalized distance approximation

Public functions

template<class FES, class Data>
auto operator()(const Variational::GridFunction<FES, Data>& gf) -> auto
Applies Rvachev normalization to a grid function.

Function documentation

template<class FES, class Data>
auto Rodin::Distance::Rvachev::operator()(const Variational::GridFunction<FES, Data>& gf)

Applies Rvachev normalization to a grid function.

Template parameters
FES Finite element space type
Data Data storage type
Parameters
gf in Input level set grid function
Returns Normalized grid function approximating signed distance