olsson_kreiss (Olsson-Kreiss CLS 2007)
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 \)