Files
SystemSimulationApp/tests/test_amesim_pnpl01_component.py

46 lines
1.5 KiB
Python

from __future__ import annotations
import unittest
from app.simulation.components.amesim.boundary.sources import AmesimPnpl01
from app.simulation.core.medium import IdealGasMedium
from app.simulation.registry import COMPONENT_MODEL_REGISTRY
class AmesimPnpl01ComponentTests(unittest.TestCase):
def setUp(self) -> None:
self.medium = IdealGasMedium()
def test_default_create_preserves_zero_flow_boundary_contract(self) -> None:
source = COMPONENT_MODEL_REGISTRY["amesim_pnpl01"].create(
"plug_1",
self.medium,
{},
)
self.assertIsInstance(source, AmesimPnpl01)
self.assertEqual(set(source.ports), {"port_1"})
self.assertEqual(source.parameter_values, {})
def test_zero_flow_residual_uses_port_mass_flow(self) -> None:
source = AmesimPnpl01("plug_1")
source.port_1.m_flow = 0.125
residuals = source.pressure_flow_equation_residuals()
self.assertEqual(len(residuals), 1)
self.assertEqual(residuals[0].id, "plug_1:zero_mass_flow")
self.assertEqual(residuals[0].variables, ("plug_1.port_1.m_flow",))
self.assertEqual(residuals[0].value, 0.125)
def test_stream_outflow_tracks_connected_enthalpy_when_available(self) -> None:
source = AmesimPnpl01("plug_1")
source.update_stream_outflows({"port_1": 123.0})
self.assertEqual(source.port_1.h_outflow, 123.0)
if __name__ == "__main__":
unittest.main()