Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -999,6 +999,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/).

### Changed

- `phonometry.vibration` has three families, by who reads them.
`vibration.structural` is the structural acoustics that feeds building
prediction: mobility (ISO 7626), plate junctions, radiation efficiency,
experimental SEA and transfer stiffness (ISO 10846). `vibration.human` is
exposure of people: ISO 2631-1 and ISO 5349 in `human.exposure`, ISO 2631-5
in `human.multiple_shock`. `vibration.machinery` is condition monitoring, in
`machinery.diagnostics`. Three modules lose a word the package now says:
`human_vibration` is `human.exposure`, `multiple_shock_vibration` is
`human.multiple_shock` and `machine_diagnostics` is `machinery.diagnostics`.

Nothing moves in the namespace. `from phonometry import vibration` still
exports all 112 names, because the package re-exports its families
explicitly, so no notice fires for reading a name that stayed in the domain
it always belonged to. What changed is the module path, and the nine
pre-split paths still import and delegate with the usual notice until 5.0,
including the dotted read that follows the import: registering the alias in
`sys.modules` is enough for `import phonometry.vibration.human_vibration`
and not for the `phonometry.vibration.human_vibration.daily_exposure` after
it, so the package carries the same PEP 562 hook the other splits use, with
nothing to redirect but its own modules.

The renderers stay in one `_plot/vibration.py`. They mirror the domain, and
the domain is still vibration: splitting the translation table three ways
would have been the riskiest edit in the change for no reader's benefit.

- `phonometry.hearing` is two packages. It held two subjects that share a
word and nothing else: speech intelligibility, which scores a transmission
channel and is read by whoever designs a room or a public address system,
Expand Down
10 changes: 5 additions & 5 deletions docs/ERRATA.md
Original file line number Diff line number Diff line change
Expand Up @@ -1809,9 +1809,9 @@ which is the check that enforces the rule; see
whole 125 Hz to 2 kHz column to better than 0,7 %; with the printed
(unsquared) denominator the result is not a loss factor at all.
- **Library behaviour:** `point_connection_coupling_loss_factor` in
[`junction_transmission.py`](../src/phonometry/vibration/junction_transmission.py)
[`junction_transmission.py`](../src/phonometry/vibration/structural/junction_transmission.py)
implements the squared form, with the printed column pinned by a regression
test ([`tests/vibration/test_junction_transmission.py`](../tests/vibration/test_junction_transmission.py))
test ([`tests/vibration/structural/test_junction_transmission.py`](../tests/vibration/structural/test_junction_transmission.py))
and a note at the formula.
- **Status:** unreported (textbook rather than a standard).

Expand All @@ -1836,7 +1836,7 @@ which is the check that enforces the rule; see
oracle; $\eta_{21}$ is obtained from Eq. (6.8) with the full modal
densities,
and a test pins the 2,292 ratio explicitly
([`tests/vibration/test_junction_transmission.py`](../tests/vibration/test_junction_transmission.py)).
([`tests/vibration/structural/test_junction_transmission.py`](../tests/vibration/structural/test_junction_transmission.py)).
- **Status:** unreported (textbook rather than a standard).

## Norton & Karczub 2e (2003), problem 6.10 (platform area)
Expand All @@ -1862,10 +1862,10 @@ which is the check that enforces the rule; see
all three printed answers within 0,4 %; the cylinder's own energy and modal
density come out unchanged either way.
- **Library behaviour:** `power_injection_clf` in
[`experimental_sea.py`](../src/phonometry/vibration/experimental_sea.py)
[`experimental_sea.py`](../src/phonometry/vibration/structural/experimental_sea.py)
implements the inversion as published; the regression test uses the free
platform area and documents the discrepancy
([`tests/vibration/test_experimental_sea.py`](../tests/vibration/test_experimental_sea.py)).
([`tests/vibration/structural/test_experimental_sea.py`](../tests/vibration/structural/test_experimental_sea.py)).
- **Status:** unreported (textbook rather than a standard).

