Source code for RCAIDE.Framework.Mission.Segments.Ground.Takeoff

# RCAIDE/Framework/Analyses/Mission/Segments/Ground/Takeoff.py
# 
# 
# Created:  Jul 2023, M. Clarke
 
# ----------------------------------------------------------------------------------------------------------------------
#  IMPORT
# ----------------------------------------------------------------------------------------------------------------------

# RCAIDE imports 
from RCAIDE.Framework.Mission.Segments.Evaluate        import Evaluate
from RCAIDE.Framework.Core                                      import Units, Data 
from RCAIDE.Library.Mission.Segments                  import Ground  
from RCAIDE.Library.Mission.Common                    import Residuals , Unpack_Unknowns, Update

# ----------------------------------------------------------------------------------------------------------------------
#  Takeoff
# ----------------------------------------------------------------------------------------------------------------------

[docs] class Takeoff(Evaluate): """ Segment for takeoff. Integrates equations of motion including rolling friction. Assumptions: Notes Regarding Friction Coefficients Dry asphalt or concrete: .04 brakes off, .4 brakes on Wet asphalt or concrete: .05 brakes off, .225 brakes on Icy asphalt or concrete: .02 brakes off, .08 brakes on Hard turf: .05 brakes off, .4 brakes on Firm dirt: .04 brakes off, .3 brakes on Soft turf: .07 brakes off, .2 brakes on Wet grass: .08 brakes off, .2 brakes on Source: General Aviation Aircraft Design: Applied Methods and Procedures, by Snorri Gudmundsson, copyright 2014, published by Elsevier, Waltham, MA, USA [p.938] """ def __defaults__(self): """ This sets the default solver flow. Anything in here can be modified after initializing a segment. Assumptions: None Source: N/A Inputs: None Outputs: None Properties Used: None """ # -------------------------------------------------------------------------------------------------------------- # User Inputs # -------------------------------------------------------------------------------------------------------------- self.ground_incline = 0.0 self.velocity_start = None self.velocity_end = 150 * Units.knots self.friction_coefficient = 0.04 self.throttle = 1.0 self.altitude = 0.0 self.true_course = 0.0 * Units.degrees # -------------------------------------------------------------------------------------------------------------- # Mission Unknowns and Residuals # -------------------------------------------------------------------------------------------------------------- ones_row_m1 = self.state.ones_row_m1 self.state.residuals.final_velocity_error = 0.0 self.state.residuals.force_x = ones_row_m1(1) * 0.0 self.state.unknowns.elapsed_time = 30. self.state.unknowns.ground_velocity = ones_row_m1(1) * 0 # -------------------------------------------------------------------------------------------------------------- # Mission Conditions # -------------------------------------------------------------------------------------------------------------- ones_row = self.state.ones_row self.state.conditions.ground = Data() self.state.conditions.ground.incline = ones_row(1) * 0.0 self.state.conditions.ground.friction_coefficient = ones_row(1) * 0.0 self.state.conditions.frames.inertial.ground_force_vector = ones_row(3) * 0.0 # -------------------------------------------------------------------------------------------------------------- # Mission specific processes # -------------------------------------------------------------------------------------------------------------- initialize = self.process.initialize initialize.conditions = Ground.Takeoff.initialize_conditions iterate = self.process.iterate iterate.conditions.forces_ground = Update.ground_forces iterate.unknowns.mission = Unpack_Unknowns.ground iterate.residuals.flight_dynamics = Residuals.flight_dynamics return