ini = [initialvalues[item] for item in statevariables] A = Frame('A', system) B = Frame('B', system) C = Frame('C', system) D = Frame('D', system) system.set_newtonian(A) B.rotate_fixed_axis(A, [0, 0, 1], H, system) C.rotate_fixed_axis(B, [1, 0, 0], -L, system) D.rotate_fixed_axis(C, [0, 1, 0], Q, system) pNA = 0 * A.x pAD = pNA + x * A.x + y * A.y pBcm = pAD + r * C.z pDA = pBcm - r * D.z wAD = A.get_w_to(D) II = Dyadic.build(B, J, I, J) BodyD = Body('BodyD', D, pBcm, m, II, system) #ParticleA = Particle(pAcm,mA,'ParticleA',system) #ParticleB = Particle(pBcm,mB,'ParticleB',system) #ParticleC = Particle(pCcm,mC,'ParticleC',system) system.addforcegravity(-g * A.z) f, ma = system.getdynamics()
p2 = p1 - l * A.y wNA = N.get_w_to(A) v1 = p1.time_derivative(N, system) v2 = p2.time_derivative(N, system) I = Dyadic.build(A, I_xx, I_yy, I_zz) BodyA = Body('BodyA', A, p2, m, I, system) ParticleO = Particle(p2, M, 'ParticleO', system) stretch = q - q0 system.add_spring_force1(k, (stretch) * N.z, wNA) system.addforce(-b * v2, v2) system.addforcegravity(-g * N.y) pos = sympy.cos(system.t * 2 * pi / 2) eq = pos * N.x - p1 eq_d = eq.time_derivative() eq_dd = eq_d.time_derivative() eq_dd_scalar = [] eq_dd_scalar.append(eq_dd.dot(N.x)) system.add_constraint(AccelerationConstraint(eq_dd_scalar)) f, ma = system.getdynamics() func1, lambda1 = system.state_space_post_invert( f, ma, constants=system.constant_values, return_lambda=True) states = pynamics.integration.integrate_odeint(func1, ini,
f2.rotate_fixed_axis(f1,[0,0,1],q1,system) f3.rotate_fixed_axis(f2,[1,0,0],q2,system) f4.rotate_fixed_axis(f3,[0,1,0],q3,system) p0 = 0*f1.x p1 = p0-l1*f4.x v1=p1.time_derivative(f1) wNA = f1.get_w_to(f2) particle1 = Particle(p1,mp1) body1 = Body('body1',f4,p1,mp1,Dyadic.build(f4,1,1,1),system = None) #system.addforce(-b*v1,v1) system.addforcegravity(-g*f1.z) #system.add_spring_force1(k,(q1)*f1.z,wNA) points = [particle1.pCM] points_x = [item.dot(f1.x) for item in points] points_y = [item.dot(f1.y) for item in points] points_z = [item.dot(f1.z) for item in points] output_x = Output(points_x) output_y = Output(points_y) output_z = Output(points_z) f,ma = system.getdynamics() func = system.state_space_post_invert(f,ma) t = numpy.r_[0:5:.001]