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.Group

This 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.ExplicitComponent

Computes 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.ExplicitComponent

Generates 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.ExplicitComponent

Computes 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.ExplicitComponent

Computes 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.ExplicitComponent

Computes 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.ExplicitComponent

Computes 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.ExplicitComponent

Computes 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)