Use when you must determine the rotorcraft fuel closure into hover endurance and cruise range and endurance: the hover power from the weight, the rotor disk area and the figure of merit, the exact weight-decay integration of the fuel burn into a closed-form hover endurance, and the cruise range and endurance at a chosen speed from an input power-required curve scaled with the average weight, together with the best-range and best-endurance speed picks. Produces the hover power and endurance, t...
Scanned 9/27/2026
Install to Claude Code
npx -y skills add ashfordeOU/aero-agent-skills --skill rotorcraft-range-endurance --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Rotorcraft Range Endurance?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ashfordeou-rotorcraft-range-endurance)More formats (shields.io, HTML) on the badges page.
---
name: rotorcraft-range-endurance
description: "Use when you must determine the rotorcraft fuel closure into hover endurance and cruise range and endurance: the hover power from the weight, the rotor disk area and the figure of merit, the exact weight-decay integration of the fuel burn into a closed-form hover endurance, and the cruise range and endurance at a chosen speed from an input power-required curve scaled with the average weight, together with the best-range and best-endurance speed picks. Produces the hover power and endurance, the cruise range and endurance, the fuel-flow rates, the specific range and the best-speed selection that gate the rotorcraft mission fuel check. Trigger: rotorcraft range endurance, hover endurance closure, cruise range closure, cruise endurance closure, rotorcraft fuel budget closure, specific range, best range speed, best endurance speed, average weight power scaling."
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-range-endurance, hover-endurance, cruise-endurance, power-required-fuel-closure, average-weight-power]
version: 0.1.0
author: AeroSkills
---
# Rotorcraft Range and Endurance (flight-mechanics/performance/rotorcraft-range-endurance)
Use when you must close the fuel budget of a rotorcraft into hover
endurance and cruise range and endurance. This leaf turns fuel into
time and distance: the hover power from the weight, the rotor disk
area and the figure of merit; the exact weight-decay integral that
turns the fuel mass into hover time; and, at a chosen cruise speed, the
range and endurance over the same fuel load from an input
power-required curve scaled with the average weight. It is the fuel
closure member of the rotorcraft performance pair: it pairs with
flight-mechanics/performance/rotorcraft-hover-performance (the rotor
power physics: induced velocity, ideal power and figure of merit at a
single weight, no fuel budget) and with flight-mechanics/performance/
rotorcraft-forward-flight-performance (the power-required curve and its
best-speed search, which this leaf consumes as its cruise power input).
The cruise power-required curve is an input here, not recomputed.
## Domain quick reference
All quantities are SI. The fuel burn rate follows the weight decay
dW/dt = -g0 * c * P, with g0 = 9.80665 m/s^2, c the specific fuel
consumption in kg/(s W), and P the power required at the current
weight.
- Disk area: A = PI * R^2, R the rotor radius in m.
- Hover power at a weight W (induced-dominated rotor, figure of merit
FM as the hover efficiency input): P = k_h * W^1.5 with k_h = 1 /
(FM * sqrt(2 * rho * A)), FM in (0, 1], default rho = 1.225 kg/m^3
at sea level.
- Weight at fuel burnout: W1 = W0 - g0 * m_f, with W0 the takeoff
weight and m_f the fuel mass in kg; the fuel load must leave W1 > 0.
- Hover endurance (exact integral of the weight decay): t = (2 / (g0 *
c * k_h)) * (1/sqrt(W1) - 1/sqrt(W0)), seconds.
- Fuel flow at a weight: mdot = c * P(W), kg/s.
- Specific range at a cruise point: SR = V / (g0 * c * P), metres of
range per kg of fuel.
- Best range speed over the curve: V maximizing SR; best endurance
speed: V minimizing P. Deterministic scans over the (V, P) pairs.
- Cruise fuel closure with the average-weight power scaling: P_avg =
P_ref * (W_avg / W_ref)^1.5 with W_avg = (W0 + W1) / 2, then R = V *
(W0 - W1) / (g0 * c * P_avg) and E = (W0 - W1) / (g0 * c * P_avg).
The W^1.5 power scaling reflects the induced-dominated rotor power;
the average-weight approximation follows the house average-ROC
convention of the climb-performance leaves.
- Default specific fuel consumption c = 1.0e-7 kg/(s W) (about 0.36
kg/kWh); pass the engine value when known.
- FAR 29 frames the rotorcraft certification context; the relations
above are standard engineering methodology, summary-only.
## Workflow
1. Fix the operating point: takeoff weight W0 in N, fuel load m_f in
kg, rotor radius R in m, density rho at the operating altitude,
rotor figure of merit FM and specific fuel consumption c.
2. Get the rotor disk area with disk_area(radius).
3. Compute the hover power constant with hover_power_constant(radius,
rho, figure_of_merit) and the hover power at the takeoff weight with
hover_power(weight_n, radius, rho, figure_of_merit).
4. Close the hover endurance fuel budget with hover_endurance(
weight_initial_n, fuel_mass_kg, radius, rho, figure_of_merit,
c_specific): the weight-decay power integration into hover time.
5. Get the fuel flow at the operating weights with fuel_flow(weight_n,
radius, rho, figure_of_merit, c_specific).
6. For cruise, take the power-required curve at the reference weight
from the forward-flight sibling. Evaluate the specific range at a
candidate speed with specific_range(v_ms, power_w), and pick the
best range speed with best_range_speed(power_curve) and the best
endurance speed with best_endurance_speed(power_curve) over the
(V, P) pairs.
7. Close the cruise fuel budget at the chosen speed with
cruise_range(v_ms, weight_initial_n, fuel_mass_kg, power_at_ref_w,
weight_ref_n, c_specific) and cruise_endurance(v_ms, ...), which
apply the average-weight power scaling to the reference power.
8. Confirm the deterministic checks with the contract test
scripts/test_rotorcraft_range_endurance.py.
## Worked example
Six-tonne class helicopter, W0 = 60000 N, fuel 1500 kg, rotor radius
8 m, sea level (rho = 1.225), FM 0.75, c = 1.0e-7 kg/(s W). Running
the module functions:
- disk_area(8.0) = 201.062 m^2.
- hover_power_constant(8.0) = 0.0600746 (SI).
- hover_power(60000, 8.0) = 882912 W (about 883 kW).
- fuel_flow(60000, 8.0) = 0.0882912 kg/s.
- W1 = 60000 - 9.80665 * 1500 = 45290.0 N; hover_endurance(60000,
1500, 8.0) = 20927.3 s = 5.81 h.
- Power-required curve at the reference weight W_ref = 60000 N,
(V m/s, P W): (40, 620000), (50, 560000), (60, 540000), (70, 555000),
(80, 600000). best_range_speed = 80 m/s, best_endurance_speed =
60 m/s.
- specific_range(60, 540000) = 113.302 m per kg of fuel.
- cruise_range(80, 60000, 1500, 600000, 60000) = 2433442 m = 2433 km.
- cruise_endurance(60, 60000, 1500, 540000, 60000) = 33797.8 s =
9.39 h.
## Verification
- Confirm disk_area(8.0) = 201.062 m^2 (within 0.01) and that a zero
or negative radius raises ValueError.
- Confirm hover_power_constant(8.0) = 0.0600746 (within 1e-5) and that
non-positive density or a figure of merit outside (0, 1] raises
ValueError.
- Confirm hover_power(60000, 8.0) = 882912 W (within 10), with
ValueErrors at zero weight, at FM 0 and at FM 1.5.
- Confirm fuel_flow(60000, 8.0) = 0.0882912 kg/s (within 1e-5) and the
identity fuel_flow = c * hover_power at any weight.
- Confirm hover_endurance(60000, 1500, 8.0) = 20927.3 s (within 1.0),
returns exactly 0.0 s with zero fuel, grows with fuel mass and with
figure of merit, and raises ValueError for fuel that zeroes the
weight and for negative fuel.
- Confirm specific_range(60, 540000) = 113.302 m/kg (within 0.01),
ValueErrors at zero speed and zero power, and monotone growth with
speed at a fixed power.
- Confirm best_range_speed and best_endurance_speed over the worked
curve return 80.0 and 60.0 m/s, reject an empty curve and any
non-positive pair, and match the argmax of specific range and the
argmin of power computed independently.
- Confirm cruise_range(80, 60000, 1500, 600000, 60000) = 2433442 m
(within 100) and cruise_endurance(60, 60000, 1500, 540000, 60000) =
33797.8 s (within 10). At a fixed cruise speed the reference power
sits in the denominator, so a lower reference power closes a longer
range (the fuel burns more slowly); across the worked curve the
lower-power lower-speed point closes a shorter range than the
best-range point, and the weight-scaling (W_avg/W_ref)^1.5 is a
strict reduction below the reference weight, so the scaled range is
longer than the no-scaling estimate.
- Confirm determinism: repeated runs return identical floats (no RNG,
stdlib only).
## Pitfalls
- Feeding the hover-power figure of merit into a from-geometry rotor
build: this leaf takes FM (and the disk area) as inputs and computes
power and fuel closure only; the rotor power physics and geometry
terms live in the hover-performance and forward-flight siblings.
- Treating the cruise power as constant over the whole fuel burn:
induced-dominated rotor power decays with weight, so the closure
must scale the reference power with (W_avg/W_ref)^1.5; using the
takeoff power under-predicts the cruise range.
- Burning the fuel load below positive weight: the weight at burnout
W1 = W0 - g0 * m_f must stay above zero, and the module raises
ValueError when the fuel mass violates that.
- Confusing the two best-speed picks: best range speed maximizes the
specific range (speed per fuel flow), best endurance speed minimizes
the power; on the worked curve they sit at 80 m/s and 60 m/s.
- Mixing units: weight must be in N (mass in kg times g0), not in kgf,
and the specific fuel consumption is in kg/(s W), not kg/(kW h);
pass c = 1.0e-7 default only when the engine value is unknown.
## Related leaves
- flight-mechanics/performance/rotorcraft-hover-performance: the rotor
power physics at a single weight (induced velocity, ideal power,
profile power, figure of merit) that this leaf consumes as its hover
power input.
- flight-mechanics/performance/rotorcraft-forward-flight-performance:
the power-required curve and its best-speed search over the physical
curve, which this leaf takes as the cruise power input; the two
leaves together gate a rotorcraft mission performance check.
- flight-mechanics/performance/breguet-range and
flight-mechanics/performance/breguet-endurance: the fixed-wing
cruise fuel-closure leaves with a fixed lift-to-drag factor; this
leaf owns the rotorcraft fuel closure with average-weight power
scaling instead.
- flight-mechanics/performance/rotorcraft-vertical-climb-performance:
the rotorcraft vertical flight closure that consumes the same hover
power law in climb checks.
## Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 skills/flight-mechanics/performance/rotorcraft-range-endurance/scripts/test_rotorcraft_range_endurance.py
The test covers the worked example against the spec anchors (disk area
201.062 m^2, hover power constant 0.0600746, hover power 882912 W,
fuel flow 0.0882912 kg/s, hover endurance 20927.3 s, cruise range
2433442 m, cruise endurance 33797.8 s, specific range 113.302 m/kg),
the zero-fuel and burnout bounds, the weight-scaling identities of the
cruise closure, the best-speed argmax and argmin identities over the
power-required curve, the fuel-flow equals c times hover power
identity, run-to-run determinism, absence of random or external
imports, and ValueError rejection of every non-physical input in the
verification list.
## Compliance
- Standards referenced, not reproduced: FAR 29 (rotorcraft
airworthiness, certification context only). The fuel-closure
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!