基于Matlab语言的按平面三角形单元划分的结构有限元程序设计_第1页
基于Matlab语言的按平面三角形单元划分的结构有限元程序设计_第2页
已阅读5页,还剩15页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、基于Matlab语言的按平面三角形单元划分的结构有限元程序设计专业:建筑与土木工程班级:建工研12-2名:学号:基于Matlab语言的按平面三角形单元划分结构有限元程序设计一、有限单元发及Matlab语言概述1.有限单元法随着现代工业、生产技术的发展,不断要求设计高质量、高水平的大型、复杂和精密的机械及工程结构。为此目的,人们必须预先通过有效的计算手段,确切的预测即将诞生的机械和工程结构,在未来工作时所发生的应力、应变和位移因此,需要寻求一种简单而又精确的数值分析方法。有限单元法正是适应这种要求而产生和发展起来的一种十分有效的数值计算方法。有限元法把一个复杂的结构分解成相对简单的“单元”,各单

2、元之间通过结点相互连接。单元内的物理量由单元结点上的物理量按一定的假设内插得到,这样就把一个复杂结构从无限多个自由度简化为有限个单元组成的结构。我们只要分析每个单元的力学特性,然后按照有限元法的规则把这些单元“拼装”成整体,就能够得到整体结构的力学特性。有限单元法基本步骤如下:(1) 结构离散:结构离散就是建立结构的有限元模型,又称为网格划分或单元划分,即将结构离散为由有限个单元组成的有限元模型。在该步骤中,需要根据结构的几何特性、载荷情况等确定单元体内任意一点的位移插值函数。(2) 单元分析:根据弹性力学的几何方程以及物理方程确定单元的刚度矩阵。(3) 整体分析:把各个单元按原来的结构重新连

3、接起来,并在单元刚度矩阵的基础上确定结构的总刚度矩阵,形成如下式所示的整体有限元线性方程:f=k%式中,是载荷矩阵,Ik是整体结构的刚度矩阵,£是节点位移矩阵。(4) 载荷移置:根据静力等效原理,将载荷移置到相应的节点上,形成节点载荷矩阵。(5) 边界条件处理:对式所示的有限元线性方程进行边界条件处理。(6) 求解线性方程:求解式所示的有限元线性方程,得到节点的位移。在该步骤中,若有限元模型的节点越多,则线性方程的数量就越多,随之有限元分析的计算量也将越大。(7) 求解单元应力及应变根据求出的节点位移求解单元的应力和应变。(8) 结果处理与显示进入有限元分析的后处理部分,对计算出来的

4、结果进行加工处理,并以各种形式将计算结果显示出。2.Matlab简介在用有限元法进行结构分析时,将会遇到大量的数值计算,因而在实用上是一定要借助于计算机和有限元程序,才能完成这些复杂而繁重的数值计算工作。而Matlab是当今国际科学界最具影响力和活力的软件。它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它提供了强大的科学计算,灵活的程序设计流程,高质量的图形可视化与界面设计,便捷的与其他程序和语言接口的功能。Matlab在各国高校与研究单位起着重大的作用。“工欲善其事,必先利其器”。如果有一种十分有效的工具能解决在教学与研究中遇到的问题,那么Matlab语言正是这样的一种工具。它可以

5、将使用者从繁琐、无谓的底层编程中解放出来,把有限的宝贵时间更多地花在解决问题中,这样无疑会提高工作效率。目前,Matlab已经成为国际上最流行的科学与工程计算的软件工具,现在的Matlab已经不仅仅是一个“矩阵实验室”了,它已经成为了一种具有广泛应用前景的全新的计算机高级编程语言了,有人称它为“第四代”计算机语言,它在国内外高校和研究部门正扮演着重要的角色。Matlab语言的功能也越来越强大,不断适应新的要求提出新的解决方法。可以预见,在科学运算、自动控制与科学绘图领域Matlab语言将长期保持其独一无二的地位。为此,本例采用Matlab语言编程,以利用其快捷强大的矩阵数值计算功能。二、问题描

