Ejemplo n.º 1
0
    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.altitude_start = None  # Optional
        self.altitude_end = 10. * Units.km

        # --------------------------------------------------------------
        #   State
        # --------------------------------------------------------------

        # conditions
        self.state.conditions.update(Conditions.Aerodynamics())

        # initials and unknowns
        ones_row = self.state.ones_row
        self.state.unknowns.throttle = ones_row(1) * 0.5
        self.state.unknowns.body_angle = ones_row(1) * 0.0
        self.state.residuals.forces = ones_row(2) * 0.0

        # --------------------------------------------------------------
        #   The Solving Process
        # --------------------------------------------------------------

        # --------------------------------------------------------------
        #   Initialize - before iteration
        # --------------------------------------------------------------
        initialize = self.process.initialize

        initialize.expand_state = Methods.expand_state
        initialize.differentials = Methods.Common.Numerics.initialize_differentials_dimensionless
        initialize.conditions = None
        initialize.differentials_altitude = Methods.Climb.Common.update_differentials_altitude

        # --------------------------------------------------------------
        #   Converge - starts iteration
        # --------------------------------------------------------------
        converge = self.process.converge

        converge.converge_root = Methods.converge_root

        # --------------------------------------------------------------
        #   Iterate - this is iterated
        # --------------------------------------------------------------
        iterate = self.process.iterate

        # Update Initials
        iterate.initials = Process()
        iterate.initials.time = Methods.Common.Frames.initialize_time
        iterate.initials.weights = Methods.Common.Weights.initialize_weights
        iterate.initials.inertial_position = Methods.Common.Frames.initialize_inertial_position
        iterate.initials.planet_position = Methods.Common.Frames.initialize_planet_position

        # Unpack Unknowns
        iterate.unknowns = Process()
        iterate.unknowns.mission = Methods.Climb.Common.unpack_unknowns

        # Update Conditions
        iterate.conditions = Process()
        iterate.conditions.differentials = Methods.Common.Numerics.update_differentials_time
        iterate.conditions.acceleration = Methods.Common.Frames.update_acceleration
        iterate.conditions.altitude = Methods.Common.Aerodynamics.update_altitude
        iterate.conditions.atmosphere = Methods.Common.Aerodynamics.update_atmosphere
        iterate.conditions.gravity = Methods.Common.Weights.update_gravity
        iterate.conditions.freestream = Methods.Common.Aerodynamics.update_freestream
        iterate.conditions.orientations = Methods.Common.Frames.update_orientations
        iterate.conditions.aerodynamics = Methods.Common.Aerodynamics.update_aerodynamics
        iterate.conditions.stability = Methods.Common.Aerodynamics.update_stability
        iterate.conditions.propulsion = Methods.Common.Energy.update_thrust
        iterate.conditions.weights = Methods.Common.Weights.update_weights
        iterate.conditions.forces = Methods.Common.Frames.update_forces
        iterate.conditions.planet_position = Methods.Common.Frames.update_planet_position

        # Solve Residuals
        iterate.residuals = Process()
        iterate.residuals.total_forces = Methods.Climb.Common.residual_total_forces

        # --------------------------------------------------------------
        #   Finalize - after iteration
        # --------------------------------------------------------------
        finalize = self.process.finalize

        # Post Processing
        finalize.post_process = Process()
        finalize.post_process.inertial_position = Methods.Common.Frames.integrate_inertial_horizontal_position
        finalize.post_process.stability = Methods.Common.Aerodynamics.update_stability

        return
Ejemplo n.º 2
0
    def __defaults__(self):

        # --------------------------------------------------------------
        #   User inputs
        # --------------------------------------------------------------
        self.altitude_start = None  # Optional
        self.altitude_end = 10. * Units.km
        self.throttle = 0.5
        self.equivalent_air_speed = 100 * Units.kts
        self.settings.root_finder = scipy.optimize.root

        # --------------------------------------------------------------
        #   State
        # --------------------------------------------------------------

        # conditions
        self.state.conditions.update(Conditions.Aerodynamics())

        # initials and unknowns
        ones_row = self.state.ones_row
        self.state.unknowns.body_angle = ones_row(1) * 10.0 * Units.deg
        self.state.unknowns.wind_angle = ones_row(1) * 0.8 * Units.deg
        self.state.residuals.forces = ones_row(2) * 0.0

        # --------------------------------------------------------------
        #   The Solving Process
        # --------------------------------------------------------------

        # --------------------------------------------------------------
        #   Initialize - before iteration
        # --------------------------------------------------------------
        initialize = self.process.initialize
        initialize.clear()

        initialize.expand_state = Methods.expand_state
        initialize.differentials = Methods.Common.Numerics.initialize_differentials_dimensionless
        initialize.conditions = Methods.Climb.Constant_Throttle_Constant_EAS.initialize_conditions
        initialize.velocities = Methods.Climb.Constant_Throttle_Constant_EAS.update_velocity_vector_from_wind_angle
        initialize.differentials_altitude = Methods.Climb.Constant_Throttle_Constant_EAS.update_differentials_time

        # --------------------------------------------------------------
        #   Converge - starts iteration
        # --------------------------------------------------------------
        converge = self.process.converge
        converge.clear()

        converge.converge_root = Methods.converge_root

        # --------------------------------------------------------------
        #   Iterate - this is iterated
        # --------------------------------------------------------------
        iterate = self.process.iterate
        iterate.clear()

        # Update Initials
        iterate.initials = Process()
        iterate.initials.time = Methods.Common.Frames.initialize_time
        iterate.initials.weights = Methods.Common.Weights.initialize_weights
        iterate.initials.inertial_position = Methods.Common.Frames.initialize_inertial_position
        iterate.initials.planet_position = Methods.Common.Frames.initialize_planet_position

        # Unpack Unknowns
        iterate.unpack_unknowns = Methods.Climb.Constant_Throttle_Constant_EAS.unpack_body_angle

        # Update Conditions
        iterate.conditions = Process()
        iterate.conditions.velocities = Methods.Climb.Constant_Throttle_Constant_EAS.update_velocity_vector_from_wind_angle
        iterate.conditions.differentials_a = Methods.Climb.Constant_Throttle_Constant_EAS.update_differentials_time
        iterate.conditions.acceleration = Methods.Climb.Constant_Throttle_Constant_EAS.update_acceleration
        iterate.conditions.altitude = Methods.Common.Aerodynamics.update_altitude
        iterate.conditions.atmosphere = Methods.Common.Aerodynamics.update_atmosphere
        iterate.conditions.gravity = Methods.Common.Weights.update_gravity
        iterate.conditions.freestream = Methods.Common.Aerodynamics.update_freestream
        iterate.conditions.orientations = Methods.Common.Frames.update_orientations
        iterate.conditions.aerodynamics = Methods.Common.Aerodynamics.update_aerodynamics
        iterate.conditions.stability = Methods.Common.Aerodynamics.update_stability
        iterate.conditions.propulsion = Methods.Common.Energy.update_thrust
        iterate.conditions.weights = Methods.Climb.Constant_Throttle_Constant_EAS.update_weights
        iterate.conditions.forces = Methods.Climb.Constant_Throttle_Constant_EAS.update_forces
        iterate.conditions.planet_position = Methods.Common.Frames.update_planet_position

        # Solve Residuals
        iterate.residuals = Process()
        iterate.residuals.total_forces = Methods.Climb.Constant_Throttle_Constant_EAS.residual_total_forces

        # --------------------------------------------------------------
        #   Finalize - after iteration
        # --------------------------------------------------------------
        finalize = self.process.finalize
        finalize.clear()

        # Post Processing
        finalize.post_process = Process()
        finalize.post_process.inertial_position = Methods.Common.Frames.integrate_inertial_horizontal_position
        finalize.post_process.stability = Methods.Common.Aerodynamics.update_stability

        return
