takeoff.py¶
Analysis routines for simulating the takeoff phase and determining takeoff field length
-
class
openconcept.analysis.takeoff.TakeoffTotalDistance(**kwargs)[source]¶ Bases:
openmdao.core.group.GroupThis analysis group calculates takeoff field length and fuel/energy consumption.
This component should be instantiated in the top-level aircraft analysis / optimization script.
Suggested variable promotion list: ‘ac|aero*’, ‘ac|weights|MTOW’, ‘ac|geom|*’, ‘fltcond|takeoff|*’, ‘takeoff|battery_load’, ‘takeoff|thrust’,’takeoff|fuel_flow’,’mission|takeoff|v*’
Inputs List:
- From aircraft config:
- ac|aero|polar|CD0_TO
- ac|aero|polar|e
- ac|geom|wing|S_ref
- ac|geom|wing|AR
- ac|weights|MTOW
- From Newton solver:
- mission|takeoff|v1
- From takeoff flight condition generator:
- mission|takeoff|vr
- From standard atmosphere model/splitter:
- fltcond|takeoff|q
- fltcond|takeoff|Utrue
- From propulsion model:
- takeoff|battery_load
- takeoff|fuel_flow
- takeoff|thrust
Outputs: - takeoff|total_fuel (float) – Total fuel burn for takeoff (scalar, kg)
- takeoff|total_battery_energy (float) – Total energy consumption for takeoff (scalar, kJ)
- takeoff|distance (float) – Takeoff distance with given propulsion settings (scalar, m)
- takeoff|distance_abort (float) – Takeoff distance if maximum braking applied at v1 speed (scalar, m)
Options: - n_int_per_seg (int) – Number of Simpson’s rule intervals to use per mission segment. The total number of points is 2 * n_int_per_seg + 1
- track_battery (bool) – Set to True to track battery energy consumption during takeoff (default False)
- track_fuel (bool) – Set to True to track fuel burned during takeoff (default False)
-
openconcept.analysis.takeoff.takeoff_check(prob)[source]¶ Checks to ensure positive accelerations during each takeoff phase.
In some cases, the numeric integration scheme used to calculate TOFL can give a spurious result if the airplane can’t accelerate through to V1. This function detects this case and raises an error. It should be called following every model.run_driver or run_model call.
Parameters: prob (OpenMDAO problem object) – The OpenMDAO problem object
Inputs: - ‘takeoff._rate_to_integrate_v0v1’ (float)
- ‘takeoff._rate_to_integrate_v1vr’ (float)
- ‘takeoff._rate_to_integrate_v1v0’ (float)
Raises: ValueError if negative distances are produced
-
class
openconcept.analysis.takeoff.ComputeBalancedFieldLengthResidual(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentComputes a residual equation so Newton solver can set v1 to analyze balanced field length
- This residual is equal to zero if:
- The rejected takeoff and engine-out takeoff distances are equal, or:
- V1 is equal to VR and the engine out takeoff distance is longer than the RTO distance
Since this is a discontinous function, the partial derivatives are written in a special way to ‘coax’ the V1 value into the right setting with a Newton step. It’s kind of a hack.
Inputs: - takeoff|distance (float) – Engine-out takeoff distance (scalar, m)
- takeoff|distance_abort (float) – Distance to full-stop when takeoff is rejected at V1 (scalar, m)
- mission|takeoff|v1 (float) – Decision speed (scalar, m/s)
- mission|takeoff|vr (float) – Rotation speed (scalar, m/s)
Outputs: - BFL_residual (float) – Difference between OEI TO distance and RTO distance for diagnostic purposes (scalar, m/s)
- v1vr_diff (float) – Difference between decision and rotation speed for diagnostic purposes (scalar, m/s)
- BFL_combined (float) – Residual equation combining both criteria with special partial derivatives. Should be used for the Newton solver when doing takeoff field length analysis (scalar, m)
-
class
openconcept.analysis.takeoff.TakeoffFlightConditions(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentGenerates flight condition vectors for takeoff segments
Inputs: - mission|takeoff|h (float) – Runway altitude (scalar, m)
- mission|takeoff|v1 (float) – Takeoff decision speed (scalar, m/s)
- Vstall_eas (float) – Flaps down stall airspeed (scalar, m/s)
Outputs: - mission|takeoff|vr – Takeoff rotation speed (set as multiple of stall speed). (scalar, m/s)
- mission|takeoff|v2 – Takeoff safety speed (set as multiple of stall speed). (scalar, m/s)
- fltcond|takeoff|Ueas – Takeoff indicated/equiv. airspeed (vector, m/s)
- fltcond|takeoff|h – Takeoff altitude turned into a vector (vector, m/s)
Options: - n_int_per_seg (int) – Number of Simpson’s rule intervals to use per mission segment. The total number of points is 2 * n_int_per_seg + 1
- vr_multiple (float) – Rotation speed multiplier on top of stall speed (default 1.1)
- v2_multiple (float) – Climb out safety speed multiplier on top of stall speed (default 1.2)
-
class
openconcept.analysis.takeoff.TakeoffCLs(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentComputes lift coefficient at every takeoff and transition analysis point.
This is a helper function for the main TOFL analysis group TakeoffTotalDistance and shoudln’t be instantiated in the top-level model directly.
During the ground roll, CL is assumed constant. During rotation and transition, a 1.2g maneuver is assumed
Inputs: - weight (float) – Takeoff weight (scalar, kg)
- fltcond|takeoff|q (float) – Dynamic pressure at each analysis point (vector, Pascals)
- ac|geom|wing|S_ref (float) – Wing reference area (scalar, m**2)
Outputs: CL_takeoff (float) – Wing lift coefficient at each TO analysis point (vector, dimensionless)
Options: - n_int_per_seg (int) – Number of Simpson’s rule intervals to use per mission segment. The total number of points is 2 * n_int_per_seg + 1
- ground_CL (float) – Assumed CL during takeoff roll (default 0.1)
-
class
openconcept.analysis.takeoff.TakeoffAccels(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentComputes acceleration during takeoff run and returns the inverse for the integrator.
This is a helper function for the main TOFL analysis group TakeoffTotalDistance and shoudln’t be instantiated in the top-level model directly.
This returns the INVERSE of the accelerations during the takeoff run. Inverse acceleration is required due to integration wrt velocity: int( dr/dt * dt / dv) dv = int( v / a) dv
Inputs: - weight (float) – Takeoff weight (scalar, kg)
- drag (float) – Aircraft drag at each TO analysis point (vector, N)
- lift (float) – Aircraft lift at each TO analysis point (vector, N)
- takeoff|thrust (float) – Thrust at each TO analysis point (vector, N)
Outputs: _inverse_accel (float) – Inverse of the acceleration at ecah time point (vector, s**2/m)
Options: - n_int_per_seg (int) – Number of Simpson’s rule intervals to use per mission segment. The total number of points is 2 * n_int_per_seg + 1
- free_rolling_friction_coeff (float) – Rolling coefficient without brakes applied (default 0.03)
- braking_friction_coeff (float) – Rolling coefficient with max braking applied (default 0.40)
-
class
openconcept.analysis.takeoff.TakeoffV2ClimbAngle(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentComputes climb out angle based on excess thrust.
This is a helper function for the main TOFL analysis group TakeoffTotalDistance and shoudln’t be instantiated in the top-level model directly.
Inputs: - drag_v2 (float) – Aircraft drag at v2 (climb out) flight condition (scalar, N)
- weight (float) – Takeoff weight (scalar, kg)
- takeoff|thrust_v2 (float) – Thrust at the v2 (climb out) flight condition (scalar, N)
Outputs: takeoff|climb|gamma (float) – Climb out flight path angle (scalar, rad)
-
class
openconcept.analysis.takeoff.TakeoffTransition(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentComputes distance and altitude at end of circular transition.
This is a helper function for the main TOFL analysis group TakeoffTotalDistance and shoudln’t be instantiated in the top-level model directly.
Based on TO distance analysis method in Raymer book. Obstacle clearance height set for GA / Part 23 aircraft Override for analyzing Part 25 aircraft
Inputs: - fltcond|takeoff|Utrue_vtrans – Transition true airspeed (generally avg of vr and v2) (scalar, m/s)
- takeoff|climb|gamma (float) – Climb out flight path angle (scalar, rad)
Outputs: - s_transition (float) – Horizontal distance during transition to v2 climb out (scalar, m)
- h_transition (float) – Altitude at transition point (scalar, m)
Options: h_obstacle (float) – Obstacle height to clear (in meters) (default 10.66, equiv. 35 ft)
-
class
openconcept.analysis.takeoff.TakeoffClimb(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentComputes ground distance from end of transition until obstacle is cleared.
This is a helper function for the main TOFL analysis group TakeoffTotalDistance and shoudln’t be instantiated in the top-level model directly.
Analysis based on Raymer book.
Inputs: - takeoff|climb|gamma (float) – Climb out flight path angle (scalar, rad)
- h_transition (float) – Altitude at transition point (scalar, m)
Outputs: s_climb (float) – Horizontal distance from end of transition until obstacle is cleared (scalar, m)
Options: h_obstacle (float) – Obstacle height to clear (in meters) (default 10.66, equiv. 35 ft)