RotorLab logo RotorLabDocs

The physics model

RotorLab estimates performance from physics rather than rules of thumb. Most quick calculators multiply a fixed grams-per-watt figure by weight, which hides the two variables that actually drive efficiency: disc area and air density. RotorLab derives hover power from actuator-disc (momentum) theory instead, so the result responds correctly to a larger prop, a denser or thinner atmosphere, or a heavier payload.

Treat the output as a strong first-order engineering estimate, then calibrate against bench and flight data for numbers you can fly on.

Hover: momentum theory#

Hover power comes from actuator-disc theory:

induced power per disc = T^1.5 / sqrt(2 * rho * A)

where T is the thrust each disc carries, rho is air density, and A is disc area. The ideal figure is summed across all discs, then divided by the rotor figure of merit to get the shaft power the rotors take, with an optional penalty applied for coaxial layouts. Coaxial types (Y6, Octo X8) stack two motors over one disc location, so they count as half the discs. This is why prop diameter and density move the numbers strongly: both change disc loading.

The figure of merit is the rotor's own: ideal power over shaft power. The motors and ESCs are counted once, separately, in the drive losses below, so do not fold them into the figure of merit.

Drive losses and the sagged pack#

The drive turns rotor shaft power into the electrical power the pack supplies. Per motor, with I_m the shaft power over the bus voltage:

motor input       = shaft + I_m^2 * Rm + V * I0
electrical power  = motor input / ESC efficiency

Rm is the motor's terminal resistance (copper loss), I0 its no-load current (iron and friction loss), and the ESC efficiency is the share of its input that reaches the motor. With Rm and I0 at 0 and the efficiency at 1.0 the drive is lossless, and the Builder says so.

Hover current is worked out at the voltage the pack actually holds under that load. The pack voltage and the current are solved together:

V = V_nom - I * R_pack
I = P_elec(V) / V

where R_pack is the pack's internal resistance (measured, or estimated from the pack) and the drive losses are taken at V. The voltage is not allowed below half the nominal voltage. If the pack sags so far at the hover current that full throttle no longer lifts the aircraft, the build fails Pack cannot hold the hover and no hover endurance is given.

Hover endurance divides the usable pack energy by the hover power plus the heat the pack loses in its own resistance at the hover current:

pack loss        = I^2 * R_pack = I * (V_nom - V)
hover endurance  = usable energy / (P_hover + pack loss)
cruise endurance = usable energy / (P_cruise + I_cruise^2 * R_pack)

The power drawn from the pack is therefore the hover current times the nominal voltage, so hover endurance is shorter than the terminal power alone would give by the hover sag's share of the nominal voltage (about 6% on the example build). The report's basis states the loss in watts. Cruise endurance and range charge the same loss at the cruise current, so they are shorter than the cruise power alone would give by the cruise sag's share of the nominal voltage (about 7% on the example build).

Full throttle and thrust-to-weight under sag#

Full-throttle power scales the rotors' hover shaft power by momentum theory, (1 / hover thrust fraction)^1.5, and then applies the drive losses at the full-throttle current, so a motor's no-load loss is counted once, not multiplied.

Thrust-to-weight is given three ways. Thrust-to-weight is static thrust at full charge over all-up weight. At mid-pack scales it by the state of charge alone, (V_nom / V_full)^2. Under sag scales it by (V_wot / V_full)^2, where V_wot is the mid-pack voltage sagging at full-throttle current, solved with the current falling as the voltage squared at a fixed throttle:

V_wot = V_nom - I_wot * (V_wot / V_nom)^2 * R_pack

solved in closed form and not allowed below half the nominal voltage.

Density altitude#

Air density comes from the ISA standard-atmosphere model for the altitude you enter, with density then computed from the real temperature you give it. Hot air at altitude is the worst case for any rotorcraft, and the tool shows the endurance and thrust penalty directly. Set a high altitude and a high temperature to see the effect for a demo or deployment site.

Forward flight: the power-required curve#