Ejemplo n.º 3
0
    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.altitude  = None
        self.air_speed = 10. * Units['km/hr']
        self.throttle  = 1.
        self.z_accel   = 0. # note that down is positive
        self.state.numerics.number_control_points = 1
        
        
        # --------------------------------------------------------------
        #   State
        # --------------------------------------------------------------
        
        # conditions
        self.state.conditions.update( Conditions.Aerodynamics() )
        
        # initials and unknowns
        self.state.unknowns.x_accel    = np.array([[0.0]])
        self.state.unknowns.body_angle = np.array([[0.5]])
        self.state.residuals.forces    = np.array([[0.0,0.0]])
        
        
        # --------------------------------------------------------------
        #   The Solving Process
        # --------------------------------------------------------------
        
        # --------------------------------------------------------------
        #   Initialize - before iteration
        # --------------------------------------------------------------
        initialize = self.process.initialize
        
        initialize.expand_state            = skip
        initialize.differentials           = skip
        initialize.conditions              = Methods.Single_Point.Set_Speed_Set_Throttle.initialize_conditions

        # --------------------------------------------------------------
        #   Converge - starts iteration
        # --------------------------------------------------------------
        converge = self.process.converge
        
        converge.converge_root             = Methods.converge_root        

        # --------------------------------------------------------------
        #   Iterate - this is iterated
        # --------------------------------------------------------------
        iterate = self.process.iterate
                
        # Update Initials
        iterate.initials = Process()
        iterate.initials.time              = Methods.Common.Frames.initialize_time
        iterate.initials.weights           = Methods.Common.Weights.initialize_weights
        iterate.initials.inertial_position = Methods.Common.Frames.initialize_inertial_position
        iterate.initials.planet_position   = Methods.Common.Frames.initialize_planet_position
        
        # Unpack Unknowns
        iterate.unknowns = Process()
        iterate.unknowns.mission           = Methods.Single_Point.Set_Speed_Set_Throttle.unpack_unknowns
        
        # Update Conditions
        iterate.conditions = Process()
        iterate.conditions.differentials   = skip
        iterate.conditions.altitude        = Methods.Common.Aerodynamics.update_altitude
        iterate.conditions.atmosphere      = Methods.Common.Aerodynamics.update_atmosphere
        iterate.conditions.gravity         = Methods.Common.Weights.update_gravity
        iterate.conditions.freestream      = Methods.Common.Aerodynamics.update_freestream
        iterate.conditions.orientations    = Methods.Common.Frames.update_orientations
        iterate.conditions.propulsion      = Methods.Common.Energy.update_thrust        
        iterate.conditions.aerodynamics    = Methods.Common.Aerodynamics.update_aerodynamics
        iterate.conditions.stability       = Methods.Common.Aerodynamics.update_stability
        iterate.conditions.weights         = Methods.Single_Point.Set_Speed_Set_Throttle.update_weights
        iterate.conditions.forces          = Methods.Common.Frames.update_forces
        iterate.conditions.planet_position = skip

        # Solve Residuals
        iterate.residuals = Process()     
        iterate.residuals.total_forces     = Methods.Climb.Common.residual_total_forces
        
        # --------------------------------------------------------------
        #   Finalize - after iteration
        # --------------------------------------------------------------
        finalize = self.process.finalize
        
        # Post Processing
        finalize.post_process = Process()        
        finalize.post_process.inertial_position = skip
        finalize.post_process.stability         = Methods.Common.Aerodynamics.update_stability
        
        return
