olsson_kreiss (Olsson-Kreiss CLS 2007)

← Components

intsharp/sharpening.py

Olsson-Kreiss CLS sharpening

Supports: 1D and 2D (selected automatically based on domain)

RHS for the volume fraction \( \alpha \) (divergence of a normal-aligned flux):

\[ \text{RHS} = \nabla \cdot \bigl[\epsilon (\nabla\alpha \cdot \mathbf{n})\mathbf{n} - \alpha(1-\alpha)\mathbf{n}\bigr] \]

The normal \( \mathbf{n} = \nabla\alpha_0/|\nabla\alpha_0| \) is frozen at the start of each sub-step. In 2D this yields anisotropic (normal-only) diffusion, unlike the isotropic Chiu-Lin form.

Update (1D): same pseudo-timestep as cl — \( \theta = \texttt{CFL\_SAFETY}\, \Delta x^2 / \epsilon \); the YAML time.dt is not used. This avoids explicit-diffusion instability when \( \epsilon \sim \Delta x \) and \( \Delta t \sim \Delta x \).

\[ \alpha^{n+1} = \alpha^n + \Gamma \cdot \theta \cdot \text{RHS} \]

Update (2D): \( \alpha^{n+1} = \alpha^n + \Delta t \cdot \Gamma \cdot \text{RHS} \) (per sub-step).

Parameters:

  • eps_target: Target interface thickness \( \epsilon \)
  • strength: Sharpening strength \( \Gamma \)