def test_distal_forces(self): j = FreeJoint('joint') # Constant loading j.distal_forces = np.array([2, 3.1, 2.1, 4.3, 2.5, 1.0]) j.calc_external_loading() assert_array_equal(j.applied_forces[:6], 0) assert_array_equal(j.applied_forces[6:], j.distal_forces) assert_array_equal(j.applied_stress, 0) # Loading function j.distal_forces = lambda element, t: np.ones(6) j.calc_external_loading() assert_array_equal(j.applied_forces[:6], 0) assert_array_equal(j.applied_forces[6:], 1) assert_array_equal(j.applied_stress, 0)
def test_distal_forces_cause_acceleration(self): j = FreeJoint('joint') b = RigidBody('body', mass=3, inertia=np.diag([7, 7, 7])) s = System() s.add_leaf(j) j.add_leaf(b) s.setup() # Constant loading j.distal_forces = np.array([2, 0, 0, 0, 0, 0]) s.update_kinematics() s.update_matrices() s.solve_accelerations() s.update_kinematics() assert_array_equal(j.ad, [2. / 3, 0, 0, 0, 0, 0])