Repository navigation
Determine the sound power of a whole multisource industrial plant from a contour round it, by ISO 8297 - #911
Conversation
There was a problem hiding this comment.
Sorry @jmrplens, your pull request is larger than the review limit of 150,000 diff characters
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 59 minutes. View limit detailsLimit details: You’ve used all 2 included reviews currently available. Review configuration: ⚙️ Run configurationConfiguration used: Repository: jmrplens/phonometry/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (27)
📒 Files selected for processing (58)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## standards/iec-61094-5-8-comparison-calibration #911 +/- ##
==================================================================================
- Coverage 96.81% 96.81% -0.01%
==================================================================================
Files 430 432 +2
Lines 81613 82535 +922
==================================================================================
+ Hits 79017 79904 +887
- Misses 2596 2631 +35 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Numerical conformance1793/1793 checks pass across 109 domains and 519 standards (223 normative designations, 123 further published sources). Used in the tables below is how much of that clause's published tolerance the deviation consumes: 100 % sits exactly on the limit, 5 % uses a twentieth of the allowance, and a dash means the clause states no two-sided tolerance for the quantity, so there is no budget to spend. It is reported and never used to decide a verdict, which is settled at full precision before any rounding. New checks (349)
Removed checks (3)
Closest to their published limit (top 5) The rows with the least room left, so the ones a change is most likely to push over.
|
ba2d588 to
d4d6669
Compare
d4d6669 to
6277e2c
Compare
6277e2c to
89daed8
Compare
…m a contour round it, by ISO 8297 A quarry, a crushing plant or a petrochemical complex is too large for an enveloping surface and too full of sources to measure one at a time, so ISO 8297:1994 measures the plant as one source for the prediction of the levels at its neighbours. The new emission.sound_power_plant module lays the positions on a contour drawn as a polygon round the plant, with the distances, aspect angles, microphone directions and heights of clause 9, and runs the nine steps of clause 10 to the octave-band and A-weighted sound power with the uncertainty of Table 1. The air absorption is Table 3 as printed, or the ISO 3891 Annex A coefficient for the weather of the measurement. check_plant_measurement gives one verdict on the requirements of clauses 1.2, 6 b), 7.1, 9.1, 9.3, 9.5.1, 9.5.3 and 10.2, keeping apart those the standard lets go unmet if reported, and partial_plant_contributions puts together the parts of an industrial area measured on their own contours. Every result has a plot, a new guide in English and Spanish measures a crushing plant whose sources are known and lands within half a decibel of their power, and four misprints of the standard are in the errata.
89daed8 to
0e56312
Compare
|