Ejemplo n.º 4
0
    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.altitude_start = None
        self.altitude_end = None
        self.air_speed_start = None
        self.air_speed_end = None
        self.objective = None  # This will be a key
        self.minimize = True
        self.CL_limit = 1.e20
        self.seed_climb_rate = 100. * Units['feet/min']
        self.algorithm = 'SLSQP'

        # --------------------------------------------------------------
        #   State
        # --------------------------------------------------------------

        # conditions
        self.state.conditions.update(Conditions.Aerodynamics())
        # initials and unknowns
        ones_row = self.state.ones_row
        self.state.unknowns.throttle = ones_row(1) * 0.8
        self.state.unknowns.body_angle = ones_row(1) * 5.0 * Units.degrees
        self.state.unknowns.flight_path_angle = ones_row(
            1) * 3.0 * Units.degrees
        self.state.unknowns.velocity = ones_row(1) * 1.0
        self.state.residuals.forces = ones_row(2) * 0.0
        self.state.inputs_last = None
        self.state.objective_value = 0.0
        self.state.constraint_values = 0.0

        # --------------------------------------------------------------
        #   The Solving Process
        # --------------------------------------------------------------

        # --------------------------------------------------------------
        #   Initialize - before iteration
        # --------------------------------------------------------------
        initialize = self.process.initialize
        initialize.expand_state = Methods.expand_state
        initialize.solved_mission = Methods.Climb.Optimized.solve_linear_speed_constant_rate
        initialize.differentials = Methods.Common.Numerics.initialize_differentials_dimensionless
        initialize.conditions = SUAVE.Methods.skip

        # --------------------------------------------------------------
        #   Converge - starts iteration
        # --------------------------------------------------------------
        converge = self.process.converge

        converge.converge_root = Methods.converge_opt

        # --------------------------------------------------------------
        #   Iterate - this is iterated
        # --------------------------------------------------------------
        iterate = self.process.iterate

        # Update Initials
        iterate.initials = Process()
        iterate.initials.time = Methods.Common.Frames.initialize_time
        iterate.initials.weights = Methods.Common.Weights.initialize_weights
        iterate.initials.inertial_position = Methods.Common.Frames.initialize_inertial_position
        iterate.initials.planet_position = Methods.Common.Frames.initialize_planet_position

        # Unpack Unknowns
        iterate.unknowns = Process()
        iterate.unknowns.mission = Methods.Climb.Optimized.unpack_unknowns

        # Update Conditions
        iterate.conditions = Process()
        iterate.conditions.differentials = Methods.Climb.Optimized.update_differentials
        iterate.conditions.acceleration = Methods.Common.Frames.update_acceleration
        iterate.conditions.altitude = Methods.Common.Aerodynamics.update_altitude
        iterate.conditions.atmosphere = Methods.Common.Aerodynamics.update_atmosphere
        iterate.conditions.gravity = Methods.Common.Weights.update_gravity
        iterate.conditions.freestream = Methods.Common.Aerodynamics.update_freestream
        iterate.conditions.orientations = Methods.Common.Frames.update_orientations
        iterate.conditions.aerodynamics = Methods.Common.Aerodynamics.update_aerodynamics
        iterate.conditions.stability = Methods.Common.Aerodynamics.update_stability
        iterate.conditions.propulsion = Methods.Common.Energy.update_thrust
        iterate.conditions.weights = Methods.Common.Weights.update_weights
        iterate.conditions.forces = Methods.Common.Frames.update_forces
        iterate.conditions.planet_position = Methods.Common.Frames.update_planet_position

        # Solve Residuals
        iterate.residuals = Process()
        iterate.residuals.total_forces = Methods.Climb.Common.residual_total_forces

        # Set outputs
        iterate.outputs = Process()
        iterate.outputs.objective = Methods.Climb.Optimized.objective
        iterate.outputs.constraints = Methods.Climb.Optimized.constraints
        iterate.outputs.cache_inputs = Methods.Climb.Optimized.cache_inputs

        # --------------------------------------------------------------
        #   Finalize - after iteration
        # --------------------------------------------------------------
        finalize = self.process.finalize

        # Post Processing
        finalize.post_process = Process()
        finalize.post_process.inertial_position = Methods.Common.Frames.integrate_inertial_horizontal_position
        finalize.post_process.stability = Methods.Common.Aerodynamics.update_stability

        return