## Norton & Karczub 2e (2003), problem 3.14 (structural loss factor)
Expand Down
2 changes: 1 addition & 1 deletion docs/api-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ contour = aircraft.noise_contour(path, powers, distances, sel, lmax, x=gx, y=gy)
| `phonometry.room` | Room acoustics (ISO 3382), impulse responses, open-plan, room-noise criteria, reverberation prediction, EN 12354-6 |
| `phonometry.materials` | Absorption (ISO 354/11654), impedance tube, airflow resistance, scattering/diffusion, road absorption, dynamic stiffness |
| `phonometry.building` | Sound insulation measurement and prediction (EN 12354, ISO 717/16283/10140/15186/10052/10848), structure-borne sound |
| `phonometry.vibration` | Human vibration (ISO 2631/5349/8041), multiple shocks, mobility (ISO 7626), transfer stiffness (ISO 10846) |
| `phonometry.vibration` | Three families: `structural` (mobility ISO 7626, plate junctions, radiation, experimental SEA, transfer stiffness ISO 10846), `human` (ISO 2631/5349/8041 exposure and multiple shocks) and `machinery` (fault frequencies and condition monitoring) |
| `phonometry.environmental` | Rating levels, ISO 1996-2 measurement, outdoor propagation (ISO 9613), atmospheric refraction (ray tracing and the parabolic equation), wind-turbine noise, impulsive prominence |
| `phonometry.aircraft` | EPNL (ICAO Annex 16), SAE ARP 5534 absorption, airport contours (ECAC Doc 29), rotorcraft (ECAC Doc 32) |
| `phonometry.underwater` | ISO 18405/17208/18406 levels, propagation and Weston regimes, sound speed, sonar equation and detection range, seabed, ambient and ship-traffic noise, marine-mammal audiograms and regulatory auditory weighting, numerical solvers |
Expand Down
2 changes: 1 addition & 1 deletion docs/junction-transmission.md
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ from phonometry import (
power_injection_clf,
right_angle_transmission_coefficient,
)
from phonometry.vibration.point_mobility import plate_bending_wave_speed
from phonometry.vibration.structural.point_mobility import plate_bending_wave_speed

