Fuel fraction sizing
Read about fuel fraction sizing in Raymer's "Aircraft Design: A Conceptual Approach" or most other aircraft design text books.
FUELFRACTIONSIZING finds aircraft gross weight using the fuel fraction sizing method.
W0 = fuelfractionsizing(EWfunc, fixedW, FF, tol, maxW)
BREGUET uses the Breguet range equation to calculate the weight fraction for a cruise or loiter mission segment -OR- to find the range and endurance for a given segment weight fraction.
segFrac = breguet('Jet', 'Cruise', R, LD, TSFC, V)
segFrac = breguet('Jet', 'Loiter', E, LD, TSFC)
[R, E] = breguet('Jet', 'Range', segFrac, LD, TSFC, V)
segFrac = breguet('Prop', 'Cruise', R, LD, PSFC, [], eta_p)
segFrac = breguet('Prop', 'Loiter', E, LD, PSFC, V, eta_p)
[R, E] = breguet('Prop', 'Range', segFrac, LD, PSFC, V, eta_p)
All functions in the suite are vectorized and can accept arrays for input parameters - very useful for conducting trade studies.
Example 1: Find gross weight of a light sport aircraft with 600 nmi range, PSFC of 0.4 lb/hr/bhp, and fixed weights (pilot, passenger, cargo) of 400 lbs.
Single line:
W0 = fuelfractionsizing({3.03 -.235}, 400, 1.06*missionfuelburn...
(.98,.99,breguet('Prop','Cruise',1111200,10,6.628e-07,0,.8),.99))
Verbose:
fixedW = 400;
R = 600*1852; %convert nmi to m
L_over_D = 10;
PSFC = 0.4*1.657e-06; %convert lbm/hr/bhp to 1/m
eta_prop = 0.8;
segments = {.98 %startup, runup, taxi, takeoff
.99 %climb
breguet('Prop','Cruise', R, L_over_D, PSFC, false, eta_prop)
.99}; %decent, landing, taxi, shutdown
fuel_safety_margin = 0.06;
FF = (1+fuel_safety_margin)*missionfuelburn(segments{:});
EWfunc = @(W0) 3.03*W0.^-.235;
W0 = fuelfractionsizing(EWfunc, fixedW, FF)
Example 2: Evaluate sensitivity of W0 to variations in historical trendline parameter A.
A0 = 3.03; A = linspace(.8*A0,1.2*A0,30);
W0 = fuelfractionsizing({A -0.235}, 400, 1.06*missionfuelburn...
(.98,.99,breguet('Prop','Cruise',1111200,10,6.628e-07,0,.8),.99));
plot(A,W0); xlabel('A'); ylabel('W0 (lb)')
Example 3: Take advantage of vectorization to do a gross weight trade study for the effect of range and fixed weights on gross weight, ignoring aircraft that are heavier than the light sport category limit of 1,320 pounds.
R = 1852*(300:2:1000)'; %convert nmi to m
fixedW = 200:2:600;
[R, fixedW] = meshgrid(R,fixedW);
W0 = fuelfractionsizing({3.03 -.235},fixedW,1.06*missionfuelburn...
(.98,.99,breguet('Prop','Cruise',R,10,6.628e-07,0,.8),.99),[],1320);
surfc(R/1852,fixedW,W0,'LineStyle','none')
xlabel('Range (nmi)'); ylabel('Fixed Weights (lb)')
zlabel('Gross Weight (lb)')
Cite As
Sky Sartorius (2026). Fuel fraction sizing (https://www.mathworks.com/matlabcentral/fileexchange/38973-fuel-fraction-sizing), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
Tags
Acknowledgements
Inspired by: Units and Dimensions Suite for Matlab, Bisection Method Root Finding, Physical Units Toolbox, The carpetplot class
Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
| Version | Published | Release Notes | |
|---|---|---|---|
| 2.4.0.0 | breguet format |
||
| 1.9.0.0 | breguet updates; error handling updates; lots of documentation updates |
||
| 1.7.0.0 | bisection usage now consistent with full function to help modularity; brequet made more general (no longer metric-specific documentation) |
||
| 1.6.0.0 | fixed a small bug that would in some cases evaluate EWfunc at a weight above the upper limit. |
||
| 1.5.0.0 | fixed premature convergence bug; more testing confirmed that bisection is better than classic iteration |
||
| 1.3.0.0 | changed the math to vastly increase robustness of the method for more reliable convergence; added maxW optional input; fixed bisection bug; added new input to example 3. |
||
| 1.2.0.0 | added a . to missionfuelburn so it can handle multiple array inputs; fixed typo in documentation; did testing and confirmed that bisection is the most stable array-capable search method; integrated bisection as sub-function |
||
| 1.1.0.0 | DimensionedVariable example and documentation; more EWfunc options; better BREGUET case handling; improved documentation; added example for arrays in EWfunc |
||
| 1.0.0.0 |
