有限元大作业matlab-课程设计报告例子_第1页
有限元大作业matlab-课程设计报告例子_第2页
有限元大作业matlab-课程设计报告例子_第3页
有限元大作业matlab-课程设计报告例子_第4页
有限元大作业matlab-课程设计报告例子_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 有 限 元 大 作 业 程 序 设 计 学校:天津大学院系:建筑工程与力学学院专业:01级工程力学姓名:刘秀学号:指导老师: 连续体平面问题的有限元程序分析题目: 如图所示的正方形薄板四周受均匀载荷的作用,该结构在边界上受正向分布压力,同时在沿对角线y轴上受一对集中压力,载荷为2kn,若取板厚,泊松比。2kn2kn1kn/m分析过程:由于连续平板的对称性,只需要取其在第一象限的四分之一部分参加分析,然后人为作出一些辅助线将平板“分割”成若干部分,再为每个部分选择分析单元。采用将此模型化分为4个全等的直角三角型单元。利用其对称性,四分之一部分的边界约束,载荷可等效如图所示。 1kn/m程序原理

2、及实现:用fortran程序的实现。由节点信息文件node.in和单元信息文件element.in,经过计算分析后输出一个一般性的文件data.out。模型基本信息由文件为basic.in生成。该程序的特点如下:问题类型:可用于计算弹性力学平面问题和平面应变问题单元类型:采用常应变三角形单元位移模式:用用线性位移模式载荷类型:节点载荷,非节点载荷应先换算为等效节点载荷 材料性质:弹性体由单一的均匀材料组成约束方式:为“0”位移固定约束,为保证无刚体位移,弹性体至少应有对三个自由度的独立约束方程求解:针对半带宽刚度方程的gauss消元法输入文件:由手工生成节点信息文件node.in,和单元信息文

3、件element.in结果文件:输出一般的结果文件data.out程序的原理如框图:开始输入数据(子程序read_in)basic.in(基本信息文件)node.in(节点信息文件)element.in(单元信息文件)形成单元刚度矩阵(子程序form_ke)以半带存储方式形成整体刚度矩阵(band_k)形成节点载荷向量(子程序form_p)处理边界条件(子程序do_bc)求解方程获得节点位移(子程序solve)计算单元及节点应力(子程序)结束输出方件data.out(1)主要变量:id: 问题类型码,id1时为平面应力问题,id=2时为平面应变问题n_node: 节点个数n_load: 节点载

4、荷个数n_dof: 自由度,n_dof=n_node*2(平面问题)n_ele: 单元个数n_band: 矩阵半带宽n_bc: 有约束的节点个数pe: 弹性模量pr: 泊松比pt: 厚度ljk_ele(i,3): 单元节点编号数组,ljk_ele(i,1),ljk_ele(i,2),ljk_ele(i,3)分别放单元i的三个节点的整体编号x(n_node), y(n_node):节点坐标数组,x(i),y(i)分别存放节点i的x,y坐标值p_ljk(n_bc,3): 节点载荷数组,p_ljk(i,1)表示第i个作用有节点载荷的节点的编号,p_ljk(i,2),p_ljk(i,3)分别为该节点沿

5、x,y方向的节点载荷数值ak(n_dof,n_band): 整体刚度矩阵ake(6,6): 单元刚度矩阵bb(3,6): 位移应变转换矩阵(三节点单元的几何矩阵)dd(3,3): 弹性矩阵ss(3,6); 应力矩阵result_n(n_nof): 节点载荷数组,存放节点载荷向量,解方程后该矩阵存放节点位移disp_e(6):: 单元的节点位移向量sts_ele(n_ele,3): 单元的应力分量sts_nd(n_node,3): 节点的应力分量(2)子程序说明: read_in: 读入数据 band_k: 形成半带宽的整体刚度矩阵 form_ke: 计算单元刚度矩阵 form_p: 计算节点载

