Machine fault frequencies, experimental SEA and the plateau TL estimate (#423)
Three additions from Norton & Karczub, Fundamentals of Noise and Vibration
Analysis for Engineers (2nd ed., CUP 2003), each anchored on the book's own
printed answers.
**Machine fault frequencies** (`vibration/machine_diagnostics.py`, Section
8.4). `bearing_fault_frequencies` returns the seven rolling-contact bearing
lines after Shahan and Kamperman (Eqs. 8.4-8.14), `gear_mesh_frequencies` the
mesh frequency with its harmonics and sideband families (Eq. 8.3),
`induction_motor_frequencies` the supply, slip, pole-pass and rotor-slot lines
(Eqs. 8.19-8.20), and `blade_pass_frequencies` the blade tones and the lobed
interaction patterns of a ducted axial fan (Eqs. 8.15-8.18). The
`FaultFrequencyResult` carrier selects by name, order or frequency span, merges
families, and its `.plot(spectrum=...)` draws the predicted lines over a
measured envelope spectrum, closing the loop with the existing
`envelope_spectrum`, `cepstrum` and `time_synchronous_average` chain.
**Experimental SEA** (`vibration/experimental_sea.py`, Sections 6.3.3, 6.3.4
and 6.4.1). `power_injection_clf` inverts the two-subsystem steady-state power
balance from measured band energies (Eqs. 6.8, 6.10, 6.11, 6.15) and
`power_injection_matrix` solves the full two-drive problem without assuming
reciprocity, leaving it as a check on the measurement. The modal densities the
inversion needs come with it (Eqs. 6.23-6.29), including the three regimes of a
thin-walled cylinder about its ring frequency. Two closed-form predictive
counterparts join `junction_transmission`:
`right_angle_transmission_coefficient` (Eqs. 6.53-6.55, which reproduces
Eq. 6.52 when fed to the existing `coupling_loss_factor`) and
`point_connection_coupling_loss_factor` (Eq. 6.56, bolts rather than a weld).
**Plateau method** (`plateau_transmission_loss`, `PLATEAU_MATERIALS` in
`building/panel_transmission.py`, Section 3.9.1 and Table 3.1). The Watters
construction: field-incidence mass law, a horizontal coincidence plateau
between points A and B, and a 10 dB per octave recovery above B, for the eight
tabulated materials or an explicit panel. `single_panel_transmission_loss`
gains `coincidence_model="cremer"` (Eq. 3.110) beside the Sharp model, and both
it and `mass_law_transmission_loss` accept an explicit `field_correction`.
Oracles: problems 8.5 (BPFO 207 Hz, BPFI 293 Hz), 8.6, 8.7, 6.10
(4.26e-4, 3.92e-4, 1.31 W), 6.13 (both eta12 columns), 3.11 and 3.14, plus the
exact identities BPFO + BPFI = Z fs, BDF = 2 BSF and the SEA reciprocity and
energy-balance round trips.
Four new entries in docs/ERRATA.md record the defects found while anchoring:
the missing square in Eq. (6.56), the plate areas dropped from the reciprocity
step of the problem 6.13 answer, the platform area of problem 6.10 that its own
answers contradict, and the loss factor of problem 3.14 that is a decade away
from the value its answers require.
New "Machine fault frequencies" guide, an experimental-SEA section in the
plate-junction guide and a plateau section in the panel-insulation guide, all
in English and Spanish, with three figures.
Above the coincidence frequency Cremer's line is floored at TL = 0 dB: Eq.
(3.110) is singular at f = fc, and Norton's own Eq. (3.109) has theta_CO = 90
degrees there, where the panel "offers no resistance to incident sound waves",
tau = 1. That is also the hard bound of a passive panel, so no band can report
a transmission coefficient above one.
The lobed fan interaction patterns are de-duplicated on the (n, mL) pair and
named "lobe n=1 m=2": Eq. (8.17) carries the blade harmonic in its numerator,
so the same lobe count reached from a different harmonic is a distinct pattern
turning at a different speed.
Lead the API pages with the module, and type the conformance report as data (#369)
Two things the pages were saying about themselves rather than about their
subject.
All 120 generated API pages opened with the "auto-generated from the source
docstrings, do not edit by hand" note. That is a message to whoever might edit
the file, and it was standing where the module's own summary belongs: it was
the paragraph a search result quoted and the one the `speakable` selector
points assistants at. The summary leads now and the note follows it.
The conformance report page was typed as an article. It is a machine-generated
table with a fixed schema, regenerated by CI, downloadable at a stable URL, so
it is a Dataset, and it is the most citable object the project owns. Both
language versions now declare one, with the column schema, the download URL
and the DOI. The counts in the description are read from the report itself
rather than written out.
451 pages build, html-validate clean, i18n parity holds, the site-reports and
conformance-claims gates pass, and the three JSON-LD blocks on each
conformance page parse.
Machine fault frequencies, experimental SEA and the plateau TL estimate (#423)
Three additions from Norton & Karczub, Fundamentals of Noise and Vibration
Analysis for Engineers (2nd ed., CUP 2003), each anchored on the book's own
printed answers.
**Machine fault frequencies** (`vibration/machine_diagnostics.py`, Section
8.4). `bearing_fault_frequencies` returns the seven rolling-contact bearing
lines after Shahan and Kamperman (Eqs. 8.4-8.14), `gear_mesh_frequencies` the
mesh frequency with its harmonics and sideband families (Eq. 8.3),
`induction_motor_frequencies` the supply, slip, pole-pass and rotor-slot lines
(Eqs. 8.19-8.20), and `blade_pass_frequencies` the blade tones and the lobed
interaction patterns of a ducted axial fan (Eqs. 8.15-8.18). The
`FaultFrequencyResult` carrier selects by name, order or frequency span, merges
families, and its `.plot(spectrum=...)` draws the predicted lines over a
measured envelope spectrum, closing the loop with the existing
`envelope_spectrum`, `cepstrum` and `time_synchronous_average` chain.
**Experimental SEA** (`vibration/experimental_sea.py`, Sections 6.3.3, 6.3.4
and 6.4.1). `power_injection_clf` inverts the two-subsystem steady-state power
balance from measured band energies (Eqs. 6.8, 6.10, 6.11, 6.15) and
`power_injection_matrix` solves the full two-drive problem without assuming
reciprocity, leaving it as a check on the measurement. The modal densities the
inversion needs come with it (Eqs. 6.23-6.29), including the three regimes of a
thin-walled cylinder about its ring frequency. Two closed-form predictive
counterparts join `junction_transmission`:
`right_angle_transmission_coefficient` (Eqs. 6.53-6.55, which reproduces
Eq. 6.52 when fed to the existing `coupling_loss_factor`) and
`point_connection_coupling_loss_factor` (Eq. 6.56, bolts rather than a weld).
**Plateau method** (`plateau_transmission_loss`, `PLATEAU_MATERIALS` in
`building/panel_transmission.py`, Section 3.9.1 and Table 3.1). The Watters
construction: field-incidence mass law, a horizontal coincidence plateau
between points A and B, and a 10 dB per octave recovery above B, for the eight
tabulated materials or an explicit panel. `single_panel_transmission_loss`
gains `coincidence_model="cremer"` (Eq. 3.110) beside the Sharp model, and both
it and `mass_law_transmission_loss` accept an explicit `field_correction`.
Oracles: problems 8.5 (BPFO 207 Hz, BPFI 293 Hz), 8.6, 8.7, 6.10
(4.26e-4, 3.92e-4, 1.31 W), 6.13 (both eta12 columns), 3.11 and 3.14, plus the
exact identities BPFO + BPFI = Z fs, BDF = 2 BSF and the SEA reciprocity and
energy-balance round trips.
Four new entries in docs/ERRATA.md record the defects found while anchoring:
the missing square in Eq. (6.56), the plate areas dropped from the reciprocity
step of the problem 6.13 answer, the platform area of problem 6.10 that its own
answers contradict, and the loss factor of problem 3.14 that is a decade away
from the value its answers require.
New "Machine fault frequencies" guide, an experimental-SEA section in the
plate-junction guide and a plateau section in the panel-insulation guide, all
in English and Spanish, with three figures.
Above the coincidence frequency Cremer's line is floored at TL = 0 dB: Eq.
(3.110) is singular at f = fc, and Norton's own Eq. (3.109) has theta_CO = 90
degrees there, where the panel "offers no resistance to incident sound waves",
tau = 1. That is also the hard bound of a passive panel, so no band can report
a transmission coefficient above one.
The lobed fan interaction patterns are de-duplicated on the (n, mL) pair and
named "lobe n=1 m=2": Eq. (8.17) carries the blade harmonic in its numerator,
so the same lobe count reached from a different harmonic is a distinct pattern
turning at a different speed.
Machine fault frequencies, experimental SEA and the plateau TL estimate (#423)
Three additions from Norton & Karczub, Fundamentals of Noise and Vibration
Analysis for Engineers (2nd ed., CUP 2003), each anchored on the book's own
printed answers.
**Machine fault frequencies** (`vibration/machine_diagnostics.py`, Section
8.4). `bearing_fault_frequencies` returns the seven rolling-contact bearing
lines after Shahan and Kamperman (Eqs. 8.4-8.14), `gear_mesh_frequencies` the
mesh frequency with its harmonics and sideband families (Eq. 8.3),
`induction_motor_frequencies` the supply, slip, pole-pass and rotor-slot lines
(Eqs. 8.19-8.20), and `blade_pass_frequencies` the blade tones and the lobed
interaction patterns of a ducted axial fan (Eqs. 8.15-8.18). The
`FaultFrequencyResult` carrier selects by name, order or frequency span, merges
families, and its `.plot(spectrum=...)` draws the predicted lines over a
measured envelope spectrum, closing the loop with the existing
`envelope_spectrum`, `cepstrum` and `time_synchronous_average` chain.
**Experimental SEA** (`vibration/experimental_sea.py`, Sections 6.3.3, 6.3.4
and 6.4.1). `power_injection_clf` inverts the two-subsystem steady-state power
balance from measured band energies (Eqs. 6.8, 6.10, 6.11, 6.15) and
`power_injection_matrix` solves the full two-drive problem without assuming
reciprocity, leaving it as a check on the measurement. The modal densities the
inversion needs come with it (Eqs. 6.23-6.29), including the three regimes of a
thin-walled cylinder about its ring frequency. Two closed-form predictive
counterparts join `junction_transmission`:
`right_angle_transmission_coefficient` (Eqs. 6.53-6.55, which reproduces
Eq. 6.52 when fed to the existing `coupling_loss_factor`) and
`point_connection_coupling_loss_factor` (Eq. 6.56, bolts rather than a weld).
**Plateau method** (`plateau_transmission_loss`, `PLATEAU_MATERIALS` in
`building/panel_transmission.py`, Section 3.9.1 and Table 3.1). The Watters
construction: field-incidence mass law, a horizontal coincidence plateau
between points A and B, and a 10 dB per octave recovery above B, for the eight
tabulated materials or an explicit panel. `single_panel_transmission_loss`
gains `coincidence_model="cremer"` (Eq. 3.110) beside the Sharp model, and both
it and `mass_law_transmission_loss` accept an explicit `field_correction`.
Oracles: problems 8.5 (BPFO 207 Hz, BPFI 293 Hz), 8.6, 8.7, 6.10
(4.26e-4, 3.92e-4, 1.31 W), 6.13 (both eta12 columns), 3.11 and 3.14, plus the
exact identities BPFO + BPFI = Z fs, BDF = 2 BSF and the SEA reciprocity and
energy-balance round trips.
Four new entries in docs/ERRATA.md record the defects found while anchoring:
the missing square in Eq. (6.56), the plate areas dropped from the reciprocity
step of the problem 6.13 answer, the platform area of problem 6.10 that its own
answers contradict, and the loss factor of problem 3.14 that is a decade away
from the value its answers require.
New "Machine fault frequencies" guide, an experimental-SEA section in the
plate-junction guide and a plateau section in the panel-insulation guide, all
in English and Spanish, with three figures.
Above the coincidence frequency Cremer's line is floored at TL = 0 dB: Eq.
(3.110) is singular at f = fc, and Norton's own Eq. (3.109) has theta_CO = 90
degrees there, where the panel "offers no resistance to incident sound waves",
tau = 1. That is also the hard bound of a passive panel, so no band can report
a transmission coefficient above one.
The lobed fan interaction patterns are de-duplicated on the (n, mL) pair and
named "lobe n=1 m=2": Eq. (8.17) carries the blade harmonic in its numerator,
so the same lobe count reached from a different harmonic is a distinct pattern
turning at a different speed.
Lead the API pages with the module, and type the conformance report as data (#369)
Two things the pages were saying about themselves rather than about their
subject.
All 120 generated API pages opened with the "auto-generated from the source
docstrings, do not edit by hand" note. That is a message to whoever might edit
the file, and it was standing where the module's own summary belongs: it was
the paragraph a search result quoted and the one the `speakable` selector
points assistants at. The summary leads now and the note follows it.
The conformance report page was typed as an article. It is a machine-generated
table with a fixed schema, regenerated by CI, downloadable at a stable URL, so
it is a Dataset, and it is the most citable object the project owns. Both
language versions now declare one, with the column schema, the download URL
and the DOI. The counts in the description are read from the report itself
rather than written out.
451 pages build, html-validate clean, i18n parity holds, the site-reports and
conformance-claims gates pass, and the three JSON-LD blocks on each
conformance page parse.
Lead the API pages with the module, and type the conformance report as data (#369)
Two things the pages were saying about themselves rather than about their
subject.
All 120 generated API pages opened with the "auto-generated from the source
docstrings, do not edit by hand" note. That is a message to whoever might edit
the file, and it was standing where the module's own summary belongs: it was
the paragraph a search result quoted and the one the `speakable` selector
points assistants at. The summary leads now and the note follows it.
The conformance report page was typed as an article. It is a machine-generated
table with a fixed schema, regenerated by CI, downloadable at a stable URL, so
it is a Dataset, and it is the most citable object the project owns. Both
language versions now declare one, with the column schema, the download URL
and the DOI. The counts in the description are read from the report itself
rather than written out.
451 pages build, html-validate clean, i18n parity holds, the site-reports and
conformance-claims gates pass, and the three JSON-LD blocks on each
conformance page parse.
Lead the API pages with the module, and type the conformance report as data (#369)
Two things the pages were saying about themselves rather than about their
subject.
All 120 generated API pages opened with the "auto-generated from the source
docstrings, do not edit by hand" note. That is a message to whoever might edit
the file, and it was standing where the module's own summary belongs: it was
the paragraph a search result quoted and the one the `speakable` selector
points assistants at. The summary leads now and the note follows it.
The conformance report page was typed as an article. It is a machine-generated
table with a fixed schema, regenerated by CI, downloadable at a stable URL, so
it is a Dataset, and it is the most citable object the project owns. Both
language versions now declare one, with the column schema, the download URL
and the DOI. The counts in the description are read from the report itself
rather than written out.
451 pages build, html-validate clean, i18n parity holds, the site-reports and
conformance-claims gates pass, and the three JSON-LD blocks on each
conformance page parse.
Geometry drawings: secondary set-ups across building, materials and rooms (#386)
* Geometry drawings: secondary set-ups across building, materials and rooms
Nine more to-scale drawings, each with the realistic dimensions of its
standard rig or textbook case:
- Composite facade elevation with the element areas to scale
(FacadePredictionResult retains its elements).
- Mass-spring-mass double wall: 12,5 mm plasterboard leaves on a
100 mm cavity, resonance annotated (double-wall results retain
mass1/mass2/gap).
- Plate junctions L/T1/T2/X following the junction_transmission
conventions (plate 1 continuous for T1/X, the perpendicular pair
continuous for T2/X); results retain both thicknesses.
- In-situ road absorption set-up: source at 1,25 m, microphone at
0,25 m, the 1,34 m sampled radius of the 5 ms window.
- Dynamic-stiffness resonance rig: 200 mm square specimen under the
8 kg load plate.
- Free-field diffusion goniometer in plan: 37 microphones on the 5 m
arc, source at 10 m.
- Baffled radiating plate (RadiationEfficiencyResult already carries
its geometry).
- Open-plan measurement line with rD/rP marked (OpenPlanResult
retains the microphone positions).
- Face-to-face p-p intensity probe with the 12 mm spacer
(IntensityResult retains the spacing).
Nine public plot_* functions, retention fields on six results
(trailing, defaulted), 36 generated SVG variants embedded in nine
guides (EN/ES and the GitHub mirrors, including the first figures of
the junction-transmission and vibration-sound-power guides), curated
table and generated API pages updated, and 10 new tests.
* Address review: junction alt texts, retained-field docs, small guards
- The T-junction figure alt texts now name T2, matching the drawn
geometry and the runnable example.
- Retained-geometry fields documented on all six result docstrings
(and the generated API pages regenerated).
- plot_facade_elements rejects an explicit zero area instead of
silently substituting the nominal tile, and its kwargs contract now
names the first element rectangle; plot_goniometer_geometry
validates sample_width and documents it in the curated table.
- Facade prose spelling unified with the surrounding sections.
* Drop the identical-in-both-languages unit literal from the translation table
Lead the API pages with the module, and type the conformance report as data (#369)
Two things the pages were saying about themselves rather than about their
subject.
All 120 generated API pages opened with the "auto-generated from the source
docstrings, do not edit by hand" note. That is a message to whoever might edit
the file, and it was standing where the module's own summary belongs: it was
the paragraph a search result quoted and the one the `speakable` selector
points assistants at. The summary leads now and the note follows it.
The conformance report page was typed as an article. It is a machine-generated
table with a fixed schema, regenerated by CI, downloadable at a stable URL, so
it is a Dataset, and it is the most citable object the project owns. Both
language versions now declare one, with the column schema, the download URL
and the DOI. The counts in the description are read from the report itself
rather than written out.
451 pages build, html-validate clean, i18n parity holds, the site-reports and
conformance-claims gates pass, and the three JSON-LD blocks on each
conformance page parse.