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)