"""unit tests for moving shock wave 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.moving_shock import G3DMovingShockCalculator
[docs]
class TestMovingShock(CFlowTestCase):
"""CFlow unit tests: moving shock waves"""
def _setup(self) -> None:
super()._setup()
self.__moving_shock = G3DMovingShockCalculator()
self.__T1 = 300.
self.__PR21 = 2.1278730
self.__TR21 = 1.25625
self.__RR21 = 1.69383
self.__Up = 199.4451
self.__Ms = 1.40241
self.__Mr = 1.35374
self.__PR51 = 4.19481
self.__TR51 = 1.5389
self.__prec_PR21_2 = 3
self.__PR21_2 = np.round(self.__PR21, self.__prec_PR21_2)
[docs]
def test_moving_shock_relations_kwargs(self) -> None:
"""CFlow unit tests: moving shock waves (kwargs)"""
self._setup()
self.assertEqual(self.__moving_shock.get_Ms(
PR21=self.__PR21,
precision=self._prec),
self.__Ms)
self.assertEqual(self.__moving_shock.get_up(
PR21=self.__PR21,
T1=self.__T1,
precision=self._prec),
self.__Up)
self.assertEqual(self.__moving_shock.get_temperature_ratio(
PR21=self.__PR21,
precision=self._prec),
self.__TR21)
self.assertEqual(self.__moving_shock.get_density_ratio(
PR21=self.__PR21,
precision=self._prec),
self.__RR21)
self.assertEqual(self.__moving_shock.get_Mr(
Ms=self.__Ms,
precision=self._prec),
self.__Mr)
self.assertEqual(self.__moving_shock.get_Mr_from_PR21(
PR21=self.__PR21,
precision=2),
np.round(self.__Mr, 2))
self.assertEqual(self.__moving_shock.get_PR51_from_PR21(
PR21=self.__PR21,
precision=self._prec),
self.__PR51)
self.assertEqual(self.__moving_shock.get_TR51_from_PR21(
PR21=self.__PR21,
precision=self._prec),
self.__TR51)
self.assertEqual(self.__moving_shock.get_PR21_from_Ms(
Ms=self.__Ms,
precision=self.__prec_PR21_2),
self.__PR21_2)
self.assertEqual(self.__moving_shock.find_PR21_from_Ms(
Ms=self.__Ms,
precision=self.__prec_PR21_2),
self.__PR21_2)
self.assertEqual(self.__moving_shock.find_PR21_from_Mr(
Mr=self.__Mr,
precision=self.__prec_PR21_2),
self.__PR21_2)
self.assertEqual(self.__moving_shock.find_PR21_from_up(
Up=self.__Up,
T1=self.__T1,
precision=self.__prec_PR21_2),
self.__PR21_2)
self.assertEqual(self.__moving_shock.find_PR21_from_PR51(
PR51=self.__PR51,
precision=self.__prec_PR21_2),
self.__PR21_2)
self.assertEqual(self.__moving_shock.find_PR21_from_TR51(
TR51=self.__TR51,
precision=self.__prec_PR21_2),
self.__PR21_2)
[docs]
def test_moving_shock_relations_args(self) -> None:
"""CFlow unit tests: moving shock waves (args)"""
self._setup()
self.assertEqual(self.__moving_shock.get_Ms(
self.__PR21,
precision=self._prec),
self.__Ms)
self.assertEqual(self.__moving_shock.get_up(
self.__PR21,
self.__T1,
precision=self._prec),
self.__Up)
self.assertEqual(self.__moving_shock.get_temperature_ratio(
self.__PR21,
precision=self._prec),
self.__TR21)
self.assertEqual(self.__moving_shock.get_density_ratio(
self.__PR21,
precision=self._prec),
self.__RR21)
self.assertEqual(self.__moving_shock.get_Mr(
self.__Ms,
precision=self._prec),
self.__Mr)
self.assertEqual(self.__moving_shock.get_Mr_from_PR21(
self.__PR21,
precision=2),
np.round(self.__Mr, 2))
self.assertEqual(self.__moving_shock.get_PR51_from_PR21(
self.__PR21,
precision=self._prec),
self.__PR51)
self.assertEqual(self.__moving_shock.get_TR51_from_PR21(
self.__PR21,
precision=self._prec),
self.__TR51)
self.assertEqual(self.__moving_shock.get_PR21_from_Ms(
self.__Ms,
precision=self.__prec_PR21_2),
self.__PR21_2)
self.assertEqual(self.__moving_shock.find_PR21_from_Ms(
self.__Ms,
precision=self.__prec_PR21_2),
self.__PR21_2)
self.assertEqual(self.__moving_shock.find_PR21_from_Mr(
self.__Mr,
precision=self.__prec_PR21_2),
self.__PR21_2)
self.assertEqual(self.__moving_shock.find_PR21_from_up(
self.__Up,
self.__T1,
precision=self.__prec_PR21_2),
self.__PR21_2)
self.assertEqual(self.__moving_shock.find_PR21_from_PR51(
self.__PR51,
precision=self.__prec_PR21_2),
self.__PR21_2)
self.assertEqual(self.__moving_shock.find_PR21_from_TR51(
self.__TR51,
precision=self.__prec_PR21_2),
self.__PR21_2)
if __name__ == '__main__':
unittest.main()