"""unit tests for normal-shock calculator"""
import unittest
from g3d.calc.tests import CFlowTestCase
from g3d.calc.calculators.normal_shock import G3DNormalShockCalculator
[docs]
class TestNormalShock(CFlowTestCase):
"""CFlow unit tests: one-dimensional normal shock relations"""
def _setup(self) -> None:
super()._setup()
self.__normal_shock = G3DNormalShockCalculator()
self.__M1 = 2.5
self.__M2 = 0.51299
self.__T1 = 300.
self.__P1 = 1.e5
self.__RO1 = 1.2
self.__Po1 = 1.e5
self.__As1 = 3.0
self.__T2 = 641.25
self.__P2 = 712500.0
self.__RO2 = 4.0
self.__Po2 = 49901.4812
self.__As2 = 6.01185
self.__PR = self.__P2 / self.__P1
self.__TR = self.__T2 / self.__T1
self.__RR = self.__RO2 / self.__RO1
self.__PoR = self.__Po2 / self.__Po1
self.__Ds = 199.4993
self.__prec_M1 = 2
self.__prec_As1 = 2
[docs]
def test_normal_shock_relations_kwargs(self) -> None:
"""CFlow unit tests: one-dimensional normal shock relations (kwargs)"""
self._setup()
self.assertEqual(self.__normal_shock.get_downstream_Mach(
M1=self.__M1,
precision=self._prec),
self.__M2)
self.assertEqual(self.__normal_shock.get_upstream_Mach(
M2=self.__M2,
precision=self.__prec_M1),
self.__M1)
self.assertEqual(self.__normal_shock.get_downstream_density(
M1=self.__M1,
RO1=self.__RO1,
precision=self._prec),
self.__RO2)
self.assertEqual(self.__normal_shock.get_downstream_pressure(
M1=self.__M1,
P1=self.__P1,
precision=self._prec),
self.__P2)
self.assertEqual(self.__normal_shock.get_downstream_total_pressure(
M1=self.__M1,
Po1=self.__Po1,
precision=self._prec),
self.__Po2)
self.assertEqual(self.__normal_shock.get_downstream_temperature(
M1=self.__M1,
T1=self.__T1,
precision=self._prec),
self.__T2)
self.assertEqual(self.__normal_shock.get_downstream_Astar(
M1=self.__M1,
As1=self.__As1,
precision=self._prec),
self.__As2)
self.assertEqual(self.__normal_shock.get_upstream_Astar(
M2=self.__M2,
As2=self.__As2,
precision=self.__prec_As1),
self.__As1)
self.assertEqual(self.__normal_shock.get_upstream_Mach_from_pressure_ratio(
PR=self.__PR,
precision=self.__prec_M1),
self.__M1)
self.assertEqual(self.__normal_shock.get_upstream_Mach_from_density_ratio(
RR=self.__RR,
precision=self.__prec_M1),
self.__M1)
self.assertEqual(self.__normal_shock.get_entropy_increase(
M1=self.__M1,
precision=self._prec),
self.__Ds)
self.assertEqual(self.__normal_shock.get_upstream_Mach_from_temperature_ratio(
TR=self.__TR,
precision=self.__prec_M1),
self.__M1)
self.assertEqual(self.__normal_shock.get_upstream_Mach_from_total_pressure_ratio(
PoR=self.__PoR,
precision=self.__prec_M1),
self.__M1)
[docs]
def test_normal_shock_relations_args(self) -> None:
"""CFlow unit tests: one-dimensional normal shock relations (args)"""
self._setup()
self.assertEqual(self.__normal_shock.get_downstream_Mach(
self.__M1,
precision=self._prec),
self.__M2)
self.assertEqual(self.__normal_shock.get_upstream_Mach(
self.__M2,
precision=self.__prec_M1),
self.__M1)
self.assertEqual(self.__normal_shock.get_downstream_density(
self.__M1,
self.__RO1,
precision=self._prec),
self.__RO2)
self.assertEqual(self.__normal_shock.get_downstream_pressure(
self.__M1,
self.__P1,
precision=self._prec),
self.__P2)
self.assertEqual(self.__normal_shock.get_downstream_total_pressure(
self.__M1,
self.__Po1,
precision=self._prec),
self.__Po2)
self.assertEqual(self.__normal_shock.get_downstream_temperature(
self.__M1,
self.__T1,
precision=self._prec),
self.__T2)
self.assertEqual(self.__normal_shock.get_downstream_Astar(
self.__M1,
self.__As1,
precision=self._prec),
self.__As2)
self.assertEqual(self.__normal_shock.get_upstream_Astar(
self.__M2,
self.__As2,
precision=self.__prec_As1),
self.__As1)
self.assertEqual(self.__normal_shock.get_upstream_Mach_from_pressure_ratio(
self.__PR,
precision=self.__prec_M1),
self.__M1)
self.assertEqual(self.__normal_shock.get_upstream_Mach_from_density_ratio(
self.__RR,
precision=self.__prec_M1),
self.__M1)
self.assertEqual(self.__normal_shock.get_entropy_increase(
self.__M1,
precision=self._prec),
self.__Ds)
self.assertEqual(self.__normal_shock.get_upstream_Mach_from_temperature_ratio(
self.__TR,
precision=self.__prec_M1),
self.__M1)
self.assertEqual(self.__normal_shock.get_upstream_Mach_from_total_pressure_ratio(
self.__PoR,
precision=self.__prec_M1),
self.__M1)
if __name__ == '__main__':
unittest.main()