6、荷 cal_area:计算单元面积 do_bc: 处理边界条件 cla_dd: 计算单元弹性矩阵 solve: 计算节点位移 cla_bb: 计算单元位移应变关系矩阵 cal_sts:计算单元和节点应力(3)文件管理:源程序文件: chengxu.for程序需读入的数据文件: basic.in,node.in,element.in(需要手工生成)程序输出的数据文件:data.out(4)数据文件格式:需读入的模型 基本信息文件basic.in的格式如下表栏目格式说明实际需输入的数据基本模型数据第1行,每两个数之间用“,”号隔开问题类型,单元个数,节点个数,有约束的节点数,有载何的节点数材料性质

7、第2行,每两个数之间用“,”号隔开弹性模量,泊松比,单元厚度节点约束信息在材料性质输入行之后另起行,每两个数之间用“,”号隔开ljk_u(n_bc,3)位移约束的节点编号,该节点x方向约束代码,该节点y方向代码,节点荷载信息在节点约束信息输入行之后另起行,每两个数之间用“,”号隔开p_ijk(n_load,3)载荷作用的节点编号,该节点x主向载荷,该节点y方向载荷,需读入的节点信息文件node.in的格式如下表栏目格式说明实际需输入的数据节点信息每行为一个节点的信息(每行三个数,每两个数之间用空格或“,”分开)nd_ansys(n_nide)节点号,该节点的x坐标,该节点y方向坐标需读入的单元

8、信息文件element.in的格式如下表栏目格式说明实际需输入的数据单元信息每行为一个单元的信息(每行有14个整型数,前4个为单元节点编号,对于3节点编号,第4个节点编号与第3个节点编号相同,后10个数无用,可输入“0”,每两 个整型数之间用至少一个空格分开)ne_ansys(n_ele,14)单元的节点号1(空格)单元的节点号2(空格)单元的节点号3(空格)单元的节点号4(空格)0(空格)0(空格)0(空格)0(空格)0(空格)0(空格)0(空格)0(空格)0(空格)0输出结果文件data.out格式如下表栏目实际输出的数据节点位移i result_n(2*i_ 1) result_n(2*

9、i)节点号 x方向位移 y方向位移单元应力的三个分量ie ste_ele(ie,1) ste_ele(ie,2) ste_ele(ie,3)单元号 x方向应力 y方向应力 剪切应力节点应力的三个分量i sts-nd(i,1) sts-nd(i,2) sts-nd(i,3)节点号 x方向应力 y方向应力 剪切应力 算例原始数据和程序分析:(1)模型基本信息文件basic.in的数据为1,4,6,5,31.,0.,1.1,1,0,2,1,0,4,1,1,5,0,1,6,0,11,-0.5,-1.5,3.,-1.,-1,6,-0.5,-0.5(2)手工准备的节点信息文件node.in的数据为 1 0

10、.0 2.0 2 0.0 1.0 3 1.0 1.0 4 0. 0. 5 1.0 0. 6 2.0 0.(3)手工准备的单元信息文件element.in的数据为 1 2 3 3 0 0 0 0 1 1 1 1 0 1 2 4 5 5 0 0 0 0 1 1 1 1 0 2 5 3 2 2 0 0 0 0 1 1 1 1 0 3 3 5 6 6 0 0 0 0 1 1 1 1 0 4(4)源程序文件chengxu.for为: program fem2d dimension ijk_ele(500,3),x(500),y(500),ijk_u(50,3),p_ijk(50,3), &result_

11、n(500),ak(500,100) dimension sts_ele(500,3),sts_nd(500,3)open(4,file=basic.in) open(5,file=node.in)open(6,file=element.in)open(8,file=data.out)open(9,file=for_post.dat)read(4,*)id,n_ele,n_node,n_bc,n_loadif(id.eq.1)write(8,20)if(id.eq.2)write(8,25) 20format(/5x,=plane stress problem=) 25format(/5x,=

12、plane strain problem=)call read_in(id,n_ele,n_node,n_bc,n_band,n_load,pe,pr,pt, & ijk_ele,x,y,ijk_u,p_ijk)call band_k(n_dof,n_band,n_ele,ie,n_node, & ijk_ele,x,y,pe,pr,pt,ak) call form_p(n_ele,n_node,n_load,n_dof,ijk_ele,x,y,p_ijk, & result_n)call do_bc(n_bc,n_band,n_dof,ijk_u,ak,result_n)call solve

