mission.py¶
Analysis routines for simulating a mission profile with climb, cruise, and descent
-
class
openconcept.analysis.mission.MissionFlightConditions(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentGenerates vectors of flight conditions for a mission profile
Inputs: - mission|climb|vs (float) – Vertical speed in the climb segment (scalar, m/s)
- mission|descent|vs (float) – Vertical speed in the descent segment (should be neg; scalar, m/s)
- mission|climb|Ueas (float) – Indicated/equiv. airspeed during climb (scalar, m/s)
- mission|cruise|Ueas (float) – Indicated/equiv. airspeed in cruise (scalar, m/s)
- mission|descent|Ueas (float) – Indicated/equiv. airspeed during descent (scalar, m/s)
- mission|takeoff|h (float) – Takeoff (and landing, for now) altitude (scalar, m)
- mission|cruise|h (float) – Cruise altitude (scalar, m)
Outputs: - fltcond|mission|vs (float) – Vertical speed vector for all mission phases / analysis points (vector, m/s)
- fltcond|mission|Ueas (float) – Equivalent airspeed vector for all mission phases / analysis points (vector, m/s)
- fltcond|mission|h (float) – Altitude at each analysis point (vector, m)
- mission|climb|time (float) – Time to ascent from end of takeoff to start of cruise (scalar, s)
- mission|descent|time (float) – Time to descend from end of cruise to landing (scalar, s)
- mission|climb|dt (float) – Timestep length during climb phase (scalar, s) Note: this represents the timestep for the Simpson subinterval, not the whole inteval
- mission|descent|dt (float) – Timestep length during descent phase (scalar, s) Note: this represents the timestep for the Simpson subinterval, not the whole inteval
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
-
class
openconcept.analysis.mission.MissionNoReserves(**kwargs)[source]¶ Bases:
openmdao.core.group.GroupThis analysis group calculates energy/fuel consumption and feasibility for a given mission profile.
This component should be instantiated in the top-level aircraft analysis / optimization script. Suggested variable promotion list: “ac|aero|*”, “ac|geom|*”, “fltcond|mission|*”, “mission|*”
Inputs List:
- From aircraft config:
- ac|aero|polar|CD0_cruise
- ac|aero|polar|e
- ac|geom|wing|S_ref
- ac|geom|wing|AR
- From mission config:
- mission|weight_initial
- From mission flight condition generator:
- fltcond|mission|vs
- mission|climb|time
- mission|climb|dt
- mission|descent|time
- mission|descent|dt
- From standard atmosphere model/splitter:
- fltcond|mission|Utrue
- fltcond|mission|q
- From propulsion model:
- mission|battery_load
- mission|fuel_flow
- mission|thrust
Outputs: - mission|total_fuel (float) – Total fuel burn for climb, cruise, and descent (scalar, kg)
- mission|total_battery_energy (float) – Total energy consumption for climb, cruise, and descent (scalar, kJ)
- thrust_resid.thrust_residual (float) – Imbalance between thrust and drag for use with Newton solver (scalar, N)
-
class
openconcept.analysis.mission.ExplicitThrustResidual(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentComputes force imbalance in the aircraft x axis. Enables Newton solve for throttle at steady flight.
Inputs: - drag (float) – Aircraft drag force at each analysis point (vector, N)
- fltcond|mission|singamma (float) – Sine of the flight path angle for all mission phases (vector, dimensionless)
- mission|weights (float) – Aircraft weight at each analysis point (vector, kg)
- mission|thrust (float) – Aircraft thrust force at each analysis point (vector, N)
Outputs: thrust_residual (float) – Imbalance in x-axis force at each analysis point (vector, N)
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
-
class
openconcept.analysis.mission.ComputeDesignMissionResiduals(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentComputes weight margins to ensure feasible mission profiles
For aircraft including battery energy, use ComputeDesignMissionResidualsBattery instead
Inputs: - ac|weights|MTOW (float) – Maximum takeoff weight (scalar, kg)
- ac|weights|W_fuel_max (float) – Max fuel weight (inc. vol limits; scalar, kg)
- mission|payload (float) – Payload weight including pax (scalar, kg)
- mission|total_fuel (float) – Fuel consume during the mission profile (not including TO; scalar, kg)
- OEW (float) – Operational empty weight (scalar, kg)
- takeoff|total_fuel (float) – Fuel consumed during takeoff (only if include_takeoff option is True)
Outputs: - mission|fuel_capacity_margin (float) – Excess fuel capacity for this mission (scalar, kg) Positive is good
- mission|MTOW_margin (float) – Excess takeoff weight avail. for this mission (scalar, kg) Positive is good
- fuel_burn (float) – Total fuel burn including takeoff and the mission (scalar, kg) Only when include_takeoff is True
Options: include_takeoff (bool) – Set to True to enable takeoff fuel burn input
-
class
openconcept.analysis.mission.ComputeDesignMissionResidualsBattery(**kwargs)[source]¶ Bases:
openconcept.analysis.mission.ComputeDesignMissionResidualsComputes weight and energy margins to ensure feasible mission profiles.
This routine is applicable to electric and hybrid architectures. For fuel-only designs, use ComputeDesignMissionResiduals instead.
Inputs: - ac|weights|MTOW (float) – Maximum takeoff weight (scalar, kg)
- ac|weights|W_battery (float) – Battery weight (scalar, kg)
- ac|weights|W_fuel_max (float) – Max fuel weight (inc. vol limits; scalar, kg)
- battery_max_energy (float) – Maximum energy of the battery at 100% SOC (scalar, MJ)
- mission|payload (float) – Payload weight including pax (scalar, kg)
- mission|total_battery_energy (float) – Battery energy consumed during the mission profile (scalar, MJ)
- mission|total_fuel (float) – Fuel consumed during the mission profile (not including TO; scalar, kg)
- OEW (float) – Operational empty weight (scalar, kg)
- takeoff|total_battery_energy (float) – Battery energy consumed during takeoff (only if include_takeoff option is True)
- takeoff|total_fuel (float) – Fuel consumed during takeoff (only if include_takeoff option is True)
Outputs: - mission|battery_margin (float) – Excess battery energy for this mission (scalar, kg)
- mission|fuel_capacity_margin (float) – Excess fuel capacity for this mission (scalar, kg) Positive is good
- mission|MTOW_margin (float) – Excess takeoff weight avail. for this mission (scalar, kg) Positive is good
- battery_energy_used (float) – Total battery energy used including takeoff and the mission (scalar, MJ) Only when include_takeoff is True
- fuel_burn (float) – Total fuel burn including takeoff and the mission (scalar, kg) Only when include_takeoff is True
Options: include_takeoff (bool) – Set to True to enable takeoff fuel burn input
-
class
openconcept.analysis.mission.MissionGroundspeeds(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentComputes groundspeed for vectorial true airspeed and true vertical speed.
This is a helper function for the main mission analysis routine MissionNoReserves and shouldn’t be instantiated directly.
Inputs: - fltcond|mission|vs (float) – Vertical speed for all mission phases (vector, m/s)
- fltcond|mission|Utrue (float) – True airspeed for all mission phases (vector, m/s)
Outputs: - mission|groundspeed (float) – True groundspeed for all mission phases (vector, m/s)
- fltcond|mission|cosgamma (float) – Cosine of the flght path angle for all mission phases (vector, dimensionless)
- fltcond|mission|singamma (float) – Sine of the flight path angle for all mission phases (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
-
class
openconcept.analysis.mission.MissionClimbDescentRanges(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentComputes range over the ground during the climb and descent phases
This is a helper function for the main mission analysis routine MissionNoReserves and shouldn’t be instantiated directly.
Inputs: - mission|groundspeed (float) – True groundspeed for all mission phases (vector, m/s)
- mission|climb|time (float) – Time elapsed during the climb phase (scalar, s)
- mission|descent|time (float) – Time elapsed during the descent phase (scalar, s)
Outputs: - mission|climb|range (float) – Distance over the ground during climb phase (scalar, m)
- mission|descent|range (float) – Distance over the ground during descent phase (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
-
class
openconcept.analysis.mission.MissionTimings(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentComputes cruise distance, time, and dt for a given total mission range
This is a helper function for the main mission analysis routine MissionNoReserves and shouldn’t be instantiated directly.
Inputs: - mission|range (float) – Total specified range for the given mission (vector, m)
- mission|groundspeed (float) – True groundspeed for all mission phases (vector, m/s)
- mission|climb|range (float) – Distance over the ground during climb phase (scalar, m)
- mission|descent|range (float) – Distance over the ground during descent phase (scalar , m)
Outputs: - mission|cruise|range (float) – Distance over the ground during the cruise phase (scalar, m)
- mission|cruise|time (float) – Time elapsed during cruise phase (scalar, s)
- mission|cruise|dt (float) – Simpson subinterval timestep during the cruise phase (scalar, 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
-
class
openconcept.analysis.mission.MissionSegmentFuelBurns(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentIntegrates delta fuel between each analysis point
This is a helper function for the main mission analysis routine MissionNoReserves and shouldn’t be instantiated directly.
Takes 3 * nn fuel flow rates; produces 3 * (nn - 1) fuel burns
Inputs: - mission|fuel_flow (float) – Fuel flow rate for all analysis points (vector, kg/s)
- mission|climb|dt (float) – Timestep length during climb phase (scalar, s) Note: this represents the timestep for the Simpson subinterval, not the whole inteval
- mission|cruise|dt (float) – Timestep length during descent phase (scalar, s) Note: this represents the timestep for the Simpson subinterval, not the whole inteval
- mission|descent|dt (float) – Timestep length during descent phase (scalar, s) Note: this represents the timestep for the Simpson subinterval, not the whole inteval
Outputs: mission|segment_fuel (float) – Fuel burn increment between each analysis point (vector, kg) Note: if the number of analysis points in one phase is nn, the number of segment fuel burns is nn - 1
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
-
class
openconcept.analysis.mission.MissionSegmentBatteryEnergyUsed(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentIntegrates battery energy used between each analysis point
This is a helper function for the main mission analysis routine MissionNoReserves and shouldn’t be instantiated directly.
Takes 3 * nn battery loads; produces 3 * (nn - 1) energy increments
Inputs: - mission|battery_load (float) – Battery load / power for all analysis points (vector, kW)
- mission|climb|dt (float) – Timestep length during climb phase (scalar, s) Note: this represents the timestep for the Simpson subinterval, not the whole inteval
- mission|cruise|dt (float) – Timestep length during descent phase (scalar, s) Note: this represents the timestep for the Simpson subinterval, not the whole inteval
- mission|descent|dt (float) – Timestep length during descent phase (scalar, s) Note: this represents the timestep for the Simpson subinterval, not the whole inteval
Outputs: mission|segment_battery_energy_used (float) – Battery energy increment between each analysis point (vector, kW*s) Note: if the number of analysis points in one phase is nn, the number of segment energies is nn - 1
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
-
class
openconcept.analysis.mission.MissionSegmentWeights(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentComputes aircraft weight at each analysis point including fuel burned
This is a helper function for the main mission analysis routine MissionNoReserves and shouldn’t be instantiated directly.
Inputs: - mission|segment_fuel (float) – Fuel burn increment between each analysis point (vector, kg) Note: if the number of analysis points in one phase is nn, the number of segment fuel burns is nn - 1
- mission|weight_initial (float) – Weight immediately following takeoff (scalar, kg)
Outputs: mission|weights (float) – Aircraft weight at each analysis point (vector, kg)
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
-
class
openconcept.analysis.mission.MissionSegmentCL(**kwargs)[source]¶ Bases:
openmdao.core.explicitcomponent.ExplicitComponentComputes lift coefficient at each analysis point
This is a helper function for the main mission analysis routine MissionNoReserves and shouldn’t be instantiated directly.
Inputs: - mission|weights (float) – Aircraft weight at each analysis point (vector, kg)
- fltcond|mission|q (float) – Dynamic pressure at each analysis point (vector, Pascal)
- ac|geom|wing|S_ref (float) – Reference wing area (scalar, m**2)
- fltcond|mission|cosgamma (float) – Cosine of the flght path angle for all mission phases (vector, dimensionless)
Outputs: fltcond|mission|CL (float) – Lift coefficient (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