Set a flat-plate drag area f (Cd times frontal area, in m2) and RotorLab computes a power-required curve across airspeed instead of scaling hover power by a flat factor. The curve is the sum of three terms:

  • Induced power: momentum theory in forward flight, falling as the aircraft speeds up.
  • Profile power: a roughly constant term.
  • Parasite power: 0.5 * rho * V^3 * f, rising as the cube of speed.

Thrust grows with speed because the disc tilts to beat body drag. From the curve the tool reports the best-endurance speed (minimum power), the best-range speed (maximum distance per unit energy, used as the default cruise speed), cruise endurance and range at that speed, and a top speed limited by available thrust, available power or the prop's pitch speed (see Thrust in forward flight below). The top-speed sweep derives its ceiling from the build's own thrust and power limits and reports what binds the result.

Leave f at 0 and the tool falls back to the flat cruise factor and pitch-slip top speed. See Forward flight and VTOL for the inputs.

The VTOL wing model#

For the VTOL transition airframe type, the craft takes off vertically on its props (the hover analysis is unchanged), then transitions to horizontal flight where the wing carries the weight and the props become pure forward pushers. Because the props no longer hold the aircraft up, they fight only drag, which is how this regime reaches far higher cruise speeds than a weight-carrying multirotor.

The wing is the airfoil arms: total area is arms times arm length times arm chord. Cruise drag is the wing profile drag plus induced drag (from aspect ratio and span efficiency) plus the body parasite drag (the same flat-plate area f). Power required is drag times speed divided by the cruise propulsive efficiency. The tool reports the stall speed (the transition speed the craft must exceed before the wing flies), wing area and loading, best-range and best-endurance cruise speeds, cruise endurance and range, a top speed limited by thrust, power or the cruise prop's pitch speed, and a transition-feasibility check: whether the thrust-borne phase can accelerate the craft past its stall speed. This is a first-order model; the multirotor forward-flight path adds no wing drag, since in that mode the props carry the weight.

Thrust estimation, and the input that matters most#

max_thrust_per_motor_g is the one input that matters most. Enter a measured or datasheet value and thrust-to-weight, hover throttle, and the WOT current checks become trustworthy. Leave it at 0 and the tool estimates thrust from a static thrust coefficient (T = C_T * rho * n^2 * D^4) and flags every dependent figure [est]. Whatever its source, the max thrust carries its basis: estimated, as entered, datasheet, measured on a thrust stand, or inferred by a calibration.

The coefficient scales with pitch over diameter and blade count:

C_T = 0.085 * (0.6 + 0.8 * P/D) * (1 + 0.12 * (B - 2))

This is RotorLab's own empirical fit, not a published coefficient, so prefer a measured thrust-stand value.

Loaded RPM: the operating point#

The RPM that thrust, pitch speed and tip speed are taken at is found one of three ways. A measured loaded RPM wins. With the motor's resistance entered, the full-throttle operating point is solved where motor torque meets prop torque:

n  = Kv * (V - I * Rm)            (rev/s with Kv in rev/s per volt)
I  = I0 + Q / Kt,   Kt = 60 / (2 * pi * Kv)
Q  = C_P * rho * n^2 * D^5 / (2 * pi)

which is a quadratic in n, solved in closed form. The power coefficient C_P comes from C_T and the figure of merit, so the prop's power at the operating point equals the momentum power the hover figures use. Without a resistance, the loaded RPM is assumed at the Loaded RPM fraction of no-load (0.70) for any prop. The solved RPM can only lower the RPM the thrust is taken at: where the solve reads above the assumed fraction, thrust keeps the assumed figure (assumed, solve higher) and the solve only judges the prop match. The match reads over-propped below 70% of no-load, and is not judged when the RPM is assumed.

Coaxial thrust#

The lower rotor of a coaxial pair works in the upper rotor's wake. Each rotor of a pair counts at

coaxial thrust factor = (sqrt(2) * coax_power_penalty)^(-2/3)