13、(n_node,n_dof,n_band,ak,result_n)call cal_sts(n_ele,n_node,n_dof,pe,pr,ijk_ele,x,y,result_n, & sts_ele,sts_nd)c to putout a data file write(9,70)real(n_node),real(n_ele) 70 format(2f9.4) write(9,71)(x(i),y(i),result_n(2*i-1),result_n(2*i), & sts_nd(i,1),sts_nd(i,2),sts_nd(i,3),i=1,n_node) 71 format(

14、7f9.4) write(9,72)(real(ijk_ele(i,1),real(ijk_ele(i,2), &real(ijk_ele(i,3),real(ijk_ele(i,3), &sts_ele(i,1),sts_ele(i,2),sts_ele(i,3),i=1, n_ele) 72format(7f9.4)c close(4)close(5)close(6)close(8)close(9) endc c to get the original data in order to model the problemsubroutine read_in(id,n_ele,n_node,

15、n_bc,n_band,n_load,pe,pr, &pt,ijk_ele,x,y,ijk_u,p_ijk) dimension ijk_ele(500,3),x(n_node),y(n_node),ijk_u(n_bc,3), &p_ijk(n_load,3),ne_ansys(n_ele,14)real nd_ansys(n_node,3)read(4,*)pe,pr,pt read(4,*)(ijk_u(i,j),j=1,3),i=1,n_bc)read(4,*)(p_ijk(i,j),j=1,3),i=1,n_load)read(5,*)(nd_ansys(i,j),j=1,3),i=

16、1,n_node)read(6,*)(ne_ansys(i,j),j=1,14),i=1,n_ele)do 10 i=1,n_nodex(i)=nd_ansys(i,2)y(i)=nd_ansys(i,3) 10 continue do 11 i=1,n_eledo 11 j=1,3 ijk_ele(i,j)=ne_ansys(i,j) 11 continue n_band=0do 20 ie=1,n_ele do 20 i=1,3 do 20 j=1,3 iw=iabs(ijk_ele(ie,i)-ijk_ele(ie,j) if(n_band.lt.iw)n_band=iw 20conti

17、nue n_band=(n_band+1)*2if(id.eq.1) then elsepe=pe/(1.0-pr*pr)pr=pr/(1.0-pr)end if return endcc to form the stiffness matrix of element subroutine form_ke(ie,n_node,n_ele,ijk_ele,x,y,pe,pr,pt,ake)dimension ijk_ele(500,3),x(n_node),y(n_node),bb(3,6),dd(3,3), &ake(6,6), ss(6,6)call cal_dd(pe,pr,dd)call

18、 cal_bb(ie,n_node,n_ele,ijk_ele,x,y,ae,bb)do 10 i=1,3 do 10 j=1,6 ss(i,j)=0.0 do 10 k=1,3 10 ss(i,j)=ss(i,j)+dd(i,k)*bb(k,j) do 20 i=1,6 do 20 j=1,6 ake(i,j)=0.0do 20 k=1,3 20 ake(i,j)=ake(i,j)+ss(k,i)*bb(k,j)*ae*pt return endcc to form banded global stiffness matrixsubroutine band_k(n_dof,n_band,n_

19、ele,ie,n_node,ijk_ele,x,y,pe, & pr,pt,ak) dimension ijk_ele(500,3),x(n_node),y(n_node),ake(6,6),ak(500,100) n_dof=2*n_node do 40 i=1,n_dof do 40 j=1,n_band 40 ak(i,j)=0 do 50 ie=1,n_ele call form_ke(ie,n_node,n_ele,ijk_ele,x,y,pe,pr,pt,ake) do 50 i=1,3 do 50 ii=1,2 ih=2*(i-1)+ii idh=2*(ijk_ele(ie,i)

20、-1)+ii do 50 j=1,3 do 50 jj=1,2 il=2*(j-1)+jj izl=2*(ijk_ele(ie,j)-1)+jj idl=izl-idh+1 if(idl.le.0) then else ak(idh,idl)=ak(idh,idl)+ake(ih,il) end if 50continuereturnendcc to calculate the area of element subroutine cal_area(ie,n_node,ijk_ele,x,y,ae)dimension ijk_ele(500,3),x(n_node),y(n_node)i=ij

21、k_ele(ie,1)j=ijk_ele(ie,2)k=ijk_ele(ie,3)xij=x(j)-x(i)yij=y(j)-y(i)xik=x(k)-x(i)yik=y(k)-y(i)ae=(xij*yik-xik*yij)/2.0returnendcc to calculate the elastic matrix of element subroutine cal_dd(pe,pr,dd)dimension dd(3,3)do 10 i=1,3 do 10 j=1,3 10 dd(i,j)=0.0 dd(1,1)=pe/(1.0-pr*pr)dd(1,2)=pe*pr/(1.0-pr*p

22、r)dd(2,1)=dd(1,2)dd(2,2)=dd(1,1)dd(3,3)=pe/(1.0+pr)*2.0)return endcc to calculate the strain-displacement matrix of element subroutine cal_bb(ie,n_node,n_ele,ijk_ele,x,y,ae,bb)dimension ijk_ele(500,3),x(n_node),y(n_node),bb(3,6)i=ijk_ele(ie,1)j=ijk_ele(ie,2)k=ijk_ele(ie,3)do 10 ii=1,3 do 10 jj=1,3 1

