Source code for RCAIDE.Library.Methods.Performance.compute_noise_certification_metrics

# RCAIDE/Library/Methods/Performance/compute_noise_certification_metrics.py
# 
# 
# Created:  Jul 2023, M. Clarke

# ----------------------------------------------------------------------------------------------------------------------
#  IMPORT
# ----------------------------------------------------------------------------------------------------------------------

# RCAIDE imports
import RCAIDE 
from RCAIDE.Framework.Core import   Data    
from RCAIDE.Library.Methods.Aeroacoustics.Common import post_process_noise_data
 
# Pacakge imports 
import numpy as np 
 
# ----------------------------------------------------------------------
#  Compute Aircraft Noise Certification Data  
# ----------------------------------------------------------------------  
[docs] def compute_noise_certification_metrics(approach_mission = None, takeoff_mission = None): """Calculates the noise at certification points as well as the noise contours of approach and takeoff. A combined approach-takeoff noisec contour is also created """ microphone_x_resolution = 401 microphone_y_resolution = 9 noise_times_steps = 51 number_of_microphone_in_stencil = 1800 # update weights analysis for segment in approach_mission.segments: if segment.analyses.aeroacoustics == None: raise AssertionError('Noise analysis not specifed!') noise_analysis = segment.analyses.aeroacoustics noise_analysis.settings.microphone_x_resolution = microphone_x_resolution noise_analysis.settings.microphone_y_resolution = microphone_y_resolution noise_analysis.settings.noise_times_steps = noise_times_steps noise_analysis.settings.number_of_microphone_in_stencil = number_of_microphone_in_stencil noise_analysis.settings.microphone_min_y = 1E-6 noise_analysis.settings.microphone_max_y = 1800 noise_analysis.settings.microphone_min_x = 1E-6 noise_analysis.settings.microphone_max_x = 8000 # update weights analysis for segment in takeoff_mission.segments: if segment.analyses.aeroacoustics == None: raise AssertionError('Acoustics analysis not specifed!') noise_analysis = segment.analyses.aeroacoustics noise_analysis.settings.microphone_x_resolution = microphone_x_resolution noise_analysis.settings.microphone_y_resolution = microphone_y_resolution noise_analysis.settings.noise_times_steps = noise_times_steps noise_analysis.settings.number_of_microphone_in_stencil = number_of_microphone_in_stencil noise_analysis.settings.microphone_min_y = 1E-6 noise_analysis.settings.microphone_max_y = 1800 noise_analysis.settings.microphone_min_x = -2000 + 1E-6 noise_analysis.settings.microphone_max_x = 6000 # evaluate both missions approach_results = approach_mission.evaluate() takeoff_results = takeoff_mission.evaluate() # post process noise data approach_noise_data = post_process_noise_data(approach_results, compute_EPNL=True) takeoff_noise_data = post_process_noise_data(takeoff_results, compute_EPNL=True) # append approach noise approach_pos = approach_noise_data.aircraft_position approach_pos[:,0] -= 2000 # append takeoff noise cert_SPL_dBA_max = np.max(np.concatenate((approach_noise_data.SPL_dBA,takeoff_noise_data.SPL_dBA), axis = 0) ,axis = 0) cert_EPNL_max = np.max(np.concatenate((approach_noise_data.EPNL[None,:, :],takeoff_noise_data.EPNL[None,:, :]), axis = 0) ,axis = 0) cert_pos = np.concatenate((approach_pos, takeoff_noise_data.aircraft_position), axis = 0) cert_mic_locs = takeoff_noise_data.microphone_locations noise_data = Data( certification_SPL_dBA_max = cert_SPL_dBA_max, certification_trajectory = cert_pos, certification_microphone_locations= cert_mic_locs, approach_SPL_dBA_max = np.max(approach_noise_data.SPL_dBA,axis = 0), approach_SPL_dBA = approach_noise_data.SPL_dBA, approach_time = approach_noise_data.time, approach_trajectory = approach_pos, approach_microphone_locations = takeoff_noise_data.microphone_locations, takeoff_SPL_dBA_max = np.max(takeoff_noise_data.SPL_dBA,axis = 0), takeoff_SPL_dBA = takeoff_noise_data.SPL_dBA, takeoff_time = takeoff_noise_data.time, takeoff_trajectory = takeoff_noise_data.aircraft_position, takeoff_microphone_locations = takeoff_noise_data.microphone_locations ) print('Certification Noise') print('-----------------------------------------------') print('2000 m Approach Noise :', round(cert_EPNL_max[0, 0], 2)) print('6000 m Flyover Noise :', round(cert_EPNL_max[-1, 0], 2)) print('450 m Sideline Noise :', round(max(cert_EPNL_max[:, 2]), 2)) noise_data.approach_noise_2000m = cert_EPNL_max[0, 0] noise_data.flyover_noise_6000m = cert_EPNL_max[-1, 0] noise_data.sideline_noise_450m = max(cert_EPNL_max[:, 2]) return noise_data