Ejemplo n.º 5
0
    def __defaults__(self):
        """This sets the default values.
    
            Assumptions:
            None
    
            Source:
            N/A
    
            Inputs:
            None
    
            Outputs:
            None
    
            Properties Used:
            None
        """

        # --------------------------------------------------------------
        #   User inputs
        # --------------------------------------------------------------
        # self.example = 1.0

        # --------------------------------------------------------------
        #   State
        # --------------------------------------------------------------

        # conditions
        self.state.conditions.update(Conditions.Aerodynamics())
        self.temperature_deviation = 0.0
        self.state.VTOL_flag = False

        # --------------------------------------------------------------
        #   The Solving Process
        # --------------------------------------------------------------

        # --------------------------------------------------------------
        #   Initialize - before iteration
        # --------------------------------------------------------------
        initialize = self.process.initialize

        initialize.expand_state = Methods.expand_state
        initialize.differentials = Methods.Common.Numerics.initialize_differentials_dimensionless
        initialize.conditions = None

        # --------------------------------------------------------------
        #   Converge - starts iteration
        # --------------------------------------------------------------
        converge = self.process.converge

        converge.converge_root = Methods.converge_root

        # --------------------------------------------------------------
        #   Iterate - this is iterated
        # --------------------------------------------------------------
        iterate = self.process.iterate

        # Update Initials
        iterate.initials = Process()
        iterate.initials.time = Methods.Common.Frames.initialize_time
        iterate.initials.weights = Methods.Common.Weights.initialize_weights
        iterate.initials.inertial_position = Methods.Common.Frames.initialize_inertial_position
        iterate.initials.planet_position = Methods.Common.Frames.initialize_planet_position

        # Unpack Unknowns
        iterate.unknowns = Process()
        iterate.unknowns.mission = None

        # Update Conditions
        iterate.conditions = Process()
        iterate.conditions.differentials = Methods.Common.Numerics.update_differentials_time
        iterate.conditions.altitude = Methods.Common.Aerodynamics.update_altitude
        iterate.conditions.atmosphere = Methods.Common.Aerodynamics.update_atmosphere
        iterate.conditions.gravity = Methods.Common.Weights.update_gravity
        iterate.conditions.freestream = Methods.Common.Aerodynamics.update_freestream
        iterate.conditions.orientations = Methods.Common.Frames.update_orientations
        iterate.conditions.aerodynamics = Methods.Common.Aerodynamics.update_aerodynamics
        iterate.conditions.stability = Methods.Common.Aerodynamics.update_stability
        iterate.conditions.energy = Methods.Common.Energy.update_thrust
        iterate.conditions.weights = Methods.Common.Weights.update_weights
        iterate.conditions.forces = Methods.Common.Frames.update_forces
        iterate.conditions.planet_position = Methods.Common.Frames.update_planet_position

        # Solve Residuals
        iterate.residuals = Process()

        # --------------------------------------------------------------
        #   Finalize - after iteration
        # --------------------------------------------------------------
        finalize = self.process.finalize

        # Post Processing
        finalize.post_process = Process()
        finalize.post_process.inertial_position = Methods.Common.Frames.integrate_inertial_horizontal_position
        finalize.post_process.stability = Methods.Common.Aerodynamics.update_stability
        finalize.post_process.noise = Methods.Common.Noise.compute_noise

        return
    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.altitude = None
        self.air_speed_start = None
        self.air_speed_end = None
        self.acceleration = None
        self.pitch_initial = None
        self.pitch_final = None
        self.objective = None  # This will be a key
        self.minimize = True
        self.lift_coefficient_limit = 1.e20
        self.algorithm = 'SLSQP'

        # --------------------------------------------------------------
        #   State
        # --------------------------------------------------------------

        # conditions
        self.state.conditions.update(Conditions.Aerodynamics())

        # initials and unknowns
        ones_row = self.state.ones_row
        self.state.unknowns.propeller_power_coefficient_lift = 0.05 * ones_row(
            1)
        self.state.unknowns.throttle_lift = 1.25 * ones_row(1)
        self.state.unknowns.propeller_power_coefficient = 0.02 * ones_row(1)
        self.state.unknowns.throttle = .50 * ones_row(1)
        self.state.residuals.network = 0.0 * ones_row(3)
        self.state.residuals.forces = 0.0 * ones_row(2)
        self.state.inputs_last = None
        self.state.objective_value = 0.0
        self.state.constraint_values = 0.0

        # --------------------------------------------------------------
        #   The Solving Process
        # --------------------------------------------------------------

        # --------------------------------------------------------------
        #   Initialize - before iteration
        # --------------------------------------------------------------
        initialize = self.process.initialize
        initialize.expand_state = Methods.expand_state
        initialize.solved_mission = Methods.Transition.Lift_Cruise_Optimized.solve_constant_speed_constant_altitude_loiter
        initialize.differentials = Methods.Common.Numerics.initialize_differentials_dimensionless
        initialize.conditions = Methods.Transition.Constant_Acceleration_Constant_Pitchrate_Constant_Altitude.initialize_conditions

        # --------------------------------------------------------------
        #   Converge - starts iteration
        # --------------------------------------------------------------
        converge = self.process.converge

        converge.converge_root = Methods.converge_opt

        # --------------------------------------------------------------
        #   Iterate - this is iterated
        # --------------------------------------------------------------
        iterate = self.process.iterate

        # Update Initials
        iterate.initials = Process()
        iterate.initials.time = Methods.Common.Frames.initialize_time
        iterate.initials.weights = Methods.Common.Weights.initialize_weights
        iterate.initials.inertial_position = Methods.Common.Frames.initialize_inertial_position
        iterate.initials.planet_position = Methods.Common.Frames.initialize_planet_position

        # Unpack Unknowns
        iterate.unknowns = Process()
        iterate.unknowns.mission = Methods.Transition.Lift_Cruise_Optimized.unpack_unknowns

        # Update Conditions
        iterate.conditions = Process()
        iterate.conditions.differentials = Methods.Transition.Lift_Cruise_Optimized.update_differentials
        iterate.conditions.acceleration = Methods.Common.Frames.update_acceleration
        iterate.conditions.altitude = Methods.Common.Aerodynamics.update_altitude
        iterate.conditions.atmosphere = Methods.Common.Aerodynamics.update_atmosphere
        iterate.conditions.gravity = Methods.Common.Weights.update_gravity
        iterate.conditions.freestream = Methods.Common.Aerodynamics.update_freestream
        iterate.conditions.orientations = Methods.Common.Frames.update_orientations
        iterate.conditions.propulsion = Methods.Common.Energy.update_thrust
        iterate.conditions.aerodynamics = Methods.Common.Aerodynamics.update_aerodynamics
        iterate.conditions.stability = Methods.Common.Aerodynamics.update_stability
        iterate.conditions.weights = Methods.Common.Weights.update_weights
        iterate.conditions.forces = Methods.Common.Frames.update_forces
        iterate.conditions.planet_position = Methods.Common.Frames.update_planet_position

        # Solve Residuals
        iterate.residuals = Process()
        iterate.residuals.total_forces = Methods.Transition.Constant_Acceleration_Constant_Pitchrate_Constant_Altitude.residual_total_forces

        # Set outputs
        iterate.outputs = Process()
        iterate.outputs.objective = Methods.Transition.Lift_Cruise_Optimized.objective
        iterate.outputs.constraints = Methods.Transition.Lift_Cruise_Optimized.constraints
        iterate.outputs.cache_inputs = Methods.Transition.Lift_Cruise_Optimized.cache_inputs

        # --------------------------------------------------------------
        #   Finalize - after iteration
        # --------------------------------------------------------------
        finalize = self.process.finalize

        # Post Processing
        finalize.post_process = Process()
        finalize.post_process.inertial_position = Methods.Common.Frames.integrate_inertial_horizontal_position
        finalize.post_process.stability = Methods.Common.Aerodynamics.update_stability

        return
    def __defaults__(self):

        # --------------------------------------------------------------
        #   User inputs
        # --------------------------------------------------------------
        self.altitude = None
        self.pitch_rate = 1. * Units['rad/s/s']
        self.pitch_initial = None
        self.pitch_final = 0.0 * Units['rad']

        # --------------------------------------------------------------
        #   State
        # --------------------------------------------------------------

        # conditions
        self.state.conditions.update(Conditions.Aerodynamics())

        # initials and unknowns
        ones_row = self.state.ones_row
        self.state.unknowns.throttle = ones_row(1) * 0.5
        self.state.unknowns.velocity = ones_row(1) * 1.0
        self.state.residuals.forces = ones_row(2) * 0.0

        # --------------------------------------------------------------
        #   The Solving Process
        # --------------------------------------------------------------

        # --------------------------------------------------------------
        #   Initialize - before iteration
        # --------------------------------------------------------------
        initialize = self.process.initialize

        initialize.expand_state = Methods.expand_state
        initialize.differentials = Methods.Common.Numerics.initialize_differentials_dimensionless
        initialize.conditions = Methods.Cruise.Constant_Pitch_Rate_Constant_Altitude.initialize_conditions

        # --------------------------------------------------------------
        #   Converge - starts iteration
        # --------------------------------------------------------------
        converge = self.process.converge

        converge.converge_root = Methods.converge_root

        # --------------------------------------------------------------
        #   Iterate - this is iterated
        # --------------------------------------------------------------
        iterate = self.process.iterate

        # Update Initials
        iterate.initials = Process()
        iterate.initials.time = Methods.Common.Frames.initialize_time
        iterate.initials.weights = Methods.Common.Weights.initialize_weights
        iterate.initials.inertial_position = Methods.Common.Frames.initialize_inertial_position
        iterate.initials.planet_position = Methods.Common.Frames.initialize_planet_position

        # Unpack Unknowns
        iterate.unknowns = Process()
        iterate.unknowns.mission = Methods.Cruise.Constant_Pitch_Rate_Constant_Altitude.unpack_unknowns

        # Update Conditions
        iterate.conditions = Process()
        iterate.conditions.differentials = Methods.Common.Numerics.update_differentials_time
        iterate.conditions.altitude = Methods.Common.Aerodynamics.update_altitude
        iterate.conditions.atmosphere = Methods.Common.Aerodynamics.update_atmosphere
        iterate.conditions.gravity = Methods.Common.Weights.update_gravity
        iterate.conditions.freestream = Methods.Common.Aerodynamics.update_freestream
        iterate.conditions.orientations = Methods.Common.Frames.update_orientations
        iterate.conditions.aerodynamics = Methods.Common.Aerodynamics.update_aerodynamics
        iterate.conditions.stability = Methods.Common.Aerodynamics.update_stability
        iterate.conditions.propulsion = Methods.Common.Energy.update_thrust
        iterate.conditions.weights = Methods.Common.Weights.update_weights
        iterate.conditions.forces = Methods.Common.Frames.update_forces
        iterate.conditions.planet_position = Methods.Common.Frames.update_planet_position

        # Solve Residuals
        iterate.residuals = Process()
        iterate.residuals.total_forces = Methods.Cruise.Constant_Pitch_Rate_Constant_Altitude.residual_total_forces

        # --------------------------------------------------------------
        #   Finalize - after iteration
        # --------------------------------------------------------------
        finalize = self.process.finalize

        # Post Processing
        finalize.post_process = Process()
        finalize.post_process.inertial_position = Methods.Common.Frames.integrate_inertial_horizontal_position
        finalize.post_process.stability = Methods.Common.Aerodynamics.update_stability

        return
    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.altitude = None
        self.acceleration = 1. * Units['m/s/s']
        self.air_speed_start = 0.0 * Units['m/s']
        self.air_speed_end = 1.0 * Units['m/s']
        self.pitch_initial = None
        self.pitch_final = 0.0 * Units['rad']

        # --------------------------------------------------------------
        #   State
        # --------------------------------------------------------------

        # conditions
        self.state.conditions.update(Conditions.Aerodynamics())

        # initials and unknowns
        ones_row = self.state.ones_row
        self.state.residuals.forces = ones_row(2) * 0.0

        # --------------------------------------------------------------
        #   The Solving Process
        # --------------------------------------------------------------

        # --------------------------------------------------------------
        #   Initialize - before iteration
        # --------------------------------------------------------------
        initialize = self.process.initialize

        initialize.expand_state = Methods.expand_state
        initialize.differentials = Methods.Common.Numerics.initialize_differentials_dimensionless
        initialize.conditions = Methods.Transition.Constant_Acceleration_Constant_Pitchrate_Constant_Altitude.initialize_conditions

        # --------------------------------------------------------------
        #   Converge - starts iteration
        # --------------------------------------------------------------
        converge = self.process.converge

        converge.converge_root = Methods.converge_root

        # --------------------------------------------------------------
        #   Iterate - this is iterated
        # --------------------------------------------------------------
        iterate = self.process.iterate

        # Update Initials
        iterate.initials = Process()
        iterate.initials.time = Methods.Common.Frames.initialize_time
        iterate.initials.weights = Methods.Common.Weights.initialize_weights
        iterate.initials.inertial_position = Methods.Common.Frames.initialize_inertial_position
        iterate.initials.planet_position = Methods.Common.Frames.initialize_planet_position

        # Unpack Unknowns
        iterate.unknowns = Process()
        iterate.unknowns.mission = Methods.Cruise.Common.unpack_unknowns

        # Update Conditions
        iterate.conditions = Process()
        iterate.conditions.differentials = Methods.Common.Numerics.update_differentials_time
        iterate.conditions.altitude = Methods.Common.Aerodynamics.update_altitude
        iterate.conditions.atmosphere = Methods.Common.Aerodynamics.update_atmosphere
        iterate.conditions.gravity = Methods.Common.Weights.update_gravity
        iterate.conditions.freestream = Methods.Common.Aerodynamics.update_freestream
        iterate.conditions.orientations = Methods.Common.Frames.update_orientations
        iterate.conditions.propulsion = Methods.Common.Energy.update_thrust
        iterate.conditions.aerodynamics = Methods.Common.Aerodynamics.update_aerodynamics
        iterate.conditions.stability = Methods.Common.Aerodynamics.update_stability
        iterate.conditions.weights = Methods.Common.Weights.update_weights
        iterate.conditions.forces = Methods.Common.Frames.update_forces
        iterate.conditions.planet_position = Methods.Common.Frames.update_planet_position

        # Solve Residuals
        iterate.residuals = Process()
        iterate.residuals.total_forces = Methods.Transition.Constant_Acceleration_Constant_Pitchrate_Constant_Altitude.residual_total_forces

        # --------------------------------------------------------------
        #   Finalize - after iteration
        # --------------------------------------------------------------
        finalize = self.process.finalize

        # Post Processing
        finalize.post_process = Process()
        finalize.post_process.inertial_position = Methods.Common.Frames.integrate_inertial_horizontal_position
        finalize.post_process.stability = Methods.Common.Aerodynamics.update_stability
        finalize.post_process.aero_derivatives = skip
        finalize.post_process.noise = Methods.Common.Noise.compute_noise

        return
Ejemplo n.º 9
0
    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.friction_coefficient = 0.04
        self.throttle = None
        self.velocity_start = 0.0
        self.velocity_end = 0.0
        self.altitude = 0.0

        # --------------------------------------------------------------
        #   State
        # --------------------------------------------------------------

        # conditions
        self.state.conditions.update(Conditions.Aerodynamics())

        # initials and unknowns
        ones_row = self.state.ones_row

        # Specific ground things
        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

        # --------------------------------------------------------------
        #   The Solving Process
        # --------------------------------------------------------------

        # --------------------------------------------------------------
        #   Initialize - before iteration
        # --------------------------------------------------------------
        initialize = self.process.initialize

        initialize.expand_state = Methods.expand_state
        initialize.differentials = Methods.Common.Numerics.initialize_differentials_dimensionless
        initialize.conditions = Methods.Ground.Common.initialize_conditions

        # --------------------------------------------------------------
        #   Converge - starts iteration
        # --------------------------------------------------------------
        converge = self.process.converge

        converge.converge_root = Methods.converge_root

        # --------------------------------------------------------------
        #   Iterate - this is iterated
        # --------------------------------------------------------------
        iterate = self.process.iterate

        # Update Initials
        iterate.initials = Process()
        iterate.initials.time = Methods.Common.Frames.initialize_time
        iterate.initials.weights = Methods.Common.Weights.initialize_weights
        iterate.initials.inertial_position = Methods.Common.Frames.initialize_inertial_position
        iterate.initials.planet_position = Methods.Common.Frames.initialize_planet_position

        # Unpack Unknowns
        iterate.unknowns = Process()
        iterate.unknowns.mission = Methods.Ground.Common.unpack_unknowns

        # Update Conditions
        iterate.conditions = Process()
        iterate.conditions.differentials = Methods.Common.Numerics.update_differentials_time
        iterate.conditions.altitude = Methods.Common.Aerodynamics.update_altitude
        iterate.conditions.atmosphere = Methods.Common.Aerodynamics.update_atmosphere
        iterate.conditions.gravity = Methods.Common.Weights.update_gravity
        iterate.conditions.freestream = Methods.Common.Aerodynamics.update_freestream
        iterate.conditions.orientations = Methods.Common.Frames.update_orientations
        iterate.conditions.propulsion = Methods.Common.Energy.update_thrust
        iterate.conditions.aerodynamics = Methods.Common.Aerodynamics.update_aerodynamics
        iterate.conditions.stability = Methods.Common.Aerodynamics.update_stability
        iterate.conditions.weights = Methods.Common.Weights.update_weights
        iterate.conditions.forces_ground = Methods.Ground.Common.compute_ground_forces
        iterate.conditions.forces = Methods.Ground.Common.compute_forces
        iterate.conditions.planet_position = Methods.Common.Frames.update_planet_position

        # Solve Residuals
        iterate.residuals = Process()
        iterate.residuals.total_forces = Methods.Ground.Common.solve_residuals

        # --------------------------------------------------------------
        #   Finalize - after iteration
        # --------------------------------------------------------------
        finalize = self.process.finalize

        # Post Processing
        finalize.post_process = Process()
        finalize.post_process.inertial_position = Methods.Common.Frames.integrate_inertial_horizontal_position
        finalize.post_process.stability = Methods.Common.Aerodynamics.update_stability

        return
Ejemplo n.º 10
0
    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.altitude = None
        self.time = 1.0 * Units.seconds
        self.overcharge_contingency = 1.25
        self.battery_discharge = True

        # --------------------------------------------------------------
        #   State
        # --------------------------------------------------------------

        # conditions
        self.state.conditions.update(Conditions.Aerodynamics())

        # initials and unknowns
        ones_row = self.state.ones_row

        # --------------------------------------------------------------
        #   The Solving Process
        # --------------------------------------------------------------

        # --------------------------------------------------------------
        #   Initialize - before iteration
        # --------------------------------------------------------------
        initialize = self.process.initialize

        initialize.expand_state = Methods.expand_state
        initialize.differentials = Methods.Common.Numerics.initialize_differentials_dimensionless
        initialize.conditions = Methods.Ground.Battery_Charge_Discharge.initialize_conditions

        # --------------------------------------------------------------
        #   Converge - starts iteration
        # --------------------------------------------------------------
        converge = self.process.converge

        converge.converge_root = Methods.converge_root

        # --------------------------------------------------------------
        #   Iterate - this is iterated
        # --------------------------------------------------------------
        iterate = self.process.iterate

        # Update Initials
        iterate.initials = Process()
        iterate.initials.time = Methods.Common.Frames.initialize_time
        iterate.initials.weights = Methods.Common.Weights.initialize_weights
        iterate.initials.inertial_position = Methods.Common.Frames.initialize_inertial_position
        iterate.initials.planet_position = Methods.Common.Frames.initialize_planet_position

        # Unpack Unknowns
        iterate.unknowns = Process()
        iterate.unknowns.mission = Methods.Ground.Battery_Charge_Discharge.unpack_unknowns

        # Update Conditions
        iterate.conditions = Process()
        iterate.conditions.differentials = Methods.Common.Numerics.update_differentials_time
        iterate.conditions.altitude = Methods.Common.Aerodynamics.update_altitude
        iterate.conditions.atmosphere = Methods.Common.Aerodynamics.update_atmosphere
        iterate.conditions.gravity = Methods.Common.Weights.update_gravity
        iterate.conditions.freestream = Methods.Common.Aerodynamics.update_freestream
        iterate.conditions.orientations = Methods.Common.Frames.update_orientations
        iterate.conditions.propulsion = Methods.Common.Energy.update_thrust
        iterate.conditions.aerodynamics = Methods.Common.Aerodynamics.update_aerodynamics
        iterate.conditions.stability = Methods.Common.Aerodynamics.update_stability
        iterate.conditions.weights = Methods.Common.Weights.update_weights
        iterate.conditions.forces = Methods.Common.Frames.update_forces
        iterate.conditions.planet_position = Methods.Common.Frames.update_planet_position

        # Solve Residuals
        iterate.residuals = Process()

        # --------------------------------------------------------------
        #   Finalize - after iteration
        # --------------------------------------------------------------
        finalize = self.process.finalize

        # Post Processing
        finalize.post_process = Process()
        finalize.post_process.inertial_position = Methods.Common.Frames.integrate_inertial_horizontal_position
        finalize.post_process.stability = skip
        finalize.post_process.aero_derivatives = skip
        finalize.post_process.noise = skip

        return
