Skip to content

fix: remove cutoff_fraction from Hou-Li filter, use correct h/h_max f…#258

Open
joglekara wants to merge 3 commits intomainfrom
fix/houli-filter-remove-cutoff-fraction
Open

fix: remove cutoff_fraction from Hou-Li filter, use correct h/h_max f…#258
joglekara wants to merge 3 commits intomainfrom
fix/houli-filter-remove-cutoff-fraction

Conversation

@joglekara
Copy link
Copy Markdown
Member

…ormula

The previous implementation applied σ = exp(-strength*(h/h_cutoff)^order) only above a cutoff threshold, where h_cutoff = cutoff_fraction * h_max. This had two bugs:

  1. With cutoff_fraction=1.0 (a natural "no cutoff" choice), h never exceeded h_cutoff so the filter was silently disabled entirely.
  2. The formula should use h/h_max, not h/h_cutoff, to match the standard Hou-Li (2007) filter: σ(h) = exp(-strength * (h/h_max)^order).

Fix: remove cutoff_fraction entirely, always apply the filter to all modes using h/h_max. The filter naturally acts on all modes with σ→0 at h=h_max and σ=1 at h=0, requiring no explicit cutoff threshold.

…ormula

The previous implementation applied σ = exp(-strength*(h/h_cutoff)^order)
only above a cutoff threshold, where h_cutoff = cutoff_fraction * h_max.
This had two bugs:
1. With cutoff_fraction=1.0 (a natural "no cutoff" choice), h never exceeded
   h_cutoff so the filter was silently disabled entirely.
2. The formula should use h/h_max, not h/h_cutoff, to match the standard
   Hou-Li (2007) filter: σ(h) = exp(-strength * (h/h_max)^order).

Fix: remove cutoff_fraction entirely, always apply the filter to all modes
using h/h_max. The filter naturally acts on all modes with σ→0 at h=h_max
and σ=1 at h=0, requiring no explicit cutoff threshold.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
joglekara and others added 2 commits March 25, 2026 15:46
The filter was previously applied only to dCk/dt from the nonlinear term,
leaving the linear free-streaming cascade (Lawson-RK4 exponential operators)
completely unfiltered. High Hermite modes filled up unchecked.

Now the filter is passed to SplitStepDampingSolver and applied as a
multiplicative split step to the full state after each timestep, in the
same pattern as sponge boundary damping.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant