Skip to content

feat: decouple throat sizing, LEM prescreening, band-stitch fix#76

Open
timini wants to merge 4 commits intomainfrom
feat/add-four-horn-profiles
Open

feat: decouple throat sizing, LEM prescreening, band-stitch fix#76
timini wants to merge 4 commits intomainfrom
feat/add-four-horn-profiles

Conversation

@timini
Copy link
Owner

@timini timini commented Mar 5, 2026

Summary

  • Decouple throat radius from driver size: Throat radii are now derived from acoustic constraints (ka at f_high) rather than driver Sd, enabling cone drivers (4-10") to be paired with smaller horn throats via phase plugs/compression chambers
  • Add LEM prescreening: Webster equation-based lumped element model efficiently filters driver-horn pairs before expensive FEM simulation (e.g. 40k pairs → 3 FEM candidates)
  • Fix band-stitching artifacts in scoring: Resample merged FEM band data onto a uniform log-frequency grid with Savitzky-Golay smoothing before computing passband ripple, preventing band-boundary discontinuities from inflating ripple scores
  • Optional diameter filtering: New --min-diameter / --max-diameter pipeline params to constrain driver nominal size
  • Build and plot improvements

Test plan

  • All 118 horn-analysis tests pass (including new band-boundary artifact test)
  • Pipeline tested with multiple configurations (6", 6-8", 4-8" drivers across 500-8kHz)
  • LEM prescreening correctly reduces FEM candidates (105 → 3 in typical runs)
  • Band-stitch smoothing suppresses 1 dB injected glitches to < 0.5 dB measured ripple

🤖 Generated with Claude Code

timini and others added 4 commits March 5, 2026 14:01
Throat radius is now derived from acoustic constraints (ka at f_high)
rather than driver Sd, allowing cone drivers to be paired with smaller
horn throats via phase plugs or compression chambers. Adds Webster
equation-based LEM prescreening to efficiently filter driver-horn
pairs before expensive FEM simulation. Also adds optional --min-diameter
and --max-diameter pipeline params for driver size filtering.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Resample merged FEM band data onto a uniform log-frequency grid and
apply Savitzky-Golay smoothing before computing passband ripple and
average sensitivity. This prevents discontinuities at band boundaries
from inflating the ripple metric and unfairly penalising scores.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update justfile for local testing workflow, add CLAUDE.md project
instructions, improve auto report and plot rendering, and update
solver Dockerfile and BEM coupling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Resolve conflicts in prescreen.py and test_prescreen.py by keeping the
decoupled throat radius design (acoustic constraints) over the old
coupled design (f_piston/horn_load_factor).

Co-Authored-By: Claude Opus 4.6 <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