用matplotlib绘制三维屈服面

2024-09-30 22:13:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道如何绘制3D屈服面如本页所示http://en.wikipedia.org/wiki/Von_Mises_yield_criterion。我一直试图画冯米塞斯屈服面作为一个开始,但没有成功。我想我根本不知道怎么开始。如果有人能给我看一个示例代码,例如von Mises,那么我可以用它来绘制其他的屈服面,比如凸轮粘土和改性凸轮粘土。在

起初我以为我可以做这样的事情,但没用:

for i in range(0, MAXSTEP):
    stressx = stressx + STEPSIZE
    stressy = -STEPSIZE
    for j in range(0, MAXSTEP):
        stressy = stressy + STEPSIZE
        stressz = -STEPSIZE
        for k in range(0, MAXSTEP):
            stressz = stressz + STEPSIZE
            tI1 = calcI1(stressx, stressy, stressz)
            tJ2 = calcJ2(stressx, stressy, stressz)
            tyieldf = calcF(tI1, ycon)
            tsqrtJ2 = np.sqrt(tJ2)
            tdiff = abs(tsqrtJ2 - tyieldf)
            if  tdiff < TOL:
                sigx[count] = stressx
                sigy[count] = stressy
                sigz[count] = stressy
                I1[count] = tI1
                sqrtJ2[count] = tsqrtJ2
                diff[count] = tdiff
                count = count + 1

X = np.outer(sigx[0:count], sigx[0:count])
Y = np.outer(sigy[0:count], sigy[0:count])
Z = np.outer(sigz[0:count], sigz[0:count])

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)

ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.show()
main()

我想我不知道如何生成数据。我有方程,但不知道如何使用它们来生成曲面图所需的数据。我想我需要生成一个XY网格,然后求解Z,但我还没有尝试过这种方法。在


Tags: inforcountnprangeax屈服stepsize