69 lines
3.0 KiB
Python
69 lines
3.0 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)
|
|
|
|
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()
|