Interface representations
Overview
PenguinStefan.jl advances Stefan problems through an AbstractInterfaceRep backend. Two backends are currently supported:
LevelSetRep(general-purpose signed-distance interface evolution)GlobalHFRep(graph-based interface evolution along one selected axis)
LevelSetRep
LevelSetRep is the robust default when geometry may be non-graph, curved, or undergo topological complexity.
Use LevelSetRep when:
- interface geometry is not guaranteed to be single-valued along one axis,
- interface may overturn locally,
- a general geometric backend is preferred.
GlobalHFRep
GlobalHFRep stores the interface as a graph along a chosen axis. After choosing axis, interface positions are represented as:
- 1D:
x = x_f(t) - 2D:
x = x_f(y, t)(or equivalent after axis remapping) - 3D:
x = x_f(y, z, t)(or equivalent after axis remapping)
periodic_transverse=true enforces periodicity in the transverse coordinates:
- in 2D: periodicity in the single transverse direction,
- in 3D: periodicity in both transverse directions.
The coupled workflow uses graph prediction + nonlinear coupling to update xf, then reconstructs phi from the graph at each inner iteration.
Supported / unsupported cases
Supported:
- 1D planar interfaces
- 2D graph interfaces
x = x_f(y) - 3D graph interfaces
x = x_f(y, z) - optional periodic transverse directions
Unsupported:
- closed interfaces that are not single-valued in the chosen graph axis
- overturning/multi-valued fronts
- topology change (breakup/merging)
Practical recommendation
Use GlobalHFRep when the interface is truly graph-like along a chosen axis and you want a direct height-function representation with coupled iteration. Use LevelSetRep otherwise.