Noise Certification Test (flight-test-operations/planning/noise-certification-test)
Use when the task is planning and analyzing the noise certification
flight test for a transport category airplane: laying out the flyover,
sideline and approach measurement conditions, reducing the measured
tone corrected perceived noise level (PNLT) time history into the
effective perceived noise level (EPNL) with the 10 dB down integration
rule, and checking the per point and cumulative margins against the
stated noise limits. This leaf implements the EPNL math and the test
geometry layer in pure Python, stdlib only. The measured PNLT input is
the tone corrected perceived noisiness output of the acoustic
measurement chain; the noy conversion and the acoustic data
acquisition hardware are out of scope. It pairs with
flight-test-operations/planning/flight-test-planning for program
sequencing, flight-test-operations/planning/flight-test-instrumentation
for the acoustic measurement system, and
flight-test-operations/planning/position-error-calibration for the
airspeed reference flown at each certification condition.
Domain quick reference
The noise certification measurement procedure is summarized here at
reference level from the public FAR 36 / ICAO Annex 16 Volume I
description (name and paraphrase only, no verbatim regulation text;
the certification basis states the applicable limits, which this leaf
accepts as inputs).
- Flyover: the airplane accelerates at maximum takeoff thrust along
the runway and passes over the reference point on the extended
centerline 6500 m from the brake release point, speed reference
V2 + 10 kt.
- Sideline: the microphone sits 450 m lateral of the runway
centerline at the point of maximum noise during the takeoff run.
- Approach: the airplane descends the 3 degree glide slope to the
threshold; the microphone is 1200 m from the threshold under the
flight path at 120 m altitude.
- Effective perceived noise level: EPNL = 10 * log10((1 / T0) *
sum(10^(PNLT_i / 10)) * dt), T0 = 10 s, summed over the 10 dB down
interval where the PNLT stays within 10 EPNdB of its maximum.
- 10 dB down rule: find the PNLT maximum, then walk left and right to
the times where the PNLT has dropped 10 dB below that maximum;
boundary times are linearly interpolated between the bracketing
samples. A series that never drops 10 dB is integrated over its
full span and flagged as not truncated.
- Margin to limit: margin_db = limit - EPNL, pass when margin_db >= 0.
- Cumulative rule (typical chapter 4 / stage 4 check at reference
level): the sum of the three per point margins must be >= 10 EPNdB
and every individual margin must be >= 0. The exact rule set
depends on the certification basis.
- Units: geometry in meters and degrees, EPNL in EPNdB, time in
seconds, airspeeds in knots.
Workflow
- Lay out the three measurement conditions with geometry(condition)
for flyover, sideline and approach; each returns the reference
distances from the module constants.
- Build the certification test matrix from the weight and speed
inputs with test_matrix(takeoff_weight, landing_weight, v2_kt,
approach_speed_kt, limits); each row carries the configuration,
reference speed, stated limit and target EPNL.
- For each measured run, integrate the tone corrected PNLT time
history with epnl_from_pnlt(pnlt_series, dt) to get the EPNL, the
10 dB down window bounds and the truncation flag.
- Check every point against its stated limit with
margin_to_limit(epnl, limit) to get the margin and the pass or
fail verdict.
- Assess the three point set with cumulative_margin(margins) against
the chapter 4 style rule: summed margin at or above the required
10 EPNdB and no negative individual margin.
- Combine everything with summarize(epnl_by_condition, limits) for
the per condition EPNL, margin, verdict and the cumulative
verdict.
- Confirm the deterministic checks with the contract test
scripts/test_noise_certification_test.py.
Worked example
A transport airplane noise certification data set, 41 PNLT samples at
0.5 s spacing (20 s per run):
- Constant 90 dB flyover run that never drops 10 dB: the full 20 s
series is integrated and EPNL = 90 + 10 * log10(20 / 10) =
93.0103 EPNdB (window 0.0 to 20.0 s, not truncated).
- Single peak flyover run peaking at 92.0 dB at sample 20 with values
falling 10 dB below the maximum at the series ends: EPNL =
89.1267 EPNdB over the truncated 10 dB down window from 4.0 s to
16.0 s.
- Pulse approach run at 100 dB from 8 s to 12 s and 80 dB elsewhere:
EPNL = 96.3094 EPNdB, below the 100 dB instantaneous peak because
the effective duration is below the 10 s reference; the 90 dB
crossings are linearly interpolated at 7.75 s and 12.25 s.
- Margin: margin_to_limit(93.01, 95.0) returns margin 1.99 EPNdB,
verdict pass; margin_to_limit(96.0, 95.0) fails.
- Cumulative: margins [3.0, 4.0, 4.0] sum to 11.0 EPNdB with all
margins at or above zero, verdict pass; [3.0, 3.0, 3.0] fails on
the 9.0 EPNdB sum; [-1.0, 6.0, 6.0] fails on the negative
individual margin.
- Geometry: geometry("approach") returns distance 1200.0 m,
altitude 120.0 m, glide 3.0 degrees.
Pitfalls
- Truncating a run that never drops 10 dB below its peak: the constant
90 dB flyover integrates the full 20 s series to EPNL = 93.0103
EPNdB with a not-truncated flag and the full-span window.
- Reading EPNL as the instantaneous peak: the pulse approach at 100 dB
from 8 to 12 s gives EPNL = 96.3094 EPNdB because the effective
duration sits below the 10 s reference, and the single-peak 92 dB
series lands near 89 EPNdB.
- Forgetting that the 10 dB down window is interpolated: the peaked-run
crossings at 7.75 s and 12.25 s bound the truncated integration
window and are linearly interpolated, not snapped to sample times.
- Judging compliance from the individual margin alone: margin_to_limit
must pass and the cumulative margins must sum to at least the limit
with every individual margin at or above zero - a negative single
margin fails the cumulative verdict.
- Quoting EPNL differences between runs at different levels: adding
c dB to every PNLT sample adds c EPNdB (level-shift identity), so
comparisons only mean something at the same measurement conditions.
- Feeding non-physical inputs: an empty or non-finite PNLT series,
dt <= 0, an unknown condition, and negative noise limits all raise
ValueError.
Verification
- Confirm epnl_from_pnlt([90.0] * 41, 0.5) returns 93.0102999566
within 1e-6, matching 90 + 10 * log10(20 / 10).
- Confirm the single peak 92 dB series stays near 89.0 EPNdB and
below the instantaneous peak level.
- Confirm the constant series returns a not truncated flag and the
full span bounds; the peaked series returns truncated True with the
interpolated window bounds.
- Confirm margin_to_limit(93.01, 95.0) returns 1.99 pass and that a
level shift identity holds: adding c dB to every PNLT sample adds
c EPNdB to the EPNL.
- Confirm ValueError rejection of an empty or non-finite PNLT series,
dt <= 0, an unknown condition, and negative noise limits.
- Run the contract test offline: python3
scripts/test_noise_certification_test.py (33 tests, deterministic).
Related leaves
- flight-test-operations/planning/flight-test-planning: orders the
noise certification runs inside the overall build-up sequence.
- flight-test-operations/planning/flight-test-instrumentation: owns
the acoustic measurement system that delivers the PNLT series.
- flight-test-operations/planning/position-error-calibration:
provides the airspeed reference flown at each certification
condition.
- flight-test-operations/planning/test-point-matrix-design: expands
the certification conditions into the full flown point matrix.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_noise_certification_test.py
The test covers the reference geometry table for the three
conditions, the EPNL integration contract (the constant series closed
form 93.0103 EPNdB, the ~89.0 EPNdB truncated peak series with
interpolated window bounds, the 100 dB pulse staying below 100 EPNdB,
the level shift identity), the margin to limit verdicts, the
cumulative rule branches (pass, sum shortfall, negative individual
margin), the test matrix and summary helpers, and ValueError rejection
of empty, non-finite and non-physical inputs.
Compliance
- Standards referenced, not reproduced: the noise certification
measurement procedure (FAR 36 / ICAO Annex 16 Volume I) is named
and summarized at reference level only, never quoted verbatim; the
mapped standards ids far-25 and cs-25 frame the transport type
certification context this test supports. The acoustic math above
is the standard engineering method, summary-only per
standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: noise-certification-test3description: Use when you must plan and analyze the noise certification flight test for a transport airplane: lay out the flyover, sideline, and approach measurement conditions with the reference geometry (6500 m flyover distance, 450 m sideline offset, 1200 m approach distance at 120 m altitude on a 3 degree glide slope), compute the effective perceived noise level (EPNL) from the measured tone corrected perceived noise level (PNLT) time history with the 10 dB down integration rule and the 10 s normalization, and check each point and the cumulative three point margin against the noise limits. Produces the EPNL per condition, the margin to limit with verdict, and the cumulative margin verdict that gate the certification submission. Trigger: noise certification flight test, EPNL, effective perceived noise level, PNLT, tone corrected, 10 dB down integration, flyover noise, sideline noise, approach noise, cumulative margin, noise limit, FAR 36.4license: Apache-2.05---67# Noise Certification Test (flight-test-operations/planning/noise-certification-test)89Use when the task is planning and analyzing the noise certification10flight test for a transport category airplane: laying out the flyover,11sideline and approach measurement conditions, reducing the measured12tone corrected perceived noise level (PNLT) time history into the13effective perceived noise level (EPNL) with the 10 dB down integration14rule, and checking the per point and cumulative margins against the15stated noise limits. This leaf implements the EPNL math and the test16geometry layer in pure Python, stdlib only. The measured PNLT input is17the tone corrected perceived noisiness output of the acoustic18measurement chain; the noy conversion and the acoustic data19acquisition hardware are out of scope. It pairs with20flight-test-operations/planning/flight-test-planning for program21sequencing, flight-test-operations/planning/flight-test-instrumentation22for the acoustic measurement system, and23flight-test-operations/planning/position-error-calibration for the24airspeed reference flown at each certification condition.2526## Domain quick reference2728The noise certification measurement procedure is summarized here at29reference level from the public FAR 36 / ICAO Annex 16 Volume I30description (name and paraphrase only, no verbatim regulation text;31the certification basis states the applicable limits, which this leaf32accepts as inputs).3334- Flyover: the airplane accelerates at maximum takeoff thrust along35 the runway and passes over the reference point on the extended36 centerline 6500 m from the brake release point, speed reference37 V2 + 10 kt.38- Sideline: the microphone sits 450 m lateral of the runway39 centerline at the point of maximum noise during the takeoff run.40- Approach: the airplane descends the 3 degree glide slope to the41 threshold; the microphone is 1200 m from the threshold under the42 flight path at 120 m altitude.43- Effective perceived noise level: EPNL = 10 * log10((1 / T0) *44 sum(10^(PNLT_i / 10)) * dt), T0 = 10 s, summed over the 10 dB down45 interval where the PNLT stays within 10 EPNdB of its maximum.46- 10 dB down rule: find the PNLT maximum, then walk left and right to47 the times where the PNLT has dropped 10 dB below that maximum;48 boundary times are linearly interpolated between the bracketing49 samples. A series that never drops 10 dB is integrated over its50 full span and flagged as not truncated.51- Margin to limit: margin_db = limit - EPNL, pass when margin_db >= 0.52- Cumulative rule (typical chapter 4 / stage 4 check at reference53 level): the sum of the three per point margins must be >= 10 EPNdB54 and every individual margin must be >= 0. The exact rule set55 depends on the certification basis.56- Units: geometry in meters and degrees, EPNL in EPNdB, time in57 seconds, airspeeds in knots.5859## Workflow60611. Lay out the three measurement conditions with geometry(condition)62 for flyover, sideline and approach; each returns the reference63 distances from the module constants.642. Build the certification test matrix from the weight and speed65 inputs with test_matrix(takeoff_weight, landing_weight, v2_kt,66 approach_speed_kt, limits); each row carries the configuration,67 reference speed, stated limit and target EPNL.683. For each measured run, integrate the tone corrected PNLT time69 history with epnl_from_pnlt(pnlt_series, dt) to get the EPNL, the70 10 dB down window bounds and the truncation flag.714. Check every point against its stated limit with72 margin_to_limit(epnl, limit) to get the margin and the pass or73 fail verdict.745. Assess the three point set with cumulative_margin(margins) against75 the chapter 4 style rule: summed margin at or above the required76 10 EPNdB and no negative individual margin.776. Combine everything with summarize(epnl_by_condition, limits) for78 the per condition EPNL, margin, verdict and the cumulative79 verdict.807. Confirm the deterministic checks with the contract test81 scripts/test_noise_certification_test.py.8283## Worked example8485A transport airplane noise certification data set, 41 PNLT samples at860.5 s spacing (20 s per run):8788- Constant 90 dB flyover run that never drops 10 dB: the full 20 s89 series is integrated and EPNL = 90 + 10 * log10(20 / 10) =90 93.0103 EPNdB (window 0.0 to 20.0 s, not truncated).91- Single peak flyover run peaking at 92.0 dB at sample 20 with values92 falling 10 dB below the maximum at the series ends: EPNL =93 89.1267 EPNdB over the truncated 10 dB down window from 4.0 s to94 16.0 s.95- Pulse approach run at 100 dB from 8 s to 12 s and 80 dB elsewhere:96 EPNL = 96.3094 EPNdB, below the 100 dB instantaneous peak because97 the effective duration is below the 10 s reference; the 90 dB98 crossings are linearly interpolated at 7.75 s and 12.25 s.99- Margin: margin_to_limit(93.01, 95.0) returns margin 1.99 EPNdB,100 verdict pass; margin_to_limit(96.0, 95.0) fails.101- Cumulative: margins [3.0, 4.0, 4.0] sum to 11.0 EPNdB with all102 margins at or above zero, verdict pass; [3.0, 3.0, 3.0] fails on103 the 9.0 EPNdB sum; [-1.0, 6.0, 6.0] fails on the negative104 individual margin.105- Geometry: geometry("approach") returns distance 1200.0 m,106 altitude 120.0 m, glide 3.0 degrees.107108## Pitfalls109110- Truncating a run that never drops 10 dB below its peak: the constant111 90 dB flyover integrates the full 20 s series to EPNL = 93.0103112 EPNdB with a not-truncated flag and the full-span window.113- Reading EPNL as the instantaneous peak: the pulse approach at 100 dB114 from 8 to 12 s gives EPNL = 96.3094 EPNdB because the effective115 duration sits below the 10 s reference, and the single-peak 92 dB116 series lands near 89 EPNdB.117- Forgetting that the 10 dB down window is interpolated: the peaked-run118 crossings at 7.75 s and 12.25 s bound the truncated integration119 window and are linearly interpolated, not snapped to sample times.120- Judging compliance from the individual margin alone: margin_to_limit121 must pass and the cumulative margins must sum to at least the limit122 with every individual margin at or above zero - a negative single123 margin fails the cumulative verdict.124- Quoting EPNL differences between runs at different levels: adding125 c dB to every PNLT sample adds c EPNdB (level-shift identity), so126 comparisons only mean something at the same measurement conditions.127- Feeding non-physical inputs: an empty or non-finite PNLT series,128 dt <= 0, an unknown condition, and negative noise limits all raise129 ValueError.130131## Verification132133- Confirm epnl_from_pnlt([90.0] * 41, 0.5) returns 93.0102999566134 within 1e-6, matching 90 + 10 * log10(20 / 10).135- Confirm the single peak 92 dB series stays near 89.0 EPNdB and136 below the instantaneous peak level.137- Confirm the constant series returns a not truncated flag and the138 full span bounds; the peaked series returns truncated True with the139 interpolated window bounds.140- Confirm margin_to_limit(93.01, 95.0) returns 1.99 pass and that a141 level shift identity holds: adding c dB to every PNLT sample adds142 c EPNdB to the EPNL.143- Confirm ValueError rejection of an empty or non-finite PNLT series,144 dt <= 0, an unknown condition, and negative noise limits.145- Run the contract test offline: python3146 scripts/test_noise_certification_test.py (33 tests, deterministic).147148## Related leaves149150- flight-test-operations/planning/flight-test-planning: orders the151 noise certification runs inside the overall build-up sequence.152- flight-test-operations/planning/flight-test-instrumentation: owns153 the acoustic measurement system that delivers the PNLT series.154- flight-test-operations/planning/position-error-calibration:155 provides the airspeed reference flown at each certification156 condition.157- flight-test-operations/planning/test-point-matrix-design: expands158 the certification conditions into the full flown point matrix.159160## Behavior contract (gate 3)161162Run the deterministic contract test (stdlib unittest, offline):163164 python3 scripts/test_noise_certification_test.py165166The test covers the reference geometry table for the three167conditions, the EPNL integration contract (the constant series closed168form 93.0103 EPNdB, the ~89.0 EPNdB truncated peak series with169interpolated window bounds, the 100 dB pulse staying below 100 EPNdB,170the level shift identity), the margin to limit verdicts, the171cumulative rule branches (pass, sum shortfall, negative individual172margin), the test matrix and summary helpers, and ValueError rejection173of empty, non-finite and non-physical inputs.174175## Compliance176177- Standards referenced, not reproduced: the noise certification178 measurement procedure (FAR 36 / ICAO Annex 16 Volume I) is named179 and summarized at reference level only, never quoted verbatim; the180 mapped standards ids far-25 and cs-25 frame the transport type181 certification context this test supports. The acoustic math above182 is the standard engineering method, summary-only per183 standards-map.yaml.184- compliance: STANDARDS-REF, gated: false.