Source code for openconcept.analysis.atmospherics.speed_comp

from __future__ import division
import numpy as np

from openmdao.api import ExplicitComponent


[docs]class SpeedComp(ExplicitComponent): ''' This component computes airspeed from Mach number and speed of sound. Adapted from: J.P. Jasa, J.T. Hwang, and J.R.R.A. Martins: Design and Trajectory Optimization of a Morphing Wing Aircraft 2018 AIAA/ASCE/AHS/ASC Structures, Structural Dynamics, and Materials Conference; AIAA SciTech Forum, January 2018 ''' def initialize(self): self.options.declare('num_nodes', types=int) def setup(self): num_points = self.options['num_nodes'] self.add_input('M', shape=num_points) self.add_input('a_1e2_ms', shape=num_points) self.add_output('v_1e2_ms', shape=num_points) self.add_output('v_m_s', shape=num_points) arange = np.arange(num_points) self.declare_partials('v_1e2_ms', 'a_1e2_ms', rows=arange, cols=arange) self.declare_partials('v_1e2_ms', 'M', rows=arange, cols=arange) self.declare_partials('v_m_s', 'a_1e2_ms', rows=arange, cols=arange) self.declare_partials('v_m_s', 'M', rows=arange, cols=arange) def compute(self, inputs, outputs): outputs['v_1e2_ms'] = inputs['a_1e2_ms'] * inputs['M'] outputs['v_m_s'] = inputs['a_1e2_ms'] * inputs['M'] * 1e2 def compute_partials(self, inputs, partials): partials['v_1e2_ms', 'a_1e2_ms'] = inputs['M'] partials['v_1e2_ms', 'M'] = inputs['a_1e2_ms'] partials['v_m_s', 'a_1e2_ms'] = inputs['M'] * 1e2 partials['v_m_s', 'M'] = inputs['a_1e2_ms'] * 1e2