补齐test_mql机械观测覆盖
This commit is contained in:
1 parent
f6871aefac
commit
c84a809f77
2 files changed
+203
-2
No files matched your search
@@ -23,7 +23,10 @@ class TestMqlMechanicalObservationCatalogTests(unittest.TestCase):
|
||||
self.assertEqual(len(self.catalog.pistons), 8)
|
||||
self.assertEqual(len(self.catalog.masses), 10)
|
||||
self.assertEqual(len(self.catalog.elastic_endstops), 8)
|
||||
self.assertEqual(self.catalog.binding_count, 26)
|
||||
self.assertEqual(len(self.catalog.zero_force_sources), 16)
|
||||
self.assertEqual(len(self.catalog.force_connectors), 2)
|
||||
self.assertEqual(len(self.catalog.mechanical_nodes), 2)
|
||||
self.assertEqual(self.catalog.binding_count, 46)
|
||||
|
||||
def test_piston_binding_exposes_amesim_data_paths(self) -> None:
|
||||
binding = self.catalog.pistons["pn_brp2_8"]
|
||||
@@ -119,6 +122,68 @@ class TestMqlMechanicalObservationCatalogTests(unittest.TestCase):
|
||||
1.0e-9,
|
||||
)
|
||||
|
||||
def test_zero_force_source_observations_are_zero(self) -> None:
|
||||
for binding in self.catalog.zero_force_sources.values():
|
||||
force = self.amesim_results.series(binding.force_path)
|
||||
with self.subTest(alias=binding.alias):
|
||||
self.assertEqual(binding.force_path, f"fzero@{binding.alias}")
|
||||
self.assertEqual(min(force), 0.0)
|
||||
self.assertEqual(max(force), 0.0)
|
||||
self.assertEqual(binding.observation_at(self.amesim_results, -1).force_n, 0.0)
|
||||
|
||||
def test_force_connector_observations_match_amesim_samples(self) -> None:
|
||||
force_1 = self.catalog.force_connectors["forcecon_1"].observation_at(
|
||||
self.amesim_results,
|
||||
-1,
|
||||
)
|
||||
force_2 = self.catalog.force_connectors["forcecon_2"].observation_at(
|
||||
self.amesim_results,
|
||||
-1,
|
||||
)
|
||||
|
||||
self.assertEqual(self.catalog.force_connectors["forcecon_1"].force_path, "force@forcecon_1")
|
||||
self.assertEqual(self.catalog.force_connectors["forcecon_2"].force_path, "force@forcecon_2")
|
||||
self.assertAlmostEqual(force_1.force_n, 49000.0)
|
||||
self.assertAlmostEqual(force_2.force_n, 0.0)
|
||||
self.assertAlmostEqual(
|
||||
self.amesim_results.series("force@forcecon_1")[0],
|
||||
1.0e17,
|
||||
)
|
||||
self.assertAlmostEqual(
|
||||
self.amesim_results.series("force@forcecon_2")[0],
|
||||
1.0e12,
|
||||
)
|
||||
|
||||
def test_mechanical_node_bindings_expose_all_ports(self) -> None:
|
||||
node = self.catalog.mechanical_nodes["dynamic_mechanical_node_alternative_2"]
|
||||
|
||||
self.assertEqual(sorted(node.velocity_paths_by_port), list(range(1, 9)))
|
||||
self.assertEqual(sorted(node.displacement_paths_by_port), list(range(1, 9)))
|
||||
self.assertEqual(node.velocity_paths_by_port[1], "p1__vt@dynamic_mechanical_node_alternative_2")
|
||||
self.assertEqual(node.displacement_paths_by_port[8], "p8__xt@dynamic_mechanical_node_alternative_2")
|
||||
self.assertEqual(node.total_force_path, "tforce@dynamic_mechanical_node_alternative_2")
|
||||
|
||||
def test_mechanical_node_observations_match_amesim_final_samples(self) -> None:
|
||||
front = self.catalog.mechanical_nodes["dynamic_mechanical_node_alternative_2"].observation_at(
|
||||
self.amesim_results,
|
||||
-1,
|
||||
)
|
||||
rear = self.catalog.mechanical_nodes["dynamic_mechanical_node_alternative_3"].observation_at(
|
||||
self.amesim_results,
|
||||
-1,
|
||||
)
|
||||
|
||||
self.assertEqual(set(front.velocities_m_s), set(range(1, 9)))
|
||||
self.assertEqual(set(front.displacements_m), set(range(1, 9)))
|
||||
self.assertAlmostEqual(front.velocities_m_s[1], -0.0)
|
||||
self.assertAlmostEqual(front.displacements_m[1], -0.3700000000000001)
|
||||
self.assertAlmostEqual(front.displacements_m[8], -0.3700000000000001)
|
||||
self.assertAlmostEqual(front.total_force_n, 1083272.2763054767)
|
||||
self.assertAlmostEqual(rear.velocities_m_s[1], 0.0)
|
||||
self.assertAlmostEqual(rear.displacements_m[1], -0.72)
|
||||
self.assertAlmostEqual(rear.displacements_m[8], -0.72)
|
||||
self.assertAlmostEqual(rear.total_force_n, 1083272.2762592242)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user