Rotorcraft Hover in Ground Effect (flight-mechanics/performance/rotorcraft-hover-ground-effect)
Use when you must compute the hover-in-ground-effect performance of a
rotorcraft rotor hovering over a flat ground plane: the induced-power
reduction from the rotor height above the ground and the rotor radius,
the IGE induced power, the IGE total hover power, the power margin
against an available power, and the largest rotor height at which the
rotorcraft can hover with that power. This leaf fills the rotorcraft
gap in the library: the out-of-ground-effect hover sibling
(flight-mechanics/performance/rotorcraft-hover-performance) explicitly
defers hover in ground effect, and the ground-effect leaf in the
aerodynamics family covers the fixed-wing wing-in-ground-effect
configuration, a different physical problem with different outputs.
The rotor model here applies the classic Cheeseman-style height
correction to the induced power only; profile power is unchanged in
ground effect. No recirculation, no partial ground contact, no vertical
climb and no forward flight: those belong to sibling leaves.
Domain quick reference
All quantities are SI. Rotor thrust equals the rotorcraft weight in
hover: T = m * g0, g0 = 9.80665 m/s^2.
- Disk area: A = PI * R^2.
- Ideal induced velocity (momentum theory, uniform inflow): v_h =
sqrt(T / (2 * rho * A)).
- Ideal induced power: P_ideal = T * v_h.
- Profile power (average section drag model): P_profile = (1/8) * rho *
sigma * Cd0 * A * Vtip^3, with sigma the rotor solidity, Cd0 the mean
blade drag coefficient and Vtip the tip speed. The profile power does
not change in ground effect.
- Ground-effect factor (Cheeseman-style height correction on the
induced velocity, and therefore on the induced power at constant
thrust): k_ige = 1 - (R / (4z))^2, with z the rotor height above the
ground. Valid for z / R >= 0.5; below that the point model diverges.
At z = R the factor is 0.9375; at z = 0.5R it is exactly 0.75; it
increases toward 1 as the rotor climbs.
- IGE induced power: P_i_ige = P_ideal * k_ige.
- IGE total hover power: P_total_ige = k * P_ideal * k_ige +
P_profile, with k the induced power factor (default 1.15, same
convention as the hover sibling).
- OGE total hover power: P_total_oge = k * P_ideal + P_profile. If the
available power covers P_total_oge the rotorcraft can hover at any
height; otherwise ground effect sets a hover ceiling.
- Power margin: margin = P_available - P_total_ige.
- Maximum hover height: the largest z (z / R >= 0.5) where P_total_ige
equals the available power. The IGE total power grows with z and
asymptotes to the OGE value, so the root is unique; the logic bisects
z over [0.5R, 50R].
- Default density rho = 1.225 kg/m^3 is sea level; pass the density at
the chosen altitude to re-evaluate the check there.
- FAR 29 frames the rotorcraft certification context; the relations
above are standard engineering methodology, summary-only.
Workflow
- Fix the operating point: rotor radius R, rotorcraft mass m, height z
above the ground, density rho, solidity sigma, mean blade drag
coefficient Cd0, tip speed Vtip, induced power factor k and the
available power.
- Get the disk area with disk_area(radius) and the thrust T = m * G0
(hover thrust equals weight).
- Compute the ideal induced velocity with hover_induced_velocity(thrust,
area, rho) and the ideal induced power P_ideal = thrust * v_h.
- Compute the ground-effect factor with ground_effect_factor(height,
radius); it raises ValueError when z / R falls below the 0.5 floor.
- Combine with ige_induced_power(P_ideal, factor) and
ige_total_power(P_ideal, profile_power, factor, k) for the IGE power
terms, and with oge_total_power(P_ideal, profile_power, k) for the
OGE reference. The profile power input comes from the same section
drag model used by the hover sibling.
- Compare against the available power with power_margin(available,
required).
- If the available power is below the OGE total, find the IGE hover
ceiling with max_hover_height(weight_kg, radius, available_power,
...); it returns None when OGE hover is possible and raises
ValueError when the power is too low even in full ground effect.
- For a one-call verdict run hover_ground_effect(weight_kg, radius,
height, ...), which returns the full result dict and propagates
every ValueError from the primitives.
- Confirm the deterministic checks with the contract test
scripts/test_rotorcraft_hover_ground_effect.py.
Worked example
A helicopter at 2200 kg mass with a 5.0 m radius rotor at sea level,
hovering at z = 5.0 m (z / R = 1.0): rho = 1.225 kg/m^3, solidity 0.08,
Cd0 = 0.012, tip speed 220 m/s, k = 1.15. Running
hover_ground_effect(2200.0, 5.0, 5.0, available_power = 360000.0):
- Thrust: 2200 * 9.80665 = 21574.63 N.
- Disk area: PI * 5.0^2 = 78.54 m^2.
- Hover induced velocity: v_h = 10.589 m/s (hand estimate about 10.6
m/s, within the 9.5-11.5 m/s band).
- Ideal induced power: 228448 W (within 200000-260000 W).
- Profile power: 122935 W (within 100000-150000 W).
- Ground-effect factor: k_ige = 0.9375 at z / R = 1.0 (within
0.90-0.97); 0.9844 at z / R = 2.0 and exactly 0.75 at z / R = 0.5.
- IGE induced power: 214170 W, the ideal power times the factor.
- IGE total power: 1.15 * 228448 * 0.9375 + 122935 = 369230 W (within
350000-390000 W).
- OGE total power: 1.15 * 228448 + 122935 = 385650 W (within
350000-430000 W), the ceiling the IGE curve approaches as z grows.
- Power margin at 360000 W available: 360000 - 369230 = -9230 W, so
the rotorcraft cannot hover at z = 5.0 m with 360 kW.
- Maximum hover height at 360000 W: max_hover_height returns 4.000 m
(within 3.0-5.0 m): the rotorcraft can hover in ground effect only
below about 4 m with that power.
- At 400000 W available (above the 385650 W OGE total) max_hover_height
returns None: hover is possible at any height.
Verification
- Confirm ground_effect_factor(5.0, 5.0) equals 0.9375 exactly and
ground_effect_factor(2.5, 5.0) equals 0.75 exactly (z / R = 0.5).
- Confirm ige_induced_power equals the ideal power times the factor and
ige_total_power equals k * P_ideal * factor + P_profile for the same
inputs.
- Confirm the factor increases toward 1 as the height grows, and that
the IGE total power is always below the OGE total for a factor under
1, recovering it exactly at factor 1.
- Confirm max_hover_height returns about 4.0 m at 360 kW, returns None
at and above the OGE total power, and rejects available powers below
the IGE total at the lowest valid height.
- Confirm the bisected ceiling is a true root: the IGE total power at
the returned height equals the available power to within 1 W.
- Confirm determinism: repeated runs return identical floats (no RNG,
stdlib only, no external imports).
- Confirm every non-positive radius, thrust, density, solidity, drag
coefficient, tip speed and induced power factor, every negative
power, every factor outside (0, 1], and every z / R below 0.5 raises
ValueError.
- Run the contract test offline: python3
scripts/test_rotorcraft_hover_ground_effect.py (32 tests,
deterministic).
Pitfalls
- Calling the ground-effect factor below the validity floor: the
Cheeseman-style point model diverges for z/R < 0.5 and
ground_effect_factor raises ValueError there; z/R = 0.5 is exactly 0.75
and z/R = 1 is 0.9375.
- Reading max_hover_height None as an error: None means the available power
covers the OGE total, so the rotorcraft can hover at any height; a
ValueError (not None) is raised only when the power is too low even in
full ground effect.
- Applying the factor to profile power: ground effect modifies the induced
power only; P_profile is unchanged, and the IGE total is kP_idealfactor
- Treating the IGE ceiling as exact without the root check: the returned
height is a bisection root where IGE total power equals the available
power to within 1 W; verify that equality before quoting the hover
ceiling.
- Factor outside (0, 1] or non-positive radius, thrust, density, solidity,
drag coefficient, tip speed or induced power factor raises ValueError.
Related leaves
- flight-mechanics/performance/rotorcraft-hover-performance: the
out-of-ground-effect hover sibling (momentum-theory induced velocity,
ideal and profile power, total power with the induced power factor)
that this leaf extends into ground effect. Its body defers hover in
ground effect here.
- aerodynamics/ground-effects/ground-effect: the fixed-wing
wing-in-ground-effect leaf (induced drag and lift change for a wing
from height to span ratio and image vortices), a different physical
configuration with different outputs. This leaf owns the rotor-disk
hover-in-ground-effect induced-power reduction only.
- flight-mechanics/performance/rotorcraft-forward-flight-performance:
the sibling rotor leaf for the speed-dependent power breakdown used
after the hover check.
- flight-mechanics/performance/rotorcraft-vertical-climb-performance:
the rotorcraft vertical climb sibling, adjacent to the hover power
check in a rotorcraft performance pass.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_rotorcraft_hover_ground_effect.py
The test covers the worked example with the spec magnitude bounds
(induced velocity 9.5-11.5 m/s, ideal power 200000-260000 W, profile
power 100000-150000 W, IGE total 350000-390000 W, OGE total
350000-430000 W, ceiling 3.0-5.0 m), the exact factor anchors (0.9375
at z / R = 1, 0.75 at z / R = 0.5, 0.984375 at z / R = 2), the
Cheeseman closed form and its monotonicity, the induced-power-factor
model and its default constant, the OGE-IGE ordering and unit-factor
recovery, the ceiling root consistency and None return above the OGE
total, the convenience dict exact keys and primitive consistency,
run-to-run determinism, absence of random or third-party imports, and
ValueError rejection of every non-physical input in the validation
list.
Compliance
- Standards referenced, not reproduced: FAR 29 (rotorcraft
airworthiness, certification context only). The Cheeseman-style
ground-effect relations above are standard engineering methodology,
summary-only per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: rotorcraft-hover-ground-effect3description: Use when you must compute the hover-in-ground-effect performance of a rotorcraft rotor: the Cheeseman-style ground-effect reduction factor for the rotor induced power from the height above the ground and the rotor radius, the in-ground-effect induced power, the in-ground-effect total hover power from the induced-power factor and the unchanged profile power, the power margin against an available power, and the maximum rotor height at which the rotorcraft can still hover with that available power. Produces the ground-effect factor, the IGE induced and total hover power, the IGE power margin and the maximum hover height that gate a rotorcraft hover check in ground effect. Trigger: rotorcraft-hover-ground-effect, hover-in-ground-effect, ige-power-reduction, ground-effect-factor, ige-hover-ceiling, rotor-height-ratio.4license: Apache-2.05---67# Rotorcraft Hover in Ground Effect (flight-mechanics/performance/rotorcraft-hover-ground-effect)89Use when you must compute the hover-in-ground-effect performance of a10rotorcraft rotor hovering over a flat ground plane: the induced-power11reduction from the rotor height above the ground and the rotor radius,12the IGE induced power, the IGE total hover power, the power margin13against an available power, and the largest rotor height at which the14rotorcraft can hover with that power. This leaf fills the rotorcraft15gap in the library: the out-of-ground-effect hover sibling16(flight-mechanics/performance/rotorcraft-hover-performance) explicitly17defers hover in ground effect, and the ground-effect leaf in the18aerodynamics family covers the fixed-wing wing-in-ground-effect19configuration, a different physical problem with different outputs.20The rotor model here applies the classic Cheeseman-style height21correction to the induced power only; profile power is unchanged in22ground effect. No recirculation, no partial ground contact, no vertical23climb and no forward flight: those belong to sibling leaves.2425## Domain quick reference2627All quantities are SI. Rotor thrust equals the rotorcraft weight in28hover: T = m * g0, g0 = 9.80665 m/s^2.2930- Disk area: A = PI * R^2.31- Ideal induced velocity (momentum theory, uniform inflow): v_h =32 sqrt(T / (2 * rho * A)).33- Ideal induced power: P_ideal = T * v_h.34- Profile power (average section drag model): P_profile = (1/8) * rho *35 sigma * Cd0 * A * Vtip^3, with sigma the rotor solidity, Cd0 the mean36 blade drag coefficient and Vtip the tip speed. The profile power does37 not change in ground effect.38- Ground-effect factor (Cheeseman-style height correction on the39 induced velocity, and therefore on the induced power at constant40 thrust): k_ige = 1 - (R / (4*z))^2, with z the rotor height above the41 ground. Valid for z / R >= 0.5; below that the point model diverges.42 At z = R the factor is 0.9375; at z = 0.5*R it is exactly 0.75; it43 increases toward 1 as the rotor climbs.44- IGE induced power: P_i_ige = P_ideal * k_ige.45- IGE total hover power: P_total_ige = k * P_ideal * k_ige +46 P_profile, with k the induced power factor (default 1.15, same47 convention as the hover sibling).48- OGE total hover power: P_total_oge = k * P_ideal + P_profile. If the49 available power covers P_total_oge the rotorcraft can hover at any50 height; otherwise ground effect sets a hover ceiling.51- Power margin: margin = P_available - P_total_ige.52- Maximum hover height: the largest z (z / R >= 0.5) where P_total_ige53 equals the available power. The IGE total power grows with z and54 asymptotes to the OGE value, so the root is unique; the logic bisects55 z over [0.5*R, 50*R].56- Default density rho = 1.225 kg/m^3 is sea level; pass the density at57 the chosen altitude to re-evaluate the check there.58- FAR 29 frames the rotorcraft certification context; the relations59 above are standard engineering methodology, summary-only.6061## Workflow62631. Fix the operating point: rotor radius R, rotorcraft mass m, height z64 above the ground, density rho, solidity sigma, mean blade drag65 coefficient Cd0, tip speed Vtip, induced power factor k and the66 available power.672. Get the disk area with disk_area(radius) and the thrust T = m * G068 (hover thrust equals weight).693. Compute the ideal induced velocity with hover_induced_velocity(thrust,70 area, rho) and the ideal induced power P_ideal = thrust * v_h.714. Compute the ground-effect factor with ground_effect_factor(height,72 radius); it raises ValueError when z / R falls below the 0.5 floor.735. Combine with ige_induced_power(P_ideal, factor) and74 ige_total_power(P_ideal, profile_power, factor, k) for the IGE power75 terms, and with oge_total_power(P_ideal, profile_power, k) for the76 OGE reference. The profile power input comes from the same section77 drag model used by the hover sibling.786. Compare against the available power with power_margin(available,79 required).807. If the available power is below the OGE total, find the IGE hover81 ceiling with max_hover_height(weight_kg, radius, available_power,82 ...); it returns None when OGE hover is possible and raises83 ValueError when the power is too low even in full ground effect.848. For a one-call verdict run hover_ground_effect(weight_kg, radius,85 height, ...), which returns the full result dict and propagates86 every ValueError from the primitives.879. Confirm the deterministic checks with the contract test88 scripts/test_rotorcraft_hover_ground_effect.py.8990## Worked example9192A helicopter at 2200 kg mass with a 5.0 m radius rotor at sea level,93hovering at z = 5.0 m (z / R = 1.0): rho = 1.225 kg/m^3, solidity 0.08,94Cd0 = 0.012, tip speed 220 m/s, k = 1.15. Running95hover_ground_effect(2200.0, 5.0, 5.0, available_power = 360000.0):9697- Thrust: 2200 * 9.80665 = 21574.63 N.98- Disk area: PI * 5.0^2 = 78.54 m^2.99- Hover induced velocity: v_h = 10.589 m/s (hand estimate about 10.6100 m/s, within the 9.5-11.5 m/s band).101- Ideal induced power: 228448 W (within 200000-260000 W).102- Profile power: 122935 W (within 100000-150000 W).103- Ground-effect factor: k_ige = 0.9375 at z / R = 1.0 (within104 0.90-0.97); 0.9844 at z / R = 2.0 and exactly 0.75 at z / R = 0.5.105- IGE induced power: 214170 W, the ideal power times the factor.106- IGE total power: 1.15 * 228448 * 0.9375 + 122935 = 369230 W (within107 350000-390000 W).108- OGE total power: 1.15 * 228448 + 122935 = 385650 W (within109 350000-430000 W), the ceiling the IGE curve approaches as z grows.110- Power margin at 360000 W available: 360000 - 369230 = -9230 W, so111 the rotorcraft cannot hover at z = 5.0 m with 360 kW.112- Maximum hover height at 360000 W: max_hover_height returns 4.000 m113 (within 3.0-5.0 m): the rotorcraft can hover in ground effect only114 below about 4 m with that power.115- At 400000 W available (above the 385650 W OGE total) max_hover_height116 returns None: hover is possible at any height.117118## Verification119120- Confirm ground_effect_factor(5.0, 5.0) equals 0.9375 exactly and121 ground_effect_factor(2.5, 5.0) equals 0.75 exactly (z / R = 0.5).122- Confirm ige_induced_power equals the ideal power times the factor and123 ige_total_power equals k * P_ideal * factor + P_profile for the same124 inputs.125- Confirm the factor increases toward 1 as the height grows, and that126 the IGE total power is always below the OGE total for a factor under127 1, recovering it exactly at factor 1.128- Confirm max_hover_height returns about 4.0 m at 360 kW, returns None129 at and above the OGE total power, and rejects available powers below130 the IGE total at the lowest valid height.131- Confirm the bisected ceiling is a true root: the IGE total power at132 the returned height equals the available power to within 1 W.133- Confirm determinism: repeated runs return identical floats (no RNG,134 stdlib only, no external imports).135- Confirm every non-positive radius, thrust, density, solidity, drag136 coefficient, tip speed and induced power factor, every negative137 power, every factor outside (0, 1], and every z / R below 0.5 raises138 ValueError.139- Run the contract test offline: python3140 scripts/test_rotorcraft_hover_ground_effect.py (32 tests,141 deterministic).142143## Pitfalls144145- Calling the ground-effect factor below the validity floor: the146 Cheeseman-style point model diverges for z/R < 0.5 and147 ground_effect_factor raises ValueError there; z/R = 0.5 is exactly 0.75148 and z/R = 1 is 0.9375.149- Reading max_hover_height None as an error: None means the available power150 covers the OGE total, so the rotorcraft can hover at any height; a151 ValueError (not None) is raised only when the power is too low even in152 full ground effect.153- Applying the factor to profile power: ground effect modifies the induced154 power only; P_profile is unchanged, and the IGE total is k*P_ideal*factor155 + P_profile.156- Treating the IGE ceiling as exact without the root check: the returned157 height is a bisection root where IGE total power equals the available158 power to within 1 W; verify that equality before quoting the hover159 ceiling.160- Factor outside (0, 1] or non-positive radius, thrust, density, solidity,161 drag coefficient, tip speed or induced power factor raises ValueError.162163## Related leaves164165- flight-mechanics/performance/rotorcraft-hover-performance: the166 out-of-ground-effect hover sibling (momentum-theory induced velocity,167 ideal and profile power, total power with the induced power factor)168 that this leaf extends into ground effect. Its body defers hover in169 ground effect here.170- aerodynamics/ground-effects/ground-effect: the fixed-wing171 wing-in-ground-effect leaf (induced drag and lift change for a wing172 from height to span ratio and image vortices), a different physical173 configuration with different outputs. This leaf owns the rotor-disk174 hover-in-ground-effect induced-power reduction only.175- flight-mechanics/performance/rotorcraft-forward-flight-performance:176 the sibling rotor leaf for the speed-dependent power breakdown used177 after the hover check.178- flight-mechanics/performance/rotorcraft-vertical-climb-performance:179 the rotorcraft vertical climb sibling, adjacent to the hover power180 check in a rotorcraft performance pass.181182## Behavior contract (gate 3)183184Run the deterministic contract test (stdlib unittest, offline):185186 python3 scripts/test_rotorcraft_hover_ground_effect.py187188The test covers the worked example with the spec magnitude bounds189(induced velocity 9.5-11.5 m/s, ideal power 200000-260000 W, profile190power 100000-150000 W, IGE total 350000-390000 W, OGE total191350000-430000 W, ceiling 3.0-5.0 m), the exact factor anchors (0.9375192at z / R = 1, 0.75 at z / R = 0.5, 0.984375 at z / R = 2), the193Cheeseman closed form and its monotonicity, the induced-power-factor194model and its default constant, the OGE-IGE ordering and unit-factor195recovery, the ceiling root consistency and None return above the OGE196total, the convenience dict exact keys and primitive consistency,197run-to-run determinism, absence of random or third-party imports, and198ValueError rejection of every non-physical input in the validation199list.200201## Compliance202203- Standards referenced, not reproduced: FAR 29 (rotorcraft204 airworthiness, certification context only). The Cheeseman-style205 ground-effect relations above are standard engineering methodology,206 summary-only per standards-map.yaml.207- compliance: STANDARDS-REF, gated: false.