Source code for RCAIDE.Library.Plots.Noise.plot_noise_level

# RCAIDE/Library/Plots/Noise/plot_noise_level.py
# 
# 
# Created:  Jul 2023, M. Clarke 

# ----------------------------------------------------------------------------------------------------------------------
#  IMPORT
# ----------------------------------------------------------------------------------------------------------------------   
from RCAIDE.Framework.Core import Units
from RCAIDE.Library.Plots.Common import set_axes, plot_style 

import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np 

# ----------------------------------------------------------------------------------------------------------------------
#  PLOTS
# ---------------------------------------------------------------------------------------------------------------------- 
[docs] def plot_noise_level(noise_data, noise_level = False, save_figure = False, save_filename = "Sideline_Noise_Levels", file_type = ".png", width = 11, height = 7): """ Creates a visualization of A-weighted Sound Pressure Levels at various sideline distances. Parameters ---------- noise_data : NoiseData RCAIDE noise data structure containing: - microphone_y_resolution : int Number of sideline measurement positions - microphone_locations : ndarray 3D array of microphone positions where: - [:,:,0] : x-positions (longitudinal) - [:,:,1] : y-positions (sideline) - [:,:,2] : z-positions (vertical) noise_level : ndarray, optional 2D array of noise levels at measurement points (default: False) save_figure : bool, optional Flag for saving the figure (default: False) save_filename : str, optional Name of file for saved figure (default: "Sideline_Noise_Levels") file_type : str, optional File extension for saved figure (default: ".png") width : float, optional Figure width in inches (default: 11) height : float, optional Figure height in inches (default: 7) Returns ------- fig : matplotlib.figure.Figure Handle to the generated figure showing noise levels vs range Notes ----- Creates visualization showing: * Noise level variation with distance * Multiple sideline measurement positions * Color-coded sideline distances * Customizable appearance **Major Assumptions** * Noise levels are A-weighted SPL in dBA * Microphones are in a regular grid * Range is in nautical miles * Sideline distances are in meters **Definitions** 'Sound Pressure Level' A-weighted acoustic pressure level in dBA 'Sideline Distance' Perpendicular distance from flight path 'Range' Distance along flight path See Also -------- RCAIDE.Library.Plots.Noise.plot_2D_noise_contour : 2D contour visualization RCAIDE.Library.Plots.Noise.plot_3D_noise_contour : 3D noise field visualization """ N_gm_y = noise_data.microphone_y_resolution gm = noise_data.microphone_locations gm_x = gm[:,:,0] gm_y = gm[:,:,1] # get plotting style ps = plot_style() parameters = {'axes.labelsize': ps.axis_font_size, 'xtick.labelsize': ps.axis_font_size, 'ytick.labelsize': ps.axis_font_size, 'axes.titlesize': ps.title_font_size} plt.rcParams.update(parameters) fig = plt.figure(save_filename) fig.set_size_inches(width,height) axes = fig.add_subplot(1,1,1) # get line colors for plots line_colors = cm.inferno(np.linspace(0,0.9,N_gm_y)) for k in range(N_gm_y): axes.plot(gm_x[:,0]/Units.nmi, noise_level[:,k], marker = 'o', color = line_colors[k], label= r'mic at y = ' + str(round(gm_y[0,k],1)) + r' m' ) axes.set_ylabel('SPL [dBA]') axes.set_xlabel('Range [nmi]') set_axes(axes) axes.legend(loc='upper right') if save_figure: plt.savefig(save_filename + ".png") return fig