接入test_mql机械质量状态闭包

This commit is contained in:
huojiarong committed 2026-07-20 08:54:04 +00:00
1 parent 7cb050d235
commit 3d1de6d5d0
4 files changed
+180 -1

No files matched your search

+29
View File
@@ -3865,6 +3865,7 @@ class TestMqlSystem:
self.pnl00r_assembly = self._build_pnl00r_assembly()
self.node3_assembly = self._build_node3_assembly()
self.node4_assembly = self._build_node4_assembly()
self.mechanical_assembly = self._build_mechanical_assembly()
self.pneumatic_assembly = self._build_pneumatic_assembly()
pneumatic_components = self._pneumatic_components_by_alias()
for spec in COMPONENT_SPECS:
@@ -3887,6 +3888,13 @@ class TestMqlSystem:
return build_test_mql_pneumatic_assembly()
@staticmethod
def _build_mechanical_assembly():
# Local import avoids a module cycle: test_mql_config reads constants from this module.
from PythonModels.systems.test_mql_mechanical import build_test_mql_mechanical_assembly
return build_test_mql_mechanical_assembly()
def _build_pnl0001_assembly(self):
from PythonModels.systems.test_mql_pneumatic_lines import (
build_test_mql_pnl0001_assembly,
@@ -4112,6 +4120,27 @@ class TestMqlSystem:
def pneumatic_state_vector(self) -> list[float]:
return self.network.initial_state_vector()
def mechanical_mass_closure(self):
from PythonModels.systems.test_mql_mechanical import TestMqlMechanicalMassClosure
return TestMqlMechanicalMassClosure(self.mechanical_assembly)
def mechanical_state_vector(self) -> list[float]:
return self.mechanical_mass_closure().initial_state_vector()
def simulate_mechanical_masses(
self,
config: SolveIVPConfig | None = None,
t_eval: list[float] | None = None,
):
closure = self.mechanical_mass_closure()
return integrate_ode(
rhs=lambda t, state: closure.rhs(state),
initial_state=closure.initial_state_vector(),
config=config or SolveIVPConfig(),
t_eval=t_eval,
)
@staticmethod
def pneumatic_branch_spec(
*,