Flight segments¶
Flight segments are the Python-implemented, base building blocks for the mission definition.
They can be used as parts in phase definition.
A segment simulation starts at the flight parameters (altitude, speed, mass…) reached at the end of the previous simulated segment. The segment simulation ends when its target is reached (or if it cannot be reached).
Sections:
Segment types¶
In the following, the description of each segment type links to the documentation of the
Python implementation.
All parameters of the Python constructor can be set in the mission file (except for
propulsion
and reference_area
that are set within the mission module).
Most of these parameters are scalars and can be set as described here.
The segment target is a special parameter, detailed in further section
Special parameters are detailed in last section.
Available segments are:
speed_change
¶
A speed_change
segment simulates an acceleration or deceleration flight part, at constant
altitude and thrust rate. It ends when the target speed (mach, true_airspeed or
equivalent_airspeed) is reached.
Python documentation: SpeedChangeSegment
Example:
segment: speed_change
polar: data:aerodynamics:aircraft:takeoff # High-lift devices are ON
engine_setting: takeoff
thrust_rate: 1.0 # Full throttle
target:
# altitude: constant # Assumed by default
equivalent_airspeed: # Acceleration up to EAS = 250 knots
value: 250
unit: kn
altitude_change
¶
An altitude_change
segment simulates a climb or descent flight part at constant thrust rate.
Typically, it ends when the target altitude is reached.
But also, a target speed can be set, while keeping another speed constant (e.g. climbing up to Mach 0.8 while keeping equivalent_airspeed constant).
Python documentation: AltitudeChangeSegment
Examples:
segment: altitude_change
polar: data:aerodynamics:aircraft:cruise # High speed aerodynamic polar
engine_setting: idle
thrust_rate: 0.15 # Idle throttle
target: # Descent down to 10000. feet at constant EAS
altitude:
value: 10000.
unit: ft
equivalent_airspeed: constant
segment: altitude_change
polar: data:aerodynamics:aircraft:cruise # High speed aerodynamic polar
engine_setting: climb
thrust_rate: 0.93 # Climb throttle
target: # Climb up to Mach 0.78 at constant EAS
equivalent_airspeed: constant
mach: 0.78
segment: altitude_change
polar: data:aerodynamics:aircraft:cruise # High speed aerodynamic polar
engine_setting: climb
thrust_rate: 0.93 # Climb throttle
target: # Climb at constant Mach up to the flight
mach: constant # level that provides maximum lift/drag
altitude: # at current mass.
value: optimal_flight_level
cruise
¶
A cruise
segment simulates a flight part at constant speed and altitude, and regulated
thrust rate (drag is compensated).
Optionally, target altitude can be set to optimal_flight_level
. In such case, cruise will
be preceded by a climb segment that will put the aircraft at the altitude that will minimize the
fuel consumption for the whole segment (including the prepending climb).
This option is available because the altitude_change segment can reach an altitude
that will optimize the lift/drag ratio at current mass, but the obtained altitude will not
guaranty an optimal fuel consumption for the whole cruise.
It ends when the target ground distance is covered (including the distance covered during prepending climb, if any).
Python documentation: ClimbAndCruiseSegment
Examples:
segment: cruise
polar: data:aerodynamics:aircraft:cruise # High speed aerodynamic polar
engine_setting: cruise
target:
# altitude: constant # Not needed, because assumed by default
ground_distance: # Cruise for 2000 nautical miles
value: 2000
unit: NM
segment: cruise
polar: data:aerodynamics:aircraft:cruise # High speed aerodynamic polar
engine_setting: cruise
target:
altitude: optimal_flight_level # Commands a prepending climb, id needed
ground_distance: # Cruise for 2000 nautical miles
value: 2000
unit: NM
optimal_cruise
¶
An optimal_cruise
segment simulates a cruise climb, i.e. a cruise where the aircraft
climbs gradually to keep being at altitude of maximum lift/drag ratio.
It assumed the segment actually starts at altitude of maximum lift/drag ratio, which can be
achieved with an altitude_change segment with optimal_altitude
as target
altitude.
The common way to optimize the fuel consumption for commercial aircraft is a step climb cruise. Such segment will be implemented in the future.
Python documentation: OptimalCruiseSegment
segment: optimal_cruise
polar: data:aerodynamics:aircraft:cruise # High speed aerodynamic polar
engine_setting: cruise
target:
ground_distance: # Cruise for 2000 nautical miles
value: 2000
unit: NM
holding
¶
A holding
segment simulates a flight part at constant speed and altitude, and regulated
thrust rate (drag is compensated). It ends when
the target time is covered.
Python documentation: HoldSegment
Example:
segment: holding
polar: data:aerodynamics:aircraft:cruise # High speed aerodynamic polar
target:
# altitude: constant # Not needed, because assumed by default
time:
value: 20 # 20 minutes holding
unit: min
taxi
¶
A taxi
segment simulates the mission parts between gate and takeoff or landing, at constant
thrust rate. It ends when the target time is covered.
Python documentation: TaxiSegment
Example:
segment: taxi
thrust_rate: 0.3
target:
time:
value: 300 # taxi for 300 seconds (5 minutes)
Segment target¶
The target of a flight segment is a set of parameters that drives the end of the segment simulation.
Possible target parameters are the available fields of
FlightPoint
. The actually useful parameters depend on the
segment.
Each parameter can be set the usual way, generally with a numeric value or
a variable name, but it can also be a string. The most common string value is constant
that tells the parameter value should be kept constant and equal to the start value.
In any case, please refer to the documentation of the flight segment.
Special segment parameters¶
Most of segment parameters must be set with a unique value, which can be done in several ways, as described here.
There are some special parameters that are detailed below.
engine_setting
¶
Expected value for engine_setting
are takeoff
, climb
, cruise
or idle
This setting is used by the “rubber engine” propulsion model
(see RubberEngine
).
It roughly links the “turbine inlet temperature” (a.k.a. T4) to the flight conditions.
If another propulsion model is used, this parameter may become irrelevant, and then can be omitted.
polar
¶
The aerodynamic polar defines the relation between lift and drag coefficients (respectively CL and CD). This parameter is composed of two vectors of same size, one for CL, and one for CD.
The polar
parameter has 2 sub-keys that are CL
and CD
.
A basic example would be:
segment: cruise
polar:
CL: [0.0, 0.5, 1.0]
CD: [0.01, 0.03, 0.12]
But generally, polar values will be obtained through variable names, because they will be computed during the process, or provided in the input file. This should give:
segment: cruise
polar:
CL: data:aerodynamics:aircraft:cruise:CL
CD: data:aerodynamics:aircraft:cruise:CD
Additionally, a convenience feature is proposes, which assumes CL and CD are provided
by variables with same names, except one ends with :CL
and the other one by :CD
.
In such case, providing only the common prefix is enough.
Therefore, the next example is equivalent to the previous one:
segment: cruise
polar: data:aerodynamics:aircraft:cruise