Files
SystemSimulationApp/tests/test_test_mql_config.py
T

71 lines
3.1 KiB
Python

from __future__ import annotations
import unittest
from PythonModels.systems.test_mql_config import TestMqlConfig, resolve_numeric_expression
class TestMqlConfigTest(unittest.TestCase):
def test_resolves_global_parameters(self) -> None:
config = TestMqlConfig.from_amesim_specs()
self.assertEqual(config.global_parameters["D1"], 20.0)
self.assertEqual(config.global_parameters["D2"], 20.0)
self.assertEqual(config.global_parameters["D3"], 14.0)
self.assertEqual(config.global_parameters["P0"], 153.0)
self.assertEqual(config.global_parameters["Pdq"], 1.0)
self.assertEqual(config.global_parameters["V"], 15.0)
self.assertEqual(config.global_parameters["cf"], 0.45)
self.assertEqual(config.fluid.name, "helium")
self.assertAlmostEqual(config.fluid.specific_gas_constant, 2077.3, delta=0.5)
def test_resolves_amesim_parameter_expressions(self) -> None:
variables = {"D2": 20.0, "P0": 153.0, "cf": 0.45}
self.assertAlmostEqual(resolve_numeric_expression("3.14*10^2/4", variables), 78.5)
self.assertAlmostEqual(resolve_numeric_expression("0.045/D2", variables), 0.00225)
self.assertAlmostEqual(resolve_numeric_expression("cf", variables), 0.45)
self.assertAlmostEqual(
resolve_numeric_expression("(P0-1.01300000000000e+00)/1.00000000000000e-05", variables),
15198700.0,
)
self.assertIsNone(resolve_numeric_expression("predefined nitrogen (N2)", variables))
def test_groups_components_by_submodel(self) -> None:
config = TestMqlConfig.from_amesim_specs()
self.assertEqual(len(config.components_by_submodel("PNRP17")), 8)
self.assertEqual(len(config.components_by_submodel("PNCH012")), 8)
self.assertEqual(len(config.components_by_submodel("PNOR001")), 8)
self.assertEqual(len(config.components_by_submodel("PNVO001")), 8)
self.assertEqual(len(config.components_by_submodel("PNGD00")), 1)
def test_resolves_representative_component_parameters(self) -> None:
config = TestMqlConfig.from_amesim_specs()
piston = config.component("pn_brp2_8")
self.assertEqual(piston.submodel, "PNRP17")
self.assertEqual(piston.parameter_value("dp"), 200.0)
self.assertEqual(piston.parameter_value("dr"), 1.0)
fixed_orifice = config.component("pn_orifice_18")
self.assertEqual(fixed_orifice.submodel, "PNOR001")
self.assertAlmostEqual(fixed_orifice.parameter_value("area"), 78.5)
variable_orifice = config.component("pn_morifice_11")
self.assertEqual(variable_orifice.submodel, "PNVO001")
self.assertAlmostEqual(variable_orifice.parameter_value("cq"), 0.45)
self.assertAlmostEqual(variable_orifice.parameter_value("area0"), 78.5)
chamber = config.component("pn_c1_8")
self.assertEqual(chamber.submodel, "PNCH012")
self.assertEqual(chamber.parameter_value("cvol0"), 15.0)
gas = config.component("pn_gas_data")
self.assertEqual(gas.submodel, "PNGD00")
self.assertAlmostEqual(gas.parameter_value("rGas"), 287.2)
if __name__ == "__main__":
unittest.main()