接入test_mql变容气室机械反馈

This commit is contained in:
huojiarong committed 2026-07-20 09:37:40 +00:00
1 parent d4edf1ccb3
commit 958d813300
4 files changed
+109 -10

No files matched your search

+41 -2
View File
@@ -566,6 +566,43 @@ class TestMqlPn3P4NodeChamberSegmentTests(unittest.TestCase):
)
self.assertAlmostEqual(rhs[112], -0.8167936695810917)
def test_full_state_closure_feeds_piston_kinematics_to_variable_chambers(self) -> None:
closure = self.system.full_state_closure_from_spec(
self.spec,
inlet_node_pressure_pa=15.31e6,
resistance_boundary_pressure_pa=15.29e6,
)
state = closure.initial_state_vector()
state[113] = 0.05
snapshot = closure.snapshot(state)
chamber = closure.pneumatic_closure.components.p4_port3_remote_primary_chamber
piston = closure.mechanical_closure.assembly.pistons["pn_brp2_8"]
expected_external_volume = piston.geometry().chamber_volume_m3(0.0, 0.05)
self.assertAlmostEqual(
chamber.volume,
chamber.dead_volume + expected_external_volume,
)
self.assertLess(
snapshot.pneumatic.p4_port3_remote_primary_chamber.p,
self.system.pneumatic_assembly.variable_initial_absolute_pressure_pa,
)
base_rhs = closure.rhs(closure.initial_state_vector())
moving_state = closure.initial_state_vector()
moving_state[112] = 0.1
moving_snapshot = closure.snapshot(moving_state)
rhs = closure.rhs(moving_state)
expected_volume_rate = piston.geometry().chamber_volume_rate_m3_s(0.0, 0.1)
self.assertAlmostEqual(chamber.volume_rate_m3_s(), expected_volume_rate)
self.assertAlmostEqual(
rhs[47] - base_rhs[47],
-moving_snapshot.pneumatic.p4_port3_remote_primary_chamber.p
* expected_volume_rate,
)
def test_full_state_closure_applies_elastic_endstop_force_to_small_masses(self) -> None:
closure = self.system.full_state_closure_from_spec(
self.spec,
@@ -577,7 +614,6 @@ class TestMqlPn3P4NodeChamberSegmentTests(unittest.TestCase):
snapshot = closure.snapshot(state)
rhs = closure.rhs(state)
initial_rhs = closure.rhs(closure.initial_state_vector())
endstop = closure.mechanical_closure.assembly.elastic_endstops[
"elasticendstop_8"
].endstop()
@@ -585,10 +621,13 @@ class TestMqlPn3P4NodeChamberSegmentTests(unittest.TestCase):
mass = closure.mechanical_closure.assembly.masses[
"mass_friction_endstops_10"
].mass_kg
expected_piston_force = closure._piston_force_by_mass_alias(
snapshot.pneumatic
)["mass_friction_endstops_10"]
self.assertAlmostEqual(
rhs[112],
initial_rhs[112] - expected_contact_force / mass,
(expected_piston_force - expected_contact_force) / mass,
)
self.assertAlmostEqual(
snapshot.mechanical_node_total_force_by_alias[