Use when you must determine the banked-turn power of a helicopter rotor from momentum theory: the turning-flight inflow solved for the n-times-weight thrust of the banked level turn, the banked-turn-power breakdown into induced, profile and parasite terms, the sustained-load-factor an available power supports at the turn speed, the power-limited bank angle, and the turn rate and radius of the sustained maneuver. Produces the turn induced velocity, the turn power breakdown, the sustained-load-...
Scanned 9/27/2026
Install to Claude Code
npx -y skills add ashfordeOU/aero-agent-skills --skill rotorcraft-turn-performance --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Rotorcraft Turn Performance?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ashfordeou-rotorcraft-turn-performance)More formats (shields.io, HTML) on the badges page.
---
name: rotorcraft-turn-performance
description: 'Use when you must determine the banked-turn power of a helicopter rotor from momentum theory: the turning-flight inflow solved for the n-times-weight thrust of the banked level turn, the banked-turn-power breakdown into induced, profile and parasite terms, the sustained-load-factor an available power supports at the turn speed, the power-limited bank angle, and the turn rate and radius of the sustained maneuver. Produces the turn induced velocity, the turn power breakdown, the sustained-load-factor, bank angle, turn rate and turn radius that gate a rotorcraft maneuvering-power check at a chosen density. Momentum theory for level turns above one g only, not the fixed-wing method, level-flight power curve, hover, climb or autorotation. Trigger: helicopter banked turn, turning-flight inflow, rotorcraft turn power, sustained load factor, power-limited bank angle.'
license: Apache-2.0
compliance: STANDARDS-REF
standards:
- id: far-29
reference-only: true
gated: false
domain: flight-mechanics
pack: performance
compatibility: agentskills.io SKILL.md; any SKILL.md host (Claude Code, Hermes, OpenClaw)
metadata:
domain: flight-mechanics
subdomain: performance
tags:
- rotorcraft-turn-performance
- turning-flight-inflow
- banked-turn-power
- sustained-load-factor
- power-limited-bank-angle
version: 0.1.0
author: AeroSkills
---
# Rotorcraft Turn Performance (flight-mechanics/performance/rotorcraft-turn-performance)
Use when the task is the banked-turn performance of a helicopter rotor
at load factors above one: the uniform-inflow momentum theory of a
steady coordinated level turn, where the disk banks so the thrust axis
carries the resultant n times the weight, the turning induced velocity
at that raised thrust, the turn power breakdown into induced, profile
and parasite terms, and the sustained-load-factor an available power
supports at the turn speed. This leaf implements the momentum-theory
solve in pure Python, stdlib only, with the disk-plane free-stream
convention of the level-flight Glauert model. It pairs with
flight-mechanics/performance/rotorcraft-forward-flight-performance,
which supplies the n = 1 power conventions and worked rotor this leaf
reuses, and with flight-mechanics/performance/rotorcraft-hover-
performance, whose v_h reference is the V = 0 identity of the turning
inflow.
## Domain quick reference
- Turn thrust: the rotor thrust in the banked level turn is the load
factor times the weight, T = n * W with W = m * g0. At n = 1 the
disk carries the level-flight weight; above one the rotor carries
more than the aircraft weight.
- Turning inflow (momentum theory, uniform inflow): the generalized
induced velocity v_i of the turn solves
n * W = 2 * rho * A * v_i * sqrt(V**2 + v_i**2), v_i >= 0, with
A = pi * R**2 the disk area. The left side is strictly increasing on
v_i >= 0, so the root is unique; a FIXED-COUNT bisection on
[0.0, sqrt(n * W / (2 * rho * A))] (BISECT_ITER = 120 iterations, no
tolerance early exit) returns it. At n = 1 the value reproduces the
level-flight Glauert inflow; at V = 0 it is sqrt(n * W / (2 * rho *
A)) = sqrt(n) * v_h.
- Induced power: P_i = k * n * W * v_i with the induced power factor
k = K_DEFAULT = 1.15, the hover and forward-flight convention.
- Profile power: P_prof = (1/8) * rho * sigma * Cd0 * A * V_tip**3,
the average-section-drag model shared with the hover and forward-
flight leaves; the turn keeps the rotor speed fixed, so the profile
power of the turn equals the level-flight value.
- Parasite power: P_par = 0.5 * rho * V**3 * f with f the equivalent
flat-plate drag area; the V**3 term makes the parasite power grow
fast with the turn speed.
- Total turn power: P_total = k * n * W * v_i + P_prof + P_par,
strictly increasing in the load factor because both n * W and v_i
rise with n.
- Sustained maneuver: the power-sustained-load-factor n_s is the
largest n whose turn power the available power covers, found by a
FIXED-COUNT bisection on [1.0, N_CEILING]; bank angle phi =
acos(1 / n_s), turn rate omega = G0 * sqrt(n**2 - 1) / V and turn
radius R_t = V**2 / (G0 * sqrt(n**2 - 1)) close the maneuver with
G0 = 9.80665 m/s2.
- Units are SI throughout: N, W, m/s, m2, kg/m3, rad. Angles are in
rad; radians convert to degrees by 180 / pi.
- 14 CFR Part 29 (far-29) frames the rotorcraft context; the relations
above are standard engineering methodology, summary-only.
## Workflow
1. Fix the turn state and the rotor: load factor n >= 1, true airspeed
V, rotor radius R (disk area A = pi * R**2), rotorcraft mass m
(weight W = m * g0), density rho, solidity sigma, blade drag
coefficient Cd0, tip speed, flat-plate drag area f and induced
power factor k. Record the hover reference v_h = sqrt(W / (2 * rho
* A)).
2. Raise the thrust to the load factor: thrust_for_turn returns
T = n * W and rejects load factors below 1 with ValueError.
3. Solve the turning-flight-inflow: generalized_induced_velocity
bisects on [0.0, sqrt(n * W / (2 * rho * A))] for v_i at the
n-times-weight thrust. Check the identities: speed zero returns
sqrt(n) * v_h, and at fixed n the inflow falls as the speed grows.
4. Break down the banked-turn-power: turn_power returns the dict
{load_factor, thrust, induced_velocity, induced_power,
profile_power, parasite_power, total_power} through induced_power,
profile_power and parasite_power in the fixed order above. Confirm
the n = 1 total equals the level-flight total of the forward-flight
leaf at the same speed.
5. Invert for the power-sustained-load-factor: sustained_load_factor
bisects h(n) = total power at n minus available power on
[1.0, N_CEILING] and returns the sustained-load-factor with its
bank_angle, the turning induced velocity, the power terms and a
note of "power-limited" or "power-excess above ceiling". Get the
same bank angle in one solve with max_bank_from_power.
6. Close the maneuver kinematics: bank_from_load_factor gives the
power-limited-bank-angle acos(1 / n); turn_rate and turn_radius
give omega and R_t at the sustained point. Verify omega * R_t = V
and cos(bank) = 1 / n.
7. Confirm determinism: repeated calls return bit-identical values and
the note strings are fixed, then run the contract test
scripts/test_rotorcraft_turn_performance.py.
## Worked example
Shared worked rotor (identical to the hover and forward-flight worked
rotors): R = 5.0 m (A = 78.5398 m2), m = 2200 kg so W = m * g0 =
21574.63 N, rho = 1.225 kg/m3, solidity sigma = 0.08, Cd0 = 0.012,
tip speed 220 m/s, f = 2.2 m2, k = 1.15. Sea level.
- Hover reference at V = 0: v_h = sqrt(W / (2 * rho * A)) = 10.5887
m/s at n = 1; at n = 2 the turn inflow is sqrt(2) * v_h =
14.9747 m/s.
- Banked turn at n = 2.0, V = 60 m/s (module outputs): thrust
T = 43149.3 N, turning induced velocity 3.73017 m/s, induced power
185097 W, profile power 122935 W, parasite power 291060 W, total
turn power 599092 W; bank angle acos(1/2) = 1.0472 rad (60 deg),
turn rate 0.283094 rad/s, turn radius 211.944 m. The induced
velocity at n = 2 is about twice the level-flight value 1.86778 m/s
at the same speed, and the level-flight total power of 460336 W
(the n = 1 identity, matching the forward-flight leaf worked
example) grows by about 138 kW to sustain the 2 g turn at 60 m/s.
- Second state, n = 1.5 at V = 40 m/s: induced velocity 4.18175 m/s,
induced power 155629 W, total 364804 W. Third inflow probe, n = 3.0
at V = 60 m/s: induced velocity 5.58195 m/s.
- Power-sustained maneuver: available power 600000 W at V = 60 m/s
gives sustained-load-factor 2.00491, bank angle 1.04861 rad
(60.081 deg), turning induced velocity 3.73929 m/s, induced power
186005 W, total power at the sustained point 600000 W, turn rate
0.28402 rad/s and turn radius 211.253 m; max_bank_from_power
returns 1.04861 rad.
- With available power 450000 W at V = 40 m/s the sustained-load-
factor falls to 1.86867 (rate 0.387015 rad/s, radius 103.355 m),
and at the same power and V = 50 m/s it falls further to 1.69094
(rate 0.267439 rad/s, radius 186.959 m): the parasite V**3 growth
cuts the sustained-load-factor as the speed rises at fixed power.
## Verification
- Confirm generalized_induced_velocity(2.0, 21574.63, 78.5398, 1.225,
60.0) returns 3.73017 m/s and that the n = 1, V = 0 and n = 2, V =
0 calls return 10.5887 and 14.9747 m/s (sqrt(2) times v_h).
- Confirm turn_power at n = 2, V = 60 m/s totals 599092 W and that the
n = 1 total at 60 m/s is 460336 W, equal to the forward-flight leaf
worked total at that speed.
- Confirm sustained_load_factor(600000.0, 21574.63, 78.5398, 1.225,
60.0, 0.08, 0.012, 220.0, 2.2) returns load_factor 2.00491 with note
"power-limited" and that turn_power at the returned load factor
reproduces the available power (round trip).
- Confirm every non-physical input raises ValueError: load factor
below 1, non-positive weight, area, rho, solidity, drag
coefficient, tip speed, k or available power, negative speed, a
ceiling at or below 1, and available power below the n = 1 total at
the speed (level flight not sustainable).
- Run the contract test offline: python3
scripts/test_rotorcraft_turn_performance.py (34 tests,
deterministic).
## Related leaves
- flight-mechanics/performance/rotorcraft-forward-flight-performance:
the level-flight Glauert inflow and power conventions this leaf
reuses at n = 1; its worked rotor and total power are identical.
- flight-mechanics/performance/rotorcraft-hover-performance: the hover
v_h reference and V = 0 limit of the turning inflow.
- flight-mechanics/performance/turn-performance: the fixed-wing
level-turn kinematics (omega, R_t, load factor from bank) for
aircraft without a rotor inflow model.
- flight-mechanics/performance/rotorcraft-vertical-climb-performance:
the bracket convention of the "power-excess above ceiling" note and
its climb power solves.
- flight-mechanics/performance/rotorcraft-range-endurance: fuel
closure on the level power curve, downstream of the turn power
estimate.
## Pitfalls
- Reusing the level-flight induced velocity in the turn: at n = 2 the
turning inflow is 3.73017 m/s against 1.86778 m/s level at 60 m/s,
so the power must be built on the n-times-weight thrust or the turn
is understated by a factor near n in the induced term.
- Forgetting the induced power factor: the induced term is k * n * W *
v_i with k = 1.15, not the ideal n * W * v_i; dropping k
understates P_i by 15 percent (185097 W against 160954 W at n = 2,
60 m/s).
- Feeding n into the profile or parasite power: the turn keeps the
rotor speed fixed and the free stream in the disk plane, so
profile_power and parasite_power do not depend on n; only the
induced term carries the load factor.
- Reading the excess case as a bisection result: when the total power
at n = N_CEILING stays below the available power, the sustained
solve returns load_factor = N_CEILING with note "power-excess above
ceiling"; the bracket convention does not extrapolate beyond the
ceiling.
- Ignoring the level-flight floor: an available power below the n = 1
total at the turn speed (460336 W at 60 m/s on the worked rotor)
raises ValueError, because no banked turn exists at a speed whose
level flight the power cannot sustain.
- Writing the compound terms with spaces: sustained-load-factor and
power-limited-bank-angle are the leaf's routing tokens; keep them
hyphenated in the description so they do not tokenize into generic
words owned by the fixed-wing turn leaf.
## Contract test
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_rotorcraft_turn_performance.py
It covers the turning-flight-inflow anchors at n = 1, 1.5, 2 and 3
against the level-flight Glauert and sqrt(n) * v_h identities, the
banked-turn-power breakdown anchors (induced 185097 W, profile
122935 W, parasite 291060 W, total 599092 W at n = 2, 60 m/s), the
n = 1 total power identity with the forward-flight leaf, the monotone
power and inflow behaviors, the sustained-load-factor solves with
their power round trips and fixed note strings, the kinematics
anchors with the omega * R_t = V and cos(bank) = 1 / n identities,
determinism of repeated calls, and ValueError rejection of every
non-physical input class in the spec validation list.
## Behavior contract (gate 3)
The leaf is deterministic: pure stdlib math, FIXED-COUNT bisection
schedules (BISECT_ITER = 120), no RNG, no network, no external
processes. The contract test above must pass in full before the leaf
is rated; its 34 test methods exercise every workflow step of this
SKILL.md and every validation item of the wave-41 spec.
## Compliance
- Standards referenced, not reproduced: 14 CFR Part 29 (far-29) is US
government work in the public domain; the momentum-theory relations
above are standard engineering methodology, summary-only per
standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!