Source code for RCAIDE.Framework.Mission.Segments.Climb.Constant_Dynamic_Pressure_Constant_Angle
# RCAIDE/Framework/Analyses/Mission/Segments/Climb/Constant_Dynamic_Pressure_Constant_Angle.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
# RCAIDE imports
from RCAIDE.Framework.Core import Units
from RCAIDE.Framework.Mission.Segments.Evaluate import Evaluate
from RCAIDE.Library.Mission import Common,Segments
# ----------------------------------------------------------------------------------------------------------------------
# Constant_Dynamic_Pressure_Constant_Angle
# ----------------------------------------------------------------------------------------------------------------------
[docs]
class Constant_Dynamic_Pressure_Constant_Angle(Evaluate):
""" Climb at a constant dynamic pressure at a constant angle.This segment takes longer to solve than most because
it has extra unknowns and residuals
Assumptions:
None
Source:
None
"""
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
self.climb_angle = 3. * Units.degrees
self.dynamic_pressure = None
self.true_course = 0.0 * Units.degrees
# --------------------------------------------------------------------------------------------------------------
# Mission Specific Unknowns and Residuals
# --------------------------------------------------------------------------------------------------------------
ones_row = self.state.ones_row
self.state.residuals.altitude = ones_row(1) * 0.0
self.state.unknowns.altitude = ones_row(1) * 0.0
# --------------------------------------------------------------------------------------------------------------
# Mission specific processes
# --------------------------------------------------------------------------------------------------------------
initialize = self.process.initialize
initialize.conditions = Segments.Climb.Constant_Dynamic_Pressure_Constant_Angle.initialize_conditions_unpack_unknowns
iterate = self.process.iterate
iterate.unknowns.mission = Common.Unpack_Unknowns.orientation
iterate.unknowns.controls = Common.Unpack_Unknowns.control_surfaces
iterate.unknowns.kinematics = Segments.Climb.Constant_Dynamic_Pressure_Constant_Angle.initialize_conditions_unpack_unknowns
iterate.conditions.differentials = Segments.Climb.Constant_Dynamic_Pressure_Constant_Angle.update_differentials
iterate.residuals.flight_dynamics = Common.Residuals.flight_dynamics
iterate.residuals.altitude = Segments.Climb.Constant_Dynamic_Pressure_Constant_Angle.residual_altitude
return