Source code for RCAIDE.Framework.Mission.Common.Results

# RCAIDE/Framework/Analyses/Mission/Segments/Conditions/Results.py
# 
# 
# Created:  Jul 2023, M. Clarke
# Updated:  May 2024, M. Guidotti

# ----------------------------------------------------------------------------------------------------------------------
#  IMPORT
# ----------------------------------------------------------------------------------------------------------------------

# RCAIDE imports 
from RCAIDE.Framework.Mission.Common import Conditions

# python imports
import numpy as np

# ----------------------------------------------------------------------------------------------------------------------
# Results
# ---------------------------------------------------------------------------------------------------------------------- 

[docs] class Results(Conditions): """ This builds upon Basic, which itself builds on conditions, to add the data structure for aerodynamic mission analyses. Assumptions: None Source:ty.static.coeffici None ty.static.coeffici """ def __defaults__(self): """This sets the default values. Assumptions: Coefficient subscritps: X - force in X direction Y - force in Y direction Z - force in Z direction lift - force drag - force L - moment about X axis M - moment about Y axis N - moment about Z axis u - velocity in X drection v - velocity in Y drection w - velocity in Z drection p - angular rate about X axis q - angular rate about Y axis r - angular rate about Z axis Source: N/A Inputs: None Outputs: None Properties Used: None """ self.tag = 'results' # start default row vectors ones_1col = self.ones_row(1) ones_3col = self.ones_row(3) # ---------------------------------------------------------------------------------------------------------------------- # Reference Values # ---------------------------------------------------------------------------------------------------------------------- self.S_ref = ones_1col * 0 self.c_ref = ones_1col * 0 self.b_ref = ones_1col * 0 self.X_ref = ones_1col * 0 self.Y_ref = ones_1col * 0 self.Z_ref = ones_1col * 0 # ---------------------------------------------------------------------------------------------------------------------- # Frames # ---------------------------------------------------------------------------------------------------------------------- self.frames = Conditions() # inertial conditions self.frames.inertial = Conditions() self.frames.inertial.position_vector = ones_3col * 0 self.frames.inertial.velocity_vector = ones_3col * 0 self.frames.inertial.acceleration_vector = ones_3col * 0 self.frames.inertial.angular_velocity_vector = ones_3col * 0 self.frames.inertial.angular_acceleration_vector = ones_3col * 0 self.frames.inertial.gravity_force_vector = ones_3col * 0 self.frames.inertial.total_force_vector = ones_3col * 0 self.frames.inertial.total_moment_vector = ones_3col * 0 self.frames.inertial.time = ones_1col * 0 self.frames.inertial.aircraft_range = ones_1col * 0 # body conditions self.frames.body = Conditions() self.frames.body.inertial_rotations = ones_3col * 0 self.frames.body.thrust_force_vector = ones_3col * 0 self.frames.body.moment_vector = ones_3col * 0 self.frames.body.velocity_vector = ones_3col * 0 self.frames.body.thrust_moment_vector = ones_3col * 0 self.frames.body.transform_to_inertial = np.empty([0,0,0]) # wind frame conditions self.frames.wind = Conditions() self.frames.wind.body_rotations = ones_3col * 0 # rotations in [X,Y,Z] -> [phi,theta,psi] self.frames.wind.velocity_vector = ones_3col * 0 self.frames.wind.force_vector = ones_3col * 0 self.frames.wind.moment_vector = ones_3col * 0 self.frames.wind.transform_to_inertial = np.empty([0,0,0]) # planet frame conditions self.frames.planet = Conditions() self.frames.planet.start_time = None self.frames.planet.latitude = ones_1col * 0 self.frames.planet.longitude = ones_1col * 0 self.frames.planet.true_course = ones_1col * 0 self.frames.planet.true_heading = ones_1col * 0 # ---------------------------------------------------------------------------------------------------------------------- # Freestream # ---------------------------------------------------------------------------------------------------------------------- self.freestream = Conditions() self.freestream.velocity = ones_1col * 0 self.freestream.u = ones_1col * 0 self.freestream.v = ones_1col * 0 self.freestream.w = ones_1col * 0 self.freestream.mach_number = ones_1col * 0 self.freestream.pressure = ones_1col * 0 self.freestream.temperature = ones_1col * 0 self.freestream.density = ones_1col * 0 self.freestream.speed_of_sound = ones_1col * 0 self.freestream.dynamic_viscosity = ones_1col * 0 self.freestream.altitude = ones_1col * 0 self.freestream.gravity = ones_1col * 0 self.freestream.reynolds_number = ones_1col * 0 self.freestream.dynamic_pressure = ones_1col * 0 self.freestream.delta_ISA = ones_1col * 0 # ---------------------------------------------------------------------------------------------------------------------- # Aerodynamics # ---------------------------------------------------------------------------------------------------------------------- self.aerodynamics = Conditions() # aerdynamic angles self.aerodynamics.angles = Conditions() self.aerodynamics.angles.alpha = ones_1col * 0 self.aerodynamics.angles.beta = ones_1col * 0 self.aerodynamics.angles.phi = ones_1col * 0 # aerodynamic coefficients self.aerodynamics.coefficients = Conditions() self.aerodynamics.coefficients.lift = ones_1col * 0 self.aerodynamics.coefficients.drag = ones_1col * 0 # aerodynamic coefficients self.aerodynamics.coefficients = Conditions() self.aerodynamics.coefficients.surface_pressure = None self.aerodynamics.coefficients.lift = Conditions() self.aerodynamics.coefficients.lift.total = None self.aerodynamics.coefficients.lift.induced = Conditions() self.aerodynamics.coefficients.lift.induced.inviscid_wings = Conditions() self.aerodynamics.coefficients.lift.compressible_wings = Conditions() self.aerodynamics.coefficients.drag = Conditions() self.aerodynamics.coefficients.drag.total = ones_1col * 0 self.aerodynamics.coefficients.drag.parasite = Conditions() self.aerodynamics.coefficients.drag.compressible = Conditions() self.aerodynamics.coefficients.drag.induced = Conditions() self.aerodynamics.coefficients.drag.induced.total = ones_1col * 0 self.aerodynamics.coefficients.drag.induced.inviscid = ones_1col * 0 self.aerodynamics.coefficients.drag.induced.inviscid_wings = Conditions() self.aerodynamics.coefficients.drag.cooling = Conditions() self.aerodynamics.coefficients.drag.cooling.total = ones_1col * 0 self.aerodynamics.coefficients.drag.spoiler = Conditions() self.aerodynamics.coefficients.drag.spoiler.total = ones_1col * 0 self.aerodynamics.coefficients.drag.windmilling = Conditions() self.aerodynamics.coefficients.drag.windmilling.total = ones_1col * 0 self.aerodynamics.coefficients.drag.asymmetry_trim = Conditions() self.aerodynamics.coefficients.drag.asymmetry_trim.total = ones_1col * 0 self.aerodynamics.coefficients.drag.induced.efficiency_factor = ones_1col * 0 self.aerodynamics.oswald_efficiency = ones_1col * 0 # ---------------------------------------------------------------------------------------------------------------------- # Control Surfaces # ---------------------------------------------------------------------------------------------------------------------- self.control_surfaces = Conditions() self.control_surfaces.aileron = Conditions() self.control_surfaces.aileron.deflection = ones_1col * 0 self.control_surfaces.aileron.static_stability = Conditions() self.control_surfaces.aileron.static_stability.coefficients = Conditions() self.control_surfaces.aileron.static_stability.coefficients.lift = ones_1col * 0 self.control_surfaces.aileron.static_stability.coefficients.drag = ones_1col * 0 self.control_surfaces.aileron.static_stability.coefficients.X = ones_1col * 0 self.control_surfaces.aileron.static_stability.coefficients.Y = ones_1col * 0 self.control_surfaces.aileron.static_stability.coefficients.Z = ones_1col * 0 self.control_surfaces.aileron.static_stability.coefficients.L = ones_1col * 0 self.control_surfaces.aileron.static_stability.coefficients.M = ones_1col * 0 self.control_surfaces.aileron.static_stability.coefficients.N = ones_1col * 0 self.control_surfaces.aileron.static_stability.coefficients.e = ones_1col * 0 self.control_surfaces.elevator = Conditions() self.control_surfaces.elevator.deflection = ones_1col * 0 self.control_surfaces.elevator.static_stability = Conditions() self.control_surfaces.elevator.static_stability.coefficients = Conditions() self.control_surfaces.elevator.static_stability.coefficients.lift = ones_1col * 0 self.control_surfaces.elevator.static_stability.coefficients.drag = ones_1col * 0 self.control_surfaces.elevator.static_stability.coefficients.X = ones_1col * 0 self.control_surfaces.elevator.static_stability.coefficients.Y = ones_1col * 0 self.control_surfaces.elevator.static_stability.coefficients.Z = ones_1col * 0 self.control_surfaces.elevator.static_stability.coefficients.L = ones_1col * 0 self.control_surfaces.elevator.static_stability.coefficients.M = ones_1col * 0 self.control_surfaces.elevator.static_stability.coefficients.N = ones_1col * 0 self.control_surfaces.elevator.static_stability.coefficients.e = ones_1col * 0 self.control_surfaces.rudder = Conditions() self.control_surfaces.rudder.deflection = ones_1col * 0 self.control_surfaces.rudder.static_stability = Conditions() self.control_surfaces.rudder.static_stability.coefficients = Conditions() self.control_surfaces.rudder.static_stability.coefficients.lift = ones_1col * 0 self.control_surfaces.rudder.static_stability.coefficients.drag = ones_1col * 0 self.control_surfaces.rudder.static_stability.coefficients.X = ones_1col * 0 self.control_surfaces.rudder.static_stability.coefficients.Y = ones_1col * 0 self.control_surfaces.rudder.static_stability.coefficients.Z = ones_1col * 0 self.control_surfaces.rudder.static_stability.coefficients.L = ones_1col * 0 self.control_surfaces.rudder.static_stability.coefficients.M = ones_1col * 0 self.control_surfaces.rudder.static_stability.coefficients.N = ones_1col * 0 self.control_surfaces.rudder.static_stability.coefficients.e = ones_1col * 0 self.control_surfaces.flap = Conditions() self.control_surfaces.flap.deflection = ones_1col * 0 self.control_surfaces.flap.static_stability = Conditions() self.control_surfaces.flap.static_stability.coefficients = Conditions() self.control_surfaces.flap.static_stability.coefficients.lift = ones_1col * 0 self.control_surfaces.flap.static_stability.coefficients.drag = ones_1col * 0 self.control_surfaces.flap.static_stability.coefficients.X = ones_1col * 0 self.control_surfaces.flap.static_stability.coefficients.Y = ones_1col * 0 self.control_surfaces.flap.static_stability.coefficients.Z = ones_1col * 0 self.control_surfaces.flap.static_stability.coefficients.L = ones_1col * 0 self.control_surfaces.flap.static_stability.coefficients.M = ones_1col * 0 self.control_surfaces.flap.static_stability.coefficients.N = ones_1col * 0 self.control_surfaces.flap.static_stability.coefficients.e = ones_1col * 0 self.control_surfaces.slat = Conditions() self.control_surfaces.slat.deflection = ones_1col * 0 self.control_surfaces.slat.static_stability = Conditions() self.control_surfaces.slat.static_stability.coefficients = Conditions() self.control_surfaces.slat.static_stability.coefficients.lift = ones_1col * 0 self.control_surfaces.slat.static_stability.coefficients.drag = ones_1col * 0 self.control_surfaces.slat.static_stability.coefficients.X = ones_1col * 0 self.control_surfaces.slat.static_stability.coefficients.Y = ones_1col * 0 self.control_surfaces.slat.static_stability.coefficients.Z = ones_1col * 0 self.control_surfaces.slat.static_stability.coefficients.L = ones_1col * 0 self.control_surfaces.slat.static_stability.coefficients.M = ones_1col * 0 self.control_surfaces.slat.static_stability.coefficients.N = ones_1col * 0 self.control_surfaces.slat.static_stability.coefficients.e = ones_1col * 0 self.control_surfaces.spoiler = Conditions() self.control_surfaces.spoiler.deflection = ones_1col * 0 # ---------------------------------------------------------------------------------------------------------------------- # Stability # ---------------------------------------------------------------------------------------------------------------------- self.stability = Conditions() self.static_stability = Conditions() self.static_stability.forces = Conditions() self.static_stability.forces.lift = ones_1col * 0 self.static_stability.forces.drag = ones_1col * 0 self.static_stability.forces.X = ones_1col * 0 self.static_stability.forces.Y = ones_1col * 0 self.static_stability.forces.Z = ones_1col * 0 self.static_stability.moments = Conditions() self.static_stability.moments.L = ones_1col * 0 self.static_stability.moments.M = ones_1col * 0 self.static_stability.moments.N = ones_1col * 0 self.static_stability.static_margin = ones_1col * 0 self.static_stability.neutral_point = ones_1col * 0 self.static_stability.spiral_criteria = ones_1col * 0 self.static_stability.pitch_rate = ones_1col * 0 self.static_stability.roll_rate = ones_1col * 0 self.static_stability.yaw_rate = ones_1col * 0 self.static_stability.coefficients = Conditions() self.static_stability.coefficients.lift = ones_1col * 0 self.static_stability.coefficients.drag = ones_1col * 0 self.static_stability.coefficients.X = ones_1col * 0 self.static_stability.coefficients.Y = ones_1col * 0 self.static_stability.coefficients.Z = ones_1col * 0 self.static_stability.coefficients.L = ones_1col * 0 self.static_stability.coefficients.M = ones_1col * 0 self.static_stability.coefficients.N = ones_1col * 0 self.static_stability.coefficients.roll = ones_1col * 0 self.static_stability.coefficients.pitch = ones_1col * 0 self.static_stability.coefficients.yaw = ones_1col * 0 self.static_stability.derivatives = Conditions() # stability axis self.static_stability.derivatives.Clift_alpha = ones_1col * 0 self.static_stability.derivatives.Clift_beta = ones_1col * 0 self.static_stability.derivatives.Clift_delta_a = ones_1col * 0 self.static_stability.derivatives.Clift_delta_e = ones_1col * 0 self.static_stability.derivatives.Clift_delta_r = ones_1col * 0 self.static_stability.derivatives.Clift_delta_f = ones_1col * 0 self.static_stability.derivatives.Clift_delta_s = ones_1col * 0 self.static_stability.derivatives.Cdrag_alpha = ones_1col * 0 self.static_stability.derivatives.Cdrag_beta = ones_1col * 0 self.static_stability.derivatives.Cdrag_delta_a = ones_1col * 0 self.static_stability.derivatives.Cdrag_delta_e = ones_1col * 0 self.static_stability.derivatives.Cdrag_delta_r = ones_1col * 0 self.static_stability.derivatives.Cdrag_delta_f = ones_1col * 0 self.static_stability.derivatives.Cdrag_delta_s = ones_1col * 0 self.static_stability.derivatives.CX_alpha = ones_1col * 0 self.static_stability.derivatives.CX_beta = ones_1col * 0 self.static_stability.derivatives.CX_delta_a = ones_1col * 0 self.static_stability.derivatives.CX_delta_e = ones_1col * 0 self.static_stability.derivatives.CX_delta_r = ones_1col * 0 self.static_stability.derivatives.CX_delta_f = ones_1col * 0 self.static_stability.derivatives.CX_delta_s = ones_1col * 0 self.static_stability.derivatives.CY_alpha = ones_1col * 0 self.static_stability.derivatives.CY_beta = ones_1col * 0 self.static_stability.derivatives.CY_delta_a = ones_1col * 0 self.static_stability.derivatives.CY_delta_e = ones_1col * 0 self.static_stability.derivatives.CY_delta_r = ones_1col * 0 self.static_stability.derivatives.CY_delta_f = ones_1col * 0 self.static_stability.derivatives.CY_delta_s = ones_1col * 0 self.static_stability.derivatives.CZ_alpha = ones_1col * 0 self.static_stability.derivatives.CZ_beta = ones_1col * 0 self.static_stability.derivatives.CZ_delta_a = ones_1col * 0 self.static_stability.derivatives.CZ_delta_e = ones_1col * 0 self.static_stability.derivatives.CZ_delta_r = ones_1col * 0 self.static_stability.derivatives.CZ_delta_f = ones_1col * 0 self.static_stability.derivatives.CZ_delta_s = ones_1col * 0 self.static_stability.derivatives.CL_alpha = ones_1col * 0 self.static_stability.derivatives.CL_beta = ones_1col * 0 self.static_stability.derivatives.CL_delta_a = ones_1col * 0 self.static_stability.derivatives.CL_delta_e = ones_1col * 0 self.static_stability.derivatives.CL_delta_r = ones_1col * 0 self.static_stability.derivatives.CL_delta_f = ones_1col * 0 self.static_stability.derivatives.CL_delta_s = ones_1col * 0 self.static_stability.derivatives.CM_alpha = ones_1col * 0 self.static_stability.derivatives.CM_beta = ones_1col * 0 self.static_stability.derivatives.CM_delta_a = ones_1col * 0 self.static_stability.derivatives.CM_delta_e = ones_1col * 0 self.static_stability.derivatives.CM_delta_r = ones_1col * 0 self.static_stability.derivatives.CM_delta_f = ones_1col * 0 self.static_stability.derivatives.CM_delta_s = ones_1col * 0 self.static_stability.derivatives.CN_alpha = ones_1col * 0 self.static_stability.derivatives.CN_beta = ones_1col * 0 self.static_stability.derivatives.CN_delta_a = ones_1col * 0 self.static_stability.derivatives.CN_delta_e = ones_1col * 0 self.static_stability.derivatives.CN_delta_r = ones_1col * 0 self.static_stability.derivatives.CN_delta_f = ones_1col * 0 self.static_stability.derivatives.CN_delta_s = ones_1col * 0 # body axis derivatives self.static_stability.derivatives.Clift_u = ones_1col * 0 self.static_stability.derivatives.Clift_v = ones_1col * 0 self.static_stability.derivatives.Clift_w = ones_1col * 0 self.static_stability.derivatives.Cdrag_u = ones_1col * 0 self.static_stability.derivatives.Cdrag_v = ones_1col * 0 self.static_stability.derivatives.Cdrag_w = ones_1col * 0 self.static_stability.derivatives.CX_u = ones_1col * 0 self.static_stability.derivatives.CX_v = ones_1col * 0 self.static_stability.derivatives.CX_w = ones_1col * 0 self.static_stability.derivatives.CY_u = ones_1col * 0 self.static_stability.derivatives.CY_v = ones_1col * 0 self.static_stability.derivatives.CY_w = ones_1col * 0 self.static_stability.derivatives.CZ_u = ones_1col * 0 self.static_stability.derivatives.CZ_v = ones_1col * 0 self.static_stability.derivatives.CZ_w = ones_1col * 0 self.static_stability.derivatives.CL_u = ones_1col * 0 self.static_stability.derivatives.CL_v = ones_1col * 0 self.static_stability.derivatives.CL_w = ones_1col * 0 self.static_stability.derivatives.CM_u = ones_1col * 0 self.static_stability.derivatives.CM_v = ones_1col * 0 self.static_stability.derivatives.CM_w = ones_1col * 0 self.static_stability.derivatives.CN_u = ones_1col * 0 self.static_stability.derivatives.CN_v = ones_1col * 0 self.static_stability.derivatives.CN_w = ones_1col * 0 self.static_stability.derivatives.CZ_alpha_dot = ones_1col * 0 self.static_stability.derivatives.CM_alpha_dot = ones_1col * 0 self.static_stability.derivatives.Clift_p = ones_1col * 0 self.static_stability.derivatives.Clift_q = ones_1col * 0 self.static_stability.derivatives.Clift_r = ones_1col * 0 self.static_stability.derivatives.Cdrag_p = ones_1col * 0 self.static_stability.derivatives.Cdrag_q = ones_1col * 0 self.static_stability.derivatives.Cdrag_r = ones_1col * 0 self.static_stability.derivatives.CX_p = ones_1col * 0 self.static_stability.derivatives.CX_q = ones_1col * 0 self.static_stability.derivatives.CX_r = ones_1col * 0 self.static_stability.derivatives.CY_p = ones_1col * 0 self.static_stability.derivatives.CY_q = ones_1col * 0 self.static_stability.derivatives.CY_r = ones_1col * 0 self.static_stability.derivatives.CZ_p = ones_1col * 0 self.static_stability.derivatives.CZ_q = ones_1col * 0 self.static_stability.derivatives.CZ_r = ones_1col * 0 self.static_stability.derivatives.CL_p = ones_1col * 0 self.static_stability.derivatives.CL_q = ones_1col * 0 self.static_stability.derivatives.CL_r = ones_1col * 0 self.static_stability.derivatives.CM_p = ones_1col * 0 self.static_stability.derivatives.CM_q = ones_1col * 0 self.static_stability.derivatives.CM_r = ones_1col * 0 self.static_stability.derivatives.CN_p = ones_1col * 0 self.static_stability.derivatives.CN_q = ones_1col * 0 self.static_stability.derivatives.CN_r = ones_1col * 0 # dynamic stability self.dynamic_stability = Conditions() self.dynamic_stability.LongModes = Conditions() self.dynamic_stability.LatModes = Conditions() # ---------------------------------------------------------------------------------------------------------------------- # Freestream # ---------------------------------------------------------------------------------------------------------------------- self.emissions = Conditions() # ---------------------------------------------------------------------------------------------------------------------- # Noise # ---------------------------------------------------------------------------------------------------------------------- self.noise = Conditions() self.noise.converters = Conditions() self.noise.propulsors = Conditions() self.noise.modulators = Conditions() # ---------------------------------------------------------------------------------------------------------------------- # Energy # ---------------------------------------------------------------------------------------------------------------------- self.energy = Conditions() self.energy.converters = Conditions() self.energy.propulsors = Conditions() self.energy.modulators = Conditions() self.energy.thrust_force_vector = ones_3col * 0 self.energy.thrust_moment_vector = ones_3col * 0 self.energy.power = ones_1col * 0 self.energy.fuel_consumption = ones_1col * 0 self.energy.cumulative_fuel_consumption = ones_1col * 0 self.energy.hybrid_power_split_ratio = ones_1col * 0 self.energy.battery_fuel_cell_power_split_ratio = ones_1col * 0 # ---------------------------------------------------------------------------------------------------------------------- # Weights # ---------------------------------------------------------------------------------------------------------------------- self.weights = Conditions() self.weights.total_mass = ones_1col * 0 self.weights.total_moment_of_inertia = ones_3col * 0 self.weights.weight_breakdown = Conditions() self.weights.vehicle_mass_rate = ones_1col * 0