From 853ae3043d1e2bb5bddd3766acd8046f56946f2d Mon Sep 17 00:00:00 2001 From: huojiarong Date: Fri, 17 Jul 2026 10:10:41 +0000 Subject: [PATCH] =?UTF-8?q?=E5=A4=8D=E7=94=A8test=5Fmql=20P4=E9=82=BB?= =?UTF-8?q?=E6=8E=A5=E6=8B=93=E6=89=91=E8=A3=85=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PythonModels/systems/test_mql.py | 34 +++++++++++++++----------- tests/test_test_mql_pnl0001_segment.py | 29 ++++++++++++++++++++++ 2 files changed, 49 insertions(+), 14 deletions(-) diff --git a/PythonModels/systems/test_mql.py b/PythonModels/systems/test_mql.py index 5dd6944..a37b254 100644 --- a/PythonModels/systems/test_mql.py +++ b/PythonModels/systems/test_mql.py @@ -4598,26 +4598,32 @@ class TestMqlSystem: else node_line_spec.source_component ) p4_node_alias = self._p4_node_alias_for_orifice_port_2(node_orifice_alias) - node_orifice = self.pneumatic_assembly.variable_orifices[node_orifice_alias] + p4_neighborhood = self.p4_node_neighborhood(p4_node_alias) + if p4_neighborhood.port_4.orifice_alias != node_orifice_alias: + raise ValueError( + f"P4 neighborhood for {p4_node_alias} does not match " + f"{node_orifice_alias}" + ) + node_orifice = self.pneumatic_assembly.variable_orifices[ + p4_neighborhood.port_4.orifice_alias + ] node_resistance = self._pnl00r_line_for_node_port( spec.outlet_node_alias, "port_1", ) node = self.node3_assembly[spec.outlet_node_alias] - p4_node = self.node4_assembly[p4_node_alias] - p4_primary_line_spec = self._pnl0001_spec_for_node_port( - p4_node_alias, - "port_2", - ) - p4_primary_line = self.pnl0001_assembly.lines[p4_primary_line_spec.alias] - p4_primary_chamber_alias = ( - p4_primary_line_spec.target_component - if p4_primary_line_spec.source_component == p4_node_alias - else p4_primary_line_spec.source_component - ) + p4_node = self.node4_assembly[p4_neighborhood.node_alias] + p4_primary_line = self.pnl0001_assembly.lines[ + p4_neighborhood.primary.line_alias + ] + p4_primary_chamber_alias = p4_neighborhood.primary.chamber_alias p4_primary_chamber = self.network.components[p4_primary_chamber_alias] - p4_port1_line = self._pnl0002_line_for_node_port(p4_node_alias, "port_1") - p4_port3_line = self._pnl0002_line_for_node_port(p4_node_alias, "port_3") + p4_port1_line = self.pnl0002_assembly.lines[ + p4_neighborhood.port_1.line_alias + ] + p4_port3_line = self.pnl0002_assembly.lines[ + p4_neighborhood.port_3.line_alias + ] volume = self.network.components[spec.volume_alias] inlet_orifice = self.network.components[spec.inlet_orifice_alias] outlet_orifice = self.network.components[spec.outlet_orifice_alias] diff --git a/tests/test_test_mql_pnl0001_segment.py b/tests/test_test_mql_pnl0001_segment.py index 631f871..90a609e 100644 --- a/tests/test_test_mql_pnl0001_segment.py +++ b/tests/test_test_mql_pnl0001_segment.py @@ -278,6 +278,35 @@ class TestMqlPn3P4NodeChamberSegmentTests(unittest.TestCase): snapshot.p4_primary_line.T, ) + def test_p4_closure_uses_structured_neighborhood(self) -> None: + closure = self.system.pn3_p4_node_chamber_segment_closure_from_spec( + self.spec, + inlet_node_pressure_pa=15.31e6, + resistance_boundary_pressure_pa=15.29e6, + ) + neighborhood = self.system.p4_node_neighborhood(closure.components.p4_node.alias) + + self.assertEqual( + closure.components.p4_primary_line.name, + neighborhood.primary.line_alias, + ) + self.assertEqual( + closure.components.p4_primary_chamber.name, + neighborhood.primary.chamber_alias, + ) + self.assertEqual( + closure.components.p4_port1_line.name, + neighborhood.port_1.line_alias, + ) + self.assertEqual( + closure.components.p4_port3_line.name, + neighborhood.port_3.line_alias, + ) + self.assertEqual( + closure.components.node_orifice.name, + neighborhood.port_4.orifice_alias, + ) + def test_p4_node_flow_cancels_between_pnvo_pnl0002_and_primary_line(self) -> None: closure = self.system.pn3_p4_node_chamber_segment_closure_from_spec( self.spec,