Skip to content

[FEATURE] add impact sound insulation (ISO 717-2) to pytta.iso717 - #84

Open
aguirreSL wants to merge 2 commits into
PyTTaMaster:developmentfrom
aguirreSL:dev-iso717_2
Open

aguirreSL wants to merge 2 commits into
PyTTaMaster:developmentfrom
aguirreSL:dev-iso717_2

Conversation

@aguirreSL

Copy link
Copy Markdown

Builds on #65, so until #65 is merged this pull request also shows its commit.

Adds the rating of impact sound insulation of ISO 717-2 to pytta.iso717, next to the airborne rating of ISO 717-1 from #65:

pytta.iso717.impact(Ln) takes Ln, L'n or L'nT by band and returns (Lnw, CI) for 16 one-third octave bands from 100 Hz to 3150 Hz or 5 octave bands from 125 Hz to 2000 Hz, and (Lnw, CI, CI_50_2500) for 19 one-third octave bands from 50 Hz. The reference curve is shifted in steps of 1 dB until the sum of the unfavourable deviations, Ln above the curve, is as large as possible but not more than 32.0 dB in thirds or 10.0 dB in octaves. Ln,w is the value of the curve at 500 Hz, less 5 dB in octaves, and CI = Ln,sum - 15 - Ln,w, with Ln,sum the energetic sum from 100 Hz (125 Hz in octaves) to 2500 Hz. The shifting loop of airborne moved to a helper used by both, and the tests of #65 still pass.

The text of ISO 717-2 was not available. The rules and the reference values follow Crocker (ed.), Handbook of Noise and Vibration Control (2007), chapter 106, Table 13 and Figure 4, and Bies et al., Engineering Noise Control (2017), p. 404. The octave reference values, 67, 67, 65, 62 and 49 dB, are worth checking against Table 4 of the standard in review.

The tests in tests/test_iso717_2.py:

  1. The two floors of Table 13 of Crocker give the ratings of the table, 77 (-11) dB and 40 dB, with 29.4 dB and 29.2 dB of unfavourable deviation. For the covered floor the table prints CI = -3 dB, while its own Ln,sum of 57.9 dB gives +2.9 dB and its floor covering term needs +3 dB, so the test expects +3 dB.
  2. Ln 5 dB above the octave reference curve gives Ln,w = 63 dB with exactly 10.0 dB of deviation, which pins the inclusive limit and the 5 dB of the octave rating.
  3. The same two floors, summed to octave bands, rate within 1 dB of their rating in thirds (77 and 41 dB against 77 and 40 dB), as Crocker states for the octave curve. This pins the octave curve, 2 kHz included.
  4. A flat 59.6 dB over 19 bands gives (66, -10, -9), and that CI would be -9 if the 3150 Hz band were summed.
  5. Other numbers of bands are rejected.

Checked with Python 3.12, numpy 1.26 and scipy 1.17. The 7 failures of development (3 in test_h5io.py, 4 in test_pyttasave.py) are the same with and without this change.

Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com

aguirreSL and others added 2 commits October 31, 2026 20:37
pytta.iso717.airborne(R) gives Rw (or R'w, Dn,w, DnT,w) and the
spectrum adaptation terms C and Ctr of ISO 717-1:2013 from 16
one-third-octave bands (100 Hz to 3150 Hz) or 5 octave bands (125 Hz to
2000 Hz), with the reference values and spectra of its Tables 3 and 4.
R is rounded to 0.1 dB halves up, and the values are kept in tenths of a
decibel as integers, so the limit of 32.0 dB or 10.0 dB is compared
exactly.

Tests pin the example of Annex C, Rw(C;Ctr) = 30 (-2; -3) dB, the
inclusive limit in octave bands, and the rounding of inputs ending in 5.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
pytta.iso717.impact(Ln) gives Ln,w (or L'n,w, L'nT,w) and the spectrum
adaptation term CI of ISO 717-2 from 16 one-third-octave bands (100 Hz to
3150 Hz) or 5 octave bands (125 Hz to 2000 Hz). With 19 thirds from 50 Hz
it also gives CI,50-2500. The reference curve is shifted in 1 dB steps
until the unfavourable deviations (Ln above the curve) sum to at most
32.0 dB or 10.0 dB; Ln,w is read at 500 Hz, 5 dB less in octaves, and
CI = Ln,sum - 15 - Ln,w with Ln,sum summed up to 2500 Hz.

The shift search of airborne() moves to a helper shared by both ratings.
The ISO 717-2 text was not available; the reference values and the worked
example of the tests come from Crocker, Handbook of Noise and Vibration
Control (2007), chapter 106, Table 13 and Figure 4. That table prints
CI = -3 dB for the covered floor where its own Ln,sum gives +2.9 dB.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant