fastoad.models.performances.mission.segments.time_step_base module

Base classes for time-step segments

class fastoad.models.performances.mission.segments.time_step_base.AbstractTimeStepFlightSegment(name: str = '', target: fastoad.model_base.flight_point.FlightPoint = <object object>, isa_offset: float = 0.0, propulsion: fastoad.model_base.propulsion.IPropulsion = <object object>, polar: fastoad.models.performances.mission.polar.Polar = <object object>, polar_modifier: fastoad.models.performances.mission.polar_modifier.AbstractPolarModifier = UnchangedPolar(), reference_area: float = <object object>, time_step: float = 0.2, maximum_CL: Optional[float] = None, altitude_bounds: tuple = (-500.0, 40000.0), mach_bounds: tuple = (-1e-06, 5.0), interrupt_if_getting_further_from_target: bool = True, engine_setting: fastoad.constants.EngineSetting = EngineSetting.CLIMB)[source]

Bases: fastoad.models.performances.mission.segments.base.AbstractFlightSegment, abc.ABC

Base class for time step computation flight segments.

This class implements the time computation. For this computation to work, subclasses must implement abstract methods get_distance_to_target(), get_gamma_and_acceleration() and compute_propulsion().

compute_next_alpha() also has to be overloaded if angle of attack should be different of 0.

propulsion: fastoad.model_base.propulsion.IPropulsion = <object object>

A IPropulsion instance that will be called at each time step.

polar: fastoad.models.performances.mission.polar.Polar = <object object>

The Polar instance that will provide drag data.

polar_modifier: fastoad.models.performances.mission.polar_modifier.AbstractPolarModifier = UnchangedPolar()
reference_area: float = <object object>

The reference area, in m**2.

time_step: float = 0.2

Used time step for computation (actual time step can be lower at some particular times of the flight path).

maximum_CL: float = None
altitude_bounds: tuple = (-500.0, 40000.0)

Minimum and maximum authorized altitude values. If computed altitude gets beyond these limits, computation will be interrupted and a warning message will be issued in logger.

mach_bounds: tuple = (-1e-06, 5.0)

Minimum and maximum authorized mach values. If computed Mach gets beyond these limits, computation will be interrupted and a warning message will be issued in logger.

interrupt_if_getting_further_from_target: bool = True

If True, computation will be interrupted if a parameter stops getting closer to target between two iterations (which can mean the provided thrust rate is not adapted).

engine_setting: fastoad.constants.EngineSetting = 2

The EngineSetting value associated to the segment. Can be used in the propulsion model.

abstract get_distance_to_target(flight_points: List[fastoad.model_base.flight_point.FlightPoint], target: fastoad.model_base.flight_point.FlightPoint) float[source]

Computes a “distance” from last flight point to target.

Computed does not need to have a real meaning. The important point is that it must be signed so that algorithm knows on which “side” of the target we are. And of course, it should be 0. if flight point is on target.

Parameters
  • flight_points – list of all currently computed flight_points

  • target – segment target (will not contain relative values)

Returns

  1. if target is attained, a non-null value otherwise

abstract compute_propulsion(flight_point: fastoad.model_base.flight_point.FlightPoint)[source]

Computes propulsion data.

Provided flight point is modified in place.

Generally, this method should end with:

self.propulsion.compute_flight_points(flight_point)
Parameters

flight_point

abstract get_gamma_and_acceleration(flight_point: fastoad.model_base.flight_point.FlightPoint) Tuple[float, float][source]

Computes slope angle (gamma) and acceleration.

Parameters

flight_point – parameters after propulsion model has been called (i.e. mass, thrust and drag are available)

Returns

slope angle in radians and acceleration in m**2/s

get_next_alpha(previous_point: fastoad.model_base.flight_point.FlightPoint, time_step: float) float[source]

Determine the next angle of attack.

Parameters
  • previous_point – the flight point from which next alpha is computed

  • time_step – the duration between computed flight point and previous_point

complete_flight_point(flight_point: fastoad.model_base.flight_point.FlightPoint)[source]

Computes data for provided flight point.

Assumes that it is already defined for time, altitude, mass, ground distance and speed (TAS, EAS, or Mach).

Parameters

flight_point – the flight point that will be completed in-place

compute_from_start_to_target(start: fastoad.model_base.flight_point.FlightPoint, target: fastoad.model_base.flight_point.FlightPoint) pandas.core.frame.DataFrame[source]

Here should come the implementation for computing flight points between start and target flight points.

Parameters
  • start

  • target – Definition of segment target

Returns

a pandas DataFrame where column names match fields of FlightPoint

compute_next_flight_point(flight_points: List[fastoad.model_base.flight_point.FlightPoint], time_step: float) fastoad.model_base.flight_point.FlightPoint[source]

Computes time, altitude, speed, mass and ground distance of next flight point.

Parameters
  • flight_points – previous flight points

  • time_step – time step for computing next point

Returns

the computed next flight point

property target: fastoad.model_base.flight_point.FlightPoint

The base class of the class hierarchy.

When called, it accepts no arguments and returns a new featureless instance that has no instance attributes and cannot be given any.

class fastoad.models.performances.mission.segments.time_step_base.AbstractManualThrustSegment(name: str = '', target: fastoad.model_base.flight_point.FlightPoint = <object object>, isa_offset: float = 0.0, propulsion: fastoad.model_base.propulsion.IPropulsion = <object object>, polar: fastoad.models.performances.mission.polar.Polar = <object object>, polar_modifier: fastoad.models.performances.mission.polar_modifier.AbstractPolarModifier = UnchangedPolar(), reference_area: float = <object object>, time_step: float = 0.2, maximum_CL: Optional[float] = None, altitude_bounds: tuple = (-500.0, 40000.0), mach_bounds: tuple = (-1e-06, 5.0), interrupt_if_getting_further_from_target: bool = True, engine_setting: fastoad.constants.EngineSetting = EngineSetting.CLIMB, thrust_rate: float = 1.0)[source]

Bases: fastoad.models.performances.mission.segments.time_step_base.AbstractTimeStepFlightSegment, abc.ABC

Base class for computing flight segment where thrust rate is imposed.

Variables

thrust_rate – used thrust rate. Can be set at instantiation using a keyword argument.

thrust_rate: float = 1.0
compute_propulsion(flight_point: fastoad.model_base.flight_point.FlightPoint)[source]

Computes propulsion data.

Provided flight point is modified in place.

Generally, this method should end with:

self.propulsion.compute_flight_points(flight_point)
Parameters

flight_point

property target: fastoad.model_base.flight_point.FlightPoint

The base class of the class hierarchy.

When called, it accepts no arguments and returns a new featureless instance that has no instance attributes and cannot be given any.

class fastoad.models.performances.mission.segments.time_step_base.AbstractRegulatedThrustSegment(name: str = '', target: fastoad.model_base.flight_point.FlightPoint = <object object>, isa_offset: float = 0.0, propulsion: fastoad.model_base.propulsion.IPropulsion = <object object>, polar: fastoad.models.performances.mission.polar.Polar = <object object>, polar_modifier: fastoad.models.performances.mission.polar_modifier.AbstractPolarModifier = UnchangedPolar(), reference_area: float = <object object>, time_step: float = 60.0, maximum_CL: Optional[float] = None, altitude_bounds: tuple = (-500.0, 40000.0), mach_bounds: tuple = (-1e-06, 5.0), interrupt_if_getting_further_from_target: bool = True, engine_setting: fastoad.constants.EngineSetting = EngineSetting.CLIMB)[source]

Bases: fastoad.models.performances.mission.segments.time_step_base.AbstractTimeStepFlightSegment, abc.ABC

Base class for computing flight segment where thrust rate is adjusted on drag.

time_step: float = 60.0

Used time step for computation (actual time step can be lower at some particular times of the flight path).

compute_propulsion(flight_point: fastoad.model_base.flight_point.FlightPoint)[source]

Computes propulsion data.

Provided flight point is modified in place.

Generally, this method should end with:

self.propulsion.compute_flight_points(flight_point)
Parameters

flight_point

get_gamma_and_acceleration(flight_point: fastoad.model_base.flight_point.FlightPoint) Tuple[float, float][source]

Computes slope angle (gamma) and acceleration.

Parameters

flight_point – parameters after propulsion model has been called (i.e. mass, thrust and drag are available)

Returns

slope angle in radians and acceleration in m**2/s

property target: fastoad.model_base.flight_point.FlightPoint

The base class of the class hierarchy.

When called, it accepts no arguments and returns a new featureless instance that has no instance attributes and cannot be given any.

class fastoad.models.performances.mission.segments.time_step_base.AbstractFixedDurationSegment(name: str = '', target: fastoad.model_base.flight_point.FlightPoint = <object object>, isa_offset: float = 0.0, propulsion: fastoad.model_base.propulsion.IPropulsion = <object object>, polar: fastoad.models.performances.mission.polar.Polar = <object object>, polar_modifier: fastoad.models.performances.mission.polar_modifier.AbstractPolarModifier = UnchangedPolar(), reference_area: float = <object object>, time_step: float = 60.0, maximum_CL: Optional[float] = None, altitude_bounds: tuple = (-500.0, 40000.0), mach_bounds: tuple = (-1e-06, 5.0), interrupt_if_getting_further_from_target: bool = True, engine_setting: fastoad.constants.EngineSetting = EngineSetting.CLIMB)[source]

Bases: fastoad.models.performances.mission.segments.time_step_base.AbstractTimeStepFlightSegment, abc.ABC

Base class for computing a fixed-duration segment.

