Python畫彎矩圖剪力圖(三)

有限元計算只能得到桿單元兩端的節(jié)點位移和內(nèi)力,單元任意截面的位移和內(nèi)力需要通過迭加原理得到。

Python畫彎矩圖剪力圖(三)的圖1

如圖所示,單元內(nèi)有均布荷載。由單元兩端節(jié)點的位移 引起單元內(nèi)部任意截面位移 可以通過插值得到。設(shè)

其中

把單元節(jié)點位移值代入得到

記為

在單元兩端固定時,由材料力學可知任意截面的位移為

,則

單元內(nèi)部總位移

單元任意截面彎矩

單元任意截面剪力

Python畫彎矩圖剪力圖(三)的圖2

[例]兩端固定的梁,跨度 ,均布荷載 ,作為一個單元考慮時,單元兩端節(jié)點的位移 求任意截面的位移,彎矩,剪力以及畫彎矩圖,剪力圖代碼如下

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']  # 正常顯示中文標簽
plt.rcParams['axes.unicode_minus'] = False  # 正常顯示負號
q = -1
l = 3
x = np.linspace(0, l, 18)
EI = 1
l2 = l**2
l3 = l**3
l4 = l**4
invA = np.array([[1000],
                [ 0100],
                [ -3/l2, -2/l, 3/l2, -1/l],
                [ 2/l3, 1/l2, -2/l3, 1/l2] ])

ue = np.array([ [0],[0],[0],[0] ]) #桿端節(jié)點位移

uq = np.array([[0], [0], [q*l4/(24*EI)], [q*l3/(6*EI)] ])

u = ue - uq
B = np.dot(invA,u)
w = np.zeros(len(x))
M = np.zeros(len(x))
V = np.zeros(len(x))

for i in range( len(x) ):
    pt =  np.array([1, x[i], x[i]**2, x[i]**3])
    pt2 = np.array([0,    0,       2, x[i]*6])
    pt3 = np.array([0,    0,       0,      6])
    w[i] = np.dot(pt, B)
    w[i] = w[i] + q*x[i]**4/(24*EI)

    M[i] = np.dot(pt2, B)
    M[i] = M[i]*EI + q*x[i]**2 /2

    V[i] = np.dot(pt3, B)
    V[i] = -V[i]*EI - q*x[i]

x1 = np.array( [0] )
x2 = np.array( x[-1] )
xx = np.hstack( (x1, x, x2) )

m1 = np.array( [ 0 ] )
MM = np.hstack( (m1, M, m1) )

v1 = np.array( [ 0 ] )
VV = np.hstack( (v1, V, v1) )


fig, axs = plt.subplots(21,  figsize=(8,6) )
axs[0].plot(xx, -MM, label="M1", linewidth = 3
axs[0].plot([0, x[-1]],[0,0], linewidth = 2, color = "dimgrey")
axs[0].set_ylabel('彎矩', fontsize = 18)

axs[1].plot(xx, -VV, label="M1", linewidth=3
axs[1].plot([0, x[-1]],[0,0], linewidth = 2, color = "dimgrey")
axs[1].set_ylabel('剪力', fontsize = 18)

fig.savefig('./f115.png', dpi = 400#保存圖片 
plt.show()

彎矩圖剪力圖

Python畫彎矩圖剪力圖(三)的圖3

登錄后免費查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

19
8
33