Source code for RCAIDE.Library.Methods.Noise.Common.atmospheric_attenuation
# RCAIDE/Methods/Noise/Common/atmospheric_attenuation.py
#
#
# Created: Jul 2023, M. Clarke
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
# Python package imports
import numpy as np
# ----------------------------------------------------------------------------------------------------------------------
# Atmospheric Attenuation
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def atmospheric_attenuation(dist,center_frequencies):
""" This calculates a the atmospheric attenuation of sound for each frequency band
as a function of the distance from the source to the observer using Average Atmospheric
Attenuation Rates from SAE-AIR-1845
Assumptions:
N/A
Source:
AEDT Technical Manual Table 11-1 (SAE-AIR-1845)
Inputs:
dist - Array with the distance vector from the aircraft (source) to the
microphone position (observer) [m]
center_frequency - center frequencies of one-third octave band [Hz]
Outputs:
delta_spl - The delta sound pressure level to be reduced from the lossless SPL
condition [dB]
Properties Used:
None
"""
ctrl_pts = len(dist)
# Atmospheric attenuation factor for a 70% humidity and 25 Celsius at 1000ft - Based SAE model
Att_dB = np.array([0.033,0.033,0.033,0.066,0.066,0.098,0.131,0.131,
0.197,0.230,0.295,0.361,0.459,0.590,0.754,0.983,1.311,1.705,2.295,3.115,
3.607,5.246,7.213,9.836])
if len(center_frequencies)>24:
no_Att_dB = np.zeros(len(center_frequencies)-24)
Att_dB = np.hstack((no_Att_dB,Att_dB))
# Calculates de delta SPL as a function of the distance
delta_spl = np.tile(Att_dB[None,:],(ctrl_pts,1))*(np.tile(dist[:,None],(1,len(Att_dB))))/100
return delta_spl