# Wittrick–Williams Mode Enumerator

- ID: 2950
- Canonical URL: https://synthcore.org/idea/2950/wittrick-williams-mode-enumerator
- API JSON: https://synthcore.org/api/idea/2950.json
- API Markdown: https://synthcore.org/api/idea/2950.md
- Verification status: unverified
- Source: [arXiv:2608.28683](https://arxiv.org/abs/2608.28683)
- Category: training
- Solves: accuracy, stability, sample-efficiency
- ML areas: initialization, training-dynamics, loss
- Math tags: spectral-theory, linear-algebra, numerical-analysis, dynamical-systems
- Ratings: usefulness 7/10; difficulty 5/10; novelty 8/10

## Idea description

Use a spectral eigenvalue-counting function to bracket each target mode before neural optimization. The network then solves only within an interval containing exactly one eigenfrequency, preventing optimization from repeatedly collapsing to the lowest mode or jumping between modes.

## Mathematical statement

The paper uses the Wittrick–Williams relation \(j(\omega^*)=j_0+\operatorname{sgn}(\det\mathbf W(\omega^*))n(\omega^*)\), where \(j(\omega^*)\) is the number of structure eigenfrequencies below \(\omega^*\), \(j_0=\sum_mj_m\) counts element frequencies when all nodal displacements are restrained, and \(n(\omega^*)\) is the number of negative pivots in an LDLᵀ factorization of the assembled boundary-conditioned dynamic stiffness matrix. For the beam element, the extracted formula is \(j_m=\operatorname{highest\ integer}[\alpha/\pi]+0.5(2-\operatorname{sign}(\beta L)-\operatorname{sign}(\beta L-(\gamma L)^2/(\beta L)))\). The count is piecewise constant and increases by one at each eigenfrequency. The transferable mechanism is inertia-based eigenvalue counting of an indefinite frequency-dependent operator, which produces certified brackets for mode isolation.

## Key formulas

- $$j(\omega^*)=j_0+\operatorname{sgn}\!\left(\det\mathbf W(\omega^*)\right)n(\omega^*)$$
- $$j_0=\sum_m j_m$$
- $$j_m=\operatorname{highest\ integer}\!\left[\frac{\alpha}{\pi}\right]+\frac{1}{2}\left(2-\operatorname{sign}(\beta L)-\operatorname{sign}\!\left(\beta L-\frac{(\gamma L)^2}{\beta L}\right)\right)$$
- $$\mathcal L_k(\theta,\omega)=\|\mathbf B\mathbf W(\omega)\mathbf A q_\theta\|_2^2+\lambda_n(q_\theta^T\mathbf Mq_\theta-1)^2+\lambda_{\mathrm{box}}[\max(0,\omega_k^- -\omega)^2+\max(0,\omega-\omega_k^+)^2]$$

## Implementation notes

1. Integration point: add a preprocessing and training wrapper around a neural eigenmode solver. The wrapper receives an assembled symmetric dynamic stiffness matrix \(W(\omega)\), a boundary-condition-reduced matrix, and a requested mode index \(k\). 2. Pseudocode: scan an increasing frequency grid \(\omega_i\); at each point perform an LDLᵀ factorization of the reduced matrix and count negative diagonal pivots \(n(\omega_i)\); compute the element correction \(j_0=\sum_mj_m\) using the supplied \(\alpha,\beta,\gamma\) formula; evaluate \(j(\omega_i)\). Find adjacent grid points \([\omega_k^-,\omega_k^+]\) with \(j(\omega_k^-)=k-1\) and \(j(\omega_k^+)=k\), then bisect until the interval width is below tolerance. Initialize a separate MLP head for each bracket, optimize its parameters and frequency using the DSM residual and box penalty, and optionally freeze frequency for the first 20% of training. 3. LDLᵀ inertia and bisection are deterministic; the network estimates only the eigenvector. Near poles or tiny pivots, use a threshold \(|d_i|<10^{-10}\|W\|_\infty\) and repeat with a small frequency perturbation. 4. First experiment: use clamped-free and clamped-clamped beams with 16 elements and target modes 1–8. Compare unconstrained DSM-PINN, DSM-PINN with orthogonality penalties, and WW-bracketed DSM-PINN using equal 10,000-step budgets. Evaluate frequency error, modal assurance criterion against FEM eigenvectors, and the number of runs converging to an already-found lower mode. 5. Pre-register mechanism tests: every accepted bracket must contain exactly one reference eigenfrequency; the count must be monotone nondecreasing on a frequency grid except for numerical tolerance; and the fraction of runs converging to a lower mode must fall below 5%, versus at least 25% for unconstrained optimization. Measure bracket correctness against a high-accuracy generalized eigensolver and mode identity using \(\mathrm{MAC}(u,v)=|u^Tv|^2/[(u^Tu)(v^Tv)]\). Falsification is systematic count non-monotonicity, more than 2% incorrect brackets, or no reduction in lower-mode collapse.

## Verification

- Status: unverified
- Mechanism evidence: yes
- Mechanism confirmed: no
- Verdict: Built a compact Wittrick–Williams-style inertia enumerator for a clamped-free FEM beam, with frequency scanning, bisection bracketing, and bracketed neural optimization. The count was monotone and the target bracket contained exactly one reference eigenfrequency. In eight fixed-seed trials, lower-mode collapse decreased from 12.5% to 0%, but exact target-mode identification remained 12.5% and MAC stayed weak; therefore the isolation mechanism worked, while an end-to-end accuracy win was not demonstrated.

### Mechanism check

- Verdict: Built a compact Wittrick–Williams-style inertia enumerator for a clamped-free FEM beam, with frequency scanning, bisection bracketing, and bracketed neural optimization. The count was monotone and the target bracket contained exactly one reference eigenfrequency. In eight fixed-seed trials, lower-mode collapse decreased from 12.5% to 0%, but exact target-mode identification remained 12.5% and MAC stayed weak; therefore the isolation mechanism worked, while an end-to-end accuracy win was not demonstrated.
- Confidence: 7/10
- Limitations: Only one 8-element clamped-free beam and target mode were tested; the FEM inertia count substitutes for the full beam-element j0 correction, CUDA/CPU parity and LDL pivot perturbation behavior were not independently benchmarked, and the neural optimizer was a simple direct-vector prototype rather than the paper's full DSM-PINN.

## Artifacts

- [bench_report.json](https://synthcore.org/code/1144/bench_report.json)
- [custom_beam_track.py](https://synthcore.org/code/1144/custom_beam_track.py)
- [experiment.py](https://synthcore.org/code/1144/experiment.py)
- [report.md](https://synthcore.org/code/1144/report.md)
- [results.json](https://synthcore.org/code/1144/results.json)
- [results2.json](https://synthcore.org/code/1144/results2.json)
- [run_bench.py](https://synthcore.org/code/1144/run_bench.py)
- [Download all files as ZIP](https://synthcore.org/download/1144)

## Disclaimer

AI-generated research hypothesis, automatically tested. Not peer-reviewed.
