Source code for RCAIDE.Framework.Mission.Segments.Evaluate
# RCAIDE/Framework/Analyses/Mission/Segment/Evaluate.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
# RCAIDE imports
from RCAIDE.Framework.Core import Units
from RCAIDE.Framework.Mission.Segments import Segment
from RCAIDE.Framework.Mission.Common.Results import Results
from RCAIDE.Library.Mission import Common , Solver
from RCAIDE.Framework.Analyses import Process
# ----------------------------------------------------------------------------------------------------------------------
# ANALYSES
# ----------------------------------------------------------------------------------------------------------------------
[docs]
class Evaluate(Segment):
""" Base process class used to analyze a vehicle in each flight segment
Assumptions:
None
Source:
N/A
Inputs:
None
Outputs:
None
Properties Used:
None
"""
def __defaults__(self):
"""This sets the default values.
Assumptions:
None
Source:
N/A
Inputs:
None
Outputs:
None
Properties Used:
None
"""
# --------------------------------------------------------------
# State
# --------------------------------------------------------------
# conditions
self.temperature_deviation = 0.0
self.sideslip_angle = 0.0
self.angle_of_attack = 1.0 * Units.degree
self.bank_angle = 0.0
self.hybrid_power_split_ratio = None
self.battery_fuel_cell_power_split_ratio = None
self.trim_lift_coefficient = None
self.state.conditions.update(Results())
# ---------------------------------------------------------------
# Define Flight Controls and Residuals
# ---------------------------------------------------------------
self.flight_dynamics_and_controls()
# --------------------------------------------------------------
# Initialize - before iteration
# --------------------------------------------------------------
initialize = self.process.initialize
initialize.expand_state = Solver.expand_state
initialize.differentials = Common.Initialize.differentials_dimensionless
initialize.conditions = None
# --------------------------------------------------------------
# Converge
# --------------------------------------------------------------
converge = self.process.converge
converge.solver = Solver.converge
# --------------------------------------------------------------
# Iterate
# --------------------------------------------------------------
iterate = self.process.iterate
iterate.initials = Process()
iterate.initials.time = Common.Initialize.time
iterate.initials.weights = Common.Initialize.weights
iterate.initials.energy = Common.Initialize.energy
iterate.initials.inertial_position = Common.Initialize.inertial_position
iterate.initials.planet_position = Common.Initialize.planet_position
# Unpack Unknowns
iterate.unknowns = Process()
# Update Conditions
iterate.conditions = Process()
iterate.conditions.differentials = Common.Update.differentials_time
iterate.conditions.orientations = Common.Update.orientations
iterate.conditions.acceleration = Common.Update.acceleration
iterate.conditions.angular_acceleration = Common.Update.angular_acceleration
iterate.conditions.altitude = Common.Update.altitude
iterate.conditions.atmosphere = Common.Update.atmosphere
iterate.conditions.gravity = Common.Update.gravity
iterate.conditions.freestream = Common.Update.freestream
iterate.conditions.thrust = Common.Update.thrust
iterate.conditions.aerodynamics = Common.Update.aerodynamics
iterate.conditions.stability = Common.Update.stability
iterate.conditions.weights = Common.Update.weights
iterate.conditions.forces = Common.Update.forces
iterate.conditions.moments = Common.Update.moments
iterate.conditions.planet_position = Common.Update.planet_position
# Solve Residuals
iterate.residuals = Process()
# --------------------------------------------------------------
# Post Process
# --------------------------------------------------------------
post_process = self.process.post_process
post_process.inertial_position = Common.Update.linear_inertial_horizontal_position
post_process.energy = Common.Update.energy
post_process.noise = Common.Update.noise
post_process.emissions = Common.Update.emissions
return