23、0 bb(ii,jj)=0.0 bb(1,1)=y(j)-y(k)bb(1,3)=y(k)-y(i) bb(1,5)=y(i)-y(j)bb(2,2)=x(k)-x(j)bb(2,4)=x(i)-x(k)bb(2,6)=x(j)-x(i)bb(3,1)=bb(2,2)bb(3,2)=bb(1,1)bb(3,3)=bb(2,4)bb(3,4)=bb(1,3)bb(3,5)=bb(2,6)bb(3,6)=bb(1,5)call cal_area(ie,n_node,ijk_ele,x,y,ae)do 20 i1=1,3 do 20 j1=1,6 20bb(i1,j1)=bb(i1,j1)/(2.0

24、*ae) return endcc to form the global load matrix subroutine form_p(n_ele,n_node,n_load,n_dof,ijk_ele,x,y,p_ijk, &result_n)dimension ijk_ele(500,3),x(n_node),y(n_node),p_ijk(n_load,3), &result_n(n_dof)do 10 i=1,n_dof 10 result_n(i)=0.0 do 20 i=1,n_loadii=p_ijk(i,1)result_n(2*ii-1)=p_ijk(i,2) 20result

25、_n(2*ii)=p_ijk(i,3) return endcc to deal with bc(u) (here only for fixed displacement) using 1-0 methodsubroutine do_bc(n_bc,n_band,n_dof,ijk_u,ak,result_n)dimension result_n(n_dof),ijk_u(n_bc,3),ak(500,100)do 30 i=1,n_bc ir=ijk_u(i,1) do 30 j=2,3 if(ijk_u(i,j).eq.0)then else ii=2*ir+j-3 ak(ii,1)=1.

