Every formula the sheets use, with the constants and the corrections marked. The sheets themselves say what they do not model; this says how they do what they do. It is generated from CALCULATIONS.md in the repository, which stays the editable source, so the page and the file cannot disagree.
Every formula the site uses, with the constants and the Rev B corrections marked. Use this to verify a number, extend a sheet, or answer a reader who disputes an output.
Shared constants
| Symbol | Value | Where |
|---|---|---|
| g | 9.80665 m/s² | all |
| ρ₀ | 1.225 kg/m³ | ISA sea level |
| T₀ | 288.15 K | ISA sea level |
| lapse | 0.0065 K/m | ISA troposphere |
| μ₀, T_ref, S | 1.716e-5, 273.15, 110.4 | Sutherland viscosity |
| FINITE_WING | 0.90 | 2D section max lift → 3D wing (added Rev B) |
| Wh/kg | 140 | Hobby LiPo including case and leads |
| usable pack | 0.80 | Depth of discharge, Sheets 09 and 16 |
Sheet 01 — Wing Sizing
Geometry (single trapezoidal panel, no sweep or dihedral modelled)
S = (c_root + c_tip)/2 · b
AR = b² / S
λ = c_tip / c_root
MAC = (2/3)·c_root·(1 + λ + λ²)/(1 + λ)
y_MAC = (b/6)·(1 + 2λ)/(1 + λ) measured from centreline
x_MAC = y_MAC · tan Λ_LE MAC leading edge behind the root's
tan Λ_c/4 = tan Λ_LE − (1 − λ)/(AR·(1 + λ))
Sweep (added at Rev E). The leading-edge sweep Λ_LE moves the mean aerodynamic chord aft by x_MAC and changes nothing the sheet prints: area, aspect ratio, the MAC's length and every speed are the same swept or straight. What it changes is where a balance point quoted as a percentage of the MAC actually is, which is why the notes give it from the root leading edge. The box takes −10° to 45° and holds anything outside. On the default trainer with a 140 mm tip swept 25°, the MAC starts 161 mm behind the root leading edge, 25% of it is 215 mm back, and the quarter-chord line is swept 22.8°. The drawing used to centre a tapered tip on the root chord, which is a swept leading edge; at 0° it now draws the straight leading edge 0° means.
Atmosphere ← reworked at Rev C
Rev B evaluated everything on a standard day. Temperature and humidity are now inputs, because the standard atmosphere assumes 15 °C at sea level and the sites this is published for are routinely thirty degrees hotter than that. Leaving the temperature blank falls back to the standard lapse and reproduces the Rev B numbers exactly.
Standard pressure and temperature at geopotential altitude h (metres):
p = 101325·(1 − 2.25577e-5·h)^5.25588
T_std = 288.15 − 0.0065·h
Actual temperature T (K) = T_entered + 273.15, else T_std
Water vapour partial pressure, Magnus form, with t in °C and RH as a fraction:
p_sat = 610.94·exp( 17.625·t / (t + 243.04) )
p_v = RH · p_sat
Density, dry and vapour partial pressures summed through the gas law:
ρ = (p − p_v)/(R_d·T) + p_v/(R_v·T) R_d = 287.058, R_v = 461.495
Viscosity, Sutherland at the actual temperature:
μ = μ₀·(T/273.15)^1.5·(273.15 + 110.4)/(T + 110.4) μ₀ = 1.716e-5
Density altitude, the standard height with this density:
h_ρ = (1 − (ρ/ρ₀)^(1/4.25588)) / 2.25577e-5
ρ₀ is taken as 101325/(287.058·288.15) = 1.224978, derived from the same gas law rather than the rounded 1.225 of the tables, so density altitude is exactly zero on a standard sea-level day.
Humid air is less dense than dry air at the same pressure: water vapour is lighter than the nitrogen it displaces. The humidity correction on viscosity is well under a percent and is not applied.
Validation. Standard sea level returns ρ = 1.224978 and μ = 1.7893e-5. Standard 1000 m returns ρ = 1.1116 and a density altitude of 1000 m. At 45 °C and dry, sea level gives ρ = 1.1095, a 9.4% loss, raising stall speed 5.1% and cutting Reynolds number 16.1%. At 45 °C and 60% RH, ρ = 1.0857.
All three sheets that need air density — 01, 02 and 04 — call the same function. Before Rev C they each did something different, and Sheet 02 could disagree with Sheet 01 by double figures about the same aeroplane.
Performance
CL_max = CL_2D · 0.90 ← Rev B: was a single blended figure
V_stall = √( 2W / (ρ·S·CL_max) ) clean: sets cruise, Re and the handoff
V_stall,flaps = √( 2W / (ρ·S·(CL_max + ΔCL_flap)) )
V_approach = 1.3 · V_stall,flaps = 1.3 · V_stall with no flaps
V_cruise(for Re) = 1.6 · V_stall
Re = ρ · V_cruise · MAC / μ
wing loading = m/S g/dm² and oz/ft²
WCL = mass_oz / (S_ft²)^1.5 wing cube loading, scale-independent
Section max lift dropdown — 2D values measured at model Reynolds numbers (revised Rev B):
| Type | 2D | ×0.90 |
|---|---|---|
| Undercambered, thin | 1.45 | 1.31 |
| Flat-bottom (Clark Y) | 1.35 | 1.22 |
| Semi-symmetric | 1.15 | 1.04 |
| Symmetric | 0.95 | 0.86 |
| Flat sheet foam | 0.85 | 0.77 |
Flaps — ΔCL_max = 0.9 · ΔCl_max · (S_flapped / S_ref) (Raymer, Aircraft Design, eq. 12.21, with ΔCl_max from his table 12.2), taking the flaps over 60% of the span so S_flapped/S_ref ≈ 0.6. Slats are 0.4 · c′/c ≈ 0.44 on the section, over 80% of the span:
| Flap | ΔCl_max (section) | ΔCL_max (wing) |
|---|---|---|
| None | — | 0 |
| Plain or split | 0.9 | 0.49 |
| Slotted | 1.3 | 0.70 |
| Fowler (c′/c ≈ 1.15) | 1.5 | 0.81 |
| Slotted flap and leading-edge slats | 1.3 + 0.44 | 0.70 + 0.32 = 1.02 |
Flaps lower the landing stall and the approach speed and nothing else. The cruise speed, the Reynolds number and the CL_max handed to the other sheets are the clean wing's, because that is what the aeroplane flies on between take-off and landing. On the default trainer slotted flaps take the stall from 30.7 to 24.5 km/h.
Wing cube loading bands (Francis Reynolds): <4 floater · 4–7 trainer · 7–11 sport · 11–15 scale/warbird · >15 racer
Validation: .40 trainer (2400 g, 1550 mm span, 280 mm chord) → 55.3 g/dm², 18.1 oz/ft², WCL 8.4, AR 5.54, stall 30.7 km/h, Re 248k. Matches real .40 trainers.
Sheet 02 — Airfoil Matrix
Dataset: 27 sections in var FOILS. Fields: t thickness %, c camber %, lo/hi usable Reynolds band, cl max lift, cm pitching moment, cmq M measured / C computed (added Rev B), st stall 1–3, bd build demand 1–3, fb flat bottom, tte thin trailing edge, rf reflexed, m missions.
Ranking
score = reScore·0.42 + missionMatch·0.28 + merit·0.18 + buildScore·0.12
reScore = 1 inside the band, else max(0, 1 − ln(distance)/0.9)
missionMatch = 1 if tagged for the mission, else 0.15
merit = per-mission fitness (cargo → Cl max; aerobatic → symmetry;
thermal/dlg → low-Re reach; wing → reflex mandatory; …)
buildScore= method compatibility 0–1
merit exists because without it an easy-to-build all-rounder outranks the section that actually does the job — Clark Y beat S1223 on a heavy-lift design before it was added.
Fallback chain (never dead-ends): strict match → relax build method → nearest six by score, each with a banner explaining which constraint was dropped.
Rev B changes to the dataset are itemised in ../CHANGELOG-revB.md.
Provenance of the airfoil figures
Figures were reviewed against UIUC Summary of Low-Speed Airfoil Data Vols 1/2/5, NACA TR-586 and TR-824, SAND80-2114, Timmer, SoarTech 8 and Laitone. 15 of 27 pitching moments are measured; 12 are computed and labelled as such on the sheet.
Sheet 03 — Balance & Tail
a = 2π·AR / (2 + √(AR² + 4)) Polhamus lift slope, unswept
dε/dα = 2·a_w / (π·AR_w) downwash gradient
V_H = (S_h·l_h)/(S_w·MAC) horizontal tail volume
V_V = (S_v·l_v)/(S_w·b) vertical tail volume
x_np/c = 0.25 + η·(a_t/a_w)·V_H·(1 − dε/dα) − fuselage_allowance
x_cg = x_np − static_margin
Trim tail load — corrected in Rev B
was: CL_t = (Cm0 − CL·SM) / (η·V_H) ✗ static margin is not the arm
now: CL_t = (Cm0 + CL·(h − h_ac,w)) / (η·V_H) ✓ h_ac,w = 0.25
The moment arm about the CG is CG-to-wing-aerodynamic-centre, not the static margin. The old form overstated tail download roughly 2×. Warning threshold moved 0.50 → 0.35 to suit the corrected scale.
Static margin bands (% MAC, recommended and range), calibrated so output reproduces practice — trainer ≈25% MAC, pattern ≈30%, thermal ≈38%:
trainer 15 (12–18) · sport 12 (10–15) · aerobatic 8 (5–10) · thermal 11 (8–14) · slope 10 (7–13) · cargo 15 (12–18) · scale 13 (10–16) · fpv 13 (10–16) · flying wing 5 (3–8)
Flying wing: x_MAC_LE = y_MAC · tan(Λ_LE), NP ≈ x_MAC_LE + 0.25·MAC from the root leading edge. Requires Cm0 ≥ 0 from reflex or washout.
Defaults: η = 0.90, fuselage allowance = 3% MAC (a preliminary estimate only — compute from the fuselage pitching moment slope once geometry is known).
Validation: trainer CG 24.8% MAC, pattern 30.1%, thermal 38.0%, flying wing 50% root chord. All match established practice.
Sheet 04 — Power & Endurance
Cd = Cd0 + CL²/(π·e·AR) parabolic polar
L/D_max = 0.5·√(π·e·AR / Cd0)
CL@best L/D = √(Cd0·π·e·AR)
CL@min power = √(3·Cd0·π·e·AR)
P_aero = 0.5·ρ·V³·S·Cd
P_elec = P_aero / (η_prop · η_motor)
P_climb = (P_aero@cruise + W·V_climb) / (η_prop · η_motor)
P_install = P_climb · 1.15
pack Wh = cells · 3.7 · Ah
pack kg = Wh / 140
endurance = (Wh · 0.80) / P_elec_cruise
loiter = (Wh · 0.80) / P_elec at max(V_min power, 1.2·V_s)
top speed = where P_elec = P_install, bisected above the minimum-power speed
Climb and ceiling. Climb is flown at the same flyable slow speed as the loiter (the minimum-power speed or 1.2 V_stall), at a fixed lift coefficient. With σ = ρ(h)/ρ_field from the standard atmosphere's ratio:
ROC(h) = ( P_install·η·σ − P_aero,slow / √σ ) / W
The aerodynamic power rises as 1/√σ. The power available falls as σ, because a fixed-pitch propeller on a motor already near its no-load speed absorbs power in proportion to the density (P = C_P·ρ·n³·D⁵, and n rises only a little as the propeller unloads). The service ceiling is where ROC falls to 0.5 m/s. On the default trainer that is 6.1 m/s at the field and 5.4 m/s at 1,000 m, with a ceiling about 10,000 m up: far above any height a model may fly, which is why the note says the climb near the ground is what matters. Cold-pack voltage sag and the change in propeller efficiency are left out, and both reduce it.
Turning at cruise. In a level turn at load factor n the wing carries nW, so induced drag grows as n² and parasite drag does not. The steepest turn the installed power holds is
n_power = √( (P_install·η / V − D0) / Di ) D0, Di at the cruise speed in level flight
n_wing = (V / V_stall)² the wing at CL_max
n = min(n_power, n_wing) bank = arccos(1/n) radius = V² / (g·tan bank)
and the note says which of the two stops it. The default trainer cruises at 1.4 V_stall, so the wing allows 1.96 g (59°, a 9 m circle) and the 15% margin over a 5 m/s climb is enough power for it; with no climb asked for, the motor is the limit at 30°.
Cd0 by category (±25%, picked rather than built up component by component): 0.018 moulded glider · 0.025 clean built-up · 0.032 sport no gear · 0.040 sport fixed gear · 0.050 FPV with pods · 0.058 foamboard · 0.072 warbird gear down
Validation: .40 trainer needs 60 W to cruise, 329 W installed (real: 300–400 W). Warbird 695 W (real: 600–900 W). 3D aerobat 318 W/kg (real: 250–400 W/kg).
Known limitation: the parabolic polar diverges from reality near the stall, and a single propeller efficiency is a cruise average — climb properly needs a propeller map across advance ratios. Both are stated on the sheet.
Sheet 05 — Weight Budget
Structure from area
wing = S · σ S in dm², σ areal density in g/dm²
tail = S · (tail% / 100) · σ same σ: thinner sections, but hinges,
horns and a fin post to carry
fuselage = wing · k k set by the user, not derived
structure = wing + tail + fuselage
There is no parametric fuselage formula here on purpose. A model fuselage runs from a carbon boom to a scale cowl with a retract bay, and nothing parametric spans that honestly. It is a ratio you set and can argue with instead of a number the sheet pretends to know.
Energy
Wh = cells · 3.7 V · mAh / 1000
mass = Wh / (Wh/kg) · 1000
LiPo is taken at 140 Wh/kg at pack level, including case, leads and connector — the same figure Sheet 04 uses for endurance, so the two sheets cannot disagree about a pack. Cylindrical lithium-ion is 190, LiFePO₄ 105.
Totals
subtotal = structure + propulsion + energy + avionics
margin = subtotal · contingency% payload excluded
AUW = subtotal + margin + payload
Contingency is applied to everything except payload, because payload is usually a known object that can be put on a scale, while the rest accumulates glue, filler, paint, tape, extensions and nose weight.
Areal densities, g/dm² — finished structure: spar, ribs or core, covering, hinges and horns, servos excluded.
| Build method | Figure used |
|---|---|
| Moulded composite, carbon or glass sandwich | 12 |
| Built-up balsa, film covered | 14 |
| Foam board or Depron, flat plate | 16 |
| Balsa-sheeted foam core, film covered | 20 |
| Plywood and balsa box, film covered | 22 |
| Moulded foam, EPP or EPO | 24 |
These are COMPILED from build practice, not measured. They are starting points. The spread between two builders working to the same description is wider than the gap between two rows in that table, which is why every figure is overridable and why the sheet offers to take a measured wing mass instead. This is the softest data on the site and it is labelled as such on the sheet itself.
Mass fraction bands — the share of all-up mass that model and small-UAV designs usually land in. Also compiled, also wide, and deliberately so.
| Group | Band |
|---|---|
| Structure | 35–65% |
| Propulsion | 6–18% |
| Energy | 12–40% |
| Avionics | 3–12% |
| Payload | 0–30% |
The structure band is higher than the figure quoted for full-size aircraft, and that is not an error. A full-size aeroplane spends 30–40% of its mass on fuel and payload; most models carry neither, so structure takes the share that fuel would.
Validation. The sheet's defaults reconstruct the same 2400 g, 43.4 dm² trainer that Sheets 01 and 04 default to, landing within 0.1%, with every group inside its band. The budget was checked for internal consistency across five configurations from a composite glider to a 5.4 kg survey aircraft: the line items sum to the stated all-up mass in every case.
Sheet 06 — Constraint Diagram & Design Point
Wing loading on one axis, power loading on the other. Every requirement becomes a boundary, and what survives all of them is the feasible region.
The wall. Stall speed is the only requirement that caps wing loading rather than demanding power:
(W/S)_max = ½ · ρ · V_stall,max² · CL_max
The floors. Each of these gives a thrust-to-weight at a given wing loading, converted to an electrical power loading in W/kg through the propulsive chain:
q = ½ · ρ · V²
cruise : T/W = q·CD0/(W/S) + k·(W/S)/q
climb : T/W = q·CD0/(W/S) + k·(W/S)/q + ROC/V
turn : T/W = q·CD0/(W/S) + k·n²·(W/S)/q n = 1/cos(bank)
ground : T/W = 1.44·(W/S) / (g·ρ·CL_max·S_ground)
k = 1/(π·e·AR)
W/kg = g · (T/W) · V / (η_prop · η_elec)
The ground-roll boundary is converted at 0.7 of lift-off speed, where lift-off is 1.2·V_stall. That is the conventional representative point for a propeller.
A flat practice floor in W/kg is drawn alongside them, from build practice rather than from the polar: 80 for a glider with a climb motor, 100 trainer, 130 heavy lift, 150 sport, 200 aerobatic, 300 for unlimited vertical. COMPILED, not derived. It catches what a cruise-and-climb calculation misses — control authority and headroom — and it is the boundary most worth overruling deliberately.
The design point is taken at the stall-limited wing loading, which is the smallest wing the brief allows, at whatever power the tallest boundary demands there. Wing area and installed power follow:
S = W / (W/S)_max P = (W/kg)_design · m install ≈ 1.15 · P
The sheet names the binding boundary, which is the only requirement whose relaxation would change the aeroplane. It also reports where the envelope is lowest, since a larger wing usually flies on less power — the trade is real and the convention of taking the smallest wing is a choice, not a law.
Where it is soft. A single cruise propeller efficiency is applied at every speed, so the launch and climb boundaries sit lower than the truth, which is the optimistic direction. The parabolic polar stops describing the wing near the stall, so the far right of the chart is less trustworthy than the middle. And the method assumes the mass is known while the mass depends on the wing being sized — see Sheet 05.
Validation. With the trainer that Sheets 01, 04 and 05 all default to, this sheet returns a cruise requirement of 59 W and a climb requirement of 286 W, or 329 W installed with the usual margin. Sheet 04's own cover text describes that aircraft as one that "cruises on sixty watts and still wants three hundred installed". The stall-limited wing area comes to 42.7 dm² against the 43.4 dm² Sheet 01 defaults to, a 1.7% difference explained by the 31 km/h stall target against its actual 30.7 km/h. Each of the five boundaries was confirmed to bind in at least one realistic configuration.
Sheet 07 — Parasite Drag Build-Up
Every surface the air touches carries skin friction; every add-on carries a drag area.
CD0 = Σ (Cf · FF · Q · Swet) / Sref + Σ f / Sref , then × (1 + markup)
Skin friction, blended by the laminar run the surface finish is credited with:
Cf_lam = 1.328 / √Re Blasius
Cf_turb = 0.455 / (log₁₀ Re)^2.58 Prandtl–Schlichting
Cf = λ·Cf_lam + (1 − λ)·Cf_turb
Re = V · L_ref / ν L_ref = mean chord, or fuselage length
The fuselage is credited with half the wing's laminar run: it is blunter at the front and carries hatches, canopy joints and propeller wash.
Form factors
surfaces : FF = 1 + 2.0·(t/c) + 100·(t/c)⁴ max thickness at 30% chord
bodies : FF = 1 + 60/f³ + f/400 f = length / equivalent diameter
Wetted areas
surfaces : Swet = 2 · S_exposed · (1 + 0.25·t/c)
fuselage : Swet = perimeter · length · 0.80 · k_shape
The 0.80 accounts for a fuselage tapering to the tail rather than being a prism. Perimeter is 2(w+h) for a box, ×0.92 rounded, π(w+h)/2 for an oval or pod.
Interference Q: 1.00 filleted mid or shoulder wing, 1.10 clean unfilleted junction, 1.25 blunt or strut braced; 1.05 on tail surfaces.
Add-ons are drag areas, f = CD · frontal area, not wetted areas — a wheel has no boundary layer worth modelling. COMPILED drag coefficients: bare wheel 0.45, faired sides 0.30, wheel pants 0.15; round wire or tube leg 1.10, flat strip edge-on 1.00, streamlined leg 0.20.
The landing gear is typically a fifth of the total on a trainer, and the legs usually cost more than the wheels they carry.
Where it is soft. The friction correlations are exact for a flat plate and approximate for everything else. The form and interference factors were fitted to full-size aircraft. Below Re ≈ 100,000 a laminar separation bubble forms on most sections and adds drag no flat-plate correlation knows about, so the sheet warns when the wing falls below that.
It reads low, and the sheet says so. Component build-up reliably lands below measured drag, more so at model scale. The sheet asks which category you would otherwise have guessed and reports the gap against that, rather than against whichever category happens to sit nearest the answer — which would agree by construction and tell you nothing.
Validation. The default trainer returns CD0 0.0303, an equivalent flat plate of 131.3 cm², against the 0.040 of the "sport model, fixed gear" category the other sheets default to: 24% under, which is the expected direction and roughly the expected size. Component contributions sum exactly to the stated total. Wing Reynolds number comes to 228,965 at 43 km/h on a 280 mm chord, matching the figure Sheet 01 reports for the same aircraft.
Sheet 08 — Propeller Matching
The operating point
n = RPM / 60 revolutions per second
J = V / (n·D) advance ratio
V_pitch = pitch · n speed at which the blade runs out of angle
slip = 1 − V / V_pitch
tip = π·D·n tip speed, no forward motion
M_tip = √(tip² + V²) / a helical tip Mach
a = √(1.4 · 287.058 · T) speed of sound at the actual temperature
Loaded RPM from Kv · V_pack · load, where the load factor is 80–85% for a motor working against a propeller. The pack sags under load too, so the figure is already optimistic.
Thrust and efficiency in forward flight — actuator disc, solved for thrust:
v_i = −V/2 + √( V²/4 + T / (2·ρ·A) ) induced velocity, A = πD²/4
T·(V + v_i) = P_shaft · η_blade solved for T by bisection
η_prop = T·V / P_shaft
η_blade is the blade-quality factor: everything viscous, in one number. It is the ceiling the propeller can never beat; the disc loading decides how close it gets. COMPILED values: 0.87 moulded composite, 0.80 good injection-moulded nylon, 0.72 budget or thick-sectioned, 0.62 slow-fly.
Static thrust uses a different basis, because at zero advance the blade is stalled and the disc model above runs well over:
T_static = ( P_shaft · FM · √(2·ρ·A) ) ^ (2/3) FM = 0.50, COMPILED
Why there are two efficiencies. A propeller pushing hard at low speed throws air backwards fast, and the kinetic energy in that wake is lost. The same propeller cruising gently throws it back slowly and wastes much less. Efficiency is a property of the operating point, not of the propeller — which is precisely what a single fixed figure on Sheets 04 and 06 cannot express.
What this cannot see. Actuator-disc theory works from disc area. It knows nothing about blade planform, aerofoil, twist, or behaviour at model Reynolds numbers. It also knows nothing about pitch: it will promise thrust at any speed. A real fixed-pitch propeller stops pulling as the aircraft approaches its pitch speed, so the sheet reports slip alongside and draws pitch speed as a wall, with the region past 80% of it shaded. Measured data from the propeller's maker beats all of this.
Validation. A 10×6 on a 1000 Kv motor and a 3S pack turns 9,102 RPM under load, giving a pitch speed of 83 km/h and a helical tip Mach of 0.36. On the trainer the other sheets default to, the same propeller returns 70.2% at cruise (60 W electrical, 48 W at the shaft) and 56.1% in the climb (286 W electrical, 229 W at the shaft) — a gap of 14 points, and the size of the error the fixed figure was carrying. Opened from Sheet 04 with that sheet's own powers it is the same, now that Sheet 04 starts from the same whole-wing CLmax as the rest. Static thrust comes to 1,199 g from the figure of merit, against the 1,640 g the disc model would have claimed, which is why static is quoted on a different basis.
Sheet 09 — Battery & Electrical System
A pack is an ideal voltage source behind a fixed internal resistance.
V_oc = S · V_nominal series adds voltage
R = S · r_cell / P series adds resistance, parallel divides it
Current for a given power is not P / V. The pack sags as it works, so the current is the smaller root of a quadratic:
R·I² − V_oc·I + P = 0
I = ( V_oc − √(V_oc² − 4·R·P) ) / (2R)
A negative discriminant means no solution exists: the pack physically cannot deliver that power, whatever its label claims. The sheet says so rather than returning a number.
sag = I · R
V_loaded = V_oc − sag
η_pack = V_loaded / V_oc the rest becomes heat in the cells
heat = I² · R
The ceiling. Delivered power (V_oc − I·R)·I is a parabola peaking at:
P_max = V_oc² / (4R) at I = V_oc / (2R)
At that peak half the energy is heat and the voltage has halved, so a usable ceiling is perhaps a third of it. The chart plots the parabola so the operating point can be seen against it.
Energy and endurance
Wh_rated = (mAh/1000) · V_oc
Wh_usable = Wh_rated · DoD · derate
endurance = Wh_usable · η_pack / P
Chemistry figures, COMPILED, with the Wh/kg matching Sheet 05 so the two cannot disagree about a pack: LiPo 3.7 V nominal and 140 Wh/kg; LiHV 3.8 V (4.35 V charged) and 150 Wh/kg; Li-ion 3.6 V and 190 Wh/kg; LiFePO₄ 3.2 V and 105 Wh/kg.
What Sheet 04 assumes. Sheet 04 works current out as P / V_nominal, which is a pack with no internal resistance. For a large pack loafing the error is a fraction of a per cent; for a small or tired one it is not. Sheet 09 reports both so the user can see which case applies rather than assuming.
What the model misses. A fixed resistance is a good description at moderate load and a poor one near the end of a discharge or in the cold. Real cells sag more as they empty, more when cold, and more as they age — internal resistance roughly doubles over a pack's life. Nothing here models the discharge curve, only its average.
Validation. A 4S 5000 mAh LiPo at 2.5 mΩ a cell has V_oc 14.8 V and R 10 mΩ, holds 74.0 Wh and weighs 529 g — the same mass Sheet 05 computes for the same pack. Cruising at 60 W it draws 4.07 A at 0.8C with 0.041 V of sag; climbing at 286 W it draws 19.58 A at 3.9C with 0.196 V of sag, losing 3.8 W as heat. Endurance comes to 59 minutes, against the 59 minutes Sheet 04's zero-resistance model gives: at this load the simplification is harmless, and the sheet says so. The same airframe on a tired 3S 1300 at 16 mΩ a cell draws 29.5 A at 22.7C with 1.42 V of sag, where it is not harmless at all.
Sheet 10 — Structures & Spar
The flight envelope
Stall speed at 1 g, from the wing loading and the whole-wing maximum lift coefficient:
Vs = sqrt( 2 (W/S) / (rho Clmax) )
The curved edges of the envelope are that relation at load factor n, so the stall boundary is n = (V/Vs)². Where it meets the limit load factor is the manoeuvre speed:
Va = Vs sqrt(n_limit)
Below Va the wing stalls before it reaches the limit load, so full up-elevator cannot break it. Above it, it can. Dive speed is Vd = max(1.4 Vc, 1.15 Va).
The inverted half uses two model conventions, both compiled rather than derived: a negative limit of half the positive one, and an inverted maximum lift coefficient 40% below the upright figure. The negative limit tapers linearly to zero between Vc and Vd.
Gust loads
Sharp-edged gust, no alleviation factor:
dn = rho V a Ude / ( 2 (W/S) ), a = 2 pi AR / (2 + sqrt(AR² + 4))
Applied in full at Vc and at half at Vd, which is the FAR 23 convention (50 ft/s and 25 ft/s) and rests on the same argument: meeting the worst gust at the highest speed you ever fly is a coincidence worth discounting.
This is the term that behaves differently on a model. The gust increment is inversely proportional to wing loading, and a model's is around a tenth of a light aircraft's, so gusts that a full-size aeroplane rides through can exceed the manoeuvre limit on a model. The design load factor the sheet uses is the largest of the manoeuvre limit and the two gust cases.
Root bending
Schrenk's approximation for the spanwise load: the average of two distributions that each carry the whole lift, one shaped like the planform and one elliptical. It is the standard first estimate for an unswept wing of moderate aspect ratio without much twist, and it needs nothing beyond the two chords and the span. With s = b/2 and a taper ratio L = c_tip / c_root, both centroids are closed forms for a straight taper:
y_planform = s (1 + 2 L) / (3 (1 + L)) y_ellipse = 4 s / (3 pi) = 0.4244 s y_c = (y_planform + y_ellipse) / 2
so a constant-chord wing sits at 0.4622 s, a 0.5 taper at 0.4344 s and a sharp 0.25 taper at 0.4122 s. A uniform load would put it at 0.5 s, which overstates the moment by 8 to 30% depending on the taper. At the design load factor:
M_limit = (n W / 2) y_c, M_ult = M_limit x safety factor
This sheet used a pure ellipse until Rev C. For a wing with a straight taper of about 0.4 the two agree to within three per cent, but for a constant-chord wing — which most trainers are — the ellipse understated the root bending moment by 8.9%, in the unconservative direction. The tip chord is an input for this reason and this reason alone.
Wing weight relief is ignored, which is conservative and worth a percent or two on a model.
Cap sizing
A cap-and-web spar, treated as two caps of area A at a spacing h, carrying the moment as a tension–compression couple:
I = A h² / 2, sigma = M y / I with y = h/2, so A = M_ult / (sigma h)
Cap area falls in direct proportion to depth, which is why a thicker section is the cheapest strength available.
Tip deflection
The same Schrenk load is integrated numerically to shear, then to moment, then twice more through M/EI to slope and deflection, in 300 steps along the semi-span. Reported at the design load factor for a spar sized exactly to strength, which is why it is often larger than a builder would accept: strength and stiffness are different requirements.
Material data
COMPILED, NOT MEASURED. Bending strengths are the compression-governing figures, because a spar cap fails in compression long before the tension side lets go — carbon's tensile strength is over twice the value used.
| Material | Bending strength | Stiffness | Density |
|---|---|---|---|
| Balsa, medium | 19 MPa | 3.4 GPa | 160 kg/m³ |
| Balsa, hard | 27 MPa | 5.0 GPa | 240 kg/m³ |
| Basswood | 60 MPa | 9.0 GPa | 420 kg/m³ |
| Spruce | 70 MPa | 10.0 GPa | 450 kg/m³ |
| Pine | 50 MPa | 8.5 GPa | 520 kg/m³ |
| Birch ply | 60 MPa | 8.0 GPa | 680 kg/m³ |
| Glass, unidirectional | 450 MPa | 40 GPa | 1900 kg/m³ |
| Carbon, unidirectional | 600 MPa | 130 GPa | 1550 kg/m³ |
Wood varies by about 40% between two pieces off the same shelf, which is a larger spread than the difference between careful and careless design.
What it does not do
Shear web, root joint, wing bolts, dihedral brace, torsion, buckling of the compression cap between ribs, the covering, and flutter. Flutter is a stiffness problem rather than a strength one and is what actually destroys fast models. The sheet says all of this in its scope statement.
Sheet 11 — Control Surfaces & Servo Torque
Hinge moment
Plain flap-type control, hinge moment about the hinge line:
H = |Ch_delta . delta| . k_gap . q . S_f . c_f
S_f is the surface area aft of the hinge, c_f its mean chord aft of the hinge, and q the dynamic pressure at the design speed. COMPILED, NOT MEASURED: Ch_delta = -0.55 per radian and Ch_alpha = -0.30 per radian, plain sealed flap, from published two-dimensional data. Real values move with nose shape, gap, bevel and any aerodynamic balance, none of which this sheet knows about. An open hinge gap multiplies the result by 1.25.
Note that chord enters twice — once in the area and once as the arm — so hinge moment grows as the square of the chord fraction, and as the square of airspeed through q.
Servo torque
T_servo = H . (r_arm / r_horn)
with r_arm the servo arm radius and r_horn the control horn length, both hinge-line or servo-centre to pushrod hole. The same ratio sets the deflection the surface gets per degree of servo travel, so throw and torque trade against each other exactly.
Ailerons are two surfaces on two servos, so each servo carries half the pair's area.
Roll rate
Strip theory. Section lift-curve slope taken as the three-dimensional wing value:
a = 2 pi AR / (2 + sqrt(AR^2 + 4)) Cl_p = -(a/12)(1 + 3 lambda)/(1 + lambda) Cl_da = (2 a tau / (S b)) * integral over the aileron span of c(y) . y . dy pb/2V = -Cl_da . delta_a / Cl_p p = (pb/2V) . 2V / b
Flap effectiveness tau is fitted to the standard curve as tau = 1.129 (c_f/c)^0.4044 - 0.1772, which reproduces the published values to within a percentage point over the useful range.
Strip theory ignores the induced flow a rolling wing generates and treats each strip of aileron as working in isolation. The two errors push opposite ways, which is why the method survives as a preliminary tool, but expect the real aeroplane within about 30% rather than 5%.
Roll helix angle pb/2V is reported as the headline because it is a property of the aeroplane; roll rate is proportional to airspeed and is not.
| pb/2V | Reads as |
|---|---|
| below 0.05 | sluggish |
| 0.05 to 0.07 | docile, trainer |
| 0.07 to 0.10 | sport |
| 0.10 to 0.14 | lively, aerobatic |
| above 0.14 | pattern and 3D |
Elevator authority, and the forward balance point
The aft limit on the balance point is Sheet 03's: the neutral point, less whatever static margin you want. The forward one is a question about the elevator, and this sheet answers it. Taking moments about the centre of gravity, nose-up positive, with h in mean chords aft of the leading edge and the wing's aerodynamic centre at a quarter chord:
Cm = Cm0 + CL (h - 0.25) - Vh CLt = 0
At a forward balance point the wing's lift and the section's camber are both pitching the nose down, so the tail has to pull down: CLt is negative, and full up elevator is as negative as it gets. With CLt = -CLt_max at CL = CLmax:
h_fwd = 0.25 - ( Vh CLt_max + Cm0 ) / CLmax
Vh = St lh / (S mac) the tail volume, as Sheet 03 defines it CLt_max = a_t tau delta_e eta_t the elevator on the stop, and nothing else
a_t is the tail's lift-curve slope from its own aspect ratio, the same finite-wing expression the rest of the site uses. tau is the same fitted flap-effectiveness curve the ailerons use. The tail's own angle of attack is ignored, which is conservative: in the flare it is usually helping.
Three directions are worth reading off the sheet rather than being told. A longer arm or a bigger tail moves the limit forward, because both give the tail more to pull down with. More elevator throw does the same. And more camber moves it aft, because a more negative Cm0 spends the authority before the pilot asks for any — which is why a heavily cambered wing and a small tail is a combination that will not flare.
Where the limit comes out behind the quarter chord, the aeroplane cannot reach its stall at any sensible balance point: it runs out of elevator first and mushes. The sheet says that rather than printing a number that looks like an answer.
Servo classes
COMPILED from catalogue figures across several makers, NOT MEASURED, at about 6 volts, and every maker quotes stall torque rather than what the servo will hold all day.
| Class | Torque |
|---|---|
| Micro, 3.7 g | 0.6 kg·cm |
| Micro, 9 g | 1.8 kg·cm |
| Mini, 20 g | 3.5 kg·cm |
| Standard, 40 g | 5.5 kg·cm |
| Standard high-torque | 9 kg·cm |
| Large, 60 g and up | 20 kg·cm |
The crosswind the rudder can hold
On the approach the aeroplane sits in a steady sideslip — or crabs and is kicked straight at the last moment, which asks the rudder for the same thing — and the rudder works against the fin's own weathercock stiffness trying to point the nose back into wind:
Cn_dr = -Vv a_v tau_r eta_v what full rudder makes, per radian beta = Cn_dr delta_r / Cn_beta the sideslip it can hold Vx = Vapp sin(beta) the crosswind that produces it
with Vapp = 1.3 Vs, the same approach margin Sheet 13 lands at. Cn_beta comes from Sheet 12, not from the fin alone: that sheet knows what the fuselage takes back out of what the fin makes, and on a deep-nosed model that is nearly half.
Two traps, both named on the sheet. Enlarging the fin here raises what the rudder makes and leaves Cn_beta alone, which overstates the gain — change the fin, run Sheet 12 again, bring the new Cn_beta back. And a heavier aeroplane holds more crosswind, which is not a mistake: it approaches faster, so the same sideslip angle is a bigger sideways component. It is also arriving harder, which is Sheet 15's problem.
Everything here is linear, so a sideslip past about 20° is reported with a warning rather than as a number: a low-aspect-ratio fin starts to stall there and the answer means "the rudder is not the limit" rather than a number of degrees.
What it does not do
Servo speed, linkage slop, flutter, differential throw and adverse yaw. Elevator authority and crosswind are here now — the two sections above — but the first is a forward balance-point limit at the stall rather than a trim calculation across the whole CG range and the whole speed range, and the second is a steady sideslip rather than a landing. An all-moving tail entered as 100% chord will be sized and will be wrong, because such a surface hinges about its own quarter chord and its hinge moment depends on where the pivot goes.
Sheet 12 — Lateral & Directional Stability
Two static derivatives, both per radian, both independent of air density — which is why this sheet carries no atmosphere block.
Weathercock stability, Cn_beta
The fin makes it and the fuselage spends it:
Cn_beta = a_v . eta_v . V_v + Cn_beta_fuselage V_v = S_v . l_v / (S . b) a_v = 2 pi AR_v / (2 + sqrt(AR_v^2 + 4))
eta_v = 0.90 COMPILED, NOT MEASURED — it is the fin's dynamic-pressure ratio with the sidewash the wing and fuselage induce there lumped into it.
The fuselage contribution uses the standard volume relation:
Cn_beta_fus = -1.3 . (Vol_fus / (S . b)) . (h_f / w_f)
with Vol_fus = k . L . w . h, k being how much of the bounding box the body actually fills (0.5 for a tapered built-up fuselage, 0.8 for a fat scale cowl). A fuselage in a sideslip is a badly shaped wing with its lift pointing sideways, and most of it sits ahead of the centre of gravity where that lift is destabilising. On the default trainer it gives back about a fifth of what the fin produces.
Sound practice is roughly 0.04 to 0.10 per radian.
Dihedral effect, Cl_beta
Three contributions, added:
Cl_beta_dihedral = -(a . Gamma / 4) . [ 2(1 + 2 lambda) / (3(1 + lambda)) ] Cl_beta_position = the same expression with an equivalent dihedral of +3 deg high wing, 0 mid, -3 deg low Cl_beta_sweep = -CL . sin(2 Lambda) / 4
The wing-position allowance is COMPILED from long-standing practice: in a sideslip the fuselage turns the flow up over a high wing's windward panel and down over a low wing's, and three degrees is the figure that has survived.
The sweep term is proportional to CL, so a swept wing's dihedral effect doubles when the speed halves. A swept model is a different aeroplane slow than fast, and the slow case is the one that wallows.
Sound practice is roughly -0.05 to -0.15 per radian. A positive value means the dihedral effect has the wrong sign and a sideslip rolls the aircraft further into it.
The balance
ratio = -Cl_beta / Cn_beta
| Ratio | Reads as |
|---|---|
| 0 or negative | wrong sign — nothing self-rights |
| below 0.5 | fin-dominant, tends to spiral |
| 0.5 to 1.0 | firm, flies precisely |
| 1.0 to 3.0 | balanced, where pleasant aeroplanes sit |
| above 3.0 | roll-dominant, the Dutch roll recipe |
These bands are compiled from where flying models and light aircraft sit, not derived. The modes themselves need yaw and roll damping, the rolling and yawing moments of inertia and the product between them; two aircraft with identical derivatives and different inertias behave differently. The chart draws the band as a region, not a boundary, for that reason.
What it does not do
The modes themselves, the propeller's destabilising yaw contribution ahead of the centre of gravity, crosswind capability, spin recovery, and rudder authority — that last one is Sheet 11.
Sheet 13 — Take-Off, Landing & Field Performance
Whether the strip is long enough. Everything on this sheet is strongly density-dependent, so it carries the shared atmosphere block.
Speeds
Vs = sqrt( 2 W / (rho S CLmax) ) Vlo = 1.15 Vs lift-off and touchdown Vapp = 1.30 Vs approach
Vlo = 1.15 Vs rather than the 1.1 Vs of FAR 23.51 — a model is rotated by hand on a short strip and 1.1 leaves nothing for a gust. The choice lengthens the computed roll by about a tenth, which is the direction to be wrong in.
The launch, for an aeroplane that never touches a wheel
Most small unmanned aircraft are thrown or catapulted. A launch is not a short take-off run: nothing accelerates the aeroplane after release except the propeller, so the release speed is the whole of the argument.
V_need = 1.20 Vs the same kind of margin the wheels get E = m V_L^2 / 2 what the arm, or the bungee, has to put in excess = T(V_L) - q S (CD0 + k CL^2) level flight, CL clamped at CLmax climb = asin(excess / W)
Released below the stall, which is what most hand launches of anything heavy are, the aeroplane is not flying and the question is how far it falls before it is. Held at CLmax, stepped at 2 ms like the ground roll:
L = q S CLmax what the wing can carry while it is slow D = q S (CD0 + k CLmax^2) and the induced drag of holding it there ax = (T(v) - D) / m az = g - L / m what is left of the weight v += ax dt, vz += az dt, h += vz dt
run until v = Vs. The drag is taken at CLmax rather than at the level-flight lift coefficient, because that is where the wing is being held, and the induced drag of that hold is what makes a marginal launch marginal. A propeller that cannot beat it never reaches the stall at all, and the sheet says the launch does not work rather than printing a height.
The release speed is an input and its default is a convention, not a measurement. 28 km/h is about what a fit adult gets from an overarm throw with a two-kilogram model, and it falls off quickly with weight. Measure yours if it matters.
A thrown aeroplane needs no take-off run, so the ground it needs is the landing alone — which is the point of throwing it.
Ground roll, stepped
Not a closed form. At each step of 2 ms:
q = 0.5 rho v^2 L = q S CLg D = q S (CD0 + k CLg^2) T = T0 (1 - v / Vp) linear lapse to pitch speed, floored at zero a = (T - D - mu (W - L)) / m v += a dt d += (v - Vwind) dt
started at v = Vwind and run until v = Vlo. Three quantities change together during the run and a closed form has to pick one representative speed for all of them: thrust falls away linearly, drag rises with the square, and the wheel load W - L falls as the wing takes over. The stepped result agrees with the textbook
s = 1.44 W^2 / (g rho S CLmax Fnet) Fnet evaluated at 0.7 Vlo
to within six per cent on the default aeroplane, and does not need the assumption. If the acceleration is not positive at some point in the run the sheet returns nothing and says not enough thrust to accelerate — a real answer, not a zero.
The landing roll is the same integration run backwards from touchdown, with the braking coefficient added to rolling friction and no thrust.
CLg = 0.35 by default: the lift coefficient sitting on the wheels at the ground angle of attack. It matters more than people expect, because it is what unloads the wheels.
Rolling friction
COMPILED, NOT MEASURED, and compiled for model wheels rather than cars — small hard wheels on soft ground carry a far higher coefficient than a car tyre does.
| Surface | mu |
|---|---|
| Tarmac or paved | 0.03 |
| Bare dirt, packed | 0.08 |
| Short mown grass | 0.10 |
| Rough or long grass | 0.20 |
| Loose gravel or sand | 0.30 |
The surface cuts both ways: long grass lengthens the take-off by half and shortens the landing to a third of the tarmac figure. The worst strip to take off from is the best one to land on.
Over the obstacle
gamma_climb = asin( (T(1.2 Vs) - D(1.2 Vs)) / W ) gamma_app = atan( D(Vapp) / W ) air distance = h_obstacle / tan(gamma)
Both angles come from thrust and drag at the relevant speed rather than being assumed. On the default trainer the 3 m obstacle adds 17 m to a 21 m take-off roll and 27 m to a 46 m landing roll — the strip is 73 m, not 46 — which is the point of showing both.
The field length needed is the greater of the take-off and landing totals, because the strip has to serve both.
Wind
A headwind is the cheapest runway there is. The aeroplane starts the roll at the wind speed as an airspeed, and the ground distance accrues at airspeed minus wind — the two effects compound. Six metres a second takes the default aeroplane from 21 m of ground roll to 4 m.
What it does not do
Hand launch, bungee and catapult are here now — as a release speed and nothing else. The aeroplane is handed to the air at the speed given and then either climbs away on the excess of thrust over drag or falls while it accelerates to the stall. What is still outside it is the launch itself: the thrower's arm, the bungee's force against its extension, the catapult's stroke. Crosswind limits on the ground. Wet surfaces — there is no compiled coefficient for them worth publishing. Brakes are one coefficient added to rolling friction, not a brake model, so brake fade and wheel lock-up are outside it. Ground effect is not credited during the roll, which again lengthens the answer.
Sheet 14 — Glide & Sink Polar
The unpowered steady glide, from the parabolic drag polar and nothing else. Everything on this sheet is a consequence of CD = CD0 + k CL^2, computed from your figures rather than quoted.
The polar
V(CL, n) = sqrt( 2 n W / (rho S CL) ) CD(CL) = CD0 + k CL^2 sink = V . CD / CL L/D = CL / CD
n is the load factor: 1 in straight flight, 1 / cos(bank) in a coordinated turn. It enters only through the speed — the polar itself does not know about the turn.
The two speeds
best glide: CL = sqrt(CD0 / k) L/D_max = 1 / (2 sqrt(CD0 k)) minimum sink: CL = sqrt(3 CD0 / k)
At the best-glide lift coefficient the induced drag exactly equals the parasite drag. That equality is the best-glide condition, and it is worth remembering in place of the formula.
The ratio between the two speeds is fixed:
V_minsink / V_bestglide = 3^(-1/4) = 0.7598
for every aeroplane the parabolic polar describes, whatever its size, weight or drag. Both closed forms were checked against a numeric sweep of the same expressions and agree to four figures.
Weight does not appear in either lift coefficient, so it does not change the glide ratio. It changes both speeds as sqrt(W) and the sink rate as sqrt(W) with them. Double the weight and the aeroplane glides just as far, arrives sooner, and cannot stay up in weak lift. That is the entire case for water ballast.
The stall limit
Minimum sink asks for sqrt(3) times the best-glide lift coefficient, which for a draggy short-span model is often above CLmax — the wing stalls before the aeroplane reaches the bottom of its own polar. The default trainer on this site is such an aircraft: minimum sink wants CL 1.28 and the wing reaches 1.215.
The sheet detects this, clamps to CLmax, reports the sink at the stall, and says in words that the ideal speed is unreachable. It is the normal state of a non-soaring model, so the case is flagged rather than hidden — printing an unflyable speed would be worse than printing nothing.
Speed to fly into wind
Maximise ground distance per metre of height lost:
maximise ( V(CL) - V_wind ) / sink(CL)
Solved by sweeping CL from CLmax down, rather than by the quartic, because the sweep respects the stall limit at the same time and the cost is nothing. Into wind the optimum moves to a higher speed: on the chart the tangent starts at (-V_wind, 0) instead of the origin, and the point where it touches the polar slides right.
If no attainable speed exceeds the wind, the sheet says the aeroplane goes backwards over the ground rather than returning a negative distance.
Speed to fly between climbs — MacCready
Expecting to climb at Mc in the next thermal, the speed worth flying between climbs is the one that maximises the ground speed achieved over a whole climb-and-glide cycle. The glide covers V - V_wind per second while losing sink(V), and recovering that height costs sink(V) / Mc seconds of circling, so
Vxc = ( V - V_wind ) · Mc / ( Mc + sink(V) )
and the speed to fly is the V that maximises it. Swept in CL from CLmax down, like the into-wind case and for the same reason.
This is one objective, not two. At Mc = 0 the factor Mc / (Mc + sink) is a constant times 1 / sink, so maximising Vxc becomes maximising (V - V_wind) / sink — the section above. The classic into-wind construction is the zero-climb case of the MacCready one.
The number is a forecast, not a measurement: it is what you think the next thermal will give, and the sheet says so. It is also the only input on this site whose right value depends on the weather rather than the aeroplane.
Two things fall out that are worth reading off the page rather than being told. The faster you expect to climb, the faster it pays to fly — height thrown away flying fast is height the next thermal gives back, and at a high enough climb rate the best-glide speed is simply slow. And flying the still-air best glide costs cross-country speed, which is the mistake the whole construction exists to correct; the sheet prints both so the cost is visible rather than asserted.
The turn
n = 1 / cos(phi) V = V_level . sqrt(n) at the same lift coefficient sink = sink_level . sqrt(n) r = V^2 / (g tan phi) t = 2 pi r / V
At constant lift coefficient the sink penalty is sqrt(n), not n^1.5 — that larger figure is the penalty at constant speed, which is not how anyone circles. At 30° the cost is 7%; at 60° it is 41%, and the stall speed has risen by 41% as well.
What it does not do
Rising and sinking air as a field: everything here is sink through the air mass, not height over the ground, so the sheet cannot tell you where the lift is or what the air between climbs is doing. MacCready speed-to-fly is offered, because it does not need any of that — one forecast number for the next climb is the whole of its input. The drag rise approaching the stall, which makes the left-hand end of the curve optimistic. The rise in CD0 at low Reynolds number as the aircraft slows, which is held constant. Propeller drag on a stopped or windmilling propeller. Sink in a badly coordinated turn.
Sheet 15 — Landing Gear & Ground Handling
Static geometry and static loads. No graph on this sheet: three of the six answers are angles, and an angle is worth drawing where it is measured rather than printing.
The organising fact is that a tricycle is stable on the ground because the centre of gravity is ahead of the main wheels, and a taildragger is unstable because it is behind them. Everything below follows from it, and the layout select changes what is computed rather than only what is labelled.
Throughout: lm is the horizontal distance from the CG to the main axle, ls to the nose or tail wheel, B = lm + ls the wheelbase, t the track, h the CG height above ground.
Static wheel loads
single wheel fraction = lm / B each main fraction = (1 - lm/B) / 2
Moments about the wheel contacts, aeroplane level and at rest. The load on the nose or tail wheel is set by how far the mains sit from the CG and by nothing else.
Sound practice is 8–15% on a nose wheel, 6–15% on a tail wheel. Below the band the wheel will not grip and will not steer; above it the mains are so far from the CG that rotation needs real elevator authority.
Pitch angles
tip-back (tricycle) = nose-over (taildragger) = atan(lm / h)
The same arctangent with opposite meanings. On a tricycle it is how far the aeroplane pitches nose-up before it sits on its tail, and it must exceed the rotation attitude the take-off needs — 15° is the least worth having. On a taildragger it is how far it pitches nose-down before the propeller arrives, and 25° is the least worth having, because braking, a soft patch or a nose-down arrival will spend it.
On a tricycle, a nose wheel below its load band and an aeroplane that will sit on its tail are the same defect — both say the mains are barely behind the CG — so the sheet reports one cause rather than two warnings.
Turnover angle
The aeroplane tips about the line joining a main wheel to the nose or tail wheel. With the CG on the centreline, the perpendicular distance from it to that line is
lever = ls . t / sqrt(4 B^2 + t^2) turnover = atan(h / lever)
The lever depends on ls, the nose or tail wheel distance — not on lm. That is the opposite of what people assume, so the sheet says it in words. The closed form was checked against brute-force line geometry (perpendicular distance from a point to a segment) and agrees to five figures.
63° is the limit taken from full-size practice. Models have less margin, not more. Widening the track is the only change that lowers it without costing something else, because the lever grows with track while the height does not move.
Propeller clearance
clearance = h_thrustline - D_prop / 2 roll to strike = atan( 2 . clearance / t )
The roll angle is rotation about one main wheel contact — a wheel dropping into a rut, which is the failure models actually suffer, not the aeroplane tipping over. 25 mm is the least worth having on a paved strip and 50 mm on grass. A negative clearance is reported as an em dash and the words the propeller is below the ground, not as a number.
Crosswind tip-over
V = sqrt( W . t / (rho . S_side . Cy . h_side) )
A static moment balance about the downwind main wheel contact: side force times the height of the side-area centroid against weight times half the track. Cy = 1.0 is COMPILED for a bluff broadside shape. Treat the answer as the right order of magnitude rather than a threshold — but a model that blows over below about 40 km/h will blow over on an ordinary windy afternoon.
Wheel diameter against the surface
| Surface | Minimum wheel |
|---|---|
| Tarmac or paved | 40 mm |
| Bare dirt, packed | 50 mm |
| Short mown grass | 60 mm |
| Rough or long grass | 90 mm |
| Loose gravel or sand | 100 mm |
COMPILED FROM MODEL PRACTICE, not derived. The obvious rule — wheel diameter at least four times the obstacle height — does not transfer: grass bends rather than obstructing, and on sand the limit is sinkage, not obstacle height. Applying it anyway gives 160 mm wheels for long grass, which nobody flies. The figures assume roughly a kilogram on each main wheel and should grow with load on soft ground.
What it does not do
Everything dynamic. Landing impact, spring or oleo travel, tyre deflection, the sideways load in a ground loop, wheel and axle strength, shimmy, brake-induced pitching, and aerodynamic loads while rolling. A gear leg that passes every angle on this sheet can still fail on the first arrival, because arrival energy is not geometry.
Sheet 16 — Mission Profile & Energy Budget
Electrical energy out of the pack, segment by segment. Every watt-hour on this sheet is what the battery loses, not what reaches the air: the propeller and drivetrain efficiencies are paid before any figure appears.
Power required
q = 0.5 rho V^2 CL = W / (q S) CD = CD0 + k CL^2 D = q S CD P_electrical = (D V + W . ROC) / (eta_prop . eta_drive)
ROC is zero except in the climb. This is the same drag polar as Sheets 04, 06, 13 and 14 — there is one drag model on this site and every sheet uses it.
The segments
| Segment | Flown at | Energy |
|---|---|---|
| Climb | minimum-power speed or 1.2 V_s, whichever is faster, at the entered rate of climb | (P + P_hotel) . h / ROC |
| Cruise | the entered cruise speed, as an airspeed | (P + P_hotel) . t, and t is below |
| Loiter | minimum-power speed or 1.2 V_s, whichever is faster | (P + P_hotel) . t |
| Descent | engine off, at the cruise speed | P_hotel . h / w, and w is below |
The hotel load
Everything that draws from the pack and is not the propeller: receiver, servos, flight controller, telemetry, lights, and the camera or sensor the mission exists for. A fixed wattage, charged for every second of the profile including the descent.
It is not a correction. On the site's default trainer 10 W is 3.07 Wh — 17% of the mission and twice what the entire climb costs — and it takes 6.9 minutes off the loiter. The sheet shipped without a line for it at all.
The load is charged twice, and the second charge is the one people do not expect. It comes out of the pack before the loiter starts, and it raises the burn rate once the loiter does start:
t_loiter = (E_avail - E_climb - E_cruise - E_descent) / (P_loiter + P_hotel)
On the default trainer at 10 W, the transit energy accounts for 1.6 minutes of the 6.9 lost and the raised burn rate for the other 5.3. An implementation that charged only the transit — the obvious half — would report 27.6 minutes of possible loiter against the true 22.3, and would look entirely reasonable on the page. (These figures are for the loiter at 1.2 times the stall; before the loiter floor they were 7.8 minutes lost, 2.0 and 5.8.)
The payload sweep moves the mass and holds the draw fixed, because how a larger sensor scales in watts is the reader's knowledge and not the sheet's. A payload is two bills, its mass and its watts, and on a sensor aircraft the watts are often the larger.
The descent
Power off at the cruise speed, the aeroplane sinks at the rate its own drag pays for — the same glide Sheet 14 draws, read at the cruise speed rather than at the best-glide one:
w = D . V / W t = h / w covered = V . t
Nothing goes to the propeller, so the descent is free of propulsion energy; the hotel load runs the whole way down, so the row is only free if the avionics are. On the default trainer the sink is 1.40 m/s, the descent lasts 71 s and covers 0.89 km.
That 0.89 km is ground the cruise distance has already been charged for. The sheet does not credit it back — shrinking the distance box would change what the reader typed — so it states the over-charge instead: about 1.2 Wh on the default trainer, which is the direction to be wrong in.
The wind
The cruise speed is an airspeed, and the power to hold an airspeed does not change with the wind: the aeroplane cannot tell. What the wind changes is the clock, and the pack pays by the second. With airspeed V, wind w and cruise distance d:
into the wind t = d / (V - w) downwind t = d / (V + w) out and back t = (d/2)/(V - w) + (d/2)/(V + w) = d V / (V^2 - w^2) across it t = d / sqrt(V^2 - w^2) crabbing, both legs
An out-and-back is always slower than still air, by 1 / (1 - (w/V)^2), however little wind there is: you spend longer in the slow leg than in the fast one, and the two do not cancel. That is the most common mistake about flying in wind and it is why this is on the sheet at all. At a quarter of your airspeed it is 7% more time; at half, 33%; at three quarters, 129%.
w >= V on any leg into the wind makes no ground at all: the time is infinite, and the sheet says so rather than printing a number. An aeroplane whose cruise speed was chosen for endurance is exactly the one this happens to.
Only the cruise is affected. Loiter is flown at an airspeed for a time, and costs the same energy per minute in any wind. Holding a position over the ground in a wind is a different question and this sheet does not ask it.
Climb and loiter are flown at the minimum-power speed, CL = sqrt(3 CD0 / k) — the same lift coefficient as minimum sink on Sheet 14, because minimum power and minimum sink are the same condition — but never closer to the stall than 1.2 V_s, the same floor Sheet 04 loiters at. On a draggy short-span model minimum power is at or below the stall (the default trainer wants C_L 1.276 against 1.215), and a loiter flown there is an endurance nobody can fly; the sheet used to clamp it to the stall itself. Where minimum power is clear of the floor the two sheets agree on the speed, and where it is not, Sheet 16 flies 1.2 times the stall Sheet 14 prints — check-agreement.mjs checks both.
The pack
nameplate = cells . 3.7 V . mAh / 1000 Wh usable = nameplate . derate derate 1.00 by default available = usable . DoD DoD 0.80 by default
These are Sheet 09's two figures, with Sheet 09's defaults, because Sheet 09 is the source of truth for what a pack delivers and two sheets must not disagree about the same pack. Depth of discharge is landing with 20% left — that is the reserve, and it is a decision rather than a property. The derate is what a hard-worked pack returns against its label. Both are COMPILED.
This sheet shipped with a different model and it was wrong. It had its own "usable fraction" of 85% for the chemistry and a separate 20% reserve on top, which counted the same margin twice and put it 15% below Sheet 09 on the same pack — 24.9 Wh against 29.3 Wh. The handoff test could not see it, because it checks that inputs travel rather than that outputs agree. tools/check-agreement.mjs now checks that they agree, and fails on exactly this.
Sag, C rate and internal resistance belong to Sheet 09 and are not repeated; this sheet asks only how much total energy comes out.
The table accounts for the whole nameplate — mission, reserve held back, and the energy left in the cells below usable voltage — so nothing disappears silently.
The payload ceiling
The heaviest payload that still leaves the loiter you asked for, bisected rather than solved because the stall clamp makes the weight law non-invertible.
But energy is usually not the binding ceiling. Stall speed grows as the square root of weight, so at some payload the cruise speed falls inside 1.3 times the stall:
m_limit = m . ( V_cruise / (1.3 . V_stall) )^2 payload_limit = m_limit - empty weight
The sheet takes the lower of the two ceilings and says which one binds. On the default trainer the pack would pay for 1,756 g and flying stops it at 845 g.
Why the payload curve bends
Loiter power rises as the three-halves power of weight, while climb and cruise are fixed obligations that come out of the pack first. So loiter is the residual, and it falls faster than linearly as payload grows. The chart draws it because the shape is the argument.
An input defect worth recording
The sheet first took all-up weight and carved the payload out of it. That meant changing the payload silently changed the airframe, and the payload ceiling moved by 200 g when nothing about the aeroplane had. On a sheet whose subject is what payload costs, payload must be the free variable. The inputs are now weight-without-payload plus payload, with all-up derived. The handoff m from Sheets 04–06 is an all-up weight and the hint says to subtract the payload budgeted there before entering it.
What it does not do
Each segment is one steady condition held for a time, not an integration, so the take-off run, the acceleration to cruise, the turn onto station and every transition are uncharged.
That warning is now a number rather than a worry, and the number retired the warning. The kinetic energy of the whole speed-up from standing still to the cruise speed bounds every transition in the profile put together:
E_acc = 1/2 . m . V_cruise^2 / eta
On the default trainer that is 0.088 Wh, 0.5% of the mission. The sheet's old advice was to add ten per cent before believing it on the day, which pointed at exactly the wrong term: what was missing from the budget was the hotel load, worth twenty to forty times as much.
The hotel load is one wattage rather than a device list or a duty cycle. Wind is modelled on the cruise and nowhere else — an airspeed costs the same watts in any wind, but holding a position rather than an airspeed is a different question. Density is taken at the field rather than at the cruise height.
Tool — Reynolds Number
A tool, not a numbered sheet. Built to refuse the question it is usually asked: there is no single Reynolds number for an aeroplane.
Re = rho . V . L / mu
with rho and mu from the shared atmosphere block, so this tool cannot disagree with the sheets. L is the length along the flow — a chord for a lifting surface, the whole length for a fuselage.
Four parts, four answers
On the default trainer at 45 km/h at sea level:
| Part | Length | Sees | Re |
|---|---|---|---|
| Wing, mean chord | 190 mm | 45 km/h | 162,600 |
| Tail chord | 110 mm | 45 km/h | 94,100 |
| Fuselage, full length | 1,000 mm | 45 km/h | 855,800 |
| Propeller blade at 75% | 28 mm | 326 km/h | 173,700 |
Same air, same moment. The tail nearly always sits lower than the wing it stabilises, which is why a tail can stall before anyone expects it to and why flat-plate tails work better on small models than scaled-down wing sections do.
The propeller is not flying at the aircraft's speed
Multiply the blade chord by the aircraft's speed and you get 24,000 — deep in bubble country, and wrong. At the 75% station the blade has its own rotational velocity:
r_75 = 0.375 . D_prop V_rot = 2 pi r_75 . rpm / 60 V_blade = sqrt( V_rot^2 + V_flight^2 )
At 9,000 rpm on a 254 mm propeller that is 90 m/s of rotation against 12.5 m/s of flight, giving 174,000 — 7.3 times the naive figure. The tool prints both, because the wrong one is what people arrive with. A blade is a small wing flying very fast, not a small wing flying at the aircraft's speed.
The tip preset
One button puts the blade tip into the length and speed boxes, from the propeller fields below them. It takes the 95% station, since the very tip is a rounded edge with no chord to speak of, and a tip chord of 60% of the 75% chord, a typical taper on a model propeller:
L_tip = 0.6 . c_75 V_tip = sqrt( (2 pi . 0.475 . D_prop . rpm / 60)^2 + V_flight^2 )
On the defaults that is 16.8 mm at 412 km/h, about 131,600: lower than the 75% station despite the extra speed, because the chord shrinks faster than the speed grows. The rpm should be the full-throttle figure.
Regimes
| Re | Name | What it means |
|---|---|---|
| below 50,000 | bubble country | published section data mostly does not apply |
| 50,000–200,000 | awkward | a laminar separation bubble decides the polar |
| 200,000–500,000 | usable | sections behave roughly as published |
| above 500,000 | well behaved | turbulent early, dependable polar |
CONVENTIONAL RATHER THAN EXACT. Where transition happens depends on the section, the surface finish and the turbulence in the air.
Skin friction and boundary layer
Cf laminar = 1.328 / sqrt(Re) Blasius Cf turbulent = 0.455 / (log10 Re)^2.58 Prandtl-Schlichting delta laminar = 5 x / sqrt(Re) delta turbulent = 0.37 x / Re^0.2
The same friction pair Sheet 07 uses, so the two pages cannot disagree. Turbulent friction is about twice laminar at model Reynolds numbers — which is the whole argument for turbulator strips: pay the friction to keep the flow attached, because separated flow costs far more than turbulent flow does.
At the back of a 190 mm chord the turbulent boundary layer is 6.4 mm, or 3.4% of the length. On a model that is not a thin film; it is a measurable fraction of the section thickness, which is why surface finish earns more here than on a full-size aeroplane.
A hot day pushes it down twice
Thin air lowers the density and the higher temperature raises the viscosity through Sutherland's law. Reynolds number is density over viscosity, so both changes push the same way. On the default trainer, 162,600 at sea level becomes 107,100 at 2,000 m and 45 °C — a third of the Reynolds number gone, and the section is working in a worse regime exactly when the air is already thin.
The chart
The site's first logarithmic axis, and it had to be: the four parts span from thirteen thousand to two million, and on a linear scale the fuselage flattens everything that matters into the bottom fifth.
What it does not do
The laminar separation bubble — the thing that actually decides low-Reynolds behaviour — is outside a flat-plate model entirely. A flat plate is not an aerofoil: the real boundary layer thickens faster on the upper surface, and transition happens somewhere in the middle rather than at the leading edge or not at all. Use this to know which regime a part is in, not to predict a polar.
<!-- spread: generated by tools/build-spread.py -->
Where the methods disagree
Every sheet here picks one correlation and uses it, and for most quantities that is the only honest thing to do: there is one accepted method and it is the one used. For four of them there is more than one, all published, all accepted, and they do not agree.
The size of that disagreement is information. It is a measure of how well the problem is actually understood, and a single number cannot carry it. So each is evaluated below at the aeroplane the rest of this document defaults to — a 2.4 kg trainer, aspect ratio 5.54 — with the gap stated. The figures are generated by tools/build-spread.py and re-checked by tools/check-spread.py, so they cannot drift from the arithmetic.
There are other places where methods disagree, the downwash gradient most obviously. They are absent because the rule for this section is that both correlations have to be stated exactly, and a half-remembered one shown beside a solid one would be worse than showing neither.
Turbulent skin friction on a flat plate
Used on Sheet 07 and the Reynolds tool: Prandtl–Schlichting. Evaluated at a wing Reynolds number of 228,965.
| Method | Correlation | Value |
|---|---|---|
| Prandtl–Schlichting | C_f = 0.455 / (log₁₀ Re)^2.58 | 0.00598 |
| One-seventh power law | C_f = 0.074 / Re^0.2 | 0.00627 |
| They differ by | 4.7% |
The one-seventh power law is quoted for 5×10⁵ to 10⁷, and a model wing is below all of it — which is part of the answer: the correlations were fitted where the data was, and model aircraft fly underneath it. Run both at Re 10⁶, inside the range, and they are 4.3% apart; down here they are 4.7%. Neither of them knows about a laminar separation bubble, which is what actually decides a model's drag, so the agreement between them is not evidence that either is right.
Lift-curve slope of a finite wing
Used on Sheets 03, 11 and 12: Helmbold, as Polhamus wrote it. Evaluated at aspect ratio 5.54.
| Method | Correlation | Value |
|---|---|---|
| Helmbold / Polhamus | a = 2πAR / (2 + √(AR² + 4)) | 4.412 |
| Prandtl lifting line | a = 2πAR / (AR + 2) | 4.617 |
| They differ by | 4.5% |
Lifting line is the older result and the more optimistic one, and the two converge as the wing gets longer: 1.2% apart at aspect ratio 12, 4.0% at 6, and 11.4% at 3. Model wings are short, which is exactly where the choice matters. Everything downstream of the slope — the neutral point, the tail volume that follows from it, the roll rate — carries whichever one was picked.
Span efficiency of a straight wing
Used on Sheets 04, 06, 13, 14 and 16: neither — it is an input, from a picker. Evaluated at aspect ratio 5.54.
| Method | Correlation | Value |
|---|---|---|
| Raymer, straight wing | e = 1.78(1 − 0.045·AR^0.68) − 0.64 | 0.883 |
| Brandt | e = 2 / (2 − AR + √(4 + AR²)) | 0.851 |
| They differ by | 3.7% |
This is the one the site declines to compute, and the two correlations are why. They differ by 0.032, against a picker whose adjacent rows are 0.06, 0.02, 0.05, 0.07 apart — so the disagreement between two published correlations is about the width of one row of the list that asks you instead. Both land inside the 0.72 to 0.92 the picker offers, which means the picker is not less accurate than a correlation would be. It is the same uncertainty, said out loud.
Form factor of a streamlined body
Used on Sheet 07: Raymer. Evaluated at a fuselage fineness ratio of 8.5.
| Method | Correlation | Value |
|---|---|---|
| Raymer | FF = 1 + 60/f³ + f/400 | 1.117 |
| Torenbeek, after Hoerner | FF = 1 + 2.2/f^1.5 + 3.8/f³ | 1.094 |
| They differ by | 2.1% |
At this fineness the two are close, and that is the least interesting thing about them. Both tend to 1 as a body gets more slender and they part company as it gets stubbier: 2% apart at the default fuselage’s fineness of 8.5, 10% at 6, and 37% at 4 — a scale cowl with a radial engine in it. So a build-up on a slender boom is on firm ground and the same build-up on a warbird is not, which is a thing worth knowing before comparing either against a measurement.
<!-- /spread -->