Vibration next to a railway, and two formulas of its ground that are printed wrong (DIN 45672) (#763)
* Vibration next to a railway, and two formulas of its ground that are printed wrong (DIN 45672)
The meter of DIN 45669-1 has a second working range, 4 Hz to 315 Hz, and it
exists for the source that most often brings vibration into a house.
DIN 45672-2 reduces the record of one train passage so that it can be
compared with the next: the three stretches of Clause 5, the running r.m.s.
of Formula (1) and its levels, the interval r.m.s., the event value referred
to an hour and its sum over the passages of an hour, the third-octave spectra
of Figure 6, the narrow-band density at 1,25 Hz and Formula (23) with Table 1,
Annex A, Annex B and the energy averaging of Clause 9.
Table 1 gives how many lines each band takes and not which; the choice is
stated: the lines nearest the nominal centre on a logarithmic axis, which are
the lines inside the nominal edges wherever the count is what the edges hold.
Nominal edges do not meet, and the docstring says what that leaves.
Clause 4.5 of DIN 45672-1 reads the elastic constants of the ground from two
wave speeds. Formula (1) prints the compression speed of a thin rod and a
radicand short of a factor 2, and Formula (5) returns the P-wave modulus as
E; Formula (3) between them is right and the library uses the continuum it is
the inverse of. Both are in docs/ERRATA.md, with the start-up figures of
Clause 4 of Part 2, which are of the mean square and not of the r.m.s.
A guide in both languages with three figures, four conformance rows, and the
record helper of the meter module shared with the railway module, since the
two Formulae (1) are the same integral.
* The errata pages of the site carry the two DIN 45672 entries
* The Spanish railway page hands ThemeImage the plain figure
* The averaging coefficient is an expm1, and the index says what the ground gets
* Each exception test invokes one thing that can raise
* The three verifiers draw their verdict points through one helper
* The immission family lists what it publishes in the order ruff sorts a dunder all
The prediction before the measurement, and the two drafts that rewrite the railway (DIN 4150-1, E DIN 4150-2, E DIN 45672-3) (#767)
* The prediction before the measurement, and the two drafts that rewrite the railway (DIN 4150-1, E DIN 4150-2, E DIN 45672-3)
DIN 4150-1:2001-06 in vibration.immission.prediction: the decay law of
Formula (2) with the exponents of Figure 1 and the damping of Figure 2, the
building on its ground, the blast, the falling mass, the machine hall with
the nomogram of Figure 3 read off the page, and the track excitation.
E DIN 4150-2:2023-08 in vibration.immission.train_categories and behind
edition="2023" in the people module: one clock interval per passage, 1,5
times the r.m.s. of a category as its KB_Fmax, Formula (6) with the
weighting factors of Table 2, the night-time upper value of a new line, the
25 % rule of an altered one, the changed cell of Table 1, no shortcut inside
the 15 %, a railway compared with A_o and a road by night not, the existing
road and the induced seismic event. GuideValues carries the period and the
edition it was read for and the verdict follows it.
E DIN 45672-3:2023-02 in vibration.immission.railway_prediction: Formula (1)
as printed, the speed rescaling, the ground transmission, the six tables of
Annex A cell by cell, the chain of Clause 7 to the assessment quantities,
and the line source of Annex B.
Fifty-three conformance rows, twenty-one errata entries in both languages,
five figures, three guides in both languages with their mirrors, and the
family, topic and guide indexes.
* The two package lists stay sorted, the guide values are built and not copied, and the verdict reads its edition in one place
The names the three modules add went to the end of both __all__ lists as
blocks, one of them twice, which is what the analyser saw as the same fifty
lines in two files; the immission list is sorted again and the vibration
groups hold their own names. A guide value with one field changed is built
as a GuideValues and not through dataclasses.replace, whose return the
analyser cannot type; the edition a verdict is read under and the sources
judged without the upper value are two small functions; the positive
frequencies go through the shared guard instead of three copies of one
message; and the two exception tests build their guide values before the
block that raises.
The prediction before the measurement, and the two drafts that rewrite the railway (DIN 4150-1, E DIN 4150-2, E DIN 45672-3) (#767)
* The prediction before the measurement, and the two drafts that rewrite the railway (DIN 4150-1, E DIN 4150-2, E DIN 45672-3)
DIN 4150-1:2001-06 in vibration.immission.prediction: the decay law of
Formula (2) with the exponents of Figure 1 and the damping of Figure 2, the
building on its ground, the blast, the falling mass, the machine hall with
the nomogram of Figure 3 read off the page, and the track excitation.
E DIN 4150-2:2023-08 in vibration.immission.train_categories and behind
edition="2023" in the people module: one clock interval per passage, 1,5
times the r.m.s. of a category as its KB_Fmax, Formula (6) with the
weighting factors of Table 2, the night-time upper value of a new line, the
25 % rule of an altered one, the changed cell of Table 1, no shortcut inside
the 15 %, a railway compared with A_o and a road by night not, the existing
road and the induced seismic event. GuideValues carries the period and the
edition it was read for and the verdict follows it.
E DIN 45672-3:2023-02 in vibration.immission.railway_prediction: Formula (1)
as printed, the speed rescaling, the ground transmission, the six tables of
Annex A cell by cell, the chain of Clause 7 to the assessment quantities,
and the line source of Annex B.
Fifty-three conformance rows, twenty-one errata entries in both languages,
five figures, three guides in both languages with their mirrors, and the
family, topic and guide indexes.
* The two package lists stay sorted, the guide values are built and not copied, and the verdict reads its edition in one place
The names the three modules add went to the end of both __all__ lists as
blocks, one of them twice, which is what the analyser saw as the same fifty
lines in two files; the immission list is sorted again and the vibration
groups hold their own names. A guide value with one field changed is built
as a GuideValues and not through dataclasses.replace, whose return the
analyser cannot type; the edition a verdict is read under and the sources
judged without the upper value are two small functions; the positive
frequencies go through the shared guard instead of three copies of one
message; and the two exception tests build their guide values before the
block that raises.
The ISO 1683 reference values are one published table, and every level reads it (#863)
* The ISO 1683 reference values are one published table that every level reads
phonometry.metrology.ISO1683_REFERENCE_VALUES holds Tables 1 to 3 of ISO 1683:2015 (sounds in gases, sounds in liquids, vibratory quantities) and the 50 nm/s that note b of Table 3 allows for structure-borne sound, keyed by medium and quantity. Each row is a frozen ReferenceValue with its quantity, medium, SI value and unit, the value as the table prints it, and the table it comes from.
The 20 µPa that was typed out seventeen times across the package, the 1 pW typed seven times and the other copies of the table now read it instead. _P0 no longer means a pressure in some modules and a power in others: the sound power references are _W0. A reference that deliberately comes from another document keeps its value and now names that document beside it: the 50 nm/s of ISO/TS 7849-1 and ISO 9611, the squared 20 µPa of ISO 532-1 and ISO 226, the 1 N of ISO 16283-2, the 1 kJ of DIN 4150-1, the kilopascals of ECAC Doc 29 and the inlet pressure of IEC 60534-8-4.
Every number the library returns is unchanged: the values the table stores are the same floats the copies held.
* A reference value in the package either reads the ISO 1683 table or names its source
scripts/check_reference_values.py walks the source tree and fails on a reference value that repeats a value of the table instead of reading it, and on one that differs from it without naming, in the comment above it or on its line, the document it comes from. What is a reference is decided by the name (a reference marker together with a quantity ISO 1683 lists, spelled out or as its symbol), and the places a name binds a number are all read: assignments at any scope, parameter defaults and keyword arguments. The bare 2e-05 and its square are caught wherever they stand, with a keyed exemption for the one place 2e-05 is a gravity gradient.
Run over the tree as it was before the table, it reports forty-three declarations; run over this one, none. It has a make target, reference-values, and a job of its own in CI.
* Every printed ISO 1683 reference value is a conformance row
Twenty rows join Levels & dosimetry: the eighteen values of Tables 1 to 3 and the 50 nm/s of note b of Table 3, each compared exactly with the published table (the float the library divides by has to be the float the printed decimal is), and note b of Table 2, the 10 lg(20²/1²) dB between a level re 1 µPa and the same pressure re 20 µPa, run through underwater.in_air_to_underwater_spl against the printed "approximately 26,0 dB". The joule, the newton and the pascal squared second join the unit vocabulary of the report.
The 1261 rows already in the report are unchanged to the last digit.
* The levels guide says which reference each level is counted from
The integrated-levels guide, in English, in Spanish and in its docs/ mirror, answers the question a reader of a level asks first: the ISO 1683:2015 reference of every quantity for gases, liquids and vibration, the 26.0 dB between the air and water pressure references, the modules that count from another value and why, and how to read the table from metrology.ISO1683_REFERENCE_VALUES. ISO 1683:2015 joins the page's references, the API reference gains its metrology.reference_values page, and the changelog records the table, the guard and the new conformance rows.
* A reference value typed wrong under its old comment now fails the check
scripts/check_reference_values.py counted any standard named in the comment beside a value as the document that value comes from, so a pointer replaced by a mistyped number kept its "(ISO 1683:2015 Table 1)" comment and passed. A value that differs from the table now has to name a document other than ISO 1683 itself and be listed in DIFFERENT_REFERENCES with the number that document prints, so a typo in one of the twelve deliberate departures fails too.
The check also reads the notation the standards print for the vibratory references (v0, a0, F0, xi0) and holds it to the values of the table only, sees a literal through float() or np.float64(), through tuple unpacking and through the string keys of a dict, and catches a value of the table written into the arithmetic of a level: the divisor inside a logarithm and the factor of an antilogarithm, which is where the two references that used to be written inline stood. A sentence that starts "In 2019" no longer reads as a citation, and a standard needs a number of two digits.
Run over the tree as it was before the table, it now reports forty-five places. On a copy of this tree with sixteen defects put back (old literals, pointers replaced by a wrong number with their comments left, a listed departure mistyped, a citation removed) it reports sixteen. On this tree, none. The tests put a wrong number back in seven places of the real modules, and removing any one branch of the check makes at least one test fail.
* Each reference value names the document it is actually read from
DIN 45672-2:1995-07 defines the 5·10⁻⁸ m/s of its velocity level itself, in Formula (2) on page 4, and names DIN EN 21683 only for the acceleration reference of Formula (3). The railway module and the ISO 1683 table said the velocity reference came from ISO 1683:1983 through DIN EN 21683; both now cite Formula (2) and say it is the 50 nm/s that note b of ISO 1683:2015 Table 3 says is also used for structure-borne sound.
The reference of the structure-borne power level of EN 15657 and of the power input into a floating floor is the 10⁻¹² W of EN 15657:2018 clause 7.1 and of Hopkins (2007) Table 2.1. ISO 1683 lists no structure-borne power, so the comments say where the number comes from and that it is read from the airborne 1 pW of Table 1.
The roex slope of the Moore and Glasberg loudness models is called p51, so _P_REF means a reference pressure everywhere in the package, and the wind-noise anchor of the ambient-noise model takes its 20 µPa to 1 µPa step from the table. Every number the library returns is unchanged; the anchor is the same float, 51.020599913279625.
* The guides say where each reference value comes from
The railway vibration guide, in English, in Spanish and in its docs/ mirror, no longer says DIN 45672-2 takes its 5·10⁻⁸ m/s from ISO 1683:1983: the standard defines it in Formula (2) without naming a source, and it is the 50 nm/s of note b of ISO 1683:2015 Table 3, 34 dB from the 1 nm/s of its main row. The integrated-levels guide and the curated API table tell the same story.
The underwater acoustics guide, where a reader meets the 1 µPa and 20 µPa references and the step between them, now says both are sound pressures of ISO 1683:2015 and points at metrology.ISO1683_REFERENCE_VALUES, with ISO 1683:2015 among its references. The metrology row of the namespace table lists the reference values, and the changelog entry describes the check as it now stands.
* Each ISO 1683 table name is spelled once in the reference-value module
The table labels are module constants, and the reference-value check resolves
a row field that names a module-level literal, so it still reads the table
from the source.
Vibration next to a railway, and two formulas of its ground that are printed wrong (DIN 45672) (#763)
* Vibration next to a railway, and two formulas of its ground that are printed wrong (DIN 45672)
The meter of DIN 45669-1 has a second working range, 4 Hz to 315 Hz, and it
exists for the source that most often brings vibration into a house.
DIN 45672-2 reduces the record of one train passage so that it can be
compared with the next: the three stretches of Clause 5, the running r.m.s.
of Formula (1) and its levels, the interval r.m.s., the event value referred
to an hour and its sum over the passages of an hour, the third-octave spectra
of Figure 6, the narrow-band density at 1,25 Hz and Formula (23) with Table 1,
Annex A, Annex B and the energy averaging of Clause 9.
Table 1 gives how many lines each band takes and not which; the choice is
stated: the lines nearest the nominal centre on a logarithmic axis, which are
the lines inside the nominal edges wherever the count is what the edges hold.
Nominal edges do not meet, and the docstring says what that leaves.
Clause 4.5 of DIN 45672-1 reads the elastic constants of the ground from two
wave speeds. Formula (1) prints the compression speed of a thin rod and a
radicand short of a factor 2, and Formula (5) returns the P-wave modulus as
E; Formula (3) between them is right and the library uses the continuum it is
the inverse of. Both are in docs/ERRATA.md, with the start-up figures of
Clause 4 of Part 2, which are of the mean square and not of the r.m.s.
A guide in both languages with three figures, four conformance rows, and the
record helper of the meter module shared with the railway module, since the
two Formulae (1) are the same integral.
* The errata pages of the site carry the two DIN 45672 entries
* The Spanish railway page hands ThemeImage the plain figure
* The averaging coefficient is an expm1, and the index says what the ground gets
* Each exception test invokes one thing that can raise
* The three verifiers draw their verdict points through one helper
* The immission family lists what it publishes in the order ruff sorts a dunder all
The prediction before the measurement, and the two drafts that rewrite the railway (DIN 4150-1, E DIN 4150-2, E DIN 45672-3) (#767)
* The prediction before the measurement, and the two drafts that rewrite the railway (DIN 4150-1, E DIN 4150-2, E DIN 45672-3)
DIN 4150-1:2001-06 in vibration.immission.prediction: the decay law of
Formula (2) with the exponents of Figure 1 and the damping of Figure 2, the
building on its ground, the blast, the falling mass, the machine hall with
the nomogram of Figure 3 read off the page, and the track excitation.
E DIN 4150-2:2023-08 in vibration.immission.train_categories and behind
edition="2023" in the people module: one clock interval per passage, 1,5
times the r.m.s. of a category as its KB_Fmax, Formula (6) with the
weighting factors of Table 2, the night-time upper value of a new line, the
25 % rule of an altered one, the changed cell of Table 1, no shortcut inside
the 15 %, a railway compared with A_o and a road by night not, the existing
road and the induced seismic event. GuideValues carries the period and the
edition it was read for and the verdict follows it.
E DIN 45672-3:2023-02 in vibration.immission.railway_prediction: Formula (1)
as printed, the speed rescaling, the ground transmission, the six tables of
Annex A cell by cell, the chain of Clause 7 to the assessment quantities,
and the line source of Annex B.
Fifty-three conformance rows, twenty-one errata entries in both languages,
five figures, three guides in both languages with their mirrors, and the
family, topic and guide indexes.
* The two package lists stay sorted, the guide values are built and not copied, and the verdict reads its edition in one place
The names the three modules add went to the end of both __all__ lists as
blocks, one of them twice, which is what the analyser saw as the same fifty
lines in two files; the immission list is sorted again and the vibration
groups hold their own names. A guide value with one field changed is built
as a GuideValues and not through dataclasses.replace, whose return the
analyser cannot type; the edition a verdict is read under and the sources
judged without the upper value are two small functions; the positive
frequencies go through the shared guard instead of three copies of one
message; and the two exception tests build their guide values before the
block that raises.
The prediction before the measurement, and the two drafts that rewrite the railway (DIN 4150-1, E DIN 4150-2, E DIN 45672-3) (#767)
* The prediction before the measurement, and the two drafts that rewrite the railway (DIN 4150-1, E DIN 4150-2, E DIN 45672-3)
DIN 4150-1:2001-06 in vibration.immission.prediction: the decay law of
Formula (2) with the exponents of Figure 1 and the damping of Figure 2, the
building on its ground, the blast, the falling mass, the machine hall with
the nomogram of Figure 3 read off the page, and the track excitation.
E DIN 4150-2:2023-08 in vibration.immission.train_categories and behind
edition="2023" in the people module: one clock interval per passage, 1,5
times the r.m.s. of a category as its KB_Fmax, Formula (6) with the
weighting factors of Table 2, the night-time upper value of a new line, the
25 % rule of an altered one, the changed cell of Table 1, no shortcut inside
the 15 %, a railway compared with A_o and a road by night not, the existing
road and the induced seismic event. GuideValues carries the period and the
edition it was read for and the verdict follows it.
E DIN 45672-3:2023-02 in vibration.immission.railway_prediction: Formula (1)
as printed, the speed rescaling, the ground transmission, the six tables of
Annex A cell by cell, the chain of Clause 7 to the assessment quantities,
and the line source of Annex B.
Fifty-three conformance rows, twenty-one errata entries in both languages,
five figures, three guides in both languages with their mirrors, and the
family, topic and guide indexes.
* The two package lists stay sorted, the guide values are built and not copied, and the verdict reads its edition in one place
The names the three modules add went to the end of both __all__ lists as
blocks, one of them twice, which is what the analyser saw as the same fifty
lines in two files; the immission list is sorted again and the vibration
groups hold their own names. A guide value with one field changed is built
as a GuideValues and not through dataclasses.replace, whose return the
analyser cannot type; the edition a verdict is read under and the sources
judged without the upper value are two small functions; the positive
frequencies go through the shared guard instead of three copies of one
message; and the two exception tests build their guide values before the
block that raises.
KB italic, Euler's number upright, and the subscripts of the guides, figures and diagrams set as their standards print them (#952)
The weighted vibration severity KB is italic in every diagram, figure, guide, docstring and errata entry, as DIN 4150-2 and DIN 45672 print it, and Euler's number is upright in every formula, as ISO 80000-2:2019 prints the mathematical constants. `make subscripts` fails on an upright KB or an upright running index and `scripts/check_euler_number.py` fails on an italic e, and both checks now read the row breaks, wrapped inline math and escaped strings they used to skip. Where a standard prints every subscript in one slope, as EN 15657, EN 12354-5 and RD 1367/2007 do, ISO 80000-2 decides: a running index is italic and a descriptive abbreviation upright, so the position levels of EN 15657 are L_{v,i} with an italic i. The standardized levels with their italic T, the ISO 7235 diagram with its sign put right, and the noise control, in-situ, exposure, aircraft and theory symbols follow their printed pages. No public name, signature or return value changes.