首页/文章/ 详情

Python画弯矩图剪力图(三)

5月前浏览408

有限元计算只能得到杆单元两端的节点位移和内力,单元任意截面的位移和内力需要通过迭加原理得到。

如图所示,单元内有均布荷载。由单元两端节点的位移    引起单元内部任意截面位移    可以通过插值得到。设

 

其中

 

把单元节点位移值代入得到

 

记为

在单元两端固定时,由材料力学可知任意截面的位移为

 

,则

 

单元内部总位移

 

单元任意截面弯矩

 

单元任意截面剪力

 

[例]两端固定的梁,跨度    ,均布荷载    ,作为一个单元考虑时,单元两端节点的位移    求任意截面的位移,弯矩,剪力以及画弯矩图,剪力图代码如下

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] ]) #杆端节点位移

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()

弯矩图剪力图


来源:数值分析与有限元编程
pythonUM材料
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-02
最近编辑:5月前
太白金星
本科 慢慢来
获赞 4粉丝 8文章 317课程 0
点赞
收藏
作者推荐

Python画弯矩图剪力图(二)

平面刚架的内力图绘制绘制平面刚架(桁架)的变形图及内力图就是一系列数据的可视化过程。内力是基于杆的位置 的函数 ,由一系列的离散点组成矩阵 这里第三行无实际意义,仅作为辅助计算。定义缩放矩阵 旋转矩阵 平移矩阵 以如图所示的刚架为例,在画单元的内力图时,通常是以单元起点为总体坐标系的坐标原点,杆轴沿着x轴正方向来计算内力矩阵A的(原因是对杆进行n等分时使用了x=np.linspace(0,l,n)这个方法,起始点为0)。故此时得到的矩阵A要通过缩放、旋转、平移操作,使之回到对应的位置上去。对于单元1,则需要作旋转操作(np.dot(R,A)),而单元2则需要作平移操作(np.dot(T,A))。缩放操作则根据图形是否协调适当考虑。▲单元1内力图没经过旋转操作▲单元1内力图经过旋转操作,回到对应的位置▲单元2内力图没经过平移操作▲单元2内力图经过平移操作,回到对应的位置▲最终内力图来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