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.