Source code for shielding

import pdb
import openmdao
import numpy as np
import openmdao.api as om
from pyNA.src.data import Data
from pyNA.src.settings import Settings


[docs]class Shielding(om.ExplicitComponent): """ Compute shielding factors for a trajectory. The *Shielding* component requires the following inputs: The *Shielding* component computes the following outputs: * ``outputs['shield']``: airframe shielding delta-dB values The *Shielding* component has the following options: * ``settings``: pyna settings * ``n_t``: number of time steps in the noise time series * ``data``: pyna noise data """
[docs] def initialize(self): # Declare data option self.options.declare('settings', types=Settings, desc='pyna settings') self.options.declare('n_t', types=int, desc='Number of time steps in trajectory') self.options.declare('data', types=Data)
[docs] def setup(self): # Load options settings = self.options['settings'] n_t = self.options['n_t'] # Number of observers n_obs = np.shape(settings.x_observer_array)[0] # Output self.add_output('shield', val=np.zeros((n_obs, n_t, settings.N_f)), desc='airframe shielding delta-dB values')
[docs] def compute(self, inputs: openmdao.vectors.default_vector.DefaultVector, outputs: openmdao.vectors.default_vector.DefaultVector): # Load options settings = self.options['settings'] data = self.options['data'] if settings.case_name in ["nasa_stca_standard", "stca_enginedesign_standard"] and settings.shielding: for i in np.arange(len(settings.observer_lst)): if settings.observer_lst[i] == 'lateral': outputs['shield'][i, :, :] = data.shield_l elif settings.observer_lst[i] == 'flyover': outputs['shield'][i, :, :] = data.shield_f elif settings.observer_lst[i] == 'approach': outputs['shield'][i, :, :] = data.shield_a