time_step: float = 60.0

Used time step for computation (actual time step can be lower at some particular times of the flight path).

get_distance_to_target(flight_points: List[fastoad.model_base.flight_point.FlightPoint], target: fastoad.model_base.flight_point.FlightPoint) float[source]

Computes a “distance” from last flight point to target.

Computed does not need to have a real meaning. The important point is that it must be signed so that algorithm knows on which “side” of the target we are. And of course, it should be 0. if flight point is on target.

Parameters
  • flight_points – list of all currently computed flight_points

  • target – segment target (will not contain relative values)

Returns

  1. if target is attained, a non-null value otherwise

property target: fastoad.model_base.flight_point.FlightPoint

The base class of the class hierarchy.

When called, it accepts no arguments and returns a new featureless instance that has no instance attributes and cannot be given any.

class fastoad.models.performances.mission.segments.time_step_base.AbstractTakeOffSegment(name: str = '', target: fastoad.model_base.flight_point.FlightPoint = <object object>, isa_offset: float = 0.0, propulsion: fastoad.model_base.propulsion.IPropulsion = <object object>, polar: fastoad.models.performances.mission.polar.Polar = <object object>, polar_modifier: fastoad.models.performances.mission.polar_modifier.AbstractPolarModifier = UnchangedPolar(), reference_area: float = <object object>, time_step: float = 0.1, maximum_CL: Optional[float] = None, altitude_bounds: tuple = (-500.0, 40000.0), mach_bounds: tuple = (-1e-06, 5.0), interrupt_if_getting_further_from_target: bool = True, engine_setting: fastoad.constants.EngineSetting = EngineSetting.CLIMB, thrust_rate: float = 1.0)[source]

Bases: fastoad.models.performances.mission.segments.time_step_base.AbstractManualThrustSegment, abc.ABC

Class for computing takeoff segment.

time_step: float = 0.1

Used time step for computation (actual time step can be lower at some particular times of the flight path).

compute_from_start_to_target(start: fastoad.model_base.flight_point.FlightPoint, target: fastoad.model_base.flight_point.FlightPoint) pandas.core.frame.DataFrame[source]

Here should come the implementation for computing flight points between start and target flight points.

Parameters
  • start

  • target – Definition of segment target

Returns

a pandas DataFrame where column names match fields of FlightPoint

property target: fastoad.model_base.flight_point.FlightPoint

The base class of the class hierarchy.

When called, it accepts no arguments and returns a new featureless instance that has no instance attributes and cannot be given any.

class fastoad.models.performances.mission.segments.time_step_base.AbstractGroundSegment(name: str = '', target: fastoad.model_base.flight_point.FlightPoint = <object object>, isa_offset: float = 0.0, propulsion: fastoad.model_base.propulsion.IPropulsion = <object object>, polar: fastoad.models.performances.mission.polar.Polar = <object object>, polar_modifier: fastoad.models.performances.mission.polar_modifier.AbstractPolarModifier = UnchangedPolar(), reference_area: float = <object object>, time_step: float = 0.1, maximum_CL: Optional[float] = None, altitude_bounds: tuple = (-500.0, 40000.0), mach_bounds: tuple = (-1e-06, 5.0), interrupt_if_getting_further_from_target: bool = True, engine_setting: fastoad.constants.EngineSetting = EngineSetting.CLIMB, thrust_rate: float = 1.0, wheels_friction: float = 0.03)[source]

Bases: fastoad.models.performances.mission.segments.time_step_base.AbstractTakeOffSegment, abc.ABC

Class for computing accelerated segments on the ground with wheel friction.

wheels_friction: float = 0.03
get_gamma_and_acceleration(flight_point: fastoad.model_base.flight_point.FlightPoint)[source]

For ground segment, gamma is assumed always 0 and wheel friction (with or without brake) is added to drag

complete_flight_point(flight_point: fastoad.model_base.flight_point.FlightPoint)[source]

Computes data for provided flight point using AoA and apply polar modification if any

Parameters

flight_point – the flight point that will be completed in-place

property target: fastoad.model_base.flight_point.FlightPoint

The base class of the class hierarchy.

When called, it accepts no arguments and returns a new featureless instance that has no instance attributes and cannot be given any.

class fastoad.models.performances.mission.segments.time_step_base.FlightSegment(*args, **kwargs)[source]

Bases: fastoad.models.performances.mission.segments.time_step_base.AbstractTimeStepFlightSegment, abc.ABC

Base class for time step computation flight segments.

This class implements the time computation. For this computation to work, subclasses must implement abstract methods get_get_distance_to_target(), get_gamma_and_acceleration() and compute_propulsion().

property target: fastoad.model_base.flight_point.FlightPoint

The base class of the class hierarchy.

When called, it accepts no arguments and returns a new featureless instance that has no instance attributes and cannot be given any.