46 lines
1.5 KiB
Python
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()
|