"""unit tests for acoustic relations calculator"""
import unittest
import os
if os.environ.get('__USE_CUDA', '0') == '1':
import cupy as np
else:
import numpy as np
from g3d.calc.tests import CFlowTestCase
from g3d.calc.calculators.acoustics import G3DAcousticsCalculator
[docs]
class TestAcoustics(CFlowTestCase):
"""CFlow unit tests: acoustic relations"""
def _setup(self) -> None:
super()._setup()
self.__acoustics = G3DAcousticsCalculator()
self.__SPL = 90.
self.__dP = 0.894427190999916
self.__dRO = 7.737259437715537e-06
self.__dU = 0.002192223507352735
self.__Cinf = 340.
self.__ROinf = 1.2
[docs]
def test_acoustics_relations_kwargs(self) -> None:
"""test acoustic relations (kwargs)"""
self._setup()
self.assertEqual(self.__acoustics.get_dp_from_SPL(
SPL=self.__SPL,
precision=self._prec),
np.round(self.__dP, self._prec))
self.assertEqual(self.__acoustics.get_SPL_from_dp(
dP=self.__dP,
precision=self._prec),
np.round(self.__SPL, self._prec))
self.assertEqual(self.__acoustics.get_du(
Cinf=self.__Cinf,
ROinf=self.__ROinf,
dP=self.__dP,
precision=self._prec),
np.round(self.__dU, self._prec))
self.assertEqual(np.round(self.__acoustics.get_dro(
Cinf=self.__Cinf,
dP=self.__dP) * 1.e6, self._prec),
np.round(self.__dRO * 1.e6, self._prec))
[docs]
def test_acoustics_relations_args(self) -> None:
"""test acoustic relations (args)"""
self._setup()
self.assertEqual(self.__acoustics.get_dp_from_SPL(
self.__SPL,
precision=self._prec),
np.round(self.__dP, self._prec))
self.assertEqual(self.__acoustics.get_SPL_from_dp(
self.__dP,
precision=self._prec),
np.round(self.__SPL, self._prec))
self.assertEqual(self.__acoustics.get_du(
self.__Cinf,
self.__ROinf,
self.__dP,
precision=self._prec),
np.round(self.__dU, self._prec))
self.assertEqual(np.round(self.__acoustics.get_dro(
self.__Cinf,
self.__dP) * 1.e6, self._prec),
np.round(self.__dRO * 1.e6, self._prec))
if __name__ == '__main__':
unittest.main()