Building insulation: formula, fiche and citation fixes against the source standards (#357)
* Correct the ISO 15186-1 Formula (8) N-term and complete the fiche's Clause 8 content
The printed Formula (8) subtracts its 10 lg(N) term, which cannot be
derived: ISO 10140-2:2010 Formula (6) adds the multi-unit correction and
ISO 15186-2:2010 Formula (12) prints the same relation without an N term.
intensity_element_normalized_difference() now returns the derivable
per-unit value (+10 lg N), warns whenever n > 1 deviates from the print,
and the defect is registered in docs/ERRATA.md.
Clause 8 completeness of the intensity fiches: the method statement now
states the test-object and measurement-surface areas S / Sm carried by
the result (Clause 8 g), and report() accepts optional per-band FpI and
pressure-residual intensity index spectra annexed as table columns
(Clause 8 i). The 6.4.2 qualification wording is corrected to 'must not
exceed 10 dB' (the clause flags FpI > 10 dB), the band-set captions now
cite ISO 717-1:2020 Clause 5.3 (statement of results) instead of 4.4,
and the Table B.1 Kc oracle gains the three printed rows 3150/4000/5000
Hz (0,1 dB each) so all 21 rows are pinned.
* Label the road-traffic facade fiche R'tr,s instead of R'45
FacadeInsulationResult now carries the measurement method
(loudspeaker or road_traffic), and the ISO 16283-3 r_prime fiche
selects its labels from it: the road-traffic apparent index is the
distinct quantity R'tr,s (Clause 3.13, -3 dB all-angle correction),
so its report no longer prints the R'45 loudspeaker basis line
(Clause 3.12) over road-traffic numbers.
* Make the ISO 10848 fiche part selectable and register the Formula (20) misprint
The Dn,f / Ln,f quantities are defined in the ISO 10848-1:2006 frame
document (Formulas (4)/(5)); which part governs a measurement depends on
the construction under test, so hardcoding 'ISO 10848-2:2006' in the
basis line mislabelled Part 3 and Part 4 measurements. report() now
accepts part=2/3/4 (default 2) and names ISO 10848-2:2006,
ISO 10848-3:2006 or ISO 10848-4:2010 accordingly, in both languages.
ISO 10848-1:2006 Clause 8.1.1 Formula (20) prints the thin-plate
critical frequency with a spurious extra pi in the denominator (the 1,8
constant already carries 2 pi / sqrt(12)); the implementation was
already pi-free, and the defect is now registered in docs/ERRATA.md
with a misprint note in the critical_frequency docstring, corroborated
by ISO 12354-1:2017 and Hopkins Eq. 2.201.
* Normalize the K24 mass-ratio convention and correct the K24 errata entry
EN 12354-1:2000 prints its two K24 lines in two different mass-ratio
conventions without saying so: the E.5 line follows the annex's own
per-path definition M = lg(m'perp,i/m'i), while the Figure E.9 (E.7)
line is stated in the figure-axis variable lg(m2/m1). Read with the
declared per-path M, the E.9 print contradicts its own curve;
ISO 12354-1:2017 E.3.5 prints the same relation consistently in the
per-path convention (+14,1 M). Re-deriving both editions against the
figures shows the earlier errata entry misread this recast as a 2017
sign misprint; the entry is rewritten accordingly.
junction_vibration_reduction() now applies the documented per-path
mass_ratio = m'perp,i/m'i to every branch: the E.7 double-leaf branch
takes leaf-over-homogeneous ratios (validity m2/m1 > 3 reads
mass_ratio < 1/3) and evaluates 3,0 + 14,1 M + 5,7 M^2, numerically
identical to the 2000 figure. Also cites Kij,min as Formula (29)
(Clause 4.4.2) and documents the ISO 12354-1:2017 both-negative
lining-combination rule next to the 2000 form combine_linings()
implements.
* Broadcast a single-number source level across the EN 12354-5 path bands
installed_source_prediction() derived its band count from the source
levels alone, so a single-number characteristic power with per-band
path data either raised a spurious band-count error or produced a
one-element installed_power_level that crashed the fiche table with an
IndexError. The band count is now the widest per-band input, every
per-band input is validated against it (one value broadcasts), and the
result's installed_power_level is broadcast to the band axis; a fiche
regression test covers the scalar-source case.
Also corrects the coupling-term docstrings: D_C is not guaranteed
non-negative, since near a mounting resonance with comparable,
opposite-phase source and receiver mobilities the |Ys + Yi|^2 numerator
collapses (counterexample in the docstring).
* Use a prediction-aware footer disclaimer on the EN 12354 fiches
The shared footer printed 'The results relate only to the tested
specimen.' on every fiche, including prediction sheets that have no
tested specimen. footer_flow() now takes predicted=True (also exposed
through the shared sound-power renderer) and prints 'Predicted result:
the values relate only to the modelled configuration, not to a tested
specimen.' instead; the EN 12354-1/-2/-3 and EN 12354-5 prediction
fiches use it, in both languages.
Also corrects the dated designations on the prediction basis lines:
the 2000 editions are EN 12354-1/-2/-3:2000 (there was no ISO 12354 in
2000), so 'EN/ISO 12354-x:2000' is replaced by 'EN 12354-x:2000'.
* Declare the actual band set on the ISO 10052 basis line and align ES impact terms
The survey fiches accept both the octave and the one-third-octave band
sets, but their standard-basis lines hardcoded '(survey method, octave
bands)'; the line now follows the band set the reported curve actually
carries, in both languages (ISO 717-1:2020 Clause 5.3 / ISO 717-2:2020
Clause 4.4 require stating it). The remaining comments citing the
band-set statement as ISO 717-1 Clause 4.4 now cite 5.3 (717-2 keeps
4.4), and the ISO 10140 fiche docstring cites the test-report clause as
Clause 9 (Clause 6 is the test arrangement).
Spanish terminology of the field impact quantities is aligned with the
UNE editions: UNE-EN ISO 16283-2:2016 defines 'nivel de presión
acústica estandarizado/normalizado de ruido de impactos' (3.13/3.14),
now used by the ISO 16283-2 and ISO 10052 basis lines; the ISO 10140-3
and ISO 12354-2 strings already match their own UNE editions
(UNE-EN ISO 10140-3:2011 3.2, UNE-EN ISO 12354-2:2018 3.1.1/3.1.2) and
stay unchanged.
* Qualify a background-limited ISO 16251-1 result as a lower bound
When any band sits at the 1,3 dB limit of measurement (Formula (2), the
per-band values already reported as > delta-L), the fiche now prints
the boxed delta-Lw with a >= qualifier and a note stating it is a lower
bound, in both languages. A manually built result without CI,delta
prints the bare delta-Lw instead of fabricating a (+0) adaptation term.
The ISO 717-2:2020 Annex C.2 errata entry is extended with the second,
independent print defect: the example's 'Ln,sum = 75,2527 = 75 dB'
reproduces to all printed digits only as the energy sum of the wrong
column over the wrong range (the measured floor with covering, 16 bands
100-3150 Hz), while the A.2.1 sum of the covered reference floor over
100-2500 Hz rounds to 76 dB with either 800 Hz value, so CI,r = -2,
CI,delta = -9 and delta-Llin = 6 dB; the earlier claim that the 800 Hz
misprint alone shifted the CI chain is corrected.
* Regenerate the conformance report, API docs and affected fiche examples
The Kc Table B.1 conformance row now covers all 21 printed rows, the
building API pages pick up the revised docstrings, and the EN 12354
prediction and ISO 15186-1 example fiches are re-rendered with the
prediction footer, the corrected designations and the Clause 8 areas
statement (kept to one page). CHANGELOG entries under [Unreleased].
* Validate the frequency axis and the facade method on the building results
The installed structure-borne prediction now rejects a frequency axis whose
length differs from the resolved band count, so a result can no longer carry
an inconsistent per-band table. FacadeInsulationResult validates its method
on construction, closing the direct-construction path that would render an
unknown method as the loudspeaker quantity. The band-count note also names
the characteristic level and coupling term as width-setting inputs.
Building insulation: formula, fiche and citation fixes against the source standards (#357)
* Correct the ISO 15186-1 Formula (8) N-term and complete the fiche's Clause 8 content
The printed Formula (8) subtracts its 10 lg(N) term, which cannot be
derived: ISO 10140-2:2010 Formula (6) adds the multi-unit correction and
ISO 15186-2:2010 Formula (12) prints the same relation without an N term.
intensity_element_normalized_difference() now returns the derivable
per-unit value (+10 lg N), warns whenever n > 1 deviates from the print,
and the defect is registered in docs/ERRATA.md.
Clause 8 completeness of the intensity fiches: the method statement now
states the test-object and measurement-surface areas S / Sm carried by
the result (Clause 8 g), and report() accepts optional per-band FpI and
pressure-residual intensity index spectra annexed as table columns
(Clause 8 i). The 6.4.2 qualification wording is corrected to 'must not
exceed 10 dB' (the clause flags FpI > 10 dB), the band-set captions now
cite ISO 717-1:2020 Clause 5.3 (statement of results) instead of 4.4,
and the Table B.1 Kc oracle gains the three printed rows 3150/4000/5000
Hz (0,1 dB each) so all 21 rows are pinned.
* Label the road-traffic facade fiche R'tr,s instead of R'45
FacadeInsulationResult now carries the measurement method
(loudspeaker or road_traffic), and the ISO 16283-3 r_prime fiche
selects its labels from it: the road-traffic apparent index is the
distinct quantity R'tr,s (Clause 3.13, -3 dB all-angle correction),
so its report no longer prints the R'45 loudspeaker basis line
(Clause 3.12) over road-traffic numbers.
* Make the ISO 10848 fiche part selectable and register the Formula (20) misprint
The Dn,f / Ln,f quantities are defined in the ISO 10848-1:2006 frame
document (Formulas (4)/(5)); which part governs a measurement depends on
the construction under test, so hardcoding 'ISO 10848-2:2006' in the
basis line mislabelled Part 3 and Part 4 measurements. report() now
accepts part=2/3/4 (default 2) and names ISO 10848-2:2006,
ISO 10848-3:2006 or ISO 10848-4:2010 accordingly, in both languages.
ISO 10848-1:2006 Clause 8.1.1 Formula (20) prints the thin-plate
critical frequency with a spurious extra pi in the denominator (the 1,8
constant already carries 2 pi / sqrt(12)); the implementation was
already pi-free, and the defect is now registered in docs/ERRATA.md
with a misprint note in the critical_frequency docstring, corroborated
by ISO 12354-1:2017 and Hopkins Eq. 2.201.
* Normalize the K24 mass-ratio convention and correct the K24 errata entry
EN 12354-1:2000 prints its two K24 lines in two different mass-ratio
conventions without saying so: the E.5 line follows the annex's own
per-path definition M = lg(m'perp,i/m'i), while the Figure E.9 (E.7)
line is stated in the figure-axis variable lg(m2/m1). Read with the
declared per-path M, the E.9 print contradicts its own curve;
ISO 12354-1:2017 E.3.5 prints the same relation consistently in the
per-path convention (+14,1 M). Re-deriving both editions against the
figures shows the earlier errata entry misread this recast as a 2017
sign misprint; the entry is rewritten accordingly.
junction_vibration_reduction() now applies the documented per-path
mass_ratio = m'perp,i/m'i to every branch: the E.7 double-leaf branch
takes leaf-over-homogeneous ratios (validity m2/m1 > 3 reads
mass_ratio < 1/3) and evaluates 3,0 + 14,1 M + 5,7 M^2, numerically
identical to the 2000 figure. Also cites Kij,min as Formula (29)
(Clause 4.4.2) and documents the ISO 12354-1:2017 both-negative
lining-combination rule next to the 2000 form combine_linings()
implements.
* Broadcast a single-number source level across the EN 12354-5 path bands
installed_source_prediction() derived its band count from the source
levels alone, so a single-number characteristic power with per-band
path data either raised a spurious band-count error or produced a
one-element installed_power_level that crashed the fiche table with an
IndexError. The band count is now the widest per-band input, every
per-band input is validated against it (one value broadcasts), and the
result's installed_power_level is broadcast to the band axis; a fiche
regression test covers the scalar-source case.
Also corrects the coupling-term docstrings: D_C is not guaranteed
non-negative, since near a mounting resonance with comparable,
opposite-phase source and receiver mobilities the |Ys + Yi|^2 numerator
collapses (counterexample in the docstring).
* Use a prediction-aware footer disclaimer on the EN 12354 fiches
The shared footer printed 'The results relate only to the tested
specimen.' on every fiche, including prediction sheets that have no
tested specimen. footer_flow() now takes predicted=True (also exposed
through the shared sound-power renderer) and prints 'Predicted result:
the values relate only to the modelled configuration, not to a tested
specimen.' instead; the EN 12354-1/-2/-3 and EN 12354-5 prediction
fiches use it, in both languages.
Also corrects the dated designations on the prediction basis lines:
the 2000 editions are EN 12354-1/-2/-3:2000 (there was no ISO 12354 in
2000), so 'EN/ISO 12354-x:2000' is replaced by 'EN 12354-x:2000'.
* Declare the actual band set on the ISO 10052 basis line and align ES impact terms
The survey fiches accept both the octave and the one-third-octave band
sets, but their standard-basis lines hardcoded '(survey method, octave
bands)'; the line now follows the band set the reported curve actually
carries, in both languages (ISO 717-1:2020 Clause 5.3 / ISO 717-2:2020
Clause 4.4 require stating it). The remaining comments citing the
band-set statement as ISO 717-1 Clause 4.4 now cite 5.3 (717-2 keeps
4.4), and the ISO 10140 fiche docstring cites the test-report clause as
Clause 9 (Clause 6 is the test arrangement).
Spanish terminology of the field impact quantities is aligned with the
UNE editions: UNE-EN ISO 16283-2:2016 defines 'nivel de presión
acústica estandarizado/normalizado de ruido de impactos' (3.13/3.14),
now used by the ISO 16283-2 and ISO 10052 basis lines; the ISO 10140-3
and ISO 12354-2 strings already match their own UNE editions
(UNE-EN ISO 10140-3:2011 3.2, UNE-EN ISO 12354-2:2018 3.1.1/3.1.2) and
stay unchanged.
* Qualify a background-limited ISO 16251-1 result as a lower bound
When any band sits at the 1,3 dB limit of measurement (Formula (2), the
per-band values already reported as > delta-L), the fiche now prints
the boxed delta-Lw with a >= qualifier and a note stating it is a lower
bound, in both languages. A manually built result without CI,delta
prints the bare delta-Lw instead of fabricating a (+0) adaptation term.
The ISO 717-2:2020 Annex C.2 errata entry is extended with the second,
independent print defect: the example's 'Ln,sum = 75,2527 = 75 dB'
reproduces to all printed digits only as the energy sum of the wrong
column over the wrong range (the measured floor with covering, 16 bands
100-3150 Hz), while the A.2.1 sum of the covered reference floor over
100-2500 Hz rounds to 76 dB with either 800 Hz value, so CI,r = -2,
CI,delta = -9 and delta-Llin = 6 dB; the earlier claim that the 800 Hz
misprint alone shifted the CI chain is corrected.
* Regenerate the conformance report, API docs and affected fiche examples
The Kc Table B.1 conformance row now covers all 21 printed rows, the
building API pages pick up the revised docstrings, and the EN 12354
prediction and ISO 15186-1 example fiches are re-rendered with the
prediction footer, the corrected designations and the Clause 8 areas
statement (kept to one page). CHANGELOG entries under [Unreleased].
* Validate the frequency axis and the facade method on the building results
The installed structure-borne prediction now rejects a frequency axis whose
length differs from the resolved band count, so a result can no longer carry
an inconsistent per-band table. FacadeInsulationResult validates its method
on construction, closing the direct-construction path that would render an
unknown method as the loudspeaker quantity. The band-count note also names
the characteristic level and coupling term as width-setting inputs.
Building and structure-borne guides: result figures, plot mentions and mirror sync (#360)
* Add .plot() to the ISO 717 enlarged-range rating results
ExtendedWeightedRatingResult and ExtendedImpactRatingResult now carry the
full enlarged-range band curve (band_centers, measured) and expose a
.plot() that draws the measured curve over the whole range against the
shifted ISO 717 reference on the 16 core bands, with the unfavourable
deviations shaded, the enlarged-range bands marked and every covered
Annex B / A.2.1 adaptation term in the title. EN/ES labels follow the
existing renderer conventions.
* Field insulation guide: enlarged-range, field-chain, facade and survey-impact figures
Four new deterministic figures (extended_insulation_rating,
field_airborne_insulation, facade_field_insulation,
survey_impact_insulation) generated in the four language/theme variants,
embedded next to their snippets in the EN guide, the ES mirror and the
docs mirror with the dual usage/hand-written code blocks. One-line
.plot() mentions added for the extended rating, the field airborne
result, the survey impact result and the ISO 12999-1 band uncertainty.
The docs mirror gains the previously missing ISO 10052 survey-reports
section, and the survey snippet now defines the li and l1_2m inputs it
uses. Multi-line figure info boxes are translated as whole artists, and
the review fixes (headroom, legend placement, proper unit and Greek
glyphs) are applied to the new generators.
* Laboratory insulation guide: ISO 10140, ISO 15186-1 element and ISO 10848 Dn,f figures
Embed the new lab_insulation_result, intensity_element_insulation and
flanking_level_difference figures next to their snippets in the EN guide,
the ES mirror and the docs mirror, each with the dual usage/hand-written
code blocks. Add the one-line .plot() mentions for the laboratory
airborne result, the element-normalized intensity result and the
floor-covering improvement result, and a note on when Dn,f plots (the
inline example uses 9 bands, below the 16/5-band rating threshold).
* EN 12354 prediction guide: impact-term and radiated-power figures
Embed the new impact_prediction_terms and radiated_power_outdoor figures
next to their snippets in the EN guide, the ES mirror and the docs
mirror, with the dual usage/hand-written code blocks, and add the
one-line .plot() mentions for the airborne prediction, the impact
prediction, the facade prediction and the radiated-power result.
* Panel insulation guide: rated Sharp prediction figure and plot mentions
Embed the new single_panel_rating figure (the 6 mm glass Sharp prediction
rated per ISO 717-1, coincidence dip marked) in the EN guide, the ES
mirror and the docs mirror with the dual code blocks, and add the
one-line .plot() mentions for the single-panel, double-wall and
radiation-efficiency results next to the existing concept figure.
* Junction transmission guide: Kij design chart, EN 12354 worked example and see-also
Add the junction_kij_thickness figure (wave-approach Kij versus the plate
thickness ratio for the X, T and L junctions, identical-plates value
marked) next to the coupling-loss-factor section, a res.plot() mention
in its snippet, a worked example that feeds the predicted K12 = 9.8 dB
of the 100/200 mm concrete X-junction into the EN 12354-1 flanking model
(R'w = 55.4 dB, direct path dominant), and a See-also section linking
the prediction, laboratory, structure-borne power and mobility guides.
EN guide, ES mirror and docs mirror in sync.
* Junction transmission docs mirror: sync the Kij chart, worked example and see-also
* Structure-borne power and installed-source guides: plot mentions, Hopkins citation and see-also
Add the one-line .plot() mentions for the reception-plate power result
(EN 15657) and the installed-source prediction (EN 12354-5) next to their
existing figures, add the one-line .plot() usage to both figures' code
blocks, cite Hopkins (2007) Section 2.8 for the point-excited-plate power
input behind the clause 4.4.3 coupling term with a prose paragraph
connecting the mobility chain, and give the EN 12354-5 page a proper
See-also linking the EN 15657, ISO 7626, junction and EN 12354 guides.
EN guides, ES mirrors and docs mirrors in sync.
* Vibration FRF guides: plot mentions and transfer-stiffness docs sync
Add the one-line .plot() usage and mentions for the ISO/TS 7849
sound-power-from-vibration result, the EN 29052-1 dynamic-stiffness
result and the ISO 10846 indirect transfer-stiffness result next to
their existing figures (EN guides, ES mirrors and docs mirrors), and
port the previously missing ISO 10846 test-report fiche section to the
transfer-stiffness docs mirror.
* Mechanical mobility guide: driving-point reading figure
Embed the new mobility_result_lines figure (|Y(f)| of the SDOF bundle
with the stiffness line, the mass line and the 1/c damping peak) next to
the MobilityResult snippet in the EN guide, the ES mirror and the docs
mirror, with the dual usage/hand-written code blocks and the one-line
res.plot() mention.
* Human vibration and multiple-shock guides: one-line plot mentions
Add the res.plot() one-liners next to the existing figures for the
ISO 8041-1 weighting response, the ISO 2631-1 weighted band spectrum, the
Directive 2002/44/EC daily exposure A(8) and the ISO 2631-5 multiple-shock
assessment, in the EN guides, the ES mirrors and the docs mirrors.
* Docs mirrors: restore missing report-fiche and concept sections
Sync the docs mirrors of the pages touched by this wave with their site
guides: the ISO 16283-3 facade report subsection on the field insulation
page, the EN 29052-1 and ISO 7626 fiche example snippets, and the panel
concept-figure code block.
* Changelog, API docs and llms regeneration; lint and typing fixes for the figure generators
* Fix nested emphasis in the survey-impact figure captions
* Restore the numerical-propagation rasters truncated by a mid-regeneration snapshot
* Reconcile the figure-script additions with the rooms and materials wave
* docs: regenerate the llms bundle after the figure-script reconciliation
Building insulation: formula, fiche and citation fixes against the source standards (#357)
* Correct the ISO 15186-1 Formula (8) N-term and complete the fiche's Clause 8 content
The printed Formula (8) subtracts its 10 lg(N) term, which cannot be
derived: ISO 10140-2:2010 Formula (6) adds the multi-unit correction and
ISO 15186-2:2010 Formula (12) prints the same relation without an N term.
intensity_element_normalized_difference() now returns the derivable
per-unit value (+10 lg N), warns whenever n > 1 deviates from the print,
and the defect is registered in docs/ERRATA.md.
Clause 8 completeness of the intensity fiches: the method statement now
states the test-object and measurement-surface areas S / Sm carried by
the result (Clause 8 g), and report() accepts optional per-band FpI and
pressure-residual intensity index spectra annexed as table columns
(Clause 8 i). The 6.4.2 qualification wording is corrected to 'must not
exceed 10 dB' (the clause flags FpI > 10 dB), the band-set captions now
cite ISO 717-1:2020 Clause 5.3 (statement of results) instead of 4.4,
and the Table B.1 Kc oracle gains the three printed rows 3150/4000/5000
Hz (0,1 dB each) so all 21 rows are pinned.
* Label the road-traffic facade fiche R'tr,s instead of R'45
FacadeInsulationResult now carries the measurement method
(loudspeaker or road_traffic), and the ISO 16283-3 r_prime fiche
selects its labels from it: the road-traffic apparent index is the
distinct quantity R'tr,s (Clause 3.13, -3 dB all-angle correction),
so its report no longer prints the R'45 loudspeaker basis line
(Clause 3.12) over road-traffic numbers.
* Make the ISO 10848 fiche part selectable and register the Formula (20) misprint
The Dn,f / Ln,f quantities are defined in the ISO 10848-1:2006 frame
document (Formulas (4)/(5)); which part governs a measurement depends on
the construction under test, so hardcoding 'ISO 10848-2:2006' in the
basis line mislabelled Part 3 and Part 4 measurements. report() now
accepts part=2/3/4 (default 2) and names ISO 10848-2:2006,
ISO 10848-3:2006 or ISO 10848-4:2010 accordingly, in both languages.
ISO 10848-1:2006 Clause 8.1.1 Formula (20) prints the thin-plate
critical frequency with a spurious extra pi in the denominator (the 1,8
constant already carries 2 pi / sqrt(12)); the implementation was
already pi-free, and the defect is now registered in docs/ERRATA.md
with a misprint note in the critical_frequency docstring, corroborated
by ISO 12354-1:2017 and Hopkins Eq. 2.201.
* Normalize the K24 mass-ratio convention and correct the K24 errata entry
EN 12354-1:2000 prints its two K24 lines in two different mass-ratio
conventions without saying so: the E.5 line follows the annex's own
per-path definition M = lg(m'perp,i/m'i), while the Figure E.9 (E.7)
line is stated in the figure-axis variable lg(m2/m1). Read with the
declared per-path M, the E.9 print contradicts its own curve;
ISO 12354-1:2017 E.3.5 prints the same relation consistently in the
per-path convention (+14,1 M). Re-deriving both editions against the
figures shows the earlier errata entry misread this recast as a 2017
sign misprint; the entry is rewritten accordingly.
junction_vibration_reduction() now applies the documented per-path
mass_ratio = m'perp,i/m'i to every branch: the E.7 double-leaf branch
takes leaf-over-homogeneous ratios (validity m2/m1 > 3 reads
mass_ratio < 1/3) and evaluates 3,0 + 14,1 M + 5,7 M^2, numerically
identical to the 2000 figure. Also cites Kij,min as Formula (29)
(Clause 4.4.2) and documents the ISO 12354-1:2017 both-negative
lining-combination rule next to the 2000 form combine_linings()
implements.
* Broadcast a single-number source level across the EN 12354-5 path bands
installed_source_prediction() derived its band count from the source
levels alone, so a single-number characteristic power with per-band
path data either raised a spurious band-count error or produced a
one-element installed_power_level that crashed the fiche table with an
IndexError. The band count is now the widest per-band input, every
per-band input is validated against it (one value broadcasts), and the
result's installed_power_level is broadcast to the band axis; a fiche
regression test covers the scalar-source case.
Also corrects the coupling-term docstrings: D_C is not guaranteed
non-negative, since near a mounting resonance with comparable,
opposite-phase source and receiver mobilities the |Ys + Yi|^2 numerator
collapses (counterexample in the docstring).
* Use a prediction-aware footer disclaimer on the EN 12354 fiches
The shared footer printed 'The results relate only to the tested
specimen.' on every fiche, including prediction sheets that have no
tested specimen. footer_flow() now takes predicted=True (also exposed
through the shared sound-power renderer) and prints 'Predicted result:
the values relate only to the modelled configuration, not to a tested
specimen.' instead; the EN 12354-1/-2/-3 and EN 12354-5 prediction
fiches use it, in both languages.
Also corrects the dated designations on the prediction basis lines:
the 2000 editions are EN 12354-1/-2/-3:2000 (there was no ISO 12354 in
2000), so 'EN/ISO 12354-x:2000' is replaced by 'EN 12354-x:2000'.
* Declare the actual band set on the ISO 10052 basis line and align ES impact terms
The survey fiches accept both the octave and the one-third-octave band
sets, but their standard-basis lines hardcoded '(survey method, octave
bands)'; the line now follows the band set the reported curve actually
carries, in both languages (ISO 717-1:2020 Clause 5.3 / ISO 717-2:2020
Clause 4.4 require stating it). The remaining comments citing the
band-set statement as ISO 717-1 Clause 4.4 now cite 5.3 (717-2 keeps
4.4), and the ISO 10140 fiche docstring cites the test-report clause as
Clause 9 (Clause 6 is the test arrangement).
Spanish terminology of the field impact quantities is aligned with the
UNE editions: UNE-EN ISO 16283-2:2016 defines 'nivel de presión
acústica estandarizado/normalizado de ruido de impactos' (3.13/3.14),
now used by the ISO 16283-2 and ISO 10052 basis lines; the ISO 10140-3
and ISO 12354-2 strings already match their own UNE editions
(UNE-EN ISO 10140-3:2011 3.2, UNE-EN ISO 12354-2:2018 3.1.1/3.1.2) and
stay unchanged.
* Qualify a background-limited ISO 16251-1 result as a lower bound
When any band sits at the 1,3 dB limit of measurement (Formula (2), the
per-band values already reported as > delta-L), the fiche now prints
the boxed delta-Lw with a >= qualifier and a note stating it is a lower
bound, in both languages. A manually built result without CI,delta
prints the bare delta-Lw instead of fabricating a (+0) adaptation term.
The ISO 717-2:2020 Annex C.2 errata entry is extended with the second,
independent print defect: the example's 'Ln,sum = 75,2527 = 75 dB'
reproduces to all printed digits only as the energy sum of the wrong
column over the wrong range (the measured floor with covering, 16 bands
100-3150 Hz), while the A.2.1 sum of the covered reference floor over
100-2500 Hz rounds to 76 dB with either 800 Hz value, so CI,r = -2,
CI,delta = -9 and delta-Llin = 6 dB; the earlier claim that the 800 Hz
misprint alone shifted the CI chain is corrected.
* Regenerate the conformance report, API docs and affected fiche examples
The Kc Table B.1 conformance row now covers all 21 printed rows, the
building API pages pick up the revised docstrings, and the EN 12354
prediction and ISO 15186-1 example fiches are re-rendered with the
prediction footer, the corrected designations and the Clause 8 areas
statement (kept to one page). CHANGELOG entries under [Unreleased].
* Validate the frequency axis and the facade method on the building results
The installed structure-borne prediction now rejects a frequency axis whose
length differs from the resolved band count, so a result can no longer carry
an inconsistent per-band table. FacadeInsulationResult validates its method
on construction, closing the direct-construction path that would render an
unknown method as the loudspeaker quantity. The band-count note also names
the characteristic level and coupling term as width-setting inputs.