Source code for clcd

import pdb
import numpy as np
import openmdao.api as om
from pyNA.src.aircraft import Aircraft
from openmdao.components.interp_util.interp import TABLE_METHODS


[docs]class CLCD(om.MetaModelStructuredComp): """ Computes aerodynamic lift and drag coefficients from aerodynamics data tables. The *CLCD* component requires the following inputs: * ``inputs['alpha']``: aircraft angle of attack [deg] * ``inputs['theta_flaps']``: aircraft flap deflection angle [deg] * ``inputs['theta_slats']``: aircraft slat deflection angle [deg] The *CLCD* component computes the following outputs: * ``outputs['c_l']``: aircraft lift coefficient [-] * ``outputs['c_l_max']``: maximum aircraft lift coefficient [-] * ``outputs['c_d']``: aircraft drag coefficient [-] """
[docs] def initialize(self): """ Initialize the component. """ self.options.declare('extrapolate', types=bool, default=False, desc='Sets whether extrapolation should be performed when an input is out of bounds.') self.options.declare('training_data_gradients', types=bool, default=False, desc='Sets whether gradients with respect to output training data should be computed.') self.options.declare('vec_size', types=int, default=1, desc='Number of points to evaluate at once.') self.options.declare('method', values=TABLE_METHODS, default='scipy_cubic', desc='Spline interpolation method to use for all outputs.') self.options.declare('ac', types=Aircraft)
[docs] def setup(self): # Load options nn = self.options['vec_size'] ac = self.options['ac'] self.add_input('alpha', val=np.ones(nn), units='deg', training_data=ac.aero['alpha']) self.add_input('theta_flaps', val=np.ones(nn), units='deg', training_data=ac.aero['theta_flaps']) self.add_input('theta_slats', val=np.ones(nn), units='deg', training_data=ac.aero['theta_slats']) self.add_output('c_l', val=np.ones(nn), units=None, training_data=ac.aero['c_l']) self.add_output('c_l_max', val=np.ones(nn), units=None, training_data=ac.aero['c_l_max']) self.add_output('c_d', val=np.ones(nn), units=None, training_data=ac.aero['c_d'])