Ejemplo n.º 11
0
    def __defaults__(self):

        # --------------------------------------------------------------
        #   User inputs
        # --------------------------------------------------------------
        self.ground_incline = 0.0
        self.friction_coefficient = 0.04
        self.throttle = None
        self.velocity_start = 0.0
        self.velocity_end = 0.0

        # --------------------------------------------------------------
        #   State
        # --------------------------------------------------------------

        # conditions
        self.state.conditions.update(Conditions.Aerodynamics())

        # initials and unknowns
        ones_row = self.state.ones_row
        self.state.unknowns.velocity_x = ones_row(1) * 0.0
        self.state.unknowns.time = 0.1
        self.state.residuals.acceleration_x = ones_row(1) * 0.0
        self.state.residuals.final_velocity_error = ones_row(1) * 0.0

        # Specific ground things
        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

        # --------------------------------------------------------------
        #   The Solving Process
        # --------------------------------------------------------------

        # --------------------------------------------------------------
        #   Initialize - before iteration
        # --------------------------------------------------------------
        initialize = self.process.initialize
        initialize.clear()

        initialize.expand_state = Methods.expand_state
        initialize.differentials = Methods.Common.Numerics.initialize_differentials_dimensionless
        initialize.conditions = Methods.Ground.Common.initialize_conditions

        # --------------------------------------------------------------
        #   Converge - starts iteration
        # --------------------------------------------------------------
        converge = self.process.converge
        converge.clear()

        converge.converge_root = Methods.converge_root

        # --------------------------------------------------------------
        #   Iterate - this is iterated
        # --------------------------------------------------------------
        iterate = self.process.iterate
        iterate.clear()

        # Update Initials
        iterate.initials = Process()
        iterate.initials.time = Methods.Common.Frames.initialize_time
        iterate.initials.weights = Methods.Common.Weights.initialize_weights
        iterate.initials.inertial_position = Methods.Common.Frames.initialize_inertial_position
        iterate.initials.planet_position = Methods.Common.Frames.initialize_planet_position

        # Unpack Unknowns
        iterate.unpack_unknowns = Methods.Ground.Common.unpack_unknowns

        # Update Conditions
        iterate.conditions = Process()
        iterate.conditions.differentials = Methods.Common.Numerics.update_differentials_time
        iterate.conditions.altitude = Methods.Common.Aerodynamics.update_altitude
        iterate.conditions.atmosphere = Methods.Common.Aerodynamics.update_atmosphere
        iterate.conditions.gravity = Methods.Common.Weights.update_gravity
        iterate.conditions.freestream = Methods.Common.Aerodynamics.update_freestream
        iterate.conditions.orientations = Methods.Common.Frames.update_orientations
        iterate.conditions.aerodynamics = Methods.Common.Aerodynamics.update_aerodynamics
        iterate.conditions.stability = Methods.Common.Aerodynamics.update_stability
        iterate.conditions.propulsion = Methods.Common.Energy.update_thrust
        iterate.conditions.weights = Methods.Common.Weights.update_weights
        iterate.conditions.forces_ground = Methods.Ground.Common.compute_ground_forces
        iterate.conditions.forces = Methods.Ground.Common.compute_forces
        iterate.conditions.planet_position = Methods.Common.Frames.update_planet_position

        ## NEW STUFF TO UPDATE

        # Solve Residuals
        iterate.residuals = Process()
        iterate.residuals.total_forces = Methods.Ground.Common.solve_residuals

        # --------------------------------------------------------------
        #   Finalize - after iteration
        # --------------------------------------------------------------
        finalize = self.process.finalize
        finalize.clear()

        # Post Processing
        finalize.post_process = Process()
        finalize.post_process.inertial_position = Methods.Common.Frames.integrate_inertial_horizontal_position
        finalize.post_process.stability = Methods.Common.Aerodynamics.update_stability
        finalize.post_process.ground = Methods.Ground.Common.post_process

        return
    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.altitude_start = 20. * Units.km  # must be greater than end
        self.altitude_end = 0. * Units.km  # default is zero
        self.throttle = 0.5  # can alter if engines, set engines num to zero if glider
        self.descent_rate = 3 * Units.m / Units.s  # remember z is down
        self.equivalent_air_speed = 10 * Units.m / Units.s

        # --------------------------------------------------------------
        #   State
        # --------------------------------------------------------------

        # conditions
        self.state.conditions.update(Conditions.Aerodynamics())

        # initials and unknowns
        ones_row = self.state.ones_row
        self.state.unknowns.body_angle = ones_row(1) * 5.0 * Units.deg
        self.state.unknowns.wind_angle = ones_row(1) * 0.0 * Units.deg
        self.state.residuals.forces = ones_row(2) * 0.0

        # --------------------------------------------------------------
        #   The Solving Process
        # --------------------------------------------------------------

        # --------------------------------------------------------------
        #   Initialize - before iteration
        # --------------------------------------------------------------
        initialize = self.process.initialize

        initialize.expand_state = Methods.expand_state
        initialize.differentials = Methods.Common.Numerics.initialize_differentials_dimensionless
        #        initialize.conditions              = Methods.Descent.Constant_Throttle_Constant_Rate.initialize_conditions
        #        initialize.velocities              = Methods.Descent.Constant_Throttle_Constant_Rate.update_velocity_vector_from_wind_angle
        #        initialize.differentials_altitude  = Methods.Descent.Constant_Throttle_Constant_Rate.update_differentials_altitude
        initialize.conditions = Constant_Throttle_Constant_Rate_Meth.initialize_conditions
        initialize.velocities = Constant_Throttle_Constant_Rate_Meth.update_velocity_vector_from_wind_angle
        initialize.differentials_altitude = Constant_Throttle_Constant_Rate_Meth.update_differentials_altitude

        # --------------------------------------------------------------
        #   Converge - starts iteration
        # --------------------------------------------------------------
        converge = self.process.converge

        converge.converge_root = Methods.converge_root

        # --------------------------------------------------------------
        #   Iterate - this is iterated
        # --------------------------------------------------------------
        iterate = self.process.iterate

        # Update Initials
        iterate.initials = Process()
        iterate.initials.time = Methods.Common.Frames.initialize_time
        iterate.initials.weights = Methods.Common.Weights.initialize_weights
        iterate.initials.inertial_position = Methods.Common.Frames.initialize_inertial_position
        iterate.initials.planet_position = Methods.Common.Frames.initialize_planet_position

        # Unpack Unknowns
        iterate.unknowns = Process()
        iterate.unknowns.mission = Constant_Throttle_Constant_Rate_Meth.unpack_body_angle  #Methods.Descent.Constant_Throttle_Constant_Rate.unpack_body_angle

        # Update Conditions
        iterate.conditions = Process()
        iterate.conditions.velocities = Constant_Throttle_Constant_Rate_Meth.update_velocity_vector_from_wind_angle  #Methods.Descent.Constant_Throttle_Constant_Rate.update_velocity_vector_from_wind_angle
        iterate.conditions.differentials_a = Constant_Throttle_Constant_Rate_Meth.update_differentials_altitude  #Methods.Descent.Constant_Throttle_Constant_Rate.update_differentials_altitude
        iterate.conditions.differentials_b = Methods.Common.Numerics.update_differentials_time
        iterate.conditions.acceleration = Methods.Common.Frames.update_acceleration
        iterate.conditions.altitude = Methods.Common.Aerodynamics.update_altitude
        iterate.conditions.atmosphere = Methods.Common.Aerodynamics.update_atmosphere
        iterate.conditions.gravity = Methods.Common.Weights.update_gravity
        iterate.conditions.freestream = Methods.Common.Aerodynamics.update_freestream
        iterate.conditions.orientations = Methods.Common.Frames.update_orientations
        iterate.conditions.aerodynamics = Methods.Common.Aerodynamics.update_aerodynamics
        iterate.conditions.stability = Methods.Common.Aerodynamics.update_stability
        iterate.conditions.propulsion = Methods.Common.Energy.update_thrust
        iterate.conditions.weights = Methods.Common.Weights.update_weights
        iterate.conditions.forces = Methods.Common.Frames.update_forces
        iterate.conditions.planet_position = Methods.Common.Frames.update_planet_position

        # Solve Residuals
        iterate.residuals = Process()
        iterate.residuals.total_forces = Methods.Climb.Common.residual_total_forces

        # --------------------------------------------------------------
        #   Finalize - after iteration
        # --------------------------------------------------------------
        finalize = self.process.finalize

        # Post Processing
        finalize.post_process = Process()
        finalize.post_process.inertial_position = Methods.Common.Frames.integrate_inertial_horizontal_position
        finalize.post_process.stability = Methods.Common.Aerodynamics.update_stability

        return
