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
4 changes: 2 additions & 2 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -143,9 +143,9 @@ ci:
- changed-files:
- any-glob-to-any-file: ["src/phonometry/emission/**", "tests/emission/**"]

"area: environmental":
"area: environment":
- changed-files:
- any-glob-to-any-file: ["src/phonometry/environmental/**", "tests/environmental/**"]
- any-glob-to-any-file: ["src/phonometry/environment/**", "tests/environment/**"]

"area: filters":
- changed-files:
Expand Down
32 changes: 32 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -1005,6 +1005,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
validator says the same thing in the form the whole package uses, rejects
infinities too, and names the parameter that failed instead of both at once.

- The RD 1367 assessment reads as the article it implements. Its two longest
functions were doing four jobs each: `assess_activity` now validates the
annual parameters, resolves the period durations, assesses one period and
derives the annual index in four named steps, and `tonal_correction`
separates the spectrum it rejects from the band-by-band procedure of
Annex IV A.3.3. No number changes: the conformance report, the fiches and
the tests are identical either side of the refactor.

- `phonometry.environmental` is `phonometry.environment`, with three
subgroups that follow how an environmental study is written: what the source
emits (`environment.sources`: CNOSSOS road and rail, wind turbines), what the
path does to it (`environment.propagation`: ISO 9613-1 and -2, ground effect
and barriers, refraction) and what the law makes of the result at the
receiver (`environment.assessment`: ISO 1996-1 and -2, impulsive prominence,
RD 1367/2007). Two modules lose a word the subgroup now says:
`atmospheric_refraction` is `propagation.refraction` and
`spanish_regulation` is `assessment.spain`, which is the shape the next
national code will take.

The name was the last of the three that did not match: the code said
`environmental`, the reference said `environment` and the guides said
Environment. Now they all say the same thing, and the generated reference
loses a cross-package exception: the wind turbine used to be documented
under Aircraft and wind energy because that is where its audience was
looking, and with the sources subgroup it can be documented where it lives.
That section is now Aircraft noise and draws from one package, which leaves
two sections in the whole taxonomy that deliberately span two parents.

Nothing moves in the namespace: `from phonometry import environment` exports
the same 165 names, and `environmental` keeps working as a package alias
until 5.0, along with all twelve of its module paths.

