Source code for trajectory_ode

import pdb
import openmdao.api as om
from pyNA.src.aircraft import Aircraft
from pyNA.src.engine import Engine
from pyNA.src.settings import Settings
from pyNA.src.trajectory_src.atmosphere import Atmosphere
from pyNA.src.trajectory_src.flight_dynamics import FlightDynamics
from pyNA.src.trajectory_src.clcd import CLCD
from pyNA.src.trajectory_src.aerodynamics import Aerodynamics
from pyNA.src.trajectory_src.propulsion import Propulsion
from pyNA.src.emissions import Emissions


[docs]class TrajectoryODE(om.Group): """ Noise model group. The noise model group connects the following components: * Atmosphere: compute atmospheric properties along the trajectory * CLCD: compute aircraft lift and drag coefficient along the trajectory * Propulsion: compute engine parameters along the trajectory * FlightDynamics: compute flight dynamics equations of motion along the trajectory * Emissions: compute NOx emissions along the trajectory """
[docs] def initialize(self): self.options.declare('num_nodes', types=int) self.options.declare('phase', types=str) self.options.declare('ac', types=Aircraft) self.options.declare('engine', types=Engine) self.options.declare('settings', types=Settings) self.options.declare('engine_mode', types=str)
[docs] def setup(self): # Load options nn = self.options['num_nodes'] phase_name = self.options['phase'] ac = self.options['ac'] engine = self.options['engine'] settings = self.options['settings'] engine_mode = self.options['engine_mode'] # Atmosphere module self.add_subsystem(name='atmosphere', subsys=Atmosphere(num_nodes=nn, settings=settings), promotes_inputs=['z'], promotes_outputs=['p_0', 'rho_0', 'drho_0_dz', 'T_0', 'c_0', 'mu_0', 'I_0']) # Aerodynamics module self.add_subsystem(name='clcd', subsys=CLCD(vec_size=nn, extrapolate=True, method='3D-lagrange3', ac=ac), promotes_inputs=['alpha', 'theta_flaps', 'theta_slats'], promotes_outputs=[]) self.add_subsystem(name='aerodynamics', subsys=Aerodynamics(num_nodes=nn, ac=ac), promotes_inputs=['v', 'c_0', 'rho_0'], promotes_outputs=[]) self.connect('clcd.c_l', 'aerodynamics.c_l') self.connect('clcd.c_d', 'aerodynamics.c_d') # Propulsion module self.add_subsystem(name='propulsion', subsys=Propulsion(vec_size=nn, extrapolate=True, method='3D-lagrange3', settings=settings, engine=engine, engine_mode=engine_mode), promotes_inputs=['z'], promotes_outputs=[]) self.connect('aerodynamics.M_0', 'propulsion.M_0') # flight dynamics module self.add_subsystem(name='flight_dynamics', subsys=FlightDynamics(num_nodes=nn, phase=phase_name, ac=ac), promotes_inputs=['x', 'z', 'v', 'alpha', 'gamma', 'rho_0', 'c_0', 'drho_0_dz'], promotes_outputs=[]) self.connect('propulsion.F_n', 'flight_dynamics.F_n') self.connect('aerodynamics.L', 'flight_dynamics.L') self.connect('aerodynamics.D', 'flight_dynamics.D') self.connect('clcd.c_l_max', 'flight_dynamics.c_l_max') # Emissions module self.add_subsystem(name='emissions', subsys=Emissions(num_nodes=nn, settings=settings), promotes_inputs=[], promotes_outputs=[]) self.connect('propulsion.W_f', 'emissions.W_f') self.connect('propulsion.Tti_c', 'emissions.Tti_c') self.connect('propulsion.Pti_c', 'emissions.Pti_c')