W/S and T/W Matching (vehicle-design/sizing/ws-tw-trade)
Use when the task is wing loading and thrust to weight matching for
conceptual sizing: the stall, takeoff distance, climb gradient, and
cruise constraints that draw the sizing matching chart, and the
binding constraint that sets the minimum thrust to weight at a given
wing loading.
Domain quick reference
- Wing loading W/S is in N/m^2, thrust to weight T/W is unitless,
air density rho in kg/m^3 (default 1.225 kg/m^3, sea-level ISA),
speeds in m/s, takeoff distance in m, flight path angle gamma in
rad, and g = 9.80665 m/s^2.
- Stall constraint (maximum wing loading): W/S = 0.5 * rho * CLmax *
VS^2, from lift equal to weight at the stall speed VS.
- Takeoff distance constraint (required T/W): T/W = 1.21 * (W/S) /
(rho * g * CLmax * s_TO), with s_TO the takeoff distance in m.
- Climb gradient constraint (required T/W): T/W = 1/LD + gamma, the
level-flight drag term plus the small-angle climb term, gamma in
rad.
- Cruise constraint (required T/W at speed V): T/W = 0.5 * rho * V^2
- CD0 / (W/S) + k * (W/S) / (0.5 * rho * V^2), the zero-lift drag
term plus the lift-induced drag term, k = 1/(pi * e * AR).
- The matching chart plots required T/W against W/S, one curve per
constraint; at a given wing loading the binding constraint is the
curve with the largest required T/W, which sets the minimum thrust
to weight for the propulsion sizing.
- FAR-25 (14 CFR Part 25) and CS-25 set the certification context
(stall speed, takeoff field length, and climb gradients for
transport-category aeroplanes); the constraint equations are common
conceptual sizing practice.
Workflow
- Set the design point: stall speed, maximum lift coefficient, air
density, takeoff distance, lift-to-drag ratio, climb gradient,
cruise speed, zero-lift drag coefficient, and induced drag factor
k.
- Compute the maximum wing loading allowed by the stall speed with
stall_constraint.
- Compute the required T/W from the takeoff distance with
takeoff_constraint.
- Compute the required T/W from the climb gradient with
climb_constraint.
- Compute the required T/W at the cruise speed with
cruise_constraint.
- Sweep candidate wing loadings and find the binding constraint with
feasible_min_tw; the returned min_tw is the required thrust to
weight that sizes the propulsion system.
Pitfalls
- Mixing units: wing loading in kg/m^2 instead of N/m^2, or gamma in
degrees with the small-angle formula; keep everything SI with gamma
in rad.
- Forgetting the density default: rho defaults to 1.225 kg/m^3
(sea level); at altitude the lower density tightens the takeoff and
climb constraints.
- Treating the climb term as 1/LD only: the gamma term is the climb
gradient itself; dropping it understates the required T/W.
- Averaging the constraint T/W values instead of taking the maximum:
the binding constraint is the maximum, not the mean, and it defines
the feasible design point on the matching chart.
- Using the stall constraint as a required T/W curve: it gives a
maximum wing loading boundary, not a thrust requirement.
- Passing an empty constraints dict to feasible_min_tw; the module
raises ValueError instead of guessing.
Behavior contract (gate 3)
The stall, takeoff distance, climb gradient, and cruise constraints
plus the binding-constraint minimum T/W logic are exercised by the
gate 3 contract test: scripts/test_ws_tw_trade.py against
scripts/ws_tw_trade_logic.py (stdlib unittest, offline). Run:
python3 scripts/test_ws_tw_trade.py
Compliance
- Standards referenced, not reproduced: FAR-25 is US government work
(public domain) and CS-25 is a free EASA download; the constraint
equations are common conceptual sizing methodology, summary-only
per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: ws-tw-trade3description: Use when you must size the aircraft by matching wing loading and thrust to weight: compute the takeoff distance constraint, climb gradient constraint, and cruise constraint curves, and find the binding constraint that sets the minimum thrust to weight at a given wing loading. Produces the wing loading constraint envelope and the required thrust to weight for the sizing matching chart that gate the conceptual sizing trade. Trigger: wing loading, thrust to weight, matching chart, sizing, takeoff distance, climb gradient, binding constraint.4license: Apache-2.05---67# W/S and T/W Matching (vehicle-design/sizing/ws-tw-trade)89Use when the task is wing loading and thrust to weight matching for10conceptual sizing: the stall, takeoff distance, climb gradient, and11cruise constraints that draw the sizing matching chart, and the12binding constraint that sets the minimum thrust to weight at a given13wing loading.1415## Domain quick reference1617- Wing loading W/S is in N/m^2, thrust to weight T/W is unitless,18 air density rho in kg/m^3 (default 1.225 kg/m^3, sea-level ISA),19 speeds in m/s, takeoff distance in m, flight path angle gamma in20 rad, and g = 9.80665 m/s^2.21- Stall constraint (maximum wing loading): W/S = 0.5 * rho * CLmax *22 VS^2, from lift equal to weight at the stall speed VS.23- Takeoff distance constraint (required T/W): T/W = 1.21 * (W/S) /24 (rho * g * CLmax * s_TO), with s_TO the takeoff distance in m.25- Climb gradient constraint (required T/W): T/W = 1/LD + gamma, the26 level-flight drag term plus the small-angle climb term, gamma in27 rad.28- Cruise constraint (required T/W at speed V): T/W = 0.5 * rho * V^229 * CD0 / (W/S) + k * (W/S) / (0.5 * rho * V^2), the zero-lift drag30 term plus the lift-induced drag term, k = 1/(pi * e * AR).31- The matching chart plots required T/W against W/S, one curve per32 constraint; at a given wing loading the binding constraint is the33 curve with the largest required T/W, which sets the minimum thrust34 to weight for the propulsion sizing.35- FAR-25 (14 CFR Part 25) and CS-25 set the certification context36 (stall speed, takeoff field length, and climb gradients for37 transport-category aeroplanes); the constraint equations are common38 conceptual sizing practice.3940## Workflow41421. Set the design point: stall speed, maximum lift coefficient, air43 density, takeoff distance, lift-to-drag ratio, climb gradient,44 cruise speed, zero-lift drag coefficient, and induced drag factor45 k.462. Compute the maximum wing loading allowed by the stall speed with47 stall_constraint.483. Compute the required T/W from the takeoff distance with49 takeoff_constraint.504. Compute the required T/W from the climb gradient with51 climb_constraint.525. Compute the required T/W at the cruise speed with53 cruise_constraint.546. Sweep candidate wing loadings and find the binding constraint with55 feasible_min_tw; the returned min_tw is the required thrust to56 weight that sizes the propulsion system.5758## Pitfalls5960- Mixing units: wing loading in kg/m^2 instead of N/m^2, or gamma in61 degrees with the small-angle formula; keep everything SI with gamma62 in rad.63- Forgetting the density default: rho defaults to 1.225 kg/m^364 (sea level); at altitude the lower density tightens the takeoff and65 climb constraints.66- Treating the climb term as 1/LD only: the gamma term is the climb67 gradient itself; dropping it understates the required T/W.68- Averaging the constraint T/W values instead of taking the maximum:69 the binding constraint is the maximum, not the mean, and it defines70 the feasible design point on the matching chart.71- Using the stall constraint as a required T/W curve: it gives a72 maximum wing loading boundary, not a thrust requirement.73- Passing an empty constraints dict to feasible_min_tw; the module74 raises ValueError instead of guessing.7576## Behavior contract (gate 3)7778The stall, takeoff distance, climb gradient, and cruise constraints79plus the binding-constraint minimum T/W logic are exercised by the80gate 3 contract test: scripts/test_ws_tw_trade.py against81scripts/ws_tw_trade_logic.py (stdlib unittest, offline). Run:82python3 scripts/test_ws_tw_trade.py8384## Compliance8586- Standards referenced, not reproduced: FAR-25 is US government work87 (public domain) and CS-25 is a free EASA download; the constraint88 equations are common conceptual sizing methodology, summary-only89 per standards-map.yaml.90- compliance: STANDARDS-REF, gated: false.