Source code for g3d.calc.tests.test_normal_shock

"""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()