6、述一矩形薄板,一边固定,承受150kN集中荷载,结构简图及按平面三角形单材料参数:弹性模量E=2x108KN/m2;泊松比:卩=0.2;薄板厚度2mm。在本例中,所取结构模型及数据主要用于程序设计理论分析,与工程实际无关。F=150kN1my1m三、参数输入:单元个数NELEM=4节点个数NNODE=6受约束边界点数NVFIX=2节点荷载个数NFORCE=1弹性模量YOUNG=2e8泊松比POISS=0.2厚度THICK=0.002单元节点编码数组LNODS=64561225节点坐标数组COORD=节点力数组FORCE=40-150约束信息数组FIXED=以上数值数据为程序运行前输入的初始数据

7、,存为“471220580txt”文本格式,同时必须放在Matlab工作目录下,路径不对程序不能自动读取指定初始文件,运行出错。初始数据文本文件输入格式如下图:Matlab语言程序源代码:1.程序中变量说明NNODE单元节点数NPION总吉点数NELEM单元数NVFIX受约束边界点数FIXED约束信息数组NFORCE节点力数FORCE节点力数组COORD吉构节点坐标数组LNODS单元定义数组YOUNG弹性模量POISS泊松比THICK厚度2.Matlab语言程序代码B单元应变矩阵(3*6)D单元弹性矩阵(3*3)S单元应力矩阵(3*6)A单元面积ESTIF单元刚度矩阵ASTIF总体刚度矩阵AS

8、LOD总体荷载向量ASDISP节点位移向量ELEDISP单元节点位移向量STRESS单元应力FP1数据文件指针%初始化及数据调用formatshorteclearFP1=fopen('471220580.txt',NELEM=fscanf(FP1,'%d',1),NPION=fscanf(FP1,'%d',1),NVFIX=fscanf(FP1,'%d',1)NFORCE=fscanf(FP1,'%d',1),YOUNG=fscanf(FP1,'%e',1),POISS=fscanf(FP1,

9、9;%f',1),THICK=fscanf(FP1,'%f',1)LNODS=fscanf(FP1,'%d',3,NELEM)'COORD=fscanf(FP1,'%f',2,NPION)'FORCE=fscanf(FP1,'%f',3,NFORCE)'FIXED=fscanf(FP1,'%d',3,NVFIX)'rt')%设定输出类型%清除内存变量%打开输入数据文件,读入控制数据%单元个数(单元编码总数)%结点个数(结点编码总数)%受约束边界点数%结点荷载个数%弹性

10、模量%泊松比%厚度%单元定义数组(单元结点号)%相应为单元结点号(编码)、按逆时针顺序输入%结点坐标数组%坐标:x,y坐标(共NPOIN组)雉吉点力数组(受力结点编号,x方向,y方向)%约束信息(约束点,x约束,y约束)%有约束为1,无约束为0%生成单元刚度矩阵并组成总体刚度矩阵ASTIF=zeros(2*NPION,2*NPION);%生成特定大小总体刚度矩阵并置0fori=1:NELEM%生成弹性矩阵DD=1POISS0;POISS10;00(1-P0ISS)/2*Y0UNG/(1-P0ISS八2)%计算当前单元的面积AA=det(1COORD(LNODS(i,1),1)COORD(LNO

11、DS(i,1),2);1COORD(LNODS(i,2),1)COORD(LNODS(i,2),2);1COORD(LNODS(i,3),1)COORD(LNODS(i,3),2)/2I生成应变矩阵Bforj=0:2b(j+1)=COORD(LNODS(i,(rem(j+1),3)+1),2)-COORD(LNODS(i,(rem(j+2),3)+1),2);c(j+1)=-COORD(LNODS(i,(rem(j+1),3)+1),1)+COORD(LNODS(i,(rem(j+2),3)+1),1);endB=b(1)0b(2)0b(3)0;.0c(1)0c(2)0c(3);.c(1)b(

12、1)c(2)b(2)c(3)b(3)/(2*A);B1(:,:,i)=B;%求应力矩阵S=D*BS=D*B;ESTIF=B'*S*THICK*A;%求解单元刚度矩阵a=LNODS(i,:);%临时向量,用来记录当前单元的节点编号forj=1:3fork=1:3ASTIF(a(j)*2-1):a(j)*2,(a(k)*2-1):a(k)*2)=ASTIF(a(j)*2-1):a(j)*2,(a(k)*2-1):a(k)*2)+ESTIF(j*2-1:j*2,k*2-1:k*2);%根据节点编号对应关系将单元刚度分块叠加到总刚%度矩阵中endendend%将约束信息加入总体刚度矩阵(对角元

13、素改一法)fori=1:NVFIXifFIXED(i,2)=1ASTIF(:,(FIXED(i,1)*2-1)=0;%一列为零ASTIF(FIXED(i,1)*2-1),:)=0;%一行为零ASTIF(FIXED(i,1)*2-1),(FIXED(i,1)*2-1)=1;%对角元素为1endifFIXED(i,3)=1ASTIF(:,FIXED(i,1)*2)=0;%一列为零ASTIF(FIXED(i,1)*2,:)=0;%一行为零ASTIF(FIXED(i,1)*2,FIXED(i,1)*2)=1;%对角元素为1endend%生成荷载向量ASLOD(1:2*NPION)=0;%总体荷载向量置

14、零fori=1:NFORCEASLOD(FORCE(i,1)*2-1):FORCE(i,1)*2)=FORCE(i,2:3);end%求解内力ASDISP=ASTIFASLOD'%计算节点位移向量ELEDISP(1:6)=0;%当前单元节点位移向量fori=1:NELEMforj=1:3ELEDISP(j*2-1:j*2)=ASDISP(LNODS(i,j)*2-1:LNODS(i,j)*2);%取出当前单元的节点位移向量endiSTRESS=D*B1(:,:,i)*ELEDISP'%求内力endfclose(FP1);%关闭数据文件五、程序运行结果NELEM=4NPION=6