- `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,
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ tl = underwater.transmission_loss(...)
| `building` | Field airborne, impact and façade insulation with R′w/DnT,w/L′nT,w/D2m,nT,w and C/Ctr/CI (ISO 16283-1/2/3, ISO 717-1/2); laboratory R/Ln (ISO 10140) and survey method (ISO 10052); insulation by intensity (ISO 15186); flanking transmission measurement and prediction (ISO 10848, EN 12354-1/2) and façade/outdoor radiation (EN 12354-3/4); measurement uncertainty (ISO 12999-1); panel transmission theory (mass law, coincidence, double walls, slits and apertures); floor-covering improvement (ISO 16251-1); reception-plate power (EN 15657) and installed structure-borne prediction (EN 12354-5); dynamic stiffness (EN 29052-1) |
| `materials` | Absorption ratings αw with classes (ISO 11654) and uncertainty (ISO 12999-2); impedance-tube absorption, impedance and transmission loss (ISO 10534-1/2, ASTM E2611) plus a virtual FDTD tube; porous and multilayer absorber models (Delany-Bazley, Miki, JCA, TMM with MPP and membranes); slow-sound metamaterial absorbers at critical coupling; scattering and diffusion coefficients (ISO 17497-1/2); Schroeder diffuser design and far-field prediction; deep-subwavelength metadiffusers; in-situ road-surface absorption (ISO 13472-1/2); airflow resistance (ISO 9053-1/2) |
| `emission` | Sound power by enveloping surface (ISO 3744/3746), reverberation room (ISO 3741), precision anechoic rooms (ISO 3745) and intensity scanning with field indicators and grades (ISO 9614-2/3); two-microphone p-p intensity (IEC 61043, ISO 9614-1); sound power from surface vibration (ISO/TS 7849); noise-emission declarations (ISO 4871) |
| `environmental` | Rating levels, Lden/Ldn and adjustments (ISO 1996-1/2); impulsive-sound prominence (NT ACOU 112); atmospheric absorption (ISO 9613-1) and the ISO 9613-2 general method with per-term octave breakdown; spherical ground effect and wave-theoretic barriers; refraction ray tracing and the GFPE; wind-turbine apparent sound power and tonal audibility (IEC 61400-11) |
| `environment` | Sources: CNOSSOS-EU road and rail emission, wind-turbine apparent sound power and tonal audibility (IEC 61400-11). Propagation: atmospheric absorption (ISO 9613-1) and the ISO 9613-2 general method with per-term octave breakdown, spherical ground effect and wave-theoretic barriers, refraction ray tracing and the GFPE. Assessment: rating levels, Lden/Ldn and adjustments (ISO 1996-1/2), impulsive-sound prominence (NT ACOU 112) and the Spanish RD 1367/2007 |
| `aircraft` | EPNL certification chain (ICAO Annex 16) with IEC 61265 verification and SAE ARP 5534 absorption; airport noise contours (ECAC Doc 29) with the EASA ANP fleet database; rotorcraft hemisphere method (ECAC Doc 32) |
| `underwater` | Levels re 1 µPa (ISO 18405); ship radiated noise (ISO 17208-1/2); pile driving (ISO 18406); ship-traffic source levels (JOMOPANS-ECHO) and Wenz ambient noise; sonar equation and detection range; sound speed and seabed reflection; transmission loss from spreading laws and Weston's shallow-water regimes to normal-mode, ray and parabolic-equation solvers; marine-mammal audiograms and regulatory auditory weighting (NMFS 2024/2018, Southall et al. 2019) |
| `vibration` | Human vibration: weightings (ISO 8041-1), whole-body metrics and buildings (ISO 2631-1/2), multiple shocks (ISO 2631-5), hand-arm and A(8) (ISO 5349); mobility and the FRF family (ISO 7626); isolator transfer stiffness (ISO 10846); plate-junction transmission and Kij; radiation efficiency and point mobilities |
Expand Down
2 changes: 1 addition & 1 deletion README_PYPI.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ tl = underwater.transmission_loss(...)
| `building` | Field airborne, impact and façade insulation with R′w/DnT,w/L′nT,w/D2m,nT,w and C/Ctr/CI (ISO 16283-1/2/3, ISO 717-1/2); laboratory R/Ln (ISO 10140) and survey method (ISO 10052); insulation by intensity (ISO 15186); flanking transmission measurement and prediction (ISO 10848, EN 12354-1/2) and façade/outdoor radiation (EN 12354-3/4); measurement uncertainty (ISO 12999-1); panel transmission theory (mass law, coincidence, double walls, slits and apertures); floor-covering improvement (ISO 16251-1); reception-plate power (EN 15657) and installed structure-borne prediction (EN 12354-5); dynamic stiffness (EN 29052-1) |
| `materials` | Absorption ratings αw with classes (ISO 11654) and uncertainty (ISO 12999-2); impedance-tube absorption, impedance and transmission loss (ISO 10534-1/2, ASTM E2611) plus a virtual FDTD tube; porous and multilayer absorber models (Delany-Bazley, Miki, JCA, TMM with MPP and membranes); slow-sound metamaterial absorbers at critical coupling; scattering and diffusion coefficients (ISO 17497-1/2); Schroeder diffuser design and far-field prediction; deep-subwavelength metadiffusers; in-situ road-surface absorption (ISO 13472-1/2); airflow resistance (ISO 9053-1/2) |
| `emission` | Sound power by enveloping surface (ISO 3744/3746), reverberation room (ISO 3741), precision anechoic rooms (ISO 3745) and intensity scanning with field indicators and grades (ISO 9614-2/3); two-microphone p-p intensity (IEC 61043, ISO 9614-1); sound power from surface vibration (ISO/TS 7849); noise-emission declarations (ISO 4871) |
| `environmental` | Rating levels, Lden/Ldn and adjustments (ISO 1996-1/2); impulsive-sound prominence (NT ACOU 112); atmospheric absorption (ISO 9613-1) and the ISO 9613-2 general method with per-term octave breakdown; spherical ground effect and wave-theoretic barriers; refraction ray tracing and the GFPE; wind-turbine apparent sound power and tonal audibility (IEC 61400-11) |
| `environment` | Sources: CNOSSOS-EU road and rail emission, wind-turbine apparent sound power and tonal audibility (IEC 61400-11). Propagation: atmospheric absorption (ISO 9613-1) and the ISO 9613-2 general method with per-term octave breakdown, spherical ground effect and wave-theoretic barriers, refraction ray tracing and the GFPE. Assessment: rating levels, Lden/Ldn and adjustments (ISO 1996-1/2), impulsive-sound prominence (NT ACOU 112) and the Spanish RD 1367/2007 |
| `aircraft` | EPNL certification chain (ICAO Annex 16) with IEC 61265 verification and SAE ARP 5534 absorption; airport noise contours (ECAC Doc 29) with the EASA ANP fleet database; rotorcraft hemisphere method (ECAC Doc 32) |
| `underwater` | Levels re 1 µPa (ISO 18405); ship radiated noise (ISO 17208-1/2); pile driving (ISO 18406); ship-traffic source levels (JOMOPANS-ECHO) and Wenz ambient noise; sonar equation and detection range; sound speed and seabed reflection; transmission loss from spreading laws and Weston's shallow-water regimes to normal-mode, ray and parabolic-equation solvers; marine-mammal audiograms and regulatory auditory weighting (NMFS 2024/2018, Southall et al. 2019) |
| `vibration` | Human vibration: weightings (ISO 8041-1), whole-body metrics and buildings (ISO 2631-1/2), multiple shocks (ISO 2631-5), hand-arm and A(8) (ISO 5349); mobility and the FRF family (ISO 7626); isolator transfer stiffness (ISO 10846); plate-junction transmission and Kij; radiation efficiency and point mobilities |
Expand Down
8 changes: 4 additions & 4 deletions docs/ERRATA.md
Original file line number Diff line number Diff line change
Expand Up @@ -1114,7 +1114,7 @@ which is the check that enforces the rule; see
printed with them.
- **Library behaviour:** implements the spelled-out reading, weighting the
onset rate by 3 and the level difference by 2 (`predicted_prominence` in
[`impulse_prominence.py`](../src/phonometry/environmental/impulse_prominence.py)),
[`impulse_prominence.py`](../src/phonometry/environment/assessment/impulse_prominence.py)),
which is also the NT ACOU 112:2002 form the PAS carries over.
- **Status:** unreported.

Expand All @@ -1136,7 +1136,7 @@ which is the check that enforces the rule; see
1 kHz being both).
- **Library behaviour:** unaffected. The library never reads Table 2: it
computes $A_\text{atm}$ from the ISO 9613-1 formula directly
([`air_absorption.py`](../src/phonometry/environmental/air_absorption.py)),
([`air_absorption.py`](../src/phonometry/environment/propagation/air_absorption.py)),
so it yields 4,15 dB/km for this condition.
- **Status:** unreported.

Expand Down Expand Up @@ -1969,7 +1969,7 @@ which is the check that enforces the rule; see
in the autonomous-community noise regulations that transpose this Annex
print `10 < Lf <= 15`.
- **Library behaviour:**
[`low_frequency_correction`](../src/phonometry/environmental/spanish_regulation.py)
[`low_frequency_correction`](../src/phonometry/environment/assessment/spain.py)
and `impulsive_correction` implement $10 < L \le 15$, with a regression
test pinning the three branches at the 10 dB and 15 dB boundaries.
- **Status:** unreported (national regulation, not a standards body).
Expand All @@ -1995,7 +1995,7 @@ which is the check that enforces the rule; see
from 125 Hz to 4 kHz", read: "each octave band i from 63 Hz to 8 kHz"'. The
same corrigendum also adds "octave bands" to the frequency range of 2.1.1.
- **Library behaviour:**
[`cnossos_road`](../src/phonometry/environmental/cnossos_road.py) works over
[`cnossos_road`](../src/phonometry/environment/sources/cnossos_road.py) works over
the corrected 63 Hz to 8 kHz grid (`ROAD_OCTAVE_BANDS`), pinned by
`test_octave_bands_are_the_corrected_range` and by the workbook cases, whose
published levels cover all eight bands.
Expand Down
19 changes: 13 additions & 6 deletions docs/api-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ contour = aircraft.noise_contour(path, powers, distances, sel, lmax, x=gx, y=gy)
| `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` | 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.environment` | Three subgroups: `sources` (CNOSSOS road and rail emission, wind-turbine apparent sound power), `propagation` (ISO 9613-1/-2, ground effect and barriers, refraction by ray tracing and the parabolic equation) and `assessment` (ISO 1996-1/-2 rating and measurement, impulsive prominence, RD 1367/2007) |
| `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 |
| `phonometry.electroacoustics` | Distortion (IEC 60268-3 / AES17), transfer function and coherence, radiating piston |
Expand All @@ -45,11 +45,18 @@ contour = aircraft.noise_contour(path, powers, distances, sel, lmax, x=gx, y=gy)

Every name in the table below is also re-exported at the top level, so
`from phonometry import <name>` works for every row. Two generations of module
paths are still importable and warn on use: the pre-3.2 flat ones (for example
`phonometry.insulation`), removed in 4.0, and the pre-4.0 ones that the split
of `metrology` moved (for example `phonometry.metrology.levels`, now
`phonometry.signals.levels`), removed in 5.0. Reading a moved name from the
namespace it left (`metrology.leq`) warns and delegates as well.
paths are still importable and warn on use. The pre-3.2 flat ones, written
without a subpackage, are removed in 4.0; the pre-4.0 ones that the taxonomy
moved are removed in 5.0. Reading a moved name from the namespace it left
warns and delegates as well.

| Deprecated path | Resolves to | Removed in |
| :--- | :--- | :--- |
| `phonometry.insulation` | `phonometry.building.insulation` | 4.0 |
| `phonometry.metrology.levels` | `phonometry.signals.levels` | 5.0 |
| `phonometry.hearing.sti` | `phonometry.speech.sti` | 5.0 |
| `phonometry.vibration.human_vibration` | `phonometry.vibration.human.exposure` | 5.0 |
| `phonometry.environmental` | `phonometry.environment` | 5.0 |

| Name | Type | Description (Inputs) | Usage Snippet (Outputs) |
| :--- | :--- | :--- | :--- |
Expand Down
2 changes: 1 addition & 1 deletion docs/atmospheric-refraction.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ The [ISO 9613-2 method](outdoor-propagation.md) and the
atmosphere. In reality the sound speed changes with height, because temperature
and wind change with height, and this **refracts** sound: rays curve, and over a
few hundred metres the received level can swing by tens of decibels. This page
covers `phonometry.environmental.atmospheric_refraction`, the
covers `phonometry.environment.propagation.refraction`, the
refracting-atmosphere counterpart of the ocean solvers in
[`phonometry.underwater.numerical_propagation`](underwater-solvers.md): a
**ray model** and a **parabolic-equation (PE)** solver, both clean-room from
Expand Down
Loading