def test_linearmomentum(): N = ReferenceFrame("N") Ac = Point("Ac") Ac.set_vel(N, 25 * N.y) I = outer(N.x, N.x) A = RigidBody("A", Ac, N, 20, (I, Ac)) P = Point("P") Pa = Particle("Pa", P, 1) Pa.point.set_vel(N, 10 * N.x) BL = [A, Pa] assert linearmomentum(BL, N) == 10 * N.x + 500 * N.y
def test_angularmomentum_and_linearmomentum(): m, M, l1 = symbols("m M l1") q1d = dynamicsymbols("q1d") N = ReferenceFrame("N") O = Point("O") O.set_vel(N, 0 * N.x) Ac = O.locatenew("Ac", l1 * N.x) P = Ac.locatenew("P", l1 * N.x) a = ReferenceFrame("a") a.set_ang_vel(N, q1d * N.z) Ac.v2pt_theory(O, N, a) P.v2pt_theory(O, N, a) Pa = Particle("Pa", P, m) I = outer(N.z, N.z) A = RigidBody("A", Ac, a, M, (I, Ac)) BL = [Pa, A] assert linearmomentum(BL, N) == 2 * m * q1d * l1 * N.y + M * l1 * q1d * N.y assert angularmomentum(BL, O, N) == 4 * m * q1d * l1 ** 2 * N.z + q1d * N.z