15、NVFIX=2NFORCE=1YOUNG=200000000POISS=2.0000e-001THICK=2.0000e-003LNODS=1 262 342425COORD=001020211101FORCE=40-150FIXED=114.1667e+0072.0833e+0081161D=2.0833e+0084.1667e+007008.3333e+007A=5.0000e-001D=2.0833e+0084.1667e+00704.1667e+0072.0833e+0080008.3333e+007A=5.0000e-001D=2.0833e+0084.1667e+00704.166

16、7e+0072.0833e+0080008.3333e+007A=5.0000e-001D=2.0833e+0084.1667e+00704.1667e+0072.0833e+0080008.3333e+007A=5.0000e-001ASDISP=00-8.0607e-004-1.5848e-0031.0281e003-4.4727e-0031.1937e-003-4.6947e-0038.6670e-004-1.8880e-00300(说明:以上12个ASDISP输出结果数据表示节点位移向量,即各节点分别在X,Y方向上产生的位移。)i=1STRESS=-1.6793e+005-3.3586

17、e+004-1.3207e+005i=2STRESS=-5.5503e+004-5.5503e+004-5.5503e+004i=3 STRESS=5.5503e+004-4.9526e+004-9.4497e+004i=4 STRESS=1.6793e+005-2.7040e+004-1.7932e+004(说明:以上四组STRESS输出结果数据表示单元应力SX,SY,SXY,i为单元号。六、ANSYS建模比较分析利用ANSYS有限元分析软件,完全按照前面Matlab程序设计的各项条件参数以及单元划分方式建立ANSYS模型,其求解结果与以上程序计算结果比较,验证程序是否正确。ANSYS模型节

18、点单元如下图所示:AN工亠_c.Ci;r:m-.:1AN心一_:丄一;":":-:'.:1ANSYS模型求解变形图如下所示:I.:.::.:':3TEE1EHX=.004644:i:r.-HIAHSYSBul±ipfiijrxiK:3£Diilitjrlenu(alOl.)AN-二2013'.:3-:::II:.:._.-.SI.=1-'丁.UYDMK=.D04a44-.:i-7'-.0-.M.-II-0ANSYS求解节点位移结果列表显示如下:(单位:m)PRINTUNODALSOLUTIONPERNODE*P0S

19、T1NODALDEGREEOFFREEDOMLISTING*OFFREEDOMRESULTSAREINTHEGLOBALCOORDINATETHEFOLLOWINGDEGREESYSTEMNODEUXUYUZUSUM10.00000.00000.00000.00002-0.80607E-03-0.15848E-020.00000.17780E-023-0.10281E-02-0.44727E-020.00000.45893E-0240.11937E-02-0.46947E-020.00000.48441E-0250.86670E-03-0.18880E-020.00000.20774E-026

20、0.00000.00000.00000.0000MAXIMUMABSOLUTEVALUESNODE4404VALUE0.11937E-02-0.46947E-020.00000.48441E-02FileSeiectListPlcii:PloiCirlsWorkPlaneParametersMacroMemCiTlsHelp“1盘"凹m2進ANSTSToolbacr:AVEIEkP:111FJU::'I1UH:H111AKSYSMainMenuQpevsolCobhand©Preferencea Preprocesaor Solution GeneralPoatpr

21、ocData&Fl1eOpts圉Re占alt召Swiiuazy ReadResults0FailureCriteria PlotResultsElListResultsDetailedSmuniary固11ezationSminingBPercentErrorESuiri:亡di曰垃口宕SEIcnieritSolutionBSuperelcmDOFHSpotfficldSolutioiE3RcactiouiSdIoBM£?dlL口a.d.s*13E1EmTabl皀Data13VectorData13FlhItemsGJLinearited.StrsEEQueryResults

22、QOptionsforOutpERtmudtmViiewerEWritePGRFileFRIO0NOBALSOUJIIOhlPERNODEWPOST1NOPALPEGKEEOPFREEDOMLISTING*TllfE-1,0000MADCASE-B0THEFOLLOWINGPEGKEEOFPFIEEDOMRESULTSAREINTHECLOBALMODEUVUZU£UK10.00000-00000.00002-0-B0607E-03-01曲8E-他0.0000.l?«0E-023-0.102S1E-02-0.44727E-030.00000.45893E-O240.1153

23、7E-02-0.4G947E-e20.00000-484411-0250.85670E-03-0.1SS80E-020.0000fla2ff?74E-02&0.00000.0000.00000aGGGGhamuhABSOLUTEUALUESNODE4404UALUE0-115i37E-02-0_46S47E-020-00000B4«44±E-fl2STTELSUBSIEP-QOORmiHRTESSTEWANSYS求解单元应力结果列表显示如下:(单位:KN/m2)PRINTSELEMENTSOLUTIONPERELEMENT*POST1ELEMENTNODALSTRE

24、SSLISTING*THEFOLLOWINGX,Y,ZVALUESAREINGLOBALCOORDINATESELEMENT=1PLANE182NODESXSYSZSXYSYZ1-0.16793E+06-33586.0.0000-0.13207E+060.00002-0.16793E+06-33586.0.0000-0.13207E+060.00006-0.16793E+06-33586.0.0000-0.13207E+060.0000ELEMENT=2PLANE182NODESXSYSZSXYSYZ2-55503.-55503.0.0000-55503.0.00003-55503.-5550

25、3.0.0000-55503.0.00004-55503.-55503.0.0000-55503.0.0000ELEMENT=3PLANE182NODESXSYSZSXYSYZ255503.-49526.0.0000-94497.0.0000455503.-49526.0.0000-94497.0.0000555503.-49526.0.0000-94497.0.0000ELEMENT=4PLANE182NODESXSYSZSXYSYZ20.16793E+06-27040.0.0000-17932.0.00005 0.16793E+06-27040.6 0.16793E+06-27040.0.

26、00000.0000-17932.-17932.0.00000.0000结论通过比较Matlab语言设计程序运行结果和ANSYS建模分析结果可知,两种方式算出的结果完全一致,说程序设计正确。所以本程序适用于按三角形单元划分的平面结构有限元分析。formatshorteclearFP1=fopen('LinearTriangleElementofThinplate.txt','rt');NELEM=fscanf(FP1,'%d',1)NPION=fscanf(FP1,'%d',1)NVFIX=fscanf(FP1,'%d&#

27、39;,1)NFORCE=fscanf(FP1,'%d',1)YOUNG=fscanf(FP1,'%e',1)POISS=fscanf(FP1,'%f',1)THICK=fscanf(FP1,'%f',1)LNODS=fscanf(FP1,'%d',3,NELEM)COORD=fscanf(FP1,'%f',2,NPION)FORCE=fscanf(FP1,'%f',3,NFORCE)FIXED=fscanf(FP1,'%d',3,NVFIX)ASTIF=zeros(

28、2*NPION,2*NPION);%生成特定大小总体刚度矩阵并置0fori=1:NELEM%生成弹性矩阵DD=Y0UNG/(1P0ISS八2)*1POISS0;POISS10;00(1-P0ISS)/2%计算当前单元的面积AA=det(1C00RD(LN0DS(i,1),1)C00RD(LN0DS(i,1),2);1C00RD(LN0DS(i,2),1)C00RD(LN0DS(i,2),2);1C00RD(LN0DS(i,3),1)C00RD(LN0DS(i,3),2)/2%生成应变矩阵Bforj=0:2b(j+1)=C00RD(LN0DS(i,(rem(j+1),3)+1),2)-C00RD

29、(LN0DS(i,(rem(j+2),3)+1),2)c(j+1)=-C00RD(LN0DS(i,(rem(j+1),3)+1),1)+C00RD(LN0DS(i,(rem(j+2),3)+1),1);endB=b(1)0b(2)0b(3)0;.0c(1)0c(2)0c(3);.c(1)b(1)c(2)b(2)c(3)b(3)/(2*A);B1(:,:,i)=B;%求应力矩阵S=D*BS=D*B;ESTIF=B'*S*THICK*A;a=LN0DS(i,:);forj=1:3fork=1:3ASTIF(a(j)*2-1):a(j)*2,(a(k)*2-1):a(k)*2)=ASTIF(

30、a(j)*2-1):a(j)*2,(a(k)*2-1):a(k)*2)+ESTIF(j*2-1:j*2,k*2-1:k*2);endendend%将约束信息加入总体刚度矩阵fori=1:NVFIXifFIXED(i,2)=1ASTIF(:,(FIXED(i,1)*2-1)=0;ASTIF(FIXED(i,1)*2-1),:)=0;ASTIF(FIXED(i,1)*2-1),(FIXED(i,1)*2-1)=1;endifFIXED(i,3)=1ASTIF(:,FIXED(i,1)*2)=0;ASTIF(FIXED(i,1)*2,:)=0;ASTIF(FIXED(i,1)*2,FIXED(i,1

31、)*2)=1;endend%生成荷载向量ASLOD(1:2*NPION)=0;fori=1:NFORCEASLOD(FORCE(i,1)*2-1):FORCE(i,1)*2)=FORCE(i,2:3)end%求解内力ASDISP=ASTIFASLOD'ELEDISP(1:6)=0;fori=1:NELEMforj=1:3ELEDISP(j*2-1:j*2)=ASDISP(LNODS(i,j)*2-1:LNODS(i,j)*2);endiSTRESS=D*B1(:,:,i)*ELEDISP'endfclose(FP1);formatshorteclearFP1=fopen(

32、9;LinearTriangleElementofThinplate.txt','rt');NELEM=fscanf(FP1,'%d',1)NPION=fscanf(FP1,'%d',1)NVFIX=fscanf(FP1,'%d',1)NFORCE=fscanf(FP1,'%d',1)YOUNG=fscanf(FP1,'%e',1)POISS=fscanf(FP1,'%f',1)THICK=fscanf(FP1,'%f',1)LNODS=fscanf(FP1,'%d',NELEM,3)COORD=fscanf(FP1,'%f',NPION,2)FORCE=fscanf(FP1,'%f',NFORCE,3)FIXED=fscanf(FP1,'%d',NVFIX,3)ASTIF=zeros(2*NPION,2*NPION);%生成特定大小总体刚度矩阵并置0fori=1:NELEM%生成弹性矩阵DD=Y0UNG/(1P0ISS八2)*1POISS0

温馨提示

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

评论

0/150

提交评论