Climb mission methods containing the functions for setting up and solving a mission.
More...
Climb mission methods containing the functions for setting up and solving a mission.
◆ compute_noise()
def SUAVE.Methods.Missions.Segments.Common.Noise.compute_noise |
( |
|
segment | ) |
|
Noise.py.
Created: Oct 2020, M. Clarke
Evaluates the energy network to find the thrust force and mass rate
Inputs -
segment.analyses.noise [Function]
Outputs
N/A
Assumptions -
◆ expand_sub_segments()
def SUAVE.Methods.Missions.Segments.Common.Sub_Segments.expand_sub_segments |
( |
|
segment | ) |
|
Fills in the segments to a mission with data, sets initials data if necessary
Assumptions:
N/A
Inputs:
N/A
Outputs:
N/A
Properties Used:
N/A
◆ finalize_sub_segments()
def SUAVE.Methods.Missions.Segments.Common.Sub_Segments.finalize_sub_segments |
( |
|
segment | ) |
|
Sets the conditions in each sub segment for a mission
Assumptions:
N/A
Inputs:
N/A
Outputs:
N/A
Properties Used:
N/A
◆ initialize_battery()
def SUAVE.Methods.Missions.Segments.Common.Energy.initialize_battery |
( |
|
segment | ) |
|
Energy.py.
Created: Jul 2014, SUAVE Team Modified: Jan 2016, E. Botero Jul 2017, E. Botero Aug 2021, M. Clarke Oct 2021, E. Botero
Dec 2021, S.CLaridge
Initialize Battery
Sets the initial battery energy at the start of the mission
Assumptions:
N/A
Inputs:
segment.state.initials.conditions:
propulsion.battery_energy [Joules]
segment.battery_energy [Joules]
Outputs:
segment.state.conditions:
propulsion.battery_energy [Joules]
Properties Used:
N/A
◆ initialize_differentials_dimensionless()
def SUAVE.Methods.Missions.Segments.Common.Numerics.initialize_differentials_dimensionless |
( |
|
segment | ) |
|
Discretizes the differential operators
Assumptions:
N/A
Inputs:
state.numerics:
number_control_points [int]
discretization_method [function]
Outputs:
numerics.dimensionless:
control_points [array]
differentiate [array]
integrate [array]
Properties Used:
N/A
◆ initialize_inertial_position()
def SUAVE.Methods.Missions.Segments.Common.Frames.initialize_inertial_position |
( |
|
segment | ) |
|
Sets the initial location of the vehicle at the start of the segment
Assumptions:
Only used if there is an initial condition
Inputs:
segment.state.initials.conditions:
frames.inertial.position_vector [meters]
segment.state.conditions:
frames.inertial.position_vector [meters]
Outputs:
segment.state.conditions:
frames.inertial.position_vector [meters]
Properties Used:
N/A
◆ initialize_planet_position()
def SUAVE.Methods.Missions.Segments.Common.Frames.initialize_planet_position |
( |
|
segment | ) |
|
Sets the initial location of the vehicle relative to the planet at the start of the segment
Assumptions:
Only used if there is an initial condition
Inputs:
segment.state.initials.conditions:
frames.planet.longitude [Radians]
frames.planet.latitude [Radians]
segment.longitude [Radians]
segment.latitude [Radians]
Outputs:
segment.state.conditions:
frames.planet.latitude [Radians]
frames.planet.longitude [Radians]
Properties Used:
N/A
◆ initialize_time()
def SUAVE.Methods.Missions.Segments.Common.Frames.initialize_time |
( |
|
segment | ) |
|
Sets the initial time of the vehicle at the start of the segment
Assumptions:
Only used if there is an initial condition
Inputs:
state.initials.conditions:
frames.inertial.time [seconds]
frames.planet.start_time [seconds]
state.conditions:
frames.inertial.time [seconds]
segment.start_time [seconds]
Outputs:
state.conditions:
frames.inertial.time [seconds]
frames.planet.start_time [seconds]
Properties Used:
N/A
◆ initialize_weights()
def SUAVE.Methods.Missions.Segments.Common.Weights.initialize_weights |
( |
|
segment | ) |
|
Sets the initial weight of the vehicle at the start of the segment
Assumptions:
Only used if there is an initial condition
Inputs:
segment.state.initials.conditions:
weights.total_mass [newtons]
segment.state.conditions:
weights.total_mass [newtons]
Outputs:
segment.state.conditions:
weights.total_mass [newtons]
Properties Used:
N/A
◆ integrate_inertial_horizontal_position()
def SUAVE.Methods.Missions.Segments.Common.Frames.integrate_inertial_horizontal_position |
( |
|
segment | ) |
|
Determines how far the airplane has traveled.
Assumptions:
Assumes a flat earth, this is planar motion.
Inputs:
segment.state.conditions:
frames.inertial.position_vector [meters]
frames.inertial.velocity_vector [meters/second]
segment.state.numerics.time.integrate [float]
Outputs:
segment.state.conditions:
frames.inertial.position_vector [meters]
Properties Used:
N/A
◆ merge_sub_segment_states()
def SUAVE.Methods.Missions.Segments.Common.Sub_Segments.merge_sub_segment_states |
( |
|
segment | ) |
|
Merges all of the sub segment states back into the main state
Assumptions:
N/A
Inputs:
N/A
Outputs:
N/A
Properties Used:
N/A
◆ sequential_sub_segments()
def SUAVE.Methods.Missions.Segments.Common.Sub_Segments.sequential_sub_segments |
( |
|
segment | ) |
|
Evaluates all the segments in a mission one by one
Assumptions:
N/A
Inputs:
N/A
Outputs:
N/A
Properties Used:
N/A
◆ unpack_subsegments()
def SUAVE.Methods.Missions.Segments.Common.Sub_Segments.unpack_subsegments |
( |
|
segment | ) |
|
Unpacks the unknowns from the higher level state into the sub segments
Assumptions:
The subsegments have numerics
Inputs:
N/A
Outputs:
N/A
Properties Used:
N/A
◆ update_acceleration()
def SUAVE.Methods.Missions.Segments.Common.Frames.update_acceleration |
( |
|
segment | ) |
|
Differentiates the velocity vector to get accelerations
Assumptions:
Assumes a flat earth, this is planar motion.
Inputs:
segment.state.conditions:
frames.inertial.velocity_vector [meters/second]
segment.state.numerics.time.differentiate [float]
Outputs:
segment.state.conditions:
frames.inertial.acceleration_vector [meters]
Properties Used:
N/A
◆ update_aerodynamics()
def SUAVE.Methods.Missions.Segments.Common.Aerodynamics.update_aerodynamics |
( |
|
segment | ) |
|
Gets aerodynamics conditions
Assumptions:
+X out nose
+Y out starboard wing
+Z down
Inputs:
segment.analyses.aerodynamics_model [Function]
aerodynamics_model.settings.maximum_lift_coefficient [unitless]
aerodynamics_model.geometry.reference_area [meter^2]
segment.state.conditions.freestream.dynamic_pressure [pascals]
Outputs:
conditions.aerodynamics.lift_coefficient [unitless]
conditions.aerodynamics.drag_coefficient [unitless]
conditions.frames.wind.lift_force_vector [newtons]
conditions.frames.wind.drag_force_vector [newtons]
Properties Used:
N/A
◆ update_altitude()
def SUAVE.Methods.Missions.Segments.Common.Aerodynamics.update_altitude |
( |
|
segment | ) |
|
Updates freestream altitude from inertial position
Assumptions:
N/A
Inputs:
segment.state.conditions:
frames.inertial.position_vector [meters]
Outputs:
segment.state.conditions:
freestream.altitude [meters]
Properties Used:
N/A
◆ update_atmosphere()
def SUAVE.Methods.Missions.Segments.Common.Aerodynamics.update_atmosphere |
( |
|
segment | ) |
|
Computes conditions of the atmosphere at given altitudes
Assumptions:
N/A
Inputs:
state.conditions:
freestream.altitude [meters]
segment.analyses.atmoshere [Function]
Outputs:
state.conditions:
freestream.pressure [pascals]
freestream.temperature [kelvin]
freestream.density [kilogram/meter^3]
freestream.speed_of_sound [meter/second]
freestream.dynamic_viscosity [pascals-seconds]
freestream.kinematic_viscosity [meters^2/second]
freestream.thermal_conductivity [Watt/meter-Kelvin]
freestream.prandtl_number [unitless]
Properties Used:
N/A
◆ update_differentials_time()
def SUAVE.Methods.Missions.Segments.Common.Numerics.update_differentials_time |
( |
|
segment | ) |
|
Scales the differential operators (integrate and differentiate) based on mission time
Assumptions:
N/A
Inputs:
numerics.dimensionless:
control_points [array]
differentiate [array]
integrate [array]
state.conditions.frames.inertial.time [seconds]
Outputs:
numerics.time:
control_points [array]
differentiate [array]
integrate [array]
Properties Used:
N/A
◆ update_forces()
def SUAVE.Methods.Missions.Segments.Common.Frames.update_forces |
( |
|
segment | ) |
|
Summation of forces: lift, drag, thrust, weight. Future versions will include new definitions of dreams, FAA, money, and reality.
Assumptions:
You only have these 4 forces applied to the vehicle
Inputs:
segment.state.conditions:
frames.wind.lift_force_vector [newtons]
frames.wind.drag_force_vector [newtons]
frames.inertial.gravity_force_vector [newtons]
frames.body.thrust_force_vector [newtons]
frames.body.transform_to_inertial [newtons]
frames.wind.transform_to_inertial [newtons]
Outputs:
segment.state.conditions:
frames.inertial.total_force_vector [newtons]
Properties Used:
N/A
◆ update_freestream()
def SUAVE.Methods.Missions.Segments.Common.Aerodynamics.update_freestream |
( |
|
segment | ) |
|
Computes freestream values
Assumptions:
N/A
Inputs:
segment.state.conditions:
frames.inertial.velocity_vector [meter/second]
freestream.density [kilogram/meter^3]
freestream.speed_of_sound [meter/second]
freestream.dynamic_viscosity [pascals-seconds]
Outputs:
segment.state.conditions:
freestream.dynamic pressure [pascals]
freestream.mach number [Unitless]
freestream.reynolds number [1/meter]
Properties Used:
N/A
◆ update_gravity()
def SUAVE.Methods.Missions.Segments.Common.Weights.update_gravity |
( |
|
segment | ) |
|
Sets the gravity for each part of the mission
Assumptions:
Fixed sea level gravity, doesn't use a gravity model yet
Inputs:
segment.analyses.planet.features.sea_level_gravity [Data]
Outputs:
state.conditions.freestream.gravity [meters/second^2]
Properties Used:
N/A
◆ update_orientations()
def SUAVE.Methods.Missions.Segments.Common.Frames.update_orientations |
( |
|
segment | ) |
|
Updates the orientation of the vehicle throughout the mission for each relevant axis
Assumptions:
This assumes the vehicle has 3 frames: inertial, body, and wind. There also contains bits for stability axis which are not used. Creates tensors and solves for alpha and beta.
Inputs:
segment.state.conditions:
frames.inertial.velocity_vector [meters/second]
frames.body.inertial_rotations [Radians]
segment.analyses.planet.features.mean_radius [meters]
state.numerics.time.integrate [float]
Outputs:
segment.state.conditions:
aerodynamics.angle_of_attack [Radians]
aerodynamics.side_slip_angle [Radians]
aerodynamics.roll_angle [Radians]
frames.body.transform_to_inertial [Radians]
frames.wind.body_rotations [Radians]
frames.wind.transform_to_inertial [Radians]
Properties Used:
N/A
◆ update_planet_position()
def SUAVE.Methods.Missions.Segments.Common.Frames.update_planet_position |
( |
|
segment | ) |
|
Updates the location of the vehicle relative to the Planet throughout the mission
Assumptions:
This is valid for small movements and times as it does not account for the rotation of the Planet beneath the vehicle
Inputs:
segment.state.conditions:
freestream.velocity [meters/second]
freestream.altitude [meters]
frames.body.inertial_rotations [Radians]
segment.analyses.planet.features.mean_radius [meters]
segment.state.numerics.time.integrate [float]
Outputs:
segment.state.conditions:
frames.planet.latitude [Radians]
frames.planet.longitude [Radians]
Properties Used:
N/A
◆ update_stability()
def SUAVE.Methods.Missions.Segments.Common.Aerodynamics.update_stability |
( |
|
segment | ) |
|
Initiates the stability model
Assumptions:
N/A
Inputs:
segment.state.conditions [Data]
segment.analyses.stability [function]
Outputs:
N/A
Properties Used:
N/A
◆ update_sub_segments()
def SUAVE.Methods.Missions.Segments.Common.Sub_Segments.update_sub_segments |
( |
|
segment | ) |
|
Loops through the segments and fills them in
Assumptions:
N/A
Inputs:
N/A
Outputs:
N/A
Properties Used:
N/A
◆ update_thrust()
def SUAVE.Methods.Missions.Segments.Common.Energy.update_thrust |
( |
|
segment | ) |
|
Evaluates the energy network to find the thrust force and mass rate
Inputs -
segment.analyses.energy_network [Function]
Outputs -
state.conditions:
frames.body.thrust_force_vector [Newtons]
weights.vehicle_mass_rate [kg/s]
weights.vehicle_fuel_rate [kg/s]
weights.vehicle_additional_fuel_rate [kg/s]
weights.has_additional_fuel
Assumptions -
◆ update_weights()
def SUAVE.Methods.Missions.Segments.Common.Weights.update_weights |
( |
|
segment | ) |
|
Integrate tbe mass rate to update the weights throughout a segment
Assumptions:
Only the energy network/propulsion system can change the mass
Inputs:
segment.state.conditions:
weights.total_mass [kilograms]
weights.vehicle_mass_rate [kilograms/second]
freestream.gravity [meters/second^2]
segment.analyses.weights:
mass_properties.operating_empty [kilograms]
segment.state.numerics.time.integrate [array]
Outputs:
segment.state.conditions:
weights.total_mass [kilograms]
weights.fuel_mass [kilograms]
weights.additional_fuel_mass [kilograms]
frames.inertial.gravity_force_vector [kilograms]
Properties Used:
N/A