Source code for seapy.subsystems.subsystemacoustical

"""
Acoustical subsystem
--------------------

"""
import numpy as np
from .subsystem import Subsystem

[docs]class SubsystemAcoustical(Subsystem): """ Abstract base class for all acoustical subsystems. """ @property
[docs] def conductance_point_average(self): """Average point conductance of an acoustic component. .. math:: \\overline{G} = \\frac{1}{\\overline{R}} """ return 1.0 / self.resistance_point_average
@property
[docs] def resistance_point_average(self): """Average point resistance of an acoustic component. .. math:: \\overline{R} = \\frac{ \\rho c^2 }{ 4 V \\delta f } See Lyon, page 149, equation 8.5.3 """ return self.component.material.density * self.soundspeed_group / (4.0 * self.component.volume * self.average_frequency_spacing)
@property
[docs] def wavenumber(self): """Wavenumber.""" return self.frequency.angular / self.soundspeed_phase
@property
[docs] def soundspeed_group(self): """ Group speed of a fluid in a duct with rigid walls. """ return self.soundspeed_phase
@property
[docs] def soundspeed_phase(self): """ Phase speed of a fluid in a duct with rigid walls. .. math:: c_0 = c_g = c_{\\phi} = \\sqrt{\\frac{K_0}{\\rho_0}} See Lyon, above eq 8.1.9. """ return np.ones(self.frequency.amount) * np.sqrt(self.component.material.bulk / self.component.material.density)
@property
[docs] def pressure(self): """Mean sound pressure :math:`p`. .. math:: p^2 = \\frac{E \\rho c^2}{V} Craik, equation 3.12, page 56. """ return np.sqrt(self.energy*self.component.material.density*self.soundspeed_group**2.0 / self.component.volume)
@property
[docs] def pressure_level(self): """ Sound pressure level :math:`L_p`. :rtype: :class:`numpy.ndarray` .. math:: L_p = 20 \\log_{10}{\\left( \\frac{p}{p_0} \\right)} .. seealso:: :attr:`seapy.system.System.reference_pressure` """ return 20.0 * np.log10(self.pressure / self.system.reference_pressure)