Ejemplo n.º 13
0
    def __defaults__(self):

        # --------------------------------------------------------------
        #   User inputs
        # --------------------------------------------------------------
        # self.example = 1.0

        # --------------------------------------------------------------
        #   State
        # --------------------------------------------------------------

        # conditions
        self.state.conditions.update(Conditions.Aerodynamics())

        # initials and unknowns, Example...
        ##ones_row = self.state.ones_row
        ##self.state.unknowns.throttle   = ones_row(1) * 0.5
        ##self.state.unknowns.body_angle = ones_row(1) * 0.0
        ##self.state.residuals.forces    = ones_row(2) * 0.0

        # --------------------------------------------------------------
        #   The Solving Process
        # --------------------------------------------------------------

        # --------------------------------------------------------------
        #   Initialize - before iteration
        # --------------------------------------------------------------
        initialize = self.process.initialize
        initialize.clear()

        initialize.expand_state = Methods.expand_state
        initialize.differentials = Methods.Common.Numerics.initialize_differentials_dimensionless
        initialize.conditions = None

        # --------------------------------------------------------------
        #   Converge - starts iteration
        # --------------------------------------------------------------
        converge = self.process.converge
        converge.clear()

        converge.converge_root = Methods.converge_root

        # --------------------------------------------------------------
        #   Iterate - this is iterated
        # --------------------------------------------------------------
        iterate = self.process.iterate
        iterate.clear()

        # Update Initials
        iterate.initials = Process()
        iterate.initials.time = Methods.Common.Frames.initialize_time
        iterate.initials.weights = Methods.Common.Weights.initialize_weights
        iterate.initials.inertial_position = Methods.Common.Frames.initialize_inertial_position
        iterate.initials.planet_position = Methods.Common.Frames.initialize_planet_position

        # Unpack Unknowns
        iterate.unpack_unknowns = None

        # Update Conditions
        iterate.conditions = Process()
        iterate.conditions.differentials = Methods.Common.Numerics.update_differentials_time
        iterate.conditions.altitude = Methods.Common.Aerodynamics.update_altitude
        iterate.conditions.atmosphere = Methods.Common.Aerodynamics.update_atmosphere
        iterate.conditions.gravity = Methods.Common.Weights.update_gravity
        iterate.conditions.freestream = Methods.Common.Aerodynamics.update_freestream
        iterate.conditions.orientations = Methods.Common.Frames.update_orientations
        iterate.conditions.aerodynamics = Methods.Common.Aerodynamics.update_aerodynamics
        iterate.conditions.stability = Methods.Common.Aerodynamics.update_stability
        iterate.conditions.energy = Methods.Common.Energy.update_thrust
        iterate.conditions.weights = Methods.Common.Weights.update_weights
        iterate.conditions.forces = Methods.Common.Frames.update_forces
        iterate.conditions.planet_position = Methods.Common.Frames.update_planet_position

        # Solve Residuals
        iterate.residuals = Process()

        # --------------------------------------------------------------
        #   Finalize - after iteration
        # --------------------------------------------------------------
        finalize = self.process.finalize
        finalize.clear()

        # Post Processing
        finalize.post_process = Process()
        finalize.post_process.inertial_position = Methods.Common.Frames.integrate_inertial_horizontal_position
        finalize.post_process.stability = Methods.Common.Aerodynamics.update_stability

        return