diff --git a/+AerodynamicsPkg/TrimDrag.m b/+AerodynamicsPkg/TrimDrag.m index 1c484ac1..18930b4b 100644 --- a/+AerodynamicsPkg/TrimDrag.m +++ b/+AerodynamicsPkg/TrimDrag.m @@ -2,7 +2,7 @@ % % [dCD0] = TrimDrag(Aircraft) % written by Paul Mokotoff, prmoko@umich.edu -% last updated: 08 jan 2026 +% last updated: 22 jul 2026 % % estimate the trim drag from any failed engines. % @@ -38,18 +38,24 @@ % return an array of zeros dCD0 = zeros(npnt, 1); - + % exit the program return end +% get the component +icomp = Aircraft.Mission.History.SI.Power.Windmill(SegBeg); + +% get the number of sources +nsrc = length(Aircraft.Specs.Propulsion.PropArch.SrcType); + %% PRE-PROCESSING %% %%%%%%%%%%%%%%%%%%%% % get the SLS thrust -Tsls = Aircraft.Specs.Propulsion.Engine.DesignThrust; +Tsls = Aircraft.Specs.Propulsion.SLSThrust(icomp - nsrc); % get the moment arm between the fuselage and most outboard engine Arm = Aircraft.Specs.Aero.Fuse.DistToEng; diff --git a/+AerodynamicsPkg/WindmillDrag.m b/+AerodynamicsPkg/WindmillDrag.m index 9a83a5e2..faa9d2c1 100644 --- a/+AerodynamicsPkg/WindmillDrag.m +++ b/+AerodynamicsPkg/WindmillDrag.m @@ -2,7 +2,7 @@ % % [Aircraft] = WindmillDrag(Aircraft) % written by Paul Mokotoff, prmoko@umich.edu -% last updated: 05 jan 2026 +% last updated: 22 jul 2026 % % estimate the windmilling drag from any failed engines. % @@ -99,6 +99,9 @@ ThrCD(isnan(ThrCD)) = 0; DelCD(isnan(DelCD)) = 0; +% if there are any theoretical drag coefficients less than 0, convert them to zero +ThrCD(ThrCD <= 0) = 0; + % compute the adjusted drag coefficient TotCD = ThrCD - DelCD; diff --git a/+ConstraintDiagramPkg/+ConstraintSpecsPkg/ElysianE9X.m b/+ConstraintDiagramPkg/+ConstraintSpecsPkg/ElysianE9X.m index 668855d0..ac0b95c0 100644 --- a/+ConstraintDiagramPkg/+ConstraintSpecsPkg/ElysianE9X.m +++ b/+ConstraintDiagramPkg/+ConstraintSpecsPkg/ElysianE9X.m @@ -2,11 +2,22 @@ % % [] = ElysianE9X() % written by Paul Mokotoff, prmoko@umich.edu -% last updated: 30 mar 2026 +% last updated: 22 jul 2026 % % create a constraint diagram for a battery electric aircraft % representative of the Elysian E9X. % +% data was extracted from the following papers, published in 2024 and 2025: +% 1) de Vries, R., Wolleswinkel, R. E., Hoogreef, M., & Vos, R. (2024). +% A new perspective on battery-electric aviation, part II: +% Conceptual design of a 90-seater. In AIAA Scitech 2024 Forum +% (p. 1490). https://doi.org/10.2514/6.2024-1490 +% +% 2) de Vries, R., Wolleswinkel, R. E., Exalto, J., van den Berg, P., +% Vos, R., & Hoogreef, M. (2025). Conceptual Redesign of a 90-Seater +% Battery-Electric Aircraft. In AIAA AVIATION FORUM AND ASCEND 2025 +% (p. 3153). https://doi.org/10.2514/6.2025-3153 +% % INPUTS: % none % @@ -137,41 +148,20 @@ % number of engines [2024 paper] Aircraft.Specs.Propulsion.NumEngines = 8; +% lapse rate exponent correction factor for cruise/diversion/etc. +Aircraft.Specs.Propulsion.LapseRate.Crs = 0.10; +Aircraft.Specs.Propulsion.LapseRate.Div = 0.28; + %% RUN THE CONSTRAINT ANALYSIS %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% determine which constraints to use (0 = 14 CFR 25; 1 = novel) -Aircraft.Settings.ConstraintType = 0; +% determine which constraints to use (0 = 14 CFR 25; 1 = novel; 2 = Steiner +% et al. [extrapolate exiting reg's for >4 engine aircraft]) +Aircraft.Settings.ConstraintType = 2; % create a constraint diagram ConstraintDiagramPkg.ConstraintDiagram(Aircraft); -% add the existing sizing point -hold on -scatter(Aircraft.Specs.Aero.W_S.SLS * 9.81 / 1000, 1 / (Aircraft.Specs.Power.P_W.SLS / 9.81 * 1000), 48, "o", "MarkerEdgeColor", [0, 0.251, 0.478], "MarkerFaceColor", [0, 0.251, 0.478]); - -% format the axis sizes -xlim([0, 8]); -ylim([0, 0.2]); -axis square - -% turn on gridlines -grid on - -% get the axis object -A = gca; - -% set the grid to be semi-transparent and move it to the top -A.GridAlpha = 0.5; -A.Layer = "top"; - -% add minor gridlines -A.XMinorGrid = "on"; -A.YMinorGrid = "on"; - -% increase font size -set(gca, "FontSize", 28); - end \ No newline at end of file diff --git a/+ConstraintDiagramPkg/+ConstraintSpecsPkg/SUSAN.m b/+ConstraintDiagramPkg/+ConstraintSpecsPkg/SUSAN.m index cfa98c52..f491b01f 100644 --- a/+ConstraintDiagramPkg/+ConstraintSpecsPkg/SUSAN.m +++ b/+ConstraintDiagramPkg/+ConstraintSpecsPkg/SUSAN.m @@ -2,9 +2,14 @@ % % [] = SUSAN() % written by Paul Mokotoff, prmoko@umich.edu -% last updated: 25 sep 2025 +% last updated: 22 jul 2026 % -% create a constraint diagram for NASA's SUSAN aircraft. +% create a constraint diagram for NASA's SUSAN aircraft. information was +% extracted from the following paper: +% +% Chau, T., & Duensing, J. (2024). Conceptual Design of the Hybrid-Electric +% Subsonic Single Aft Engine (SUSAN) Electrofan Transport Aircraft. In AIAA +% SciTech 2024 Forum (p. 1326). https://doi.org/10.2514/6.2024-1326 % % INPUTS: % none @@ -28,7 +33,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % aircraft class -Aircraft.Specs.TLAR.Class = "Turbofan"; +Aircraft.Specs.TLAR.Class = "Turboprop"; % CFR regulations to certify Aircraft.Specs.TLAR.CFRPart = 25; @@ -41,19 +46,21 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% altitudes -Aircraft.Specs.Performance.Alts.Crs = UnitConversionPkg.ConvLength(40000, "ft", "m"); -Aircraft.Specs.Performance.Alts.Srv = UnitConversionPkg.ConvLength(42000, "ft", "m"); +% altitudes [cruise from economy mission outlined in 2024 paper; service +% ceiling estimated] +Aircraft.Specs.Performance.Alts.Crs = UnitConversionPkg.ConvLength(37000, "ft", "m"); +Aircraft.Specs.Performance.Alts.Srv = UnitConversionPkg.ConvLength(40000, "ft", "m"); -% stall speed +% stall speed [based on wing loading from 2024 paper] Aircraft.Specs.Performance.Vels.Stl = sqrt(2 * 634 * 9.81 / 2 / 1.225); -% cruise mach number +% cruise mach number [2024 paper, Tab. 5] Aircraft.Specs.Performance.Vels.Crs = 0.775; -% runway lengths and obstacle clearances -Aircraft.Specs.Performance.TOFL = 2750; -Aircraft.Specs.Performance.LFL = 2750; +% runway lengths and obstacle clearances [Boeing 737-800 MAX airport +% planning manual] +Aircraft.Specs.Performance.TOFL = 2040; +Aircraft.Specs.Performance.LFL = 1700; Aircraft.Specs.Performance.ObstLen = UnitConversionPkg.ConvLength(1000, "ft", "m"); % multiplicative factors for OEI conditions @@ -61,13 +68,16 @@ Aircraft.Specs.Performance.MaxCont = 1 / 0.94; % design specific excess power loss -Aircraft.Specs.Performance.PsLoss = 0.7689; % mean for twin-engine aircraft +% 0.9171 - mean SEP loss for twin-engine aircraft +% 0.0720 - lose a single distributed propulsor (most outboard) +% 0.3426 - lose the aft turbofan engine +Aircraft.Specs.Performance.PsLoss = 0.3426; -% landing weight as a fraction of MTOW (computed from baseline) +% landing weight as a fraction of MTOW (computed from FAST simulations) Aircraft.Specs.Performance.Wland_MTOW = 0.8411; % requirement type (0 = Roskam; 1 = Mattingly, 2 = de Vries et al.) -Aircraft.Specs.TLAR.ReqType = 0; +Aircraft.Specs.TLAR.ReqType = 2; % constraints to use Aircraft.Specs.Performance.ConstraintFuns = ["Jet25_111"; "Jet25_119"; "Jet25_121a"; "Jet25_121b"; "Jet25_121c"; "Jet25_121d"; "JetCrs"; "JetLFL"; "JetTOFL"]; @@ -83,18 +93,19 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% wing loading +% wing loading [2024 paper] Aircraft.Specs.Aero.W_S.SLS = 634; -% wing properties -Aircraft.Specs.Aero.AR = 11.22091; +% wing properties [2024 paper] +Aircraft.Specs.Aero.AR = 9.44; -% lift coefficients (from Chau & Duensing and FINCH) -Aircraft.Specs.Aero.CL.Crs = 0.61; -Aircraft.Specs.Aero.CL.Tko = 2.0; -Aircraft.Specs.Aero.CL.Lnd = 3.5; +% lift coefficients [cruise lift coefficient from 2024 paper, others are +% estimated based DEP tech. improvements] +Aircraft.Specs.Aero.CL.Crs = 1.0; % given as 0.61 in 2024 paper, but need maximum CL for the constraint diagram +Aircraft.Specs.Aero.CL.Tko = 2.5; +Aircraft.Specs.Aero.CL.Lnd = 3.0; -% parasite drag coefficients (computed) +% parasite drag coefficients (computed from Raymer) Aircraft.Specs.Aero.CD0.Crs = 0.0176; Aircraft.Specs.Aero.CD0.Tko = 0.0626; % cruise CD0 + 0.045 Aircraft.Specs.Aero.CD0.Lnd = 0.1076; % cruise CD0 + 0.090 @@ -112,7 +123,7 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% MTOW +% MTOW [2024 paper] Aircraft.Specs.Weight.MTOW = UnitConversionPkg.ConvMass(190890, "lbm", "kg"); % ---------------------------------------------------------- @@ -124,12 +135,19 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% thrust-weight ratio +% thrust-weight ratio [2024 paper] Aircraft.Specs.Propulsion.T_W.SLS = 0.298; -% number of engines +% number of engines [for appropriate FARs] Aircraft.Specs.Propulsion.NumEngines = 2; +% lapse rate [estimated] +Aircraft.Specs.Propulsion.LapseRate.Crs = 0.35; + +% alternatively, a power-weight ratio [assumed takoeff airspeed as the +% "characteristic speed" to avoid singularities] +Aircraft.Specs.Power.P_W.SLS = (Aircraft.Specs.Propulsion.T_W.SLS * 1.21 * Aircraft.Specs.Performance.Vels.Stl) * 9.81 / 1000; + %% RUN THE CONSTRAINT ANALYSIS %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -142,6 +160,6 @@ % add the existing sizing point hold on -scatter(Aircraft.Specs.Aero.W_S.SLS, Aircraft.Specs.Propulsion.T_W.SLS, 48, "o", "MarkerEdgeColor", "red", "MarkerFaceColor", "red"); +scatter(Aircraft.Specs.Aero.W_S.SLS * 9.81 / 1000, 1 / (Aircraft.Specs.Power.P_W.SLS / 9.81 * 1000), 48, "o", "MarkerEdgeColor", "red", "MarkerFaceColor", "red"); end \ No newline at end of file diff --git a/+ConstraintDiagramPkg/Jet25_111.m b/+ConstraintDiagramPkg/Jet25_111.m index 2f97b4c7..195b2044 100644 --- a/+ConstraintDiagramPkg/Jet25_111.m +++ b/+ConstraintDiagramPkg/Jet25_111.m @@ -2,7 +2,7 @@ % % [FAR] = Jet25_111(W_S, T_W, Aircraft) % written by Paul Mokotoff, prmoko@umich.edu -% last updated: 30 mar 2026 +% last updated: 11 jul 2026 % % derive the constraints for takeoff climb with one engine inoperative. % @@ -72,6 +72,11 @@ % compute the climb gradient from a sigmoid curve G = ConstraintDiagramPkg.Sigmoid(Aircraft, 0.5026, -42.54, 0.7925, 1.198); +elseif (Type == 2) + + % extrapolate for any aircraft with more than 4 engines + G = 0.005 + 0.003 * NumEng; + else % throw an error diff --git a/+ConstraintDiagramPkg/Jet25_119.m b/+ConstraintDiagramPkg/Jet25_119.m index a99c3b39..a98bdd8d 100644 --- a/+ConstraintDiagramPkg/Jet25_119.m +++ b/+ConstraintDiagramPkg/Jet25_119.m @@ -2,7 +2,7 @@ % % [FAR] = Jet25_119(W_S, T_W, Aircraft) % written by Paul Mokotoff, prmoko@umich.edu -% last updated: 04 dec 2025 +% last updated: 11 jul 2026 % % derive the constraints for a balked landing climb with all engines % operative. @@ -61,6 +61,12 @@ % compute the climb gradient from a sigmoid curve G = ConstraintDiagramPkg.Sigmoid(Aircraft, 0, 0, 0, 3.2); +elseif (Type == 2) + + % extrapolate for any aircraft with more than 4 engines, but it will + % always remain the same here + G = 0.032; + else % throw an error diff --git a/+ConstraintDiagramPkg/Jet25_121a.m b/+ConstraintDiagramPkg/Jet25_121a.m index 2bc8406e..10f9c408 100644 --- a/+ConstraintDiagramPkg/Jet25_121a.m +++ b/+ConstraintDiagramPkg/Jet25_121a.m @@ -2,7 +2,7 @@ % % [FAR] = Jet25_121a(W_S, T_W, Aircraft) % written by Paul Mokotoff, prmoko@umich.edu -% last updated: 30 mar 2026 +% last updated: 11 jul 2026 % % derive the constraints for the transition segment climb. % @@ -72,6 +72,13 @@ % compute the climb gradient from a sigmoid curve G = ConstraintDiagramPkg.Sigmoid(Aircraft, 0.4999, -151.22, 0.7855, 0.001); +elseif (Type == 2) + + % extrapolate for any aircraft with more than 4 engines (only applies + % for >4 engines, but taking the maximum in case an aircraft with <=4 + % engines is being designed + G = max(0, -0.007 + 0.003 * NumEng); + else % throw an error diff --git a/+ConstraintDiagramPkg/Jet25_121b.m b/+ConstraintDiagramPkg/Jet25_121b.m index f29a1550..c1f72a62 100644 --- a/+ConstraintDiagramPkg/Jet25_121b.m +++ b/+ConstraintDiagramPkg/Jet25_121b.m @@ -2,7 +2,7 @@ % % [FAR] = Jet25_121b(W_S, T_W, Aircraft) % written by Paul Mokotoff, prmoko@umich.edu -% last updated: 30 mar 2026 +% last updated: 11 jul 2026 % % derive the constraints for the second segment climb. % @@ -72,6 +72,11 @@ % compute the climb gradient from a sigmoid curve G = ConstraintDiagramPkg.Sigmoid(Aircraft, 0.6024, -42.00, 0.7829, 2.398); +elseif (Type == 2) + + % extrapolate for any aircraft with more than 4 engines + G = 0.018 + 0.003 * NumEng; + else % throw an error diff --git a/+ConstraintDiagramPkg/Jet25_121c.m b/+ConstraintDiagramPkg/Jet25_121c.m index 88b6d105..f1d3b168 100644 --- a/+ConstraintDiagramPkg/Jet25_121c.m +++ b/+ConstraintDiagramPkg/Jet25_121c.m @@ -2,7 +2,7 @@ % % [FAR] = Jet25_121c(W_S, T_W, Aircraft) % written by Paul Mokotoff, prmoko@umich.edu -% last updated: 30 mar 2026 +% last updated: 11 jul 2026 % % derive the constraints for the enroute climb. % @@ -73,6 +73,11 @@ % compute the climb gradient from a sigmoid curve G = ConstraintDiagramPkg.Sigmoid(Aircraft, 0.5026, -42.54, 0.7925, 1.198); +elseif (Type == 2) + + % extrapolate for any aircraft with more than 4 engines + G = 0.005 + 0.003 * NumEng; + else % throw an error diff --git a/+ConstraintDiagramPkg/Jet25_121d.m b/+ConstraintDiagramPkg/Jet25_121d.m index 9658d0ef..a5bc051b 100644 --- a/+ConstraintDiagramPkg/Jet25_121d.m +++ b/+ConstraintDiagramPkg/Jet25_121d.m @@ -2,7 +2,7 @@ % % [FAR] = Jet25_121d(W_S, T_W, Aircraft) % written by Paul Mokotoff, prmoko@umich.edu -% last updated: 30 mar 2026 +% last updated: 11 jul 2026 % % derive the constraints for landing climb with one engine inoperative. % @@ -73,6 +73,11 @@ % compute the climb gradient from a sigmoid curve G = ConstraintDiagramPkg.Sigmoid(Aircraft, 0.6025, -41.75, 0.7830, 2.098); +elseif (Type == 2) + + % extrapolate for any aircraft with more than 4 engines + G = 0.015 + 0.003 * NumEng; + else % throw an error diff --git a/+ConstraintDiagramPkg/JetCeil.m b/+ConstraintDiagramPkg/JetCeil.m index 298cd3d2..357f719e 100644 --- a/+ConstraintDiagramPkg/JetCeil.m +++ b/+ConstraintDiagramPkg/JetCeil.m @@ -2,7 +2,7 @@ % % [FAR] = JetCeil(W_S, T_W, Aircraft) % written by Paul Mokotoff, prmoko@umich.edu -% last updated: 16 sep 2025 +% last updated: 13 jul 2026 % % derive the constraints for service ceiling. % @@ -37,6 +37,9 @@ ReqType = Aircraft.Specs.TLAR.ReqType; CrsMach = Aircraft.Specs.Performance.Vels.Crs; +% get the lapse rate +LapseRate = Aircraft.Specs.Propulsion.LapseRate.Ceil; + %% EVALUATE THE CONSTRAINT %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -55,7 +58,7 @@ if (ReqType == 0) % use the metabook's equation - FAR = (2 * sqrt(CD0 / pi / e / AR) + G) / RhoRatio ^ 0.6 - T_W; + FAR = (2 * sqrt(CD0 / pi / e / AR) + G) / RhoRatio ^ LapseRate - T_W; elseif (ReqType == 1) @@ -83,7 +86,7 @@ end % use Mattingly's equation for service ceiling - FAR = 1 ./ RhoRatio ^ 0.6 .* (q .* CD0 ./ W_S + W_S ./ q ./ (pi * AR * e) + G) - T_W; + FAR = 1 ./ RhoRatio ^ LapseRate .* (q .* CD0 ./ W_S + W_S ./ q ./ (pi * AR * e) + G) - T_W; else diff --git a/+ConstraintDiagramPkg/JetCrs.m b/+ConstraintDiagramPkg/JetCrs.m index 5c9f8110..820b250b 100644 --- a/+ConstraintDiagramPkg/JetCrs.m +++ b/+ConstraintDiagramPkg/JetCrs.m @@ -2,7 +2,7 @@ % % [FAR] = JetCrs(W_S, T_W, Aircraft) % written by Paul Mokotoff, prmoko@umich.edu -% last updated: 04 sep 2025 +% last updated: 13 jul 2026 % % derive the constraints for cruise performance. % @@ -36,6 +36,9 @@ Mcrs = Aircraft.Specs.Performance.Vels.Crs; zcrs = Aircraft.Specs.Performance.Alts.Crs; % keep in SI units for ComputeFltCon +% get the lapse rate +LapseRate = Aircraft.Specs.Propulsion.LapseRate.Crs; + % get the requirement type ReqType = Aircraft.Specs.TLAR.ReqType; @@ -84,7 +87,7 @@ else % requirement is thrust-based, account for engine lapsing - FAR = (q .* CD0 ./ W_S + W_S ./ (q .* pi .* AR .* e)) ./ RhoRatio ^ 0.6 - T_W; + FAR = (q .* CD0 ./ W_S + W_S ./ (q .* pi .* AR .* e)) ./ RhoRatio ^ LapseRate - T_W; end @@ -94,7 +97,7 @@ CL = W_S ./ q; % use a different equation - FAR = q ./ W_S .* (CD0 + CL .^ 2 ./ (pi * AR * e)) ./ RhoRatio ^ 0.1 - T_W; + FAR = q ./ W_S .* (CD0 + CL .^ 2 ./ (pi * AR * e)) ./ RhoRatio ^ LapseRate - T_W; else diff --git a/+ConstraintDiagramPkg/JetDiv.m b/+ConstraintDiagramPkg/JetDiv.m index 3409ea4f..2a898e28 100644 --- a/+ConstraintDiagramPkg/JetDiv.m +++ b/+ConstraintDiagramPkg/JetDiv.m @@ -2,7 +2,7 @@ % % [FAR] = JetDiv(W_S, T_W, Aircraft) % written by Paul Mokotoff, prmoko@umich.edu -% last updated: 04 dec 2025 +% last updated: 13 jul 2026 % % derive the constraints for diversion (cruise) performance. % @@ -36,6 +36,9 @@ Mcrs = Aircraft.Specs.Performance.Vels.Div; zcrs = Aircraft.Specs.Performance.Alts.Div; % keep in SI units for ComputeFltCon +% get the lapse rate +LapseRate = Aircraft.Specs.Propulsion.LapseRate.Div; + % get the requirement type ReqType = Aircraft.Specs.TLAR.ReqType; @@ -84,7 +87,7 @@ else % requirement is thrust-based, account for engine lapsing - FAR = (q .* CD0 ./ W_S + W_S ./ (q .* pi .* AR .* e)) ./ RhoRatio ^ 0.6 - T_W; + FAR = (q .* CD0 ./ W_S + W_S ./ (q .* pi .* AR .* e)) ./ RhoRatio ^ LapseRate - T_W; end @@ -94,7 +97,7 @@ CL = W_S ./ q; % use a different equation - FAR = q ./ W_S .* (CD0 + CL .^ 2 ./ (pi * AR * e)) ./ RhoRatio ^ 0.2 - T_W; + FAR = q ./ W_S .* (CD0 + CL .^ 2 ./ (pi * AR * e)) ./ RhoRatio ^ LapseRate - T_W; else diff --git a/+ConstraintDiagramPkg/OEIMultiplier.m b/+ConstraintDiagramPkg/OEIMultiplier.m index d04e6d5b..e322cb16 100644 --- a/+ConstraintDiagramPkg/OEIMultiplier.m +++ b/+ConstraintDiagramPkg/OEIMultiplier.m @@ -2,7 +2,7 @@ % % [k] = OEIMultiplier(Aircraft) % written by Paul Mokotoff, prmoko@umich.edu -% last updated: 04 mar 2026 +% last updated: 11 jul 2026 % % return the appropriate multiplier for engine inoperative conditons, % either based on a discrete number of engines installed or a percent @@ -21,7 +21,7 @@ Type = Aircraft.Settings.ConstraintType; % check the multiplier type -if (Type == 0) +if ((Type == 0) || (Type == 2)) % get the number of engines Neng = Aircraft.Specs.Propulsion.NumEngines; diff --git a/+ConstraintDiagramPkg/README.m b/+ConstraintDiagramPkg/README.m index 8d237121..dde5c717 100644 --- a/+ConstraintDiagramPkg/README.m +++ b/+ConstraintDiagramPkg/README.m @@ -26,7 +26,7 @@ % Michael Tsai % Vaibhav Rau % -% README last updated: 06 Oct 2025 +% README last updated: 22 July 2026 % % ------------------------------------------------------------------------- % @@ -176,11 +176,19 @@ % MTOW - maximum takeoff weight % % Propulsion -% T_W.SLS - thrust-to-weight ratio at sea-level, used for turbofan -% aircraft +% T_W.SLS - thrust-to-weight ratio at sea-level, used for +% turbofan aircraft % -% NumEngines - number of engines installed (used for 14 CFR 25 climb -% gradients) +% NumEngines - number of engines installed (used for 14 CFR 25 +% climb gradients) +% +% LapseRate.Crs - engine lapse rate during cruise (or at cruise +% altitude) +% +% LapseRate.Div - engine lapse rate during a diversion (or at the +% corresponding altitude) +% +% LapseRate.Ceil - engine lapse rate at the service ceiling % % Power % P_W.SLS - power-to-weight ratio at sea-level, used for turboprop or @@ -195,6 +203,8 @@ % a) 0 - climb gradients from 14 CFR 25 % b) 1 - climb gradients as a function of the specific % excess power loss +% c) 2 - climb gradients as a function of the number +% of propulsors installed on the aircraft % % ------------------------------------------------------------------------- %