Turn Performance (flight-mechanics/performance/turn-performance)
Use when the task is sustained turn performance analysis: load
factor from bank angle, turn rate, turn radius, and the sustained
turn verdict against the available thrust for a fixed-wing aircraft.
Domain quick reference
- Load factor from bank angle: n = 1 / cos(phi), for a level
coordinated turn, unitless. Bank angle phi is in radians; the load
factor has no real value at or beyond 90 deg (pi/2 rad).
- Bank angle from load factor: phi = acos(1 / n), in radians, only
defined for n >= 1.
- Turn rate: omega = g * sqrt(n^2 - 1) / V, in rad/s, with g =
9.80665 m/s^2 and true airspeed V in m/s.
- Turn radius: R = V^2 / (g * sqrt(n^2 - 1)), in m.
- Sustained turn: the drag in the turn is D_turn = D_level * n
(level-flight drag scaled by the load factor); the turn is
sustained when T_available >= D_turn.
- Units are SI throughout: speed V in m/s, radius in m, turn rate in
rad/s, forces in N, angles in radians, g = 9.80665 m/s^2.
- FAR-25/CS-25 maneuvering requirements frame the load factor
envelope and the speeds at which turns are flown; the mathematics
here is standard flight mechanics.
Workflow
- Collect the bank angle or the target load factor.
- Convert with load_factor_from_bank or bank_from_load_factor.
- Compute the turn rate with turn_rate and the radius with
turn_radius at the true airspeed.
- Check the sustained verdict with sustained_check against the
available thrust and the level-flight drag.
- Report the load factor, turn rate, radius, and the sustained
verdict together for the maneuvering assessment.
Pitfalls
- Mixing radians and degrees: all angles are in radians; feeding 45
instead of pi/4 corrupts the load factor.
- Using a load factor below 1: level turns need n >= 1; the bank
angle and turn relations have no real solution below 1 g.
- Forgetting the drag penalty: the drag in the turn is D_level * n,
not D_level; the sustained verdict needs the increased drag.
- Dividing by V = 0: the turn rate and radius formulas require a
positive airspeed.
- Treating a not-sustained turn as an error: it is a real verdict to
report, not an exception.
Behavior contract (gate 3)
The load factor, bank angle, turn rate, radius, and sustained
verdict logic is exercised by the gate 3 contract test:
scripts/test_turn_performance.py against
scripts/turn_performance_logic.py (stdlib unittest, offline). Run:
python3 scripts/test_turn_performance.py
Compliance
- Standards referenced, not reproduced: FAR-25 is US government work
(public domain) and CS-25 is a free EASA download; sustained turn
performance is common flight-mechanics methodology, summary-only
per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: turn-performance3description: Use when you must compute sustained turn performance for a fixed-wing aircraft: derive the load factor from the bank angle or the bank angle from the load factor, compute the turn rate and turn radius at a given airspeed, and check whether the available thrust sustains the turn against the increased drag. Produces the load factor, bank angle, turn rate, turn radius, and the sustained verdict that gate the maneuvering performance assessment. Trigger: turn rate, turn radius, bank angle, load factor, sustained turn, level turn, maneuvering performance.4license: Apache-2.05---67# Turn Performance (flight-mechanics/performance/turn-performance)89Use when the task is sustained turn performance analysis: load10factor from bank angle, turn rate, turn radius, and the sustained11turn verdict against the available thrust for a fixed-wing aircraft.1213## Domain quick reference1415- Load factor from bank angle: n = 1 / cos(phi), for a level16 coordinated turn, unitless. Bank angle phi is in radians; the load17 factor has no real value at or beyond 90 deg (pi/2 rad).18- Bank angle from load factor: phi = acos(1 / n), in radians, only19 defined for n >= 1.20- Turn rate: omega = g * sqrt(n^2 - 1) / V, in rad/s, with g =21 9.80665 m/s^2 and true airspeed V in m/s.22- Turn radius: R = V^2 / (g * sqrt(n^2 - 1)), in m.23- Sustained turn: the drag in the turn is D_turn = D_level * n24 (level-flight drag scaled by the load factor); the turn is25 sustained when T_available >= D_turn.26- Units are SI throughout: speed V in m/s, radius in m, turn rate in27 rad/s, forces in N, angles in radians, g = 9.80665 m/s^2.28- FAR-25/CS-25 maneuvering requirements frame the load factor29 envelope and the speeds at which turns are flown; the mathematics30 here is standard flight mechanics.3132## Workflow33341. Collect the bank angle or the target load factor.352. Convert with load_factor_from_bank or bank_from_load_factor.363. Compute the turn rate with turn_rate and the radius with37 turn_radius at the true airspeed.384. Check the sustained verdict with sustained_check against the39 available thrust and the level-flight drag.405. Report the load factor, turn rate, radius, and the sustained41 verdict together for the maneuvering assessment.4243## Pitfalls4445- Mixing radians and degrees: all angles are in radians; feeding 4546 instead of pi/4 corrupts the load factor.47- Using a load factor below 1: level turns need n >= 1; the bank48 angle and turn relations have no real solution below 1 g.49- Forgetting the drag penalty: the drag in the turn is D_level * n,50 not D_level; the sustained verdict needs the increased drag.51- Dividing by V = 0: the turn rate and radius formulas require a52 positive airspeed.53- Treating a not-sustained turn as an error: it is a real verdict to54 report, not an exception.5556## Behavior contract (gate 3)5758The load factor, bank angle, turn rate, radius, and sustained59verdict logic is exercised by the gate 3 contract test:60scripts/test_turn_performance.py against61scripts/turn_performance_logic.py (stdlib unittest, offline). Run:62python3 scripts/test_turn_performance.py6364## Compliance6566- Standards referenced, not reproduced: FAR-25 is US government work67 (public domain) and CS-25 is a free EASA download; sustained turn68 performance is common flight-mechanics methodology, summary-only69 per standards-map.yaml.70- compliance: STANDARDS-REF, gated: false.