如何在Scipi Linalg求解器中使所有内核正常工作?

时间:2019-07-03 14:18:32

标签: python computation

我写了一个用于运动标记的Newmark积分的算法。它运行良好,将主求解器设置为scipy.linalg.solve,但是据我所知,该求解器应使用整个CPU,但对于我的计算,它仅使用一个内核。您能告诉我我应该更改什么/错误在哪里?下面的主要求解器部分的代码。

for i in range (1,NT):

    t=dt*i
    V1=(a1*U[:,i-1]+a4*Ud[:,i-1]+a5*Udd[:,i-1])
    V2=(a0*U[:,i-1]+a2*Ud[:,i-1]+a3*Udd[:,i-1])

    print("calculation in timestep t=", t)

    CV=dot(numpy.array(Ceqbb).astype(numpy.float64),V1)
    MA=dot(numpy.array(Beqbb).astype(numpy.float64),V2)


    #  apply forces

    F=(numpy.array(FQbb(t)).astype(numpy.float64)).reshape(ndof)


    FH=F+MA+CV

#  solve for displacements

    if(ndof>1):
        Un = linalg.solve(KHnn(t), FH)
    else:
        Un=FH/KHnn(t)

    Uddn=a0*(Un-U[:,i-1])-a2*Ud[:,i-1]-a3*Udd[:,i-1]
    Udn=Ud[:,i-1]+a6*Udd[:,i-1]+a7*Uddn


    U[:,i]=Un
    Ud[:,i]=Udn
    Udd[:,i]=Uddn

0 个答案:

没有答案