x1 = BodyA.pCM.dot(N.x) y1 = BodyA.pCM.dot(N.y) x2 = BodyB.pCM.dot(N.x) y2 = BodyB.pCM.dot(N.y) #x3 = BodyC.pCM.dot(N.x) #y3 = BodyC.pCM.dot(N.y) KE = system.KE PE = system.getPEGravity( pNA) - .5 * k * (qA - preload1)**2 - .5 * k * (qB - preload2)**2 t = numpy.r_[0:10:.001] outputs = Output([x1, y1, x2, y2, KE, PE, qA, qB], system.constants) pynamics.tic() print('solving dynamics...') var_dd = system.solvedynamics('LU', True) pynamics.toc() print('integrating...') var_dd = var_dd.subs(system.constants) func1 = system.createsecondorderfunction(var_dd, statevariables, system.get_q(1), func_format='odeint') states = scipy.integrate.odeint(func1, ini, t, rtol=1e-12, atol=1e-12, hmin=1e-14) pynamics.toc() print('calculating outputs..')
x1 = BodyA.pCM.dot(N.x) y1 = BodyA.pCM.dot(N.y) x2 = BodyB.pCM.dot(N.x) y2 = BodyB.pCM.dot(N.y) x3 = BodyC.pCM.dot(N.x) y3 = BodyC.pCM.dot(N.y) KE = system.KE PE = system.getPEGravity(pNA) - system.getPESprings() t = numpy.r_[0:5:.001] outputs = Output([x1, y1, x2, y2, x3, y3, KE, PE, qA, qB, qC], system.constants) pynamics.tic() print('solving dynamics...') var_dd = system.solvedynamics('LU', auto_z=True) pynamics.toc() print('substituting constants...') var_dd = var_dd.subs(system.constants) print('creating second order function...') func1 = system.createsecondorderfunction(var_dd, statevariables, system.get_q(1), func_format='odeint') print('integrating...') states = scipy.integrate.odeint(func1, ini, t, rtol=1e-12, atol=1e-12, hmin=1e-14)
pAB = pNA + lA * A.x pAcm = pNA + lA / 2 * A.x wNA = N.getw_(A) BodyA = Body('BodyA', A, pAcm, mA, Dyadic.build(A, Ixx_A, Iyy_A, Izz_A), system) system.addforce(-b * wNA, wNA) system.addforce(-k * qA * N.z, wNA) system.addforcegravity(-g * N.y) t = scipy.arange(0, 10, .01) pynamics.tic() print('solving dynamics...') var_dd = system.solvedynamics('LU', False) pynamics.toc() print('integrating...') var_dd = var_dd.subs(system.constants) func1 = system.createsecondorderfunction(var_dd, statevariables, system.get_q(1), func_format='odeint') states = scipy.integrate.odeint(func1, ini, t, rtol=1e-8, atol=1e-8) pynamics.toc() print('calculating outputs..') x1 = BodyA.pCM.dot(N.x) y1 = BodyA.pCM.dot(N.y) KE = system.KE PE = system.getPEGravity(pNA) outputs = Output([x1, y1, KE, PE], system.constants)