Noise-control performance reports via .report() (#331)
* Add noise-control performance reports via .report()
Add a one-page PDF .report() fiche to the three noise_control result
types, each laid out with a per-band table beside the result's own plot,
a boxed single-number performance figure and an optional PASS/FAIL
verdict:
- EnclosureResult: machine-enclosure insertion loss (Bies, Hansen &
Howard, section 7.4.2). The table lists the supplied panel transmission
loss R, the interior build-up correction C and the net insertion loss
IL = R - C; the boxed figure is the mean insertion loss with the
external and internal surface areas. verbose=True adds the interior
room constant column. A declared minimum passes when the mean meets it.
- ReactiveSilencerResult: reactive-silencer transmission loss (Munjal
Eq. (3.27); Bies sections 8.8-8.9). The table lists the transmission
loss TL and, when end impedances were given, the insertion loss IL; the
boxed figure is the mean transmission loss with the peak and the device
kind. A declared minimum passes when the mean meets it.
- HvacSpectrumResult: HVAC duct-noise spectrum (Bies Chapter 8; VDI
2081-1). A regenerated-noise spectrum boxes the A-weighted sound power
level with the overall total (lower is better); an attenuation spectrum
boxes the mean attenuation (more is better). verbose=True adds the
A-weighting correction and A-weighted band-level columns.
The three renderers share a two-panel skeleton in
_report/_noise_control_fiche.py and reuse the sound-power table builder,
band labels and header grid. Each accepts an optional metadata header,
states its method basis and renders in English or Spanish.
Register one committed example per fiche under .github/reports/, add
structural and clean-room number-presence tests (EN and ES), and update
the CHANGELOG and the regenerated API reference.
* Address SonarCloud findings on the noise-control renderers
Reduce render_noise_control_fiche below the parameter-count threshold by
fixing the two-panel split widths internally (the three renderers never
overrode them), and lift the HVAC verdict symbol/unit selection out of a
nested conditional into an explicit if/elif/else. No change to rendered
output; the committed example fiches are unaffected.
* Round the requirement to display precision and fit the verbose table
Compare the declared requirement at the same one-decimal precision as the
measured value in the noise-control verdict, so the printed comparison can
never contradict the verdict at the boundary. Also trim the verbose
enclosure table columns to sum to the 64 mm left panel width.
authored by
This is a binary file and will not be displayed.
This is a binary file and will not be displayed.
This is a binary file and will not be displayed.