Я написал алгоритм интегрирования уравнения движения Ньюмарка.Он работает довольно хорошо, с основным решателем, настроенным как scipy.linalg.solve
, однако, насколько мне было сказано, этот решатель должен использовать весь процессор, но для моих расчетов он использует только одно ядро.Можете ли вы сказать мне, что я должен изменить / где ошибка?Код основной части решателя ниже.
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