优化求解器重试并校正AMESim机械端口
This commit is contained in:
1 parent
971e8f2336
commit
18d9802f03
15 files changed
+383
-166
No files matched your search
@@ -17,6 +17,12 @@ class AmesimMechanicalPublicComponentTests(unittest.TestCase):
|
||||
def setUp(self) -> None:
|
||||
self.medium = IdealGasMedium()
|
||||
|
||||
def test_mecmas21_catalog_ports_follow_amesim_icon_sides(self) -> None:
|
||||
self.assertEqual(
|
||||
tuple((port.name, port.side) for port in AmesimMecmas21.DISPLAY.ports),
|
||||
(("port_2", "left"), ("port_1", "right")),
|
||||
)
|
||||
|
||||
def test_f000_constrains_mechanical_port_force_to_zero(self) -> None:
|
||||
source = AmesimF000("zero_1")
|
||||
source.port_1.f = 12.5
|
||||
@@ -38,6 +44,14 @@ class AmesimMechanicalPublicComponentTests(unittest.TestCase):
|
||||
self.assertAlmostEqual(residuals[0].value, 0.0)
|
||||
self.assertEqual(converter.component_result_values(), {"force": 20.0})
|
||||
|
||||
converter.apply_layout_transform(rotation=180, mirrored=False)
|
||||
converter.port_2.f = 20.0
|
||||
self.assertAlmostEqual(
|
||||
converter.pressure_flow_equation_residuals()[0].value,
|
||||
0.0,
|
||||
)
|
||||
self.assertEqual(converter.component_result_values(), {"force": 20.0})
|
||||
|
||||
def test_mecmas21_acceleration_uses_connected_port_forces(self) -> None:
|
||||
mass = AmesimMecmas21(
|
||||
"mass_1",
|
||||
@@ -96,12 +110,12 @@ class AmesimMechanicalPublicComponentTests(unittest.TestCase):
|
||||
kcont=1000.0,
|
||||
rcont=10.0,
|
||||
)
|
||||
contact.port_1.x = 0.0
|
||||
contact.port_2.x = 0.002
|
||||
contact.port_1.v = 0.0
|
||||
contact.port_2.v = 0.1
|
||||
contact.port_1.f = -3.0
|
||||
contact.port_2.f = 3.0
|
||||
contact.port_1.x = 0.002
|
||||
contact.port_2.x = 0.0
|
||||
contact.port_1.v = 0.1
|
||||
contact.port_2.v = 0.0
|
||||
contact.port_1.f = 3.0
|
||||
contact.port_2.f = -3.0
|
||||
|
||||
self.assertAlmostEqual(contact.gap, -0.002)
|
||||
self.assertAlmostEqual(contact.penetration, 0.002)
|
||||
@@ -116,8 +130,8 @@ class AmesimMechanicalPublicComponentTests(unittest.TestCase):
|
||||
|
||||
def test_lstp00a_returns_zero_before_contact(self) -> None:
|
||||
contact = AmesimLstp00a("contact_1", self.medium, gap0=0.001, kcont=1000.0)
|
||||
contact.port_1.x = 0.0
|
||||
contact.port_2.x = 0.0005
|
||||
contact.port_1.x = 0.0005
|
||||
contact.port_2.x = 0.0
|
||||
|
||||
self.assertAlmostEqual(contact.gap, 0.0005)
|
||||
self.assertAlmostEqual(contact.contact_force, 0.0)
|
||||
|
||||
Reference in new issue
Block a user