# Lumped Helmholtz vs Webster FEM — Goblet Comparison

Generated by `analysis/helmholtz-fem/run_comparison.py`. 
Speed of sound: 13 500 in/s. Elements per goblet: 1200. Modes solved: 3.

## Frequencies

| Size | V_0 bowl (in³) | V_total (in³) | A_neck (in²) | L_eff (in) | Lumped f_H (Hz) | FEM f_1 (Hz) | FEM f_2 (Hz) | FEM f_3 (Hz) | Δ_1 vs lumped |
|---|---|---|---|---|---|---|---|---|---|
| S | 162.1 | 603.2 | 19.64 | 6.25 | 299.1 | 190.4 | 516.8 | 928.7 | -36.4% |
| M | 226.0 | 794.8 | 23.76 | 6.67 | 269.6 | 167.8 | 464.5 | 835.8 | -37.8% |
| L | 700.1 | 1400.5 | 33.18 | 8.03 | 165.1 | 122.7 | 427.8 | 716.4 | -25.7% |

## Interpretation

The Webster FEM solves the variable-cross-section Helmholtz wave equation on the full goblet profile (bowl + neck + foot) with rigid drumhead and open foot boundary conditions. The lumped Helmholtz model treats only the bowl above the neck as the cavity and the neck as a zero-volume port; it cannot see the foot section.

Across all three sizes the FEM fundamental is **lower** than the lumped prediction. The deviation is the *goblet effect*: adding the foot cavity below the neck increases acoustic compliance and lowers the lowest cavity mode. Per the issue's success criterion ("if FEM and closed-form disagree by more than ~20%, the goblet effect is real and quantifiable"), the deviation observed here exceeds 20% for all three sizes — so the goblet effect is real and quantifiable on this geometry.

## Solver verification

`webster_horn.py` self-verifies against the analytic closed-open uniform-tube modes f_n = (2n − 1)·c/(4H), passing to within 0.5% for the first 5 modes at 800 elements. The 1200-element runs used here are tighter still. Verification is automatic; the script raises if the check fails.

## Reproduce

```bash
cd analysis/helmholtz-fem
python3 webster_horn.py     # prints verification + summary
python3 run_comparison.py   # writes figures/, results.{csv,md}
```