26、0 result_n(ii)=0.0 do 10 jj=2,n_band 10 ak(ii,jj)=0.0 do 20 jj=2,ii 20 ak(ii-jj+1,jj)=0.0 end if 30 continue returnendc c to solve the banded fem equation by gauss eliminationsubroutine solve(n_node,n_dof,n_band,ak,result_n)dimension result_n(n_dof),ak(500,100)do 20 k=1,n_dof-1if(n_dof.gt.k+n_band-1

27、)im=k+n_band-1if(n_dof.le.k+n_band-1)im=n_dofdo 20 i=k+1,im l=i-k+1 c=ak(k,l)/ak(k,1) iw=n_band-l+1 do 10 j=1,iw m=j+i-k 10 ak(i,j)=ak(i,j)-c*ak(k,m) 20 result_n(i)=result_n(i)-c*result_n(k) result_n(n_dof)=result_n(n_dof)/ak(n_dof,1)do 40 i1=1,n_dof-1 i=n_dof-i1 if(n_band.gt.n_dof-i-1)jq=n_dof-i+1

28、if(n_band.le.n_dof-i-1)jq=n_band do 30 j=2,jq k=j+i-1 30 result_n(i)=result_n(i)-ak(i,j)*result_n(k) 40 result_n(i)=result_n(i)/ak(i,1) write(8,50) 50format(/12x,* * * * * results by fem2d * * * * *,/8x, &-displacement of node-/5x,node no,8x,x-disp,8x,y-disp)do 60 i=1,n_node 60 write(8,70) i,result_

29、n(2*i-1),result_n(2*i) 70 format(8x,i5,7x,2e15.6) returnendcc calculate the stress components of element and nodesubroutine cal_sts(n_ele,n_node,n_dof,pe,pr,ijk_ele,x,y,result_n, &sts_ele,sts_nd)dimension ijk_ele(500,3),x(n_node),y(n_node),dd(3,3),bb(3,6), &ss(3,6),result_n(n_dof),disp_e(6) dimensio

30、n sts_ele(500,3),sts_nd(500,3)write(8,10) 10 format(/8x,-stresses of element-) call cal_dd(pe,pr,dd) do 50 ie=1,n_ele call cal_bb(ie,n_node,n_ele,ijk_ele,x,y,ae,bb) do 20 i=1,3 do 20 j=1,6 ss(i,j)=0.0 do 20 k=1,3 20 ss(i,j)=ss(i,j)+dd(i,k)*bb(k,j) do 30 i=1,3 do 30 j=1,2 ih=2*(i-1)+j iw=2*(ijk_ele(i

31、e,i)-1)+j 30 disp_e(ih)=result_n(iw) stx=0 sty=0txy=0 do 40 j=1,6 stx=stx+ss(1,j)*disp_e(j) sty=sty+ss(2,j)*disp_e(j) 40 txy=txy+ss(3,j)*disp_e(j) sts_ele(ie,1)=stx sts_ele(ie,2)=stysts_ele(ie,3)=txy 50 write(8,60)ie,stx,sty,txy 60 format(1x,element no.=,i5/18x,stx=,e12.6,5x,sty=, &e12.6,2x,txy=,e12

32、.6)c the following part is to calculate stress components of nodewrite(8,55) 55 format(/8x,-stresses of node-) do 90 i=1,n_nodea=0.b=0.c=0.ii=0do 70 k=1,n_eledo 70 j=1,3if(ijk_ele(k,j).eq.i) then ii=ii+1 a=a+sts_ele(k,1) b=b+sts_ele(k,2)c=c+sts_ele(k,3)end if 70 continue sts_nd(i,1)=a/iists_nd(i,2)=

33、b/iists_nd(i,3)=c/iiwrite(8,75)i,sts_nd(i,1),sts_nd(i,2),sts_nd(i,3) 75 format(1x,node no.=,i5/18x,stx=,e12.6,5x,sty=, &e12.6,2x,txy=,e12.6) 90 continue return endc fem2d programm end算例结果:chengxu.for所输出的数据文件data.out数据内容如下: =plane stress problem= * * * * * results by fem2d * * * * * -displacement of node- node no x-disp y-disp 1 .000000e+00 -.52

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论