rho, nu, young = 2700.0, 0.33, 7.1e10 # aluminium
cl = math.sqrt(young / (rho * (1.0 - nu**2))) # 5432 m/s (Eq. 6.25)
Expand Down
2 changes: 1 addition & 1 deletion docs/panel-sound-insulation.md
Original file line number Diff line number Diff line change
Expand Up @@ -784,4 +784,4 @@ fig.tight_layout(); plt.show()
the measured counterpart of the theoretical point mobilities.
- [Porous and multilayer absorbers](porous-absorbers.md): the cavity-fill models
a double wall consumes.
- API reference: [`building.panel_transmission`](https://jmrplens.github.io/phonometry/reference/api/building/panel-transmission/), [`building.masonry_cavity_wall`](https://jmrplens.github.io/phonometry/reference/api/building/masonry-cavity-wall/), [`building.aperture_transmission`](https://jmrplens.github.io/phonometry/reference/api/building/aperture-transmission/), [`vibration.radiation_efficiency`](https://jmrplens.github.io/phonometry/reference/api/vibration/radiation-efficiency/) and [`vibration.point_mobility`](https://jmrplens.github.io/phonometry/reference/api/vibration/point-mobility/).
- API reference: [`building.panel_transmission`](https://jmrplens.github.io/phonometry/reference/api/building/panel-transmission/), [`building.masonry_cavity_wall`](https://jmrplens.github.io/phonometry/reference/api/building/masonry-cavity-wall/), [`building.aperture_transmission`](https://jmrplens.github.io/phonometry/reference/api/building/aperture-transmission/), [`vibration.structural.radiation_efficiency`](https://jmrplens.github.io/phonometry/reference/api/vibration/radiation-efficiency/) and [`vibration.structural.point_mobility`](https://jmrplens.github.io/phonometry/reference/api/vibration/point-mobility/).
12 changes: 6 additions & 6 deletions llms-full.txt
Original file line number Diff line number Diff line change
Expand Up @@ -388,12 +388,12 @@ The generated API reference, one page per module. Fetch these only when a specif
- [underwater/sonar-equation](https://jmrplens.github.io/phonometry/reference/api/underwater/sonar-equation/)
- [underwater/sound-speed](https://jmrplens.github.io/phonometry/reference/api/underwater/sound-speed/)
- [underwater/weston-regimes](https://jmrplens.github.io/phonometry/reference/api/underwater/weston-regimes/)
- [vibration/diagnostics](https://jmrplens.github.io/phonometry/reference/api/vibration/diagnostics/)
- [vibration/experimental-sea](https://jmrplens.github.io/phonometry/reference/api/vibration/experimental-sea/)
- [vibration/human-vibration](https://jmrplens.github.io/phonometry/reference/api/vibration/human-vibration/)
- [vibration/exposure](https://jmrplens.github.io/phonometry/reference/api/vibration/exposure/)
- [vibration/junction-transmission](https://jmrplens.github.io/phonometry/reference/api/vibration/junction-transmission/)
- [vibration/machine-diagnostics](https://jmrplens.github.io/phonometry/reference/api/vibration/machine-diagnostics/)
- [vibration/mechanical-mobility](https://jmrplens.github.io/phonometry/reference/api/vibration/mechanical-mobility/)
- [vibration/multiple-shock-vibration](https://jmrplens.github.io/phonometry/reference/api/vibration/multiple-shock-vibration/)
- [vibration/multiple-shock](https://jmrplens.github.io/phonometry/reference/api/vibration/multiple-shock/)
- [vibration/point-mobility](https://jmrplens.github.io/phonometry/reference/api/vibration/point-mobility/)
- [vibration/radiation-efficiency](https://jmrplens.github.io/phonometry/reference/api/vibration/radiation-efficiency/)
- [vibration/transfer-stiffness](https://jmrplens.github.io/phonometry/reference/api/vibration/transfer-stiffness/)
Expand Down Expand Up @@ -2247,7 +2247,7 @@ contour = aircraft.noise_contour(path, powers, distances, sel, lmax, x=gx, y=gy)
| `phonometry.room` | Room acoustics (ISO 3382), impulse responses, open-plan, room-noise criteria, reverberation prediction, EN 12354-6 |
| `phonometry.materials` | Absorption (ISO 354/11654), impedance tube, airflow resistance, scattering/diffusion, road absorption, dynamic stiffness |
| `phonometry.building` | Sound insulation measurement and prediction (EN 12354, ISO 717/16283/10140/15186/10052/10848), structure-borne sound |
| `phonometry.vibration` | Human vibration (ISO 2631/5349/8041), multiple shocks, mobility (ISO 7626), transfer stiffness (ISO 10846) |
| `phonometry.vibration` | Three families: `structural` (mobility ISO 7626, plate junctions, radiation, experimental SEA, transfer stiffness ISO 10846), `human` (ISO 2631/5349/8041 exposure and multiple shocks) and `machinery` (fault frequencies and condition monitoring) |
| `phonometry.environmental` | Rating levels, ISO 1996-2 measurement, outdoor propagation (ISO 9613), atmospheric refraction (ray tracing and the parabolic equation), wind-turbine noise, impulsive prominence |
| `phonometry.aircraft` | EPNL (ICAO Annex 16), SAE ARP 5534 absorption, airport contours (ECAC Doc 29), rotorcraft (ECAC Doc 32) |
| `phonometry.underwater` | ISO 18405/17208/18406 levels, propagation and Weston regimes, sound speed, sonar equation and detection range, seabed, ambient and ship-traffic noise, marine-mammal audiograms and regulatory auditory weighting, numerical solvers |
Expand Down Expand Up @@ -18491,7 +18491,7 @@ from phonometry import (
power_injection_clf,
right_angle_transmission_coefficient,
)
from phonometry.vibration.point_mobility import plate_bending_wave_speed
from phonometry.vibration.structural.point_mobility import plate_bending_wave_speed

rho, nu, young = 2700.0, 0.33, 7.1e10 # aluminium
cl = math.sqrt(young / (rho * (1.0 - nu**2))) # 5432 m/s (Eq. 6.25)
Expand Down Expand Up @@ -25185,7 +25185,7 @@ fig.tight_layout(); plt.show()
the measured counterpart of the theoretical point mobilities.
- [Porous and multilayer absorbers](https://jmrplens.github.io/phonometry/guides/porous-absorbers/): the cavity-fill models
a double wall consumes.
- API reference: [`building.panel_transmission`](https://jmrplens.github.io/phonometry/reference/api/building/panel-transmission/), [`building.masonry_cavity_wall`](https://jmrplens.github.io/phonometry/reference/api/building/masonry-cavity-wall/), [`building.aperture_transmission`](https://jmrplens.github.io/phonometry/reference/api/building/aperture-transmission/), [`vibration.radiation_efficiency`](https://jmrplens.github.io/phonometry/reference/api/vibration/radiation-efficiency/) and [`vibration.point_mobility`](https://jmrplens.github.io/phonometry/reference/api/vibration/point-mobility/).
- API reference: [`building.panel_transmission`](https://jmrplens.github.io/phonometry/reference/api/building/panel-transmission/), [`building.masonry_cavity_wall`](https://jmrplens.github.io/phonometry/reference/api/building/masonry-cavity-wall/), [`building.aperture_transmission`](https://jmrplens.github.io/phonometry/reference/api/building/aperture-transmission/), [`vibration.structural.radiation_efficiency`](https://jmrplens.github.io/phonometry/reference/api/vibration/radiation-efficiency/) and [`vibration.structural.point_mobility`](https://jmrplens.github.io/phonometry/reference/api/vibration/point-mobility/).

---

Expand Down
6 changes: 3 additions & 3 deletions llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -388,12 +388,12 @@ The generated API reference, one page per module. Fetch these only when a specif
- [underwater/sonar-equation](https://jmrplens.github.io/phonometry/reference/api/underwater/sonar-equation/)
- [underwater/sound-speed](https://jmrplens.github.io/phonometry/reference/api/underwater/sound-speed/)
- [underwater/weston-regimes](https://jmrplens.github.io/phonometry/reference/api/underwater/weston-regimes/)
- [vibration/diagnostics](https://jmrplens.github.io/phonometry/reference/api/vibration/diagnostics/)
- [vibration/experimental-sea](https://jmrplens.github.io/phonometry/reference/api/vibration/experimental-sea/)
- [vibration/human-vibration](https://jmrplens.github.io/phonometry/reference/api/vibration/human-vibration/)
- [vibration/exposure](https://jmrplens.github.io/phonometry/reference/api/vibration/exposure/)
- [vibration/junction-transmission](https://jmrplens.github.io/phonometry/reference/api/vibration/junction-transmission/)
- [vibration/machine-diagnostics](https://jmrplens.github.io/phonometry/reference/api/vibration/machine-diagnostics/)
- [vibration/mechanical-mobility](https://jmrplens.github.io/phonometry/reference/api/vibration/mechanical-mobility/)
- [vibration/multiple-shock-vibration](https://jmrplens.github.io/phonometry/reference/api/vibration/multiple-shock-vibration/)
- [vibration/multiple-shock](https://jmrplens.github.io/phonometry/reference/api/vibration/multiple-shock/)
- [vibration/point-mobility](https://jmrplens.github.io/phonometry/reference/api/vibration/point-mobility/)
- [vibration/radiation-efficiency](https://jmrplens.github.io/phonometry/reference/api/vibration/radiation-efficiency/)
- [vibration/transfer-stiffness](https://jmrplens.github.io/phonometry/reference/api/vibration/transfer-stiffness/)
22 changes: 11 additions & 11 deletions scripts/api_taxonomy.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,15 +202,15 @@ class Section:
label_en="Vibration and structure-borne",
label_es="Vibración y ruido estructural",
modules=(
"phonometry.vibration.mechanical_mobility",
"phonometry.vibration.point_mobility",
"phonometry.vibration.radiation_efficiency",
"phonometry.vibration.junction_transmission",
"phonometry.vibration.experimental_sea",
"phonometry.vibration.machine_diagnostics",
"phonometry.vibration.transfer_stiffness",
"phonometry.vibration.human_vibration",
"phonometry.vibration.multiple_shock_vibration",
"phonometry.vibration.structural.mechanical_mobility",
"phonometry.vibration.structural.point_mobility",
"phonometry.vibration.structural.radiation_efficiency",
"phonometry.vibration.structural.junction_transmission",
"phonometry.vibration.structural.experimental_sea",
"phonometry.vibration.machinery.diagnostics",
"phonometry.vibration.structural.transfer_stiffness",
"phonometry.vibration.human.exposure",
"phonometry.vibration.human.multiple_shock",
),
),
Section(
Expand Down Expand Up @@ -389,11 +389,11 @@ class Section:
"phonometry.electroacoustics.sound_reinforcement",
"plot_facade_elements": "phonometry.building.facade_prediction",
"plot_double_wall_geometry": "phonometry.building.panel_transmission",
"plot_junction_geometry": "phonometry.vibration.junction_transmission",
"plot_junction_geometry": "phonometry.vibration.structural.junction_transmission",
"plot_insitu_geometry": "phonometry.materials.road_absorption",
"plot_dynamic_stiffness_rig": "phonometry.materials.dynamic_stiffness",
"plot_goniometer_geometry": "phonometry.materials.scattering_diffusion",
"plot_plate_geometry": "phonometry.vibration.radiation_efficiency",
"plot_plate_geometry": "phonometry.vibration.structural.radiation_efficiency",
"plot_open_plan_geometry": "phonometry.room.open_plan",
"plot_pp_probe_geometry": "phonometry.emission.intensity",
# Defined in underwater.acoustics, also re-exported by
Expand Down
2 changes: 1 addition & 1 deletion scripts/bench.py
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ def run_ecma_tonality() -> np.ndarray:


def run_vibration_weighting() -> np.ndarray:
from phonometry.vibration.human_vibration import apply_weighting
from phonometry.vibration.human.exposure import apply_weighting

sig, fs = vibration_signal()
out = np.asarray(apply_weighting(sig, fs, "Wd"), dtype=np.float64)
Expand Down
4 changes: 2 additions & 2 deletions scripts/conformance_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -4837,7 +4837,7 @@ def _chk_multiple_shock_probability() -> Outcome:
_MSV, "ISO 2631-5:2018 Annex C NOTE 5", "Compressive stress Sd, female example"
)
def _chk_multiple_shock_female_sd() -> Outcome:
from phonometry.vibration.multiple_shock_vibration import MZ_FEMALE
from phonometry.vibration.human.multiple_shock import MZ_FEMALE

sd = ph.compression_dose(ph.dose_from_peaks([40.0] * 5), mz=MZ_FEMALE)
return numeric(ref.ISO2631_5_SD_FEMALE, sd, 0.01, unit="MPa", places=2)
Expand All @@ -4847,7 +4847,7 @@ def _chk_multiple_shock_female_sd() -> Outcome:
_MSV, "ISO 2631-5:2018 Annex C NOTE 5", "Stress variable R, female example"
)
def _chk_multiple_shock_female_r() -> Outcome:
from phonometry.vibration.multiple_shock_vibration import MZ_FEMALE
from phonometry.vibration.human.multiple_shock import MZ_FEMALE

sd = ph.compression_dose(ph.dose_from_peaks([40.0] * 5), mz=MZ_FEMALE)
r = ph.injury_risk(sd, start_age=20, years=20, days_per_year=120, sex="female")
Expand Down
4 changes: 2 additions & 2 deletions scripts/generate_graphs.py
Original file line number Diff line number Diff line change
Expand Up @@ -10674,7 +10674,7 @@ def generate_multiple_shock(output_dir: str) -> None:
injury_risk,
seat_to_spine_transfer,
)
from phonometry.vibration.multiple_shock_vibration import (
from phonometry.vibration.human.multiple_shock import (
MZ_MALE,
RISK_THRESHOLDS_MALE,
)
Expand Down Expand Up @@ -12406,7 +12406,7 @@ def generate_experimental_sea_clf(output_dir: str) -> None:
power_injection_clf,
right_angle_transmission_coefficient,
)
from phonometry.vibration.point_mobility import plate_bending_wave_speed
from phonometry.vibration.structural.point_mobility import plate_bending_wave_speed

rho, nu, young = 2700.0, 0.33, 7.1e10
c_l = math.sqrt(young / (rho * (1.0 - nu**2)))
Expand Down
2 changes: 1 addition & 1 deletion scripts/generate_reports.py
Original file line number Diff line number Diff line change
Expand Up @@ -1878,7 +1878,7 @@ def _multiple_shock_example() -> tuple[object, ReportMetadata, str]:
standard states as the spinal response), so the fiche's numbers are the
published Annex C values.
"""
from phonometry.vibration.multiple_shock_vibration import (
from phonometry.vibration.human.multiple_shock import (
MZ_MALE,
RISK_THRESHOLDS_MALE,
MultipleShockResult,
Expand Down
Loading