of its isolated thrust: 0.83 at the default penalty of 0.943 (0.70 at 1.20). The default 0.943 is the measured pair figure on the same form: a stacked pair needs about 1.334 times the hover power of two rotors flying apart (Cameron et al.), and 1.334 / sqrt(2) = 0.943. A build saved with an earlier penalty keeps its stored value. The factor is derived from the same penalty the hover power carries, so a coaxial build's full-throttle power works out to exactly that of the same number of isolated rotors. It applies to max thrust, thrust-to-weight, hover throttle, full-throttle power and motor-out, but not to a thrust inferred from the aircraft's own hover. Set Coaxial thrust factor to 1 when the thrust was measured on the stacked pair.

Thrust in forward flight#

A fixed-pitch prop's thrust falls as the air through it approaches its geometric pitch speed. RotorLab lapses static thrust in a straight line to zero at the pitch speed at the loaded RPM:

T(V) = T_static * (1 - V_axial / V_pitch)

a first-order fit that errs low, because a real prop speeds up as it unloads. For a multirotor V_axial is the disc's axial inflow, the airspeed times the sine of the disc tilt; for a wing it is the airspeed. Top speed can therefore be limited by the pitch speed, the best-range and best-endurance speeds are taken only among speeds the aircraft can reach, and a quadplane or tiltrotor's transition check uses the cruise thrust left at stall speed.

Anything in the output tagged [est] or [rough] is a model estimate, not a measured value.

Hover throttle#

Hover throttle is one figure: the share of full thrust a hover takes, 1 / thrust-to-weight, which is what an autopilot reports when it linearizes thrust. It is judged against one band: 40 to 50% below 25 kg all-up, failing above 1 / 1.3; and 50 to 65% from 25 kg, failing above 1 / 1.15. The thrust-to-weight tag, the checks and the reports all read this band. On an ESC with no thrust linearization the stick sits nearer the square root of the share, because thrust rises roughly with the square of throttle; that figure is given as the basis and is not judged.

Motor-out#

After the worst single motor failure, the remaining rotors must still hold zero roll, pitch and yaw moment, with each rotor's reaction torque taken as proportional to its thrust and every rotor between zero and full thrust. RotorLab solves that as a small linear program and reports how many rotors' worth of thrust the survivors can give while trimmed:

LayoutRotors' worth after the worst failure
Quad0
Hexa4.00
Y6 (coaxial)3.00
Octo5.66
Octo X8 (coaxial)6.00
Dodeca ring (12)9.86
Hexadeca ring (16)13.92

The rotors sit in a stated layout: an evenly spaced ring with alternating spin, or coaxial arm pairs that spin opposite ways. Motor-out thrust-to-weight is one rotor's full thrust times that figure over the all-up weight, and the build counts as surviving from 1.1:1. On the alternating hex the rotor opposite the failure carries nothing. The How We Validate page publishes the table and checks it in your browser.

Balance: the lever arm#

A center of gravity offset d from the rotor center is priced against the lever arm the rotors have along the direction of the offset. Each rotor is trimmed in proportion to its distance p along the offset, as a mixer does, so the most-loaded rotor carries d * p_max / mean(p^2) extra of its share and the lever arm is mean(p^2) / p_max. That is the arm length for two opposed rotors and the arm length times cos 45 degrees for a quad X, whose motors sit on the arm radius at 45 degrees.

RF range#

A radio link's usable range is the shortest of three: the free-space link budget, the two-ray (ground reflection) range, and the line of sight. Past the two-ray breakpoint the received power falls 40 dB per decade of distance rather than 20, so a long-range link with a low antenna is often bound by ground reflection. See RF link and range.

Model factor defaults#

The model factors are advanced inputs, grouped at the bottom of the console, meant to be tuned to your own bench data:

