Source code for RCAIDE.Framework.Analyses.Noise.Correlation_Buildup

# RCAIDE/Framework/Analyses/Noise/Correlation_Buildup.py
# 
# 
# Created:  Jul 2023, M. Clarke

# ----------------------------------------------------------------------------------------------------------------------
#  IMPORT
# ----------------------------------------------------------------------------------------------------------------------  
# RCAIDE Imports
import  RCAIDE
from RCAIDE.Library.Methods.Noise.Correlation_Buildup.Airframe.airframe_noise         import airframe_noise
from RCAIDE.Library.Methods.Noise.Correlation_Buildup.Turbofan.turbofan_engine_noise  import turbofan_engine_noise   
from RCAIDE.Library.Methods.Noise.Common.decibel_arithmetic                           import SPL_arithmetic  
from RCAIDE.Library.Methods.Noise.Common.generate_hemisphere_microphone_locations     import generate_hemisphere_microphone_locations  
from .Noise      import Noise

# package imports
import numpy as np

# ----------------------------------------------------------------------------------------------------------------------
#  Correlation_Buildup
# ---------------------------------------------------------------------------------------------------------------------- 
[docs] class Correlation_Buildup(Noise): """This is an acoustic analysis based on a collection of correlative modes Assumptions: Source: N/A Inputs: None Outputs: None Properties Used: N/A """ def __defaults__(self): """ This sets the default values for the analysis. Assumptions: Ground microphone angles start in front of the aircraft (0 deg) and sweep in a lateral direction to the starboard wing and around to the tail (180 deg) Source: N/A Inputs: None Output: None Properties Used: N/A """ # Initialize quantities self.tag = "Correlation_Buildup" self.settings.noise_hemisphere_radius = 50 return
[docs] def evaluate_noise(self,segment): """ Process vehicle to setup geometry, condititon and configuration Assumptions: None Source: N/4 Inputs: self.settings. center_frequencies - 1/3 octave band frequencies [unitless] Outputs: None Properties Used: """ # unpack config = segment.analyses.noise.vehicle settings = self.settings conditions = segment.state.conditions dim_cf = len(settings.center_frequencies ) ctrl_pts = int(segment.state.numerics.number_of_control_points) microphone_locations = generate_hemisphere_microphone_locations(settings) N_hemisphere_mics = len(microphone_locations) # create empty arrays for results total_SPL_dBA = np.ones((ctrl_pts,N_hemisphere_mics))*1E-16 total_SPL_spectra = np.ones((ctrl_pts,N_hemisphere_mics,dim_cf))*1E-16 airframe_noise_res = airframe_noise(microphone_locations,segment,config,settings) total_SPL_dBA = SPL_arithmetic(np.concatenate((total_SPL_dBA[:,None,:],airframe_noise_res.SPL_dBA[:,None,:]),axis =1),sum_axis=1) total_SPL_spectra[:,:,5:] = SPL_arithmetic(np.concatenate((total_SPL_spectra[:,None,:,5:],airframe_noise_res.SPL_1_3_spectrum[:,None,:,:]),axis =1),sum_axis=1) # iterate through sources for network in config.networks: for propulsor in network.propulsors: if type(propulsor) == RCAIDE.Library.Components.Powertrain.Propulsors.Turbofan: engine_noise = turbofan_engine_noise(microphone_locations,propulsor,conditions.noise.propulsors[propulsor.tag],segment,settings) total_SPL_dBA = SPL_arithmetic(np.concatenate((total_SPL_dBA[:,None,:],engine_noise.SPL_dBA[:,None,:]),axis =1),sum_axis=1) total_SPL_spectra[:,:,5:] = SPL_arithmetic(np.concatenate((total_SPL_spectra[:,None,:,5:],engine_noise.SPL_1_3_spectrum[:,None,:,:]),axis =1),sum_axis=1) conditions.noise.hemisphere_SPL_dBA = total_SPL_dBA * (1 - settings.noise_reduction_factors.SPL_dbA) conditions.noise.hemisphere_SPL_1_3_spectrum_dBA = total_SPL_spectra * (1 - settings.noise_reduction_factors.SPL_dbA) return