Landing Gear Height Sizing (vehicle-design/sizing/landing-gear-height-sizing)
Use when the task is selecting the vertical landing gear geometry of a
tricycle-gear aircraft at the conceptual level: solving the static ground
line from the ground clearance constraints, setting the main and nose gear
heights that level the cabin waterline over the wheelbase, and reporting the
clearance margins and the height verdict. This leaf implements a closed-form
trigonometric model in pure Python, stdlib only. It pairs with
vehicle-design/sizing/landing-gear-layout, which takes the solved gear
heights as given inputs to its tipback, tail strike clearance angle and
lateral turnover angle checks, and with vehicle-design/mass-properties/
cg-envelope, the source of the CG travel band that fixes the design CG used
in the static load share check.
Domain quick reference
- Body frame at the level attitude: stations x in metres aft of the fuselage
datum, z in metres positive up from the main gear attach plane, the
horizontal plane through the main gear attach point.
- Clearance of a hard point during a nose-up rotation theta about the main
gear contact: c(theta) = (H_gl + z_body) * cos(theta) - (x_point - x_mg) *
sin(theta). At the level attitude (theta = 0) the clearance is H_gl +
z_body.
- Required ground line from one point at one attitude: H_gl >=
clearance_req / cos(theta) + (x_point - x_mg) * tan(theta) - z_body. The
single closed form holds at theta = 0 and at any rotation angle in the
design band.
- Static ground line: H_gl = max over all hard points and all required
attitudes of the required ground line. The tail cone lowest point with a
rotation clearance is typically the aft binding case; a nacelle or
propeller point forward of the main gear contact binds at the level
attitude.
- Gear heights: main gear height = H_gl (the main gear is vertical, contact
directly below the attach point); nose gear height = H_gl + z_na. The
attach heights differ by exactly z_na, so the cabin waterline is level
over the wheelbase.
- Tail contact height of the solved geometry: h_tail_contact = H_gl +
z_tail. The layout sibling relation tan(theta_ts) = h_tail_contact /
(x_tail - x_mg) gives the tail strike angle of the solved geometry and the
rotation margin theta_ts - theta_rot.
- Propeller disc lowest point body height: z_hub - radius.
- Nose gear static load share at the design CG from the wheelbase moment
balance: P_n / W = (x_mg - x_cg) / (x_mg - x_ng); the main gear share
complements it to 1. Feasibility only: the design CG must sit strictly
between the contacts.
- Units are SI: m, deg, dimensionless fractions. All angles enter through
math.radians via the module constant DEG2RAD.
- FAR-25 and CS-25 frame the transport landing gear context; the relations
above are standard conceptual design methodology (Raymer, Gudmundsson,
Sadraey, Torenbeek, landing gear chapters), summary-only, never
reproduced.
Workflow
- Fix the wheelbase and hard point geometry: nose gear station x_ng, main
gear station x_mg, and the body height z_body, station and required
clearances of every hard point (tail cone, nacelle, propeller) that
constrains the ground line.
- Solve the static-ground-line with static_ground_line over the hard
points and the design rotation attitude, which returns H_gl and the
binding point name.
- Derive the main and nose gear heights with gear_heights from H_gl and
the nose gear attach offset z_na.
- Report the achieved clearance and margin of every hard point at both
attitudes with clearance_at_attitude and clearance_margin.
- Evaluate the tail strike margin of the solved geometry with
tail_strike_angle_deg on the solved tail contact height h_tail_contact =
H_gl + z_tail, and compare it against the design rotation attitude.
- Check the nose gear static load share at the design CG with
static_load_share, confirming the CG sits strictly inside the wheelbase.
- Issue the height verdict: every required margin is non-negative and both
gear heights are positive, confirmed by the contract test
scripts/test_landing_gear_height_sizing.py.
Worked example
Reference aircraft: twin-turboprop utility transport (King Air 350 class
scale, representative conceptual geometry). Nose gear contact at x_ng =
1.40 m, main gear contact at x_mg = 7.40 m (wheelbase 6.00 m), design CG at
x_cg = 6.80 m. Design rotation attitude 10.0 deg about the main gear
contact. Nose gear attach point 1.00 m below the main gear attach plane
(z_na = -1.00 m). Tail cone lowest point at x_tail = 12.40 m (5.00 m aft of
the main gear contact) with body height z_tail = -0.45 m and a required
rotation clearance of 0.25 m. Propeller disc lowest point from a hub center
body height of 0.10 m and a disc radius of 1.15 m (z = -1.05 m) at station
4.90 m with a required level clearance of 0.20 m. Nacelle lowest point at
z = -0.60 m, station 5.30 m, with a required level clearance of 0.15 m and a
required rotation clearance of 0.15 m.
- Required ground lines: tail cone level 0.450000000000 m, tail cone
rotation 1.585491556514 m, propeller level 1.250000000000 m, nacelle
level 0.750000000000 m, nacelle rotation 0.382027332295 m. The tail cone
rotation constraint governs: H_gl = 1.585491556514 m.
- Main gear height h_mg = H_gl = 1.585491556514 m. Nose gear height h_ng =
H_gl + z_na = 0.585491556514 m. Height difference h_mg - h_ng =
1.000000000000 m, exactly -z_na.
- Tail contact height h_tail_contact = H_gl + z_tail = 1.135491556514 m at
arm a_t = 5.00 m. Tail strike angle theta_ts = 12.794763238232 deg, a
rotation margin of 2.794763238232 deg over the 10.0 deg design rotation.
- Margins: tail rotation margin 0.000000000000 m (the governing constraint
binds exactly), propeller level margin 0.335491556514 m, nacelle level
margin 0.835491556514 m, nacelle rotation margin 1.185180898483 m.
- Static load share: nose share (7.40 - 6.80) / 6.00 = 0.100000000000, main
share 0.900000000000, sum 1.000000000000. Both gears carry positive load.
- Height verdict: every required margin is non-negative and both gear
heights are positive, so the height verdict is clearance-ok.
Verification
- Confirm static_ground_line on the worked points returns H_gl =
1.585491556514 within 1e-9 with binding point "tail cone lowest point".
- Confirm gear_heights(1.585491556514, -1.00) returns main_gear_height
1.585491556514, nose_gear_height 0.585491556514 and height_difference
1.000000000000 within 1e-9.
- Confirm the tail rotation clearance recomputed from H_gl equals 0.25 m
within 1e-9 (identity I1, the binding constraint round trip), and that
the tangent algebra identities I2 and I3 hold within tolerance.
- Confirm tail_strike_angle_deg(1.135491556514, 5.00) returns
12.794763238232 deg within 1e-6 and the rotation margin is positive.
- Confirm static_load_share(6.80, 7.40, 1.40) returns 0.100000000000 within
1e-12 and complements the main share to 1.
- Confirm every ValueError rejection: negative clearance requirements,
rotation angle outside (0, 25] deg, wheelbase not positive, empty point
list, non-positive ground line, non-positive nose gear height, and
non-positive propeller radius.
- Run the contract test offline: python3
scripts/test_landing_gear_height_sizing.py (34 tests, deterministic).
Related leaves
- vehicle-design/sizing/landing-gear-layout: takes the solved gear heights
as given inputs to the tipback angle, tail strike clearance angle and
lateral turnover angle checks; this leaf is the inverse of its tail
strike identity.
- vehicle-design/sizing/landing-gear-sizing: sizes the static strut loads,
the nose and main gear CG load split and the shock absorber stroke once
the heights and layout are fixed.
- vehicle-design/mass-properties/cg-envelope: the CG travel band source for
the design CG used in the static load share feasibility check.
- vehicle-design/sizing/propeller-sizing: the propeller diameter and blade
count selection, and the installation clearance check of a given hub
height, downstream of the height this leaf solves.
Pitfalls
- Solving the ground line from the level attitude only: a point clear at
the level attitude can still strike the ground during rotation, since
every aft hard point drops as (H_gl + z_body) * cos(theta) - (x_point -
x_mg) * sin(theta); the tail cone rotation requirement governs the worked
example at 1.585491556514 m against its 0.450000000000 m level
requirement.
- Treating a forward point's rotation clearance as binding: a point forward
of the main gear contact (arm x_point - x_mg negative) rises during
rotation, so its level-attitude clearance is the binding case, not its
rotation clearance (identity I6 in the contract test).
- Confusing the small-angle rise with the exact rise: the tangent rise
(x_tail - x_mg) * tan(theta_rot) understates the exact rise
h_tail_contact - c_tail by c_tail * (1/cos(theta_rot) - 1), about 1.5% of
the exact rise at 10 deg in the worked example (identity I3); use the
exact cosine and sine form for the ground line solve, not the tangent
approximation.
- Feeding the layout sibling's tail strike angle formula the wrong contact
height: this leaf solves h_tail_contact = H_gl + z_tail as an output; the
layout sibling's tail_strike_clearance_angle takes h_tail_contact as a
given input. Do not reuse a contact height from another aircraft
configuration.
- Skipping the static load share feasibility check: a solved geometry with
positive gear heights and clearance margins can still be infeasible if
the design CG does not sit strictly between the nose and main gear
contacts; static_load_share raises ValueError in that case rather than
returning a share outside [0, 1].
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_landing_gear_height_sizing.py
The test covers the worked static-ground-line solve and its per-constraint
required ground lines, the gear height derivation and the leveling
identity, the achieved clearance and margin of every hard point at both
attitudes, the tail strike angle and rotation margin of the solved
geometry, the static load share and its complement, the propeller low
point, the closed-form identities I1 through I6, the level-attitude round
trip, determinism of repeated solves, module constant fixity, and
ValueError rejection of every non-physical input listed in the spec
validation list.
Compliance
- Standards referenced, not reproduced: 14 CFR Part 25 and CS-25 frame the
transport landing gear context; the height-selection relations above are
standard conceptual design methodology, summary-only per
standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: landing-gear-height-sizing3description: Use when you must select the vertical landing gear geometry of a tricycle-gear aircraft at the conceptual level: solve the static-ground-line from the tail-cone-clearance margin at the design rotation attitude about the main gear contact, compute the main-gear-height and the nose-gear-height that level the cabin waterline over the wheelbase, verify the nacelle and propeller clearances at the level and rotated attitudes, and check the nose gear static load share at the design CG. Produces the static-ground-line, the main and nose gear heights, the achieved tail cone, nacelle and propeller clearance margins at both attitudes, the tail strike margin of the solved geometry, and the height verdict that gates the gear configuration. Trigger: landing-gear-height, static-ground-line, gear-height-selection, tail-cone-clearance, rotation-clearance-margin.4license: Apache-2.05---67# Landing Gear Height Sizing (vehicle-design/sizing/landing-gear-height-sizing)89Use when the task is selecting the vertical landing gear geometry of a10tricycle-gear aircraft at the conceptual level: solving the static ground11line from the ground clearance constraints, setting the main and nose gear12heights that level the cabin waterline over the wheelbase, and reporting the13clearance margins and the height verdict. This leaf implements a closed-form14trigonometric model in pure Python, stdlib only. It pairs with15vehicle-design/sizing/landing-gear-layout, which takes the solved gear16heights as given inputs to its tipback, tail strike clearance angle and17lateral turnover angle checks, and with vehicle-design/mass-properties/18cg-envelope, the source of the CG travel band that fixes the design CG used19in the static load share check.2021## Domain quick reference2223- Body frame at the level attitude: stations x in metres aft of the fuselage24 datum, z in metres positive up from the main gear attach plane, the25 horizontal plane through the main gear attach point.26- Clearance of a hard point during a nose-up rotation theta about the main27 gear contact: c(theta) = (H_gl + z_body) * cos(theta) - (x_point - x_mg) *28 sin(theta). At the level attitude (theta = 0) the clearance is H_gl +29 z_body.30- Required ground line from one point at one attitude: H_gl >=31 clearance_req / cos(theta) + (x_point - x_mg) * tan(theta) - z_body. The32 single closed form holds at theta = 0 and at any rotation angle in the33 design band.34- Static ground line: H_gl = max over all hard points and all required35 attitudes of the required ground line. The tail cone lowest point with a36 rotation clearance is typically the aft binding case; a nacelle or37 propeller point forward of the main gear contact binds at the level38 attitude.39- Gear heights: main gear height = H_gl (the main gear is vertical, contact40 directly below the attach point); nose gear height = H_gl + z_na. The41 attach heights differ by exactly z_na, so the cabin waterline is level42 over the wheelbase.43- Tail contact height of the solved geometry: h_tail_contact = H_gl +44 z_tail. The layout sibling relation tan(theta_ts) = h_tail_contact /45 (x_tail - x_mg) gives the tail strike angle of the solved geometry and the46 rotation margin theta_ts - theta_rot.47- Propeller disc lowest point body height: z_hub - radius.48- Nose gear static load share at the design CG from the wheelbase moment49 balance: P_n / W = (x_mg - x_cg) / (x_mg - x_ng); the main gear share50 complements it to 1. Feasibility only: the design CG must sit strictly51 between the contacts.52- Units are SI: m, deg, dimensionless fractions. All angles enter through53 math.radians via the module constant DEG2RAD.54- FAR-25 and CS-25 frame the transport landing gear context; the relations55 above are standard conceptual design methodology (Raymer, Gudmundsson,56 Sadraey, Torenbeek, landing gear chapters), summary-only, never57 reproduced.5859## Workflow60611. Fix the wheelbase and hard point geometry: nose gear station x_ng, main62 gear station x_mg, and the body height z_body, station and required63 clearances of every hard point (tail cone, nacelle, propeller) that64 constrains the ground line.652. Solve the static-ground-line with static_ground_line over the hard66 points and the design rotation attitude, which returns H_gl and the67 binding point name.683. Derive the main and nose gear heights with gear_heights from H_gl and69 the nose gear attach offset z_na.704. Report the achieved clearance and margin of every hard point at both71 attitudes with clearance_at_attitude and clearance_margin.725. Evaluate the tail strike margin of the solved geometry with73 tail_strike_angle_deg on the solved tail contact height h_tail_contact =74 H_gl + z_tail, and compare it against the design rotation attitude.756. Check the nose gear static load share at the design CG with76 static_load_share, confirming the CG sits strictly inside the wheelbase.777. Issue the height verdict: every required margin is non-negative and both78 gear heights are positive, confirmed by the contract test79 scripts/test_landing_gear_height_sizing.py.8081## Worked example8283Reference aircraft: twin-turboprop utility transport (King Air 350 class84scale, representative conceptual geometry). Nose gear contact at x_ng =851.40 m, main gear contact at x_mg = 7.40 m (wheelbase 6.00 m), design CG at86x_cg = 6.80 m. Design rotation attitude 10.0 deg about the main gear87contact. Nose gear attach point 1.00 m below the main gear attach plane88(z_na = -1.00 m). Tail cone lowest point at x_tail = 12.40 m (5.00 m aft of89the main gear contact) with body height z_tail = -0.45 m and a required90rotation clearance of 0.25 m. Propeller disc lowest point from a hub center91body height of 0.10 m and a disc radius of 1.15 m (z = -1.05 m) at station924.90 m with a required level clearance of 0.20 m. Nacelle lowest point at93z = -0.60 m, station 5.30 m, with a required level clearance of 0.15 m and a94required rotation clearance of 0.15 m.9596- Required ground lines: tail cone level 0.450000000000 m, tail cone97 rotation 1.585491556514 m, propeller level 1.250000000000 m, nacelle98 level 0.750000000000 m, nacelle rotation 0.382027332295 m. The tail cone99 rotation constraint governs: H_gl = 1.585491556514 m.100- Main gear height h_mg = H_gl = 1.585491556514 m. Nose gear height h_ng =101 H_gl + z_na = 0.585491556514 m. Height difference h_mg - h_ng =102 1.000000000000 m, exactly -z_na.103- Tail contact height h_tail_contact = H_gl + z_tail = 1.135491556514 m at104 arm a_t = 5.00 m. Tail strike angle theta_ts = 12.794763238232 deg, a105 rotation margin of 2.794763238232 deg over the 10.0 deg design rotation.106- Margins: tail rotation margin 0.000000000000 m (the governing constraint107 binds exactly), propeller level margin 0.335491556514 m, nacelle level108 margin 0.835491556514 m, nacelle rotation margin 1.185180898483 m.109- Static load share: nose share (7.40 - 6.80) / 6.00 = 0.100000000000, main110 share 0.900000000000, sum 1.000000000000. Both gears carry positive load.111- Height verdict: every required margin is non-negative and both gear112 heights are positive, so the height verdict is clearance-ok.113114## Verification115116- Confirm static_ground_line on the worked points returns H_gl =117 1.585491556514 within 1e-9 with binding point "tail cone lowest point".118- Confirm gear_heights(1.585491556514, -1.00) returns main_gear_height119 1.585491556514, nose_gear_height 0.585491556514 and height_difference120 1.000000000000 within 1e-9.121- Confirm the tail rotation clearance recomputed from H_gl equals 0.25 m122 within 1e-9 (identity I1, the binding constraint round trip), and that123 the tangent algebra identities I2 and I3 hold within tolerance.124- Confirm tail_strike_angle_deg(1.135491556514, 5.00) returns125 12.794763238232 deg within 1e-6 and the rotation margin is positive.126- Confirm static_load_share(6.80, 7.40, 1.40) returns 0.100000000000 within127 1e-12 and complements the main share to 1.128- Confirm every ValueError rejection: negative clearance requirements,129 rotation angle outside (0, 25] deg, wheelbase not positive, empty point130 list, non-positive ground line, non-positive nose gear height, and131 non-positive propeller radius.132- Run the contract test offline: python3133 scripts/test_landing_gear_height_sizing.py (34 tests, deterministic).134135## Related leaves136137- vehicle-design/sizing/landing-gear-layout: takes the solved gear heights138 as given inputs to the tipback angle, tail strike clearance angle and139 lateral turnover angle checks; this leaf is the inverse of its tail140 strike identity.141- vehicle-design/sizing/landing-gear-sizing: sizes the static strut loads,142 the nose and main gear CG load split and the shock absorber stroke once143 the heights and layout are fixed.144- vehicle-design/mass-properties/cg-envelope: the CG travel band source for145 the design CG used in the static load share feasibility check.146- vehicle-design/sizing/propeller-sizing: the propeller diameter and blade147 count selection, and the installation clearance check of a given hub148 height, downstream of the height this leaf solves.149150## Pitfalls151152- Solving the ground line from the level attitude only: a point clear at153 the level attitude can still strike the ground during rotation, since154 every aft hard point drops as (H_gl + z_body) * cos(theta) - (x_point -155 x_mg) * sin(theta); the tail cone rotation requirement governs the worked156 example at 1.585491556514 m against its 0.450000000000 m level157 requirement.158- Treating a forward point's rotation clearance as binding: a point forward159 of the main gear contact (arm x_point - x_mg negative) rises during160 rotation, so its level-attitude clearance is the binding case, not its161 rotation clearance (identity I6 in the contract test).162- Confusing the small-angle rise with the exact rise: the tangent rise163 (x_tail - x_mg) * tan(theta_rot) understates the exact rise164 h_tail_contact - c_tail by c_tail * (1/cos(theta_rot) - 1), about 1.5% of165 the exact rise at 10 deg in the worked example (identity I3); use the166 exact cosine and sine form for the ground line solve, not the tangent167 approximation.168- Feeding the layout sibling's tail strike angle formula the wrong contact169 height: this leaf solves h_tail_contact = H_gl + z_tail as an output; the170 layout sibling's tail_strike_clearance_angle takes h_tail_contact as a171 given input. Do not reuse a contact height from another aircraft172 configuration.173- Skipping the static load share feasibility check: a solved geometry with174 positive gear heights and clearance margins can still be infeasible if175 the design CG does not sit strictly between the nose and main gear176 contacts; static_load_share raises ValueError in that case rather than177 returning a share outside [0, 1].178179## Behavior contract (gate 3)180181Run the deterministic contract test (stdlib unittest, offline):182183 python3 scripts/test_landing_gear_height_sizing.py184185The test covers the worked static-ground-line solve and its per-constraint186required ground lines, the gear height derivation and the leveling187identity, the achieved clearance and margin of every hard point at both188attitudes, the tail strike angle and rotation margin of the solved189geometry, the static load share and its complement, the propeller low190point, the closed-form identities I1 through I6, the level-attitude round191trip, determinism of repeated solves, module constant fixity, and192ValueError rejection of every non-physical input listed in the spec193validation list.194195## Compliance196197- Standards referenced, not reproduced: 14 CFR Part 25 and CS-25 frame the198 transport landing gear context; the height-selection relations above are199 standard conceptual design methodology, summary-only per200 standards-map.yaml.201- compliance: STANDARDS-REF, gated: false.