A quarry, a crushing plant or a petrochemical complex is too large for the enveloping surface of ISO 3744 and too full of sources to measure one at a time. ISO 8297:1994 measures the plant as one source, for the prediction of the levels at its neighbours. This adds that engineering method as
phonometry.emission.sound_power_plant, stacked on the ECAC Doc 29 Appendix D branch, whose SAE ARP 866A transcription of ISO 3891 it reuses rather than copies.The contour (clause 9).
plant_measurement_contourtakes the plant area and the measurement contour as two polygons in metres, checks that they are simple and that the contour encloses the plant without touching it, and lays equidistant positions along it. With noposition_countit picks the fewest that meet 9.1.1 c); your own layout and the positions a river or a building made you leave out go in asposition_countandomitted_positions. The result gives the distances to the perimeter and their mean, the microphone direction of 9.4, the aspect angle at each position, the largest aspect angle anywhere on the contour (exact along every edge outside the convex hull of the plant, found in closed form), Sp, Sm, l, Dm, the prescribed microphone height of 9.3, the window of 9.1.1 a), the largest plant dimension and the receiver distance of 0.2 a).plant_characteristic_height_mgives H of 9.2 c) with NOTE 7.The sound power (clause 10).
plant_sound_power, orcontour.sound_power, runs the nine steps: the background correction of Table 2, the energy average, the cap of 10.2 and 10.3 with aSoundPowerWarningand a record of which levels were replaced, the area, proximity, microphone and air absorption terms, L_W per octave band and L_WA with the Annex E corrections of ISO 3744. Every step is derived on request from the readings the result keeps, and the result carries the uncertainty of Table 1. The air absorption is Table 3 as printed, or, given a temperature and a humidity, the ISO 3891 Annex A coefficient at the one-third-octave band centred on each octave.Table 3 and the weather. Table 3 says it is taken from ISO 3891 at 15 °C and 70 %, but it departs from that coefficient at 125 Hz, 4 kHz and 8 kHz, where ISO 3891 Table 9 itself prints other values, and no single weather reproduces every row. The table is used as printed and the difference is stated, not corrected. The consequence is written where the choice is made: passing 15 °C and 70 % gives about 0.0074 sqrt(Sm) dB more at 8 kHz than passing no weather, 1.4 dB for the plant of the guide, so the weather is for a measurement whose weather differs markedly, which is when Table 3 asks for it.
The verdict.
check_plant_measurementreturns onePlantMeasurementCheckon clauses 1.2, 6 b), 7.1, 9.1, 9.3, 9.5.1, 9.5.3 and 10.2, withpasses,failures,deviations, onePlantRequirementrow per requirement and a truth value that raises. Four rows are advisory, listed indeviationswithout decidingpasses, because the standard lets them go unmet provided the report says so: the microphone height of 9.3, held as a height to stand at to within the 5 % to which 9.2 reads H and Sm, so a microphone too high is reported as well as one too low; the preferred background margin of 10 dB; a level more than 5 dB above the average; and the "approximately 320 m" of 1.2. Givenleq_range_db, the check holds an integrated reading to the 0.5 dB either way of 9.5.3.plant_steady_reading_dbreads a sound level meter by 9.5.2.Parts of an area (0.2 b).
partial_plant_contributionsputs together parts measured on their own contours, band by band and A-weighted, with each part's share of the total. Sources raised above the plant stay out of the sum, as clause 11 asks.Every result has
.plot(): the plan of the contour in the manner of Figure 1, the power beside the contour average, the margin of every requirement with the advisory rows hatched and marked hollow, and the parts against their sum. The contour and every result keep read-only copies of the arrays they are given, and the three printed tables are published as read-only mappings.What breaks. Nothing. The module and its names are new; the only shared code it uses, the ARP 866A transcription in
aircraft, is called and not changed, through a new dependency ofemissiononaircraftthat the architecture test records.Guide. A new guide in English and Spanish, with its docs/ mirror, measures an L-shaped crushing and screening plant whose eight sources have a known power: ISO 8297 finds 113.5 dB(A) against the 113.0 dB(A) they radiate, within half a decibel in the bands that carry L_WA and well inside Table 1. It puts the plant beside an asphalt plant of the same area, shows Table 3 against the formula it cites, and draws six figures, each with the code that draws it.
How it was checked. The standard prints no worked example, so no single printed number anchors the chain. What it does print is checked, read on the pages of BS ISO 8297:1994 (PDF pages 9 to 16, printed folios 1 to 8): Tables 1, 2 and 3, and the bound of NOTE 11, -0.9 dB and -1.9 dB, which the proximity term lg(d/(4 sqrt(Sp))) meets at the two ends of 9.1.1 a) and which confirms that the term carries no factor 10. The weather path reproduces ISO 3891 Table 9 at 15 °C in every octave band to its printed decimal. Closed forms cover the rest: a point source on the ground at the centre of a circular contour gives its own power back as the microphones come down to the ground, and 10 lg((R^2 + R h)/(R^2 + h^2)) more at height h; a square plant seen from a square contour d out subtends 2 atan(L/(2d)) at the middle of each side whatever the positions. These are rows of the conformance report. The module tests pin every edge of the verdict (a mean distance of exactly 5 m, a 3 dB angle of exactly 30 degrees, a background exactly 6 dB and 10 dB down, one omission in ten, a level exactly 5 dB above the average, a plant of 330 m), the layout search against an exhaustive one, the band tolerance, and the read-only storage.
Four misprints of ISO 8297:1994 are registered in the errata, all without effect on any number: the aspect angle written with the symbol of the microphone's angle in 9.1.1 b), with a strict bound in the callout of Figure 1; the 31.5 Hz octave printed as 31 in Table 3; the area term written with a lower-case subscript in 10.4; and "characteristics height" in the heading of 3.7.
Gates. On this branch ruff check and ruff format are clean (1274 files), mypy is clean on 670 files of src, scripts, the stub and the typing tests, and bandit is clean; the conformance report (1793 of 1793 checks), the API reference, the llms files, the site reports, the catalogue data and the PyPI readme regenerate without a diff; the test modules this change adds or touches pass (422 passed); and the checks on frozen constants, parameter units, published sources, errata evidence, em dashes, digit grouping and markdown hazards, the guides index (162 guides) and the language parity pass. This branch is the top of its stack, so the heavy gates ran here, on every change of the stack together: the full suite passes (25 145 passed, 71 skipped), every documentation snippet runs (7159 blocks over 723 pages), the site builds (971 pages) with 0 type errors, 0 warnings and clean HTML validation, a fresh regeneration of the figures and the example fiches reproduces all 3172 committed figures and 75 fiches unchanged and passes the figure checks on contrast, language, annotations, ticks, decimal points, legends, tick and text clearance and minus signs, and the 43 published clips match the code that draws them.