High Angle of Attack Testing (flight-test-operations/envelope/high-angle-of-attack-testing)
Use when the task is the high angle of attack (HiAOA) flight test: the
post-stall and deep stall test envelope, angle of attack sensor position
error calibration, stall warning margin assessment, and departure and
spin entry resistance judgment. This leaf covers the envelope beyond the
stall boundary and the instrumentation calibration that makes the AoA
data meaningful; the stall boundary test matrix, warning onset
verification, and recovery demonstration at the stall are the
stall-characteristics-testing leaf.
Domain quick reference
- HiAOA envelope: the angle of attack region from the stall angle
through the post-stall range up to the maximum tested AoA, including
the deep stall region where the aircraft can settle into a stable
stalled attitude with the nose above the horizon. Each configuration
and center of gravity condition is probed at the warning angle, the
stall angle, post-stall steps, and the deep stall point.
- AoA position error: the local flow direction at the sensor differs
from the free stream because of fuselage upwash and downwash and the
sensor mounting position, so the indicated AoA carries a bias and a
scale error. The correction relates indicated AoA to a reference AoA
measured by an independent method.
- Reference methods: a tower fly-by gives a reference by flying at
constant speed past a tower-mounted sighting baseline, and a trailing
cone trailed behind the aircraft gives reference static pressure from
which the flow angle is derived; both are used to calibrate the
installed AoA sensor over the test range.
- Calibration model: corrected = bias + scale * indicated, fitted by
least squares over the calibration points, with the residual spread
judging the quality of the fit before the correction is applied to
the flight data.
- Stall warning margin (FAR 25.201 / CS-25.201 context, paraphrased):
the stall demonstration must show the stall break and the warning
onset, and the warning must be distinct and must begin ahead of the
stall with margin; in AoA terms the margin is the difference between
the stall angle and the warning onset angle, compared with the
required margin of the test program.
- Departure resistance (FAR 25.203 / CS-25.203 context, paraphrased):
at and beyond the stall the aircraft must show no excessive pitch-up
and no uncontrollable rolling or yawing; the departure resistance
index scores the observed roll-off, yaw divergence, and pitch-up
against reference levels.
- Spin entry resistance: with pro-spin controls applied at the high AoA
points, the aircraft must resist entering autorotation; the observed
roll-off and yaw rate against the allowed limits, plus the recovery
altitude loss and turn count, give the verdict.
Workflow
- Build the HiAOA test matrix with
build_test_matrix(configs, cg_conditions, warning_aoa_deg,
stall_aoa_deg, max_aoa_deg, post_stall_step_deg): the matrix covers
the warning onset, the stall angle, the post-stall progression, and
the deep stall point for every configuration and c.g. condition.
- Calibrate the AoA sensor with
aoa_least_squares_calibration(indicated_aoas, reference_aoas) from
the tower fly-by or trailing cone data, then correct every flight
AoA with apply_aoa_correction(indicated_aoa_deg, calibration).
- Compute the observed stall warning margin with stall_margin_deg
(stall_aoa_deg, warning_aoa_deg) and judge it with
stall_margin_verdict(stall_aoa_deg, warning_aoa_deg,
required_margin_deg).
- Score the departure behavior with
departure_resistance_index(roll_off_deg, yaw_divergence_deg,
pitch_up_deg) at each post-stall point.
- Judge spin entry resistance with
spin_entry_resistance_verdict(roll_off_deg, yaw_rate_deg_s,
max_roll_off_deg, max_yaw_rate_deg_s) and the recovery with
spin_recovery_verdict(altitude_loss_m, altitude_loss_limit_m,
turns_to_recover, turns_limit).
AoA position error calibration model
The installed sensor reports an indicated angle alpha_i that differs
from the true (reference) angle alpha_r by a position error that is
well modeled over the test range as
alpha_r ~= bias + scale * alpha_i
with scale near 1 and bias in degrees. The least squares fit minimizes
the sum of squared residuals r_k = alpha_r,k - (bias + scale *
alpha_i,k) over the calibration points, giving
scale = cov(alpha_i, alpha_r) / var(alpha_i)
bias = mean(alpha_r) - scale * mean(alpha_i)
The residual root mean square and the maximum absolute residual
(aoa_least_squares_calibration outputs) show how well the linear model
holds; a large residual at the ends of the range warns that the sensor
position error is nonlinear there and the correction should not be
extrapolated beyond the calibrated AoA range.
Worked example
Tower fly-by calibration over five points: indicated [6.0, 8.0, 10.0,
12.0, 14.0] deg versus reference [8.2, 10.1, 12.0, 13.9, 15.8] deg.
The fit returns scale 0.95 and bias 2.5 deg, so corrected = 2.5 + 0.95
- indicated: 10.0 deg indicated corrects to 12.0 deg, matching the
reference. Residuals are near zero over the range, so the correction is
accepted.
Stall margin: with stall at 15.5 deg and warning onset at 12.0 deg the
margin is 3.5 deg; against a required margin of 2.0 deg the verdict is
ok. A warning onset at 14.0 deg would leave only 1.5 deg and would fail
the same requirement.
Departure resistance: roll-off 4 deg, yaw divergence 2 deg, pitch-up 1
deg give penalty 0.5 * 4/20 + 0.3 * 2/10 + 0.2 * 1/10 = 0.18, index
0.82, rated high. Roll-off 20 deg with yaw divergence 10 deg and
pitch-up 10 deg give index 0.0, rated low.
Pitfalls
- Extrapolating the AoA correction beyond the calibrated range: the
position error is linear only over the calibration points, so the
deep stall points must stay inside the calibrated AoA range or the
correction is carried outside its validity.
- Calibrating with a single reference point: the least squares fit
needs at least two points with varying indicated AoA, otherwise
neither bias nor scale can be separated.
- Confusing the stall angle with the stall warning onset angle: the
warning margin is the difference between the two, and a warning that
fires at or after the stall break carries no margin at all.
- Judging departure resistance from one axis only: roll-off alone
misses yaw divergence and pitch-up, and the index combines all three
motions.
- Testing the deep stall point without pro-spin control checks: the
spin entry resistance verdict only means something when the aircraft
is probed with pro-spin controls at the high AoA points.
- Using uncorrected AoA for the stall margin: the margin verdict is
only valid on corrected AoA, otherwise a sensor bias of several
degrees hides or fakes the margin.
- Passing negative angles, empty configuration lists, or non-finite
data to the logic functions; the module raises ValueError instead of
returning a meaningless matrix or verdict.
Behavior contract (gate 3)
The calibration fit, correction, stall margin, departure resistance,
spin entry resistance, recovery, and test matrix logic is exercised by
the gate 3 contract test:
scripts/test_high_angle_of_attack_testing.py against
scripts/high_angle_of_attack_testing_logic.py (stdlib unittest,
offline). Run:
python3 scripts/test_high_angle_of_attack_testing.py
Compliance
- Standards referenced, not reproduced: FAR-25 is US government work
(public domain) and CS-25 is a free EASA download; the HiAOA envelope
practice, AoA calibration methods, stall margin, and departure
resistance checks are common flight test methodology, summary-only
per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: high-angle-of-attack-testing3description: Use when the task is post-stall envelope definition, AoA instrumentation calibration, or deep stall testing. Plan and run the high angle of attack flight test: calibrate the angle of attack sensor position error against a tower fly-by or trailing cone reference, size the post-stall and deep stall test points across configurations and center of gravity conditions, estimate the stall warning margin against the required margin in the certification context, and judge the departure resistance and spin entry resistance in the post-stall envelope. Produces the corrected AoA calibration, the HiAOA test matrix, the stall margin verdict, and the departure and spin resistance assessment. Trigger: high angle of attack, AoA calibration, deep stall, departure resistance, post-stall, spin entry.4license: Apache-2.05---67# High Angle of Attack Testing (flight-test-operations/envelope/high-angle-of-attack-testing)89Use when the task is the high angle of attack (HiAOA) flight test: the10post-stall and deep stall test envelope, angle of attack sensor position11error calibration, stall warning margin assessment, and departure and12spin entry resistance judgment. This leaf covers the envelope beyond the13stall boundary and the instrumentation calibration that makes the AoA14data meaningful; the stall boundary test matrix, warning onset15verification, and recovery demonstration at the stall are the16stall-characteristics-testing leaf.1718## Domain quick reference1920- HiAOA envelope: the angle of attack region from the stall angle21 through the post-stall range up to the maximum tested AoA, including22 the deep stall region where the aircraft can settle into a stable23 stalled attitude with the nose above the horizon. Each configuration24 and center of gravity condition is probed at the warning angle, the25 stall angle, post-stall steps, and the deep stall point.26- AoA position error: the local flow direction at the sensor differs27 from the free stream because of fuselage upwash and downwash and the28 sensor mounting position, so the indicated AoA carries a bias and a29 scale error. The correction relates indicated AoA to a reference AoA30 measured by an independent method.31- Reference methods: a tower fly-by gives a reference by flying at32 constant speed past a tower-mounted sighting baseline, and a trailing33 cone trailed behind the aircraft gives reference static pressure from34 which the flow angle is derived; both are used to calibrate the35 installed AoA sensor over the test range.36- Calibration model: corrected = bias + scale * indicated, fitted by37 least squares over the calibration points, with the residual spread38 judging the quality of the fit before the correction is applied to39 the flight data.40- Stall warning margin (FAR 25.201 / CS-25.201 context, paraphrased):41 the stall demonstration must show the stall break and the warning42 onset, and the warning must be distinct and must begin ahead of the43 stall with margin; in AoA terms the margin is the difference between44 the stall angle and the warning onset angle, compared with the45 required margin of the test program.46- Departure resistance (FAR 25.203 / CS-25.203 context, paraphrased):47 at and beyond the stall the aircraft must show no excessive pitch-up48 and no uncontrollable rolling or yawing; the departure resistance49 index scores the observed roll-off, yaw divergence, and pitch-up50 against reference levels.51- Spin entry resistance: with pro-spin controls applied at the high AoA52 points, the aircraft must resist entering autorotation; the observed53 roll-off and yaw rate against the allowed limits, plus the recovery54 altitude loss and turn count, give the verdict.5556## Workflow57581. Build the HiAOA test matrix with59 build_test_matrix(configs, cg_conditions, warning_aoa_deg,60 stall_aoa_deg, max_aoa_deg, post_stall_step_deg): the matrix covers61 the warning onset, the stall angle, the post-stall progression, and62 the deep stall point for every configuration and c.g. condition.632. Calibrate the AoA sensor with64 aoa_least_squares_calibration(indicated_aoas, reference_aoas) from65 the tower fly-by or trailing cone data, then correct every flight66 AoA with apply_aoa_correction(indicated_aoa_deg, calibration).673. Compute the observed stall warning margin with stall_margin_deg68 (stall_aoa_deg, warning_aoa_deg) and judge it with69 stall_margin_verdict(stall_aoa_deg, warning_aoa_deg,70 required_margin_deg).714. Score the departure behavior with72 departure_resistance_index(roll_off_deg, yaw_divergence_deg,73 pitch_up_deg) at each post-stall point.745. Judge spin entry resistance with75 spin_entry_resistance_verdict(roll_off_deg, yaw_rate_deg_s,76 max_roll_off_deg, max_yaw_rate_deg_s) and the recovery with77 spin_recovery_verdict(altitude_loss_m, altitude_loss_limit_m,78 turns_to_recover, turns_limit).7980## AoA position error calibration model8182The installed sensor reports an indicated angle alpha_i that differs83from the true (reference) angle alpha_r by a position error that is84well modeled over the test range as8586 alpha_r ~= bias + scale * alpha_i8788with scale near 1 and bias in degrees. The least squares fit minimizes89the sum of squared residuals r_k = alpha_r,k - (bias + scale *90alpha_i,k) over the calibration points, giving9192 scale = cov(alpha_i, alpha_r) / var(alpha_i)93 bias = mean(alpha_r) - scale * mean(alpha_i)9495The residual root mean square and the maximum absolute residual96(aoa_least_squares_calibration outputs) show how well the linear model97holds; a large residual at the ends of the range warns that the sensor98position error is nonlinear there and the correction should not be99extrapolated beyond the calibrated AoA range.100101## Worked example102103Tower fly-by calibration over five points: indicated [6.0, 8.0, 10.0,10412.0, 14.0] deg versus reference [8.2, 10.1, 12.0, 13.9, 15.8] deg.105The fit returns scale 0.95 and bias 2.5 deg, so corrected = 2.5 + 0.95106* indicated: 10.0 deg indicated corrects to 12.0 deg, matching the107reference. Residuals are near zero over the range, so the correction is108accepted.109110Stall margin: with stall at 15.5 deg and warning onset at 12.0 deg the111margin is 3.5 deg; against a required margin of 2.0 deg the verdict is112ok. A warning onset at 14.0 deg would leave only 1.5 deg and would fail113the same requirement.114115Departure resistance: roll-off 4 deg, yaw divergence 2 deg, pitch-up 1116deg give penalty 0.5 * 4/20 + 0.3 * 2/10 + 0.2 * 1/10 = 0.18, index1170.82, rated high. Roll-off 20 deg with yaw divergence 10 deg and118pitch-up 10 deg give index 0.0, rated low.119120## Pitfalls121122- Extrapolating the AoA correction beyond the calibrated range: the123 position error is linear only over the calibration points, so the124 deep stall points must stay inside the calibrated AoA range or the125 correction is carried outside its validity.126- Calibrating with a single reference point: the least squares fit127 needs at least two points with varying indicated AoA, otherwise128 neither bias nor scale can be separated.129- Confusing the stall angle with the stall warning onset angle: the130 warning margin is the difference between the two, and a warning that131 fires at or after the stall break carries no margin at all.132- Judging departure resistance from one axis only: roll-off alone133 misses yaw divergence and pitch-up, and the index combines all three134 motions.135- Testing the deep stall point without pro-spin control checks: the136 spin entry resistance verdict only means something when the aircraft137 is probed with pro-spin controls at the high AoA points.138- Using uncorrected AoA for the stall margin: the margin verdict is139 only valid on corrected AoA, otherwise a sensor bias of several140 degrees hides or fakes the margin.141- Passing negative angles, empty configuration lists, or non-finite142 data to the logic functions; the module raises ValueError instead of143 returning a meaningless matrix or verdict.144145## Behavior contract (gate 3)146147The calibration fit, correction, stall margin, departure resistance,148spin entry resistance, recovery, and test matrix logic is exercised by149the gate 3 contract test:150scripts/test_high_angle_of_attack_testing.py against151scripts/high_angle_of_attack_testing_logic.py (stdlib unittest,152offline). Run:153154python3 scripts/test_high_angle_of_attack_testing.py155156## Compliance157158- Standards referenced, not reproduced: FAR-25 is US government work159 (public domain) and CS-25 is a free EASA download; the HiAOA envelope160 practice, AoA calibration methods, stall margin, and departure161 resistance checks are common flight test methodology, summary-only162 per standards-map.yaml.163- compliance: STANDARDS-REF, gated: false.