资源描述
西南科技大学土木工程与建筑学院
平面桁架利用卡氏定理求位移-MAPLE程序设计
学 院:
土木工程与建筑学院
班 级:
工程力学
1001
指导老师:
赵明波
成 员:
20103804
沈立
20103808
唐显鹏
西南科技大学
2013年5月20日
目 录
摘要· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·3
第1章 题目的意义· · · · · · · ·· · · · · · · · · · · · · · · ·· · ·4
第2章 理论分析· · · · · · · · · · ·· · · · · · · · · · · · · · · · · · · 4
1.卡式定理求位移基本概念· · · · · · · · · · · · · ·· · · · · · · · 4
2.平面桁架问题分析,求位移理论·· · · · · · · · · · · · · ·5
第3章 程序设计框图· · · · · · · · · · · · · · · · · · · · · · · 6
第4章 程序代码· · · · · · · · · · · ·· · · · · · · · · · · · ·7
第5章 应用· · · · · · · · ·· · ·· · ·· · · · · · · · · · · · 11
1. 例1 · · · · · · · · · · · · · · · · · · · · · · · · · 11
2. 例2· · · · · · · · · · · · · · · · · · · · · · 13
3.例3· · · · · · · · · · · · · · · · 15
第6章 结论· · · · · · · · · · · · · · · · · · · · · · · 17
参考文献· · · · · · · · · · · · · · · · · · · · · 18
摘 要
本文在深入理解有限元位移法的基础上,利用MAPLE编程来编写平面桁架用卡氏定理求位移的通用程序。该通用程序能够根据给定的桁架计算模型,通过MAPLE输入外加荷载和虚拟荷载,计算出平面桁架指定点的位移。
关键字:MAPLE 平面桁架 位移计算 程序设计
第 1 章 题 目 意 义
在现实生活中,平面桁架随处可见。例如桥梁、屋架、电视塔和起重机架等,所以平面桁架的位移计算就显得特别重要。我们利用MAPLE程序对任意平面桁架的位移问题分析计算,确定其是否能够继续工作。
第 2 章 理 论 分 析
1.卡式定理求位移基本概念
将结构的应变能表为荷载,,.......的函数,则应变能对任一荷载的偏导数等于作用点沿方向的位移,这便是卡氏定理。因为大量实践表明:一般情况下桁架中主应力的主应力占总应力的80%以上,所以主应力的确定是桁架中应力的主要部分。即是桁架的内力主要是轴力,所以附加弯矩的影响是次要的,所以在计算时一般只考虑杆件轴力。所以对于平面桁架位移的求解方法即为先求出每根杆件的轴力,然后求出应变能,最后求出指定点位移。
2.平面桁架问题分析,求位移理论
①假设平面桁架有N根杆件,先对杆件进行编号。在指定点施加一个虚拟力SWU,计算出在外加荷载和SWU共同作用下杆件轴力 , , . . . . . . ;
得出杆件轴力矩阵PP=[ , , . . . . . . ]
杆件长度矩阵=[ , , . . . . . . ]
杆件刚度矩阵=[ , , . . . . . . ]
②因为杆件计算时只考虑轴力,所以杆件的应变能只有轴力作用,,又因为在弹性范围内,所以杆件的应变能的应变能公式。于是平面桁架的总应变能公式: 将所求得的数据,按对应下标带入公式中,即可得出应变能;
③根据卡氏定理,位移公式 , 将上面得出的应变能力表达式带入位移公式中,得出位移的表达式,最后按SWU=0最终求出指定点位移的具体数值。
第 3 章 程 序 设 计 框 图
开始
简易画图语句
根据题目
输入原始数据
使用画图语句画出题目构件图形
向已知条件矩阵NP中添加虚拟荷载
应用Function函数计算出位移
添加空白长度矩阵
计算出系数矩阵和长度矩阵
计算出外力矩阵(包括SWU)
计算出杆件轴力矩阵(在外荷载和SWU下)矩阵
计算出杆件总应变能
应变能对SWU偏微分后,取SWU=0,得到所求点位移
第 4 章 程 序 代 码
>restart:with(linalg):with(plots):printlevel:=0:interface(showassumed=0):
>HT:=(XY,NE)->display(plot([seq([XY[i,1],XY[i,2]],i=1..rowdim(XY))],style=point,axes=none
,color=blue,symbol=circle,symbolsize=30,thickness=2),plot([seq([[XY[NE[i,1],1],XY[NE[i,1],2]]
,[XY[NE[i,2],1],XY[NE[i,2],2]]],i=1..rowdim(NE))],color=red,style=line,thickness=2),textplot([seq([XY[i,1],XY[i,2],i],i=1..rowdim(XY))],color=blue),textplot([seq([XY[NE[i,1],1]*0.45+XY[NE[i,2],1]*0.55,XY[NE[i,1],2]/2+XY[NE[i,2],2]/2,i],i=1..rowdim(NE))],color=blue)):
> Function:=proc(XY,NE,NC,NP,ZS)
local paint,ST,leng,k,i,j,xi,yi,xj,yj,cosa,sina,PPP,PP,FN,FN1,SN,RES:
NP:=stackmatrix(NP,[ZS[1],ZS[2],DWL]);
print(HT(subs(a=1,evalm(XY)),NE)); #画图 ST:=matrix(2*rowdim(XY),2*rowdim(XY),0):
leng:=[seq(0,i=1..rowdim(NE))];
for k from 1 to rowdim(NE) do:
i:=NE[k,1]: j:=NE[k,2]: xi:=XY[i,1]:
yi:=XY[i,2]: xj:=XY[j,1]: yj:=XY[j,2]:
leng[k]:=sqrt((xj-xi)**2+(yj-yi)**2);
cosa:=(xi-xj)/leng[k]: sina:=(yi-yj)/leng[k]:
ST[2*i-1,k]:=-cosa: ST[2*i,k]:=-sina:
ST[2*j-1,k]:=+cosa: ST[2*j,k]:=+sina:
od:
for k from 1 to rowdim(NC) do: #ST矩阵施加外约束
i:=NC[k,1]: j:=NC[k,2]:
ST[2*i-2+j,rowdim(NE)+k]:=-1:
od:
PPP:=[seq(0,i=1..2*rowdim(XY))]:
for k from 1 to rowdim(NP) do: #施加外力和DWL
i:=NP[k,1]: j:=NP[k,2]:
PPP[2*i-2+j]:=PPP[2*i-2+j]+NP[k,3]:
od:
PP:=linsolve(ST,PPP): #外力和DWL下的轴力矩阵
FN:=subs(DWL=0,evalm(PP));#纯外力作用下的轴力矩阵
FN1:=map(diff,PP,DWL);
SN:=(1/2)*factor(add(PP[k]**2*leng[k]/NE[k,3]/NE[k,4],k=1..rowdim(NE)));
RES:=matrix(rowdim(NE)+1,6,0): #构建结果矩阵
RES[1,1]:=杆件:
RES[1,2]:= 轴力F[N]:
RES[1,3]: 轴力F[N,DWL]:
RES[1,4]:=杆长:
RES[1,5]:=刚度:
RES[1,6]:=F[N]*F[N,DWL]*L/(EA):
for i from 1 to rowdim(NE) do; #添加杆件号 ,轴力F[N],轴力F[N,DWL] ,杆长,刚度
RES[i+1,1]:=cat(NE[i,1],"..",NE[i,2]);
RES[i+1,2]:=FN[i];
RES[i+1,3]:=FN1[i];
RES[i+1,4]:=leng[i];
RES[i+1,5]:=NE[i,3]*NE[i,4];
RES[i+1,6]:=RES[i+1,2]*RES[i+1,3]*RES[i+1,4]/RES[i+1,5];
od;
print(RES);
Delta=factor(subs(DWL=0,diff(SN,DWL)));
Delta=factor(add(RES[s,6],s=2..rowdim(RES)));
end proc:
第 5 章 应 用
例1.求出该图4节点在垂直方向上的位移
其中在6,7,8节点处都受到垂直向下的外荷载F
解答:
1、 输入原始数据
>XY:=evalm(matrix([[0,0],[2,0],[4,0],[6,0],[8,0],[2,1],[6,1],[4,2]])):
>NE:=matrix([[1,2,E,A],[2,3,E,A],[3,4,E,A],[4,5,E,A],[6,1,E,A],[6,2,E,A],[6,3,E,A],[8,3,E,A],[7,3,E,A],[7,4,E,A],[7,5,E,A],[8,6,E,A],[8,7,E,A]]):
> NC:=matrix([[1,1],[1,2],[5,2]]):
> NP:=matrix([[6,2,-F],[8,2,-F],[7,2,-F]]):
2、输入所求节点编号和方向
> ZS:=[5,1]:
3、画出简易图形
4、计算出每根杆件的长度
5、数据带入源程序中,求出杆件在外荷载和SWU共同作用下的轴力
6、轴力带入源程序得出总应变能
7、得到程序每步的结果矩阵
8、应变能对SEL微分得到所求点所求方向上的位移
例2.如图所示,求2号节点垂直方向的位移
其中在2号节点垂直方向受到向下的力F
解答:
1、输入原始数据
> XY:=evalm(matrix([[0,0],[1,0],[1,1],[0,1]])):
> NE:=matrix([[1,2,E,A],[2,3,E,A],[3,4,E,A],[4,2,E,A]]):
> NC:=matrix([[1,1],[1,2],[4,1],[4,2]]):
> NP:=matrix([[2,2,-F]]):
2、输入所求节点编号和方向
> ZS:=[2,2]:
3、画出简易图形
4、计算出每根杆件的长度
5、数据带入源程序中,求出杆件在外荷载和SWU共同作用下的轴力
6、轴力带入源程序得出总应变能
7、得到程序每步的结果矩阵
8、应变能对SEL微分得到所求点所求方向上的位移
例3.如图所示,求2号节点垂直方向的位移
解答:
1、 输入原始数据
>XY:=evalm(matrix([[0,0],[20,0],[40,0],[40,20],[20,40],[0,20],[20,20]])):
>NE:=matrix([[1,2,E,A],[2,3,E,A],[3,4,E,A],[4,5,E,A],[5,6,E,A],[6,1,E,A],[1,7,E,A],[3,7,E,A],[5,7,E,A],[2,6,E,A],[2,4,E,A]]):
> NC:=matrix([[1,1],[1,2],[3,2]]):
> NP:=matrix([[2,2,-F],[4,2,-F]]):
2、输入所求节点编号和方向
> ZS:=[7,2]:
3、画出简易图形
4、计算出每根杆件的长度
5、数据带入源程序中,求出杆件在外荷载和SWU共同作用下的轴力
6、轴力带入源程序得出总应变能
7、得到程序每步的结果矩阵
8、应变能对SEL微分得到所求点所求方向上的位移
第 6 章 结 论
本次课程设计是利用卡氏定理对平面桁架的位移问题进行分析计算。首先利用数学计算软件MAPLE编写出计算杆件轴力的计算程序和杆件画图程序,在编写出计算杆件应变能的计算程序,再编写出计算杆件指定点位移的计算程序。最后只需带入相关数据即可准确计算出杆件中指定点的位移并画出桁架结构图。其缺点在于:程序过于复杂,有待进一步简化。
参 考 文 献
[1]刘文鸿, 材料力学Ⅱ , 北京:高等教育出版社 , 2011
[2]萧允徽、张来仪 , 结构力学 , 北京:机械工业出版社 , 2006
18
展开阅读全文