FactorDefaultMeaning
figure_of_merit0.65Rotor efficiency; 0.6 to 0.75 typical
coax_power_penalty0.943Hover-power multiplier for a coaxial pair over one disc carrying it; 0.943 is the measured value
coax_thrust_factor0Share of isolated thrust each coaxial rotor makes; 0 derives it from the penalty
usable_fraction0.85Usable pack energy before reserve
cruise_power_factor0.85Fallback cruise prop power as a fraction of hover, used only when f is 0
prop_ct0.085Base static thrust coefficient, scaled by pitch/diameter and blade count
loaded_rpm_fraction0.70WOT loaded RPM versus no-load RPM, assumed when no measured RPM and no motor resistance are given
pitch_slip0.80Realized speed versus geometric; fallback top speed when f is 0
cruise_speed_kmh00 means derive (best-range speed if the forward-flight model is active)

Calibrating the model to your aircraft#

The defaults give sensible ballpark numbers. To make them yours:

  1. Build the profile, enter the motor's resistance and no-load current and the ESC efficiency from the datasheets, and leave the model factors at defaults. A new build starts at an ESC efficiency of 0.95.
  2. Hover the real aircraft and read pack current from telemetry.
  3. Adjust figure_of_merit until predicted hover current matches measured. Because the drive losses are counted separately, the figure of merit you land on is the rotor's own.
  4. Enter measured max thrust per motor from a thrust stand.

After that, endurance and TWR are specific to your hardware, not generic. The Calibration page automates this from a live flight controller: a steady hover capture yields the measured figure of merit and an inferred max thrust, an optional static bench WOT burst at 95% throttle or more gives a power-ratio figure, and a thrust-stand file measures it.

Limitations#

  • Static max-thrust estimation is coarse. Prefer a measured thrust-stand value.
  • Loaded RPM is assumed from KV unless you supply a measured WOT RPM or the motor's resistance. Pitch speed remains geometric, and the thrust lapse toward it is a straight line.
  • The motor-out check assumes a standard spin pattern for each layout.
  • The forward-flight curve uses a constant profile-power term and a single flat-plate drag area rather than a full blade-element model. It is solid for sizing and planning, not a substitute for flight test.
  • Each load carries a single power figure; idle versus peak draw is not modeled separately, so the regulator headroom check uses that one number.
  • Catalog mass and power figures are nominal starting points, not guaranteed specs. Edit them to match your exact hardware.
  • The model assumes an even, symmetric rotor layout for prop-clearance geometry. Stretched-X, deadcat, H, and non-uniform arm frames are not modeled for clearance. A quadplane's lift props and a tiltrotor's hover rotors are checked against where they sit on the dimensioned layout, with the clearance at 90% of the distance between the two nearest rotor centers; the cruise prop is not checked. Four or more lift rotors sit in pairs on two booms, in rows spaced evenly from the fore row to the aft row. Where the layout places more than one hover rotor on the same spot (three lift rotors, or a tilt-quad), the fit is not judged. A fixed wing has no propeller fit check, since its propeller sits on no rotor arms.

The How We Validate page#

The How We Validate page at https://rotorlab.app/how-we-validate (also in the Menu dropdown) writes out every governing equation the tool uses, derived and referenced: the standard-atmosphere density, momentum-theory hover, the drive losses and the sagged pack, full-throttle power, thrust-to-weight under sag, the forward-flight power curve, the VTOL wing model, energy and endurance, thrust and the loaded-RPM operating point, the motor-out trim, the balance lever arm, the two-ray radio range, and the regulated rails. It labels RotorLab's own fits, such as the thrust coefficient, as its own rather than as published coefficients.

It is more than documentation: each equation is re-evaluated independently in your browser from a set of editable inputs and checked against what the engine returns from its own code path. A green badge means the printed equation and the software agree to within 0.1%; a red badge would mean they diverge. Change any input and every number, and every check, recomputes. The page needs no internet and uses no external math library.

To check your own aircraft instead of the example, press Load my current build beside Start from. The button appears when this browser holds a working build from the Builder. The build's airframe picks the worked model (multirotor, fixed wing or VTOL), its figures fill the inputs, and a line reads "Loaded your current build." or, when its airframe differs from the model's, names the airframe and the model it was checked as (for example "Loaded your current build (Hexa), checked as a multirotor.").