Source code for aviary.variable_info.enums

from enum import Enum, IntEnum, auto, unique


[docs] class AlphaModes(Enum): ''' AlphaModes is used to specify how angle of attack is defined during climb and descent. DEFAUT: Alpha is an input ROTATION Alpha is calculated as the initial angle plus the rotation rate times the duration of the rotation. LOAD_FACTOR Alpha is limited to ensure the load factor never exceeds a specified maximum. FUSELAGE_PITCH Alpha is calculated to set a particular floor angle given the current flight path angle. DECELERATION Alpha is calculated to target a specified TAS rate, the default is a TAS rate of 0 (Constant TAS). REQUIRED_LIFT Alpha is calculated such that the aircraft produces a particular lifting force. ALTITUDE_RATE Alpha is calculated to target a specified altitude rate, the default is 0 (Constant Altitude). ''' DEFAULT = auto() ROTATION = auto() LOAD_FACTOR = auto() FUSELAGE_PITCH = auto() DECELERATION = auto() REQUIRED_LIFT = auto() ALTITUDE_RATE = auto() CONSTANT_ALTITUDE = auto() FLIGHT_PATH_ANGLE = auto()
[docs] class AnalysisScheme(Enum): """ AnalysisScheme is used to select from Collocation and shooting. COLLOCATION uses the collocation method to optimize all points simultaneously and can be run in parallel. However, it requires reasonable initial guesses for the trajectory and is fairly sensitive to those initial guesses. SHOOTING is a forward in time integration method that simulates the trajectory. This does not require initial guesses and will always produce physically valid trajectories, even during optimizer failures. The shooting method cannot be run in parallel. """ COLLOCATION = auto() SHOOTING = auto()
[docs] class EquationsOfMotion(Enum): """ Available equations of motion for use during mission analysis """ HEIGHT_ENERGY = 'height_energy' TWO_DEGREES_OF_FREEDOM = '2DOF' SOLVED_2DOF = 'solved_2DOF'
[docs] @unique class GASPEngineType(Enum): """ Defines the type of engine to use in GASP-based mass calculations. Note that only the value for the first engine model will be used. Currenly only the TURBOJET and TURBOPROP options are implemented, but other types of engines will be added in the future. """ # Reciprocating engine with carburator RECIP_CARB = 1 # Reciprocating engine with fuel injection RECIP_FUEL_INJECT = 2 # Reciprocating engine with fuel injection and geared RECIP_FUEL_INJECT_GEARED = 3 # Rotary-combustion engine ROTARY = 4 # Turboshaft engine TURBOSHAFT = 5 # Turboprop engine TURBOPROP = 6 # Turbojet or turbofan engine TURBOJET = 7 # Reciprocating engine with carburator; use HOPWSZ (horizontally-opposed piston # weight and size) methodology for geometry and mass RECIP_CARB_HOPWSZ = 11 # Reciprocating engine with fuel injection; use HOPWSZ (horizontally-opposed piston # weight and size) methodology for geometry and mass RECIP_FUEL_INJECT_HOPWSZ = 12 # Reciprocating engine with fuel injection and geared; use HOPWSZ (horizontally- # opposed piston weight and size) methodology for geometry and mass RECIP_FUEL_INJECT_GEARED_HOPWSZ = 13 # Rotary-combustion engine; use RCWSZ (rotary combustion weight and size) methodology # for geometry and mass ROTARY_RCWSZ = 14
[docs] @unique class FlapType(Enum): """ Defines the type of flap used on the wing. Used in GASP-based aerodynamics and mass calculations. """ PLAIN = 1 SPLIT = 2 SINGLE_SLOTTED = 3 DOUBLE_SLOTTED = 4 TRIPLE_SLOTTED = 5 FOWLER = 6 DOUBLE_SLOTTED_FOWLER = 7
[docs] class LegacyCode(Enum): """ Flag for legacy codebases """ FLOPS = 'FLOPS' GASP = 'GASP' def __str__(self): return self.value
[docs] class ProblemType(Enum): """ ProblemType is used to switch between different combinations of design variables and constraints. SIZING: Varies the design gross weight and actual gross weight to close to design range. This causes the empty weight and the fuel weight to change. ALTERNATE: Requires a pre-sized aircraft. It holds the design gross weight and empty weight constant. It then varies the fuel weight and actual gross weight until the range closes to the off-design range. FALLOUT: Requires a pre-sized aircraft. It holds the design gross weight and empty weight constant. Using the specified actual gross weight, it will then find the maximum distance the off-design aircraft can fly. MULTI_MISSION: Similar to a SIZING mission, however it varies the design gross weight and actual gross weight across multiple missions to and closes design range for each mission. This causes the empty weight and the fuel weight to change. The final result will be a single empty weight, for all the different missions, and multiple values for fuel weight, unique to each mission. """ SIZING = 'sizing' ALTERNATE = 'alternate' FALLOUT = 'fallout' MULTI_MISSION = 'multimission'
[docs] class SpeedType(Enum): ''' SpeedType is used to specify the type of speed being used. EAS is equivalent airspeed. TAS is true airspeed. MACH is mach ''' EAS = 'EAS' TAS = 'TAS' MACH = 'mach' def __str__(self): return self.value
[docs] class ThrottleAllocation(Enum): """ Specifies how to handle the throttles for multiple engines. FIXED is a user-specified value. STATIC is specified by the optimizer as one value for the whole phase. DYNAMIC is specified by the optimizer at each point in the phase. """ FIXED = 1 STATIC = 2 DYNAMIC = 3
[docs] class Verbosity(IntEnum): """ Sets how much information Aviary outputs when run Verbosity levels are based on ubuntu's standard: https://discourse.ubuntu.com/t/cli-verbosity-levels/26973 """ QUIET = 0 BRIEF = 1 VERBOSE = 2 DEBUG = 3 def __str__(self): return str(self.value)
[docs] @classmethod def values(cls): return {c.value for c in cls}
[docs] class OutMachType(Enum): ''' OutMachType is an indicator which mach number to output. helical_mach = sqrt(mach*mach + tip_mach*tip_mach) ''' MACH = 'mach' TIP_MACH = 'tip_mach' HELICAL_MACH = 'helical_mach'
[docs] @classmethod def get_element_by_value(cls, val: str): return next((c for c in cls if c.value == val), None)