ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:49.43KB ,
资源ID:9577437      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9577437.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(平面三角形单元常应变单元matlab程序地编制.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

平面三角形单元常应变单元matlab程序地编制.docx

1、平面三角形单元常应变单元matlab程序地编制三角形常应变单元程序的编制与使用有限元法是求解微分方程边值问题的一种通用数值方法,该方法是一种基于变分法(或变分里兹法)而发展起来的求解微分方程的数值计算方法,以计算机为手段,采用分片近似,进而逼近整体的研究思想求解物理问题。有限元分析的基本步骤可归纳为三大步:结构离散、单元分析和整体分析。结束对于平面问题,结构离散常用的网格形状有三角形、矩形、任意四边形,以三个顶点为节点的三角形单元是最简单的平面单元,它较矩形或四边形对曲边边界有更好的适应性,而矩形或四边形单元较三节点三角形有更高的计算精度。Matlab语言是进行矩阵运算的强大工具,因此,用Ma

2、tlab语言编写有限元中平面问题的程序有优越性。本章将详细介绍如何利用Matlab语言编制三角形常应变单元的计算程序,程序流程图见图1。有限元法中三节点三角形分析结构的步骤如下:1) 整理原始数据,如材料性质、荷载条件、约束条件等,离散结构并进行单元编码、结点编码、结点位移编码、选取坐标系。2) 单元分析,建立单元刚度矩阵。3) 整体分析,建立总刚矩阵。4) 建立整体结构的等效节点荷载和总荷载矩阵5) 边界条件处理。6) 解方程,求出节点位移。7) 求出各单元的单元应力。8) 计算结果整理。计算结果整理包括位移和应力两个方面;位移计算结果一般不需要特别的处理,利用计算出的节点位移分量,就可画出

3、结构任意方向的位移云图;而应力解的图1 程序流程图误差表现在单元内部不满足平衡方程,单元与单元边界处应力一般不连续,在边界上应力解一般与力的边界条件不相符合。1.1 程序说明%*% 三角形常应变单元求解结构主程序%* 功能:运用有限元法中三角形常应变单元解平面问题的计算主程序。 基本思想:单元结点按右手法则顺序编号。 荷载类型:可计算结点荷载。 说明:主程序的作用是通过赋值语句、读取和写入文件、函数调用等完成算法的全过程,即实现程序流程图的程序表达。%-1 程序准备 format short e %设定输出类型 clear all %清除所有已定义变量clc %清屏 说明:format sho

4、rt e 设定计算过程中显示在屏幕上的数字类型为短格式、科学计数法; clear all 清除所有已定义变量,目的是在本程序的运行过程中,不会发生变量名相同等可能使计算出错的情况; clc 清屏,使屏幕在本程序运行开始时%-2 全局变量定义global NNODE NPION NELEM NVFIX NFORCE COORD LNODS YOUNG POISS THICKglobal FORCE FIXED global BMATX DMATX SMATX AREA global ASTIF ASLOD ASDISPglobal FP1 说明:NNODE单元结点数,NPION总结点数, NEL

5、EM单元数,NVFIX受约束边界点数,NFORCE结点力数,COORD结构结点坐标数组,LNODS单元定义数组,YOUNG弹性模量,POISS泊松比,THICK厚度 FORCE 节点力数组(n,3) n:受力节点数目,(n,1):作用点,(n,2):x方向,(n,3):y方向; FIXED 约束信息数组(n,3) n:受约束节点数目, (n,1):约束点 (n,2)与(n,3)分别为约束点x方向和y方向的约束情况,受约束为1否则为0 BMATX单元应变矩阵(3*6), DMATX单元弹性矩阵(3*3),SMATX单元应力矩阵(3*6),AREA单元面积 ASTIF总体刚度矩阵,ASLOD总体荷

6、载向量,ASDISP结点位移向量FP1数据文件指针3 打开文件 FP1=fopen(input.txt,rt); %打开输入数据文件 存放初始数据 说明:FP1=fopen(input.txt,rt); 打开已存在的输入数据文件input.txt,且设置其为只读格式,使程序在执行过程中不能改变输入文件中的数值,并用文件句柄FP1来执行FP2=fopen(output.txt,wt); 打开输出数据文件,该文件不存在时,通过此命令创建新文件,该文件存在时则将原有内容全部删除。该文件设置为可写格式,可在程序执行过程中向输出文件写入数据。%-4 读入程序控制信息NPION=fscanf(FP1,%d

7、,1) %结点个数(结点编码总数)NELEM=fscanf(FP1,%d,1) %单元个数(单元编码总数)NFORCE=fscanf(FP1,%d,1) 结点荷载个数NVFIX=fscanf(FP1,%d,1) YOUNG=fscanf(FP1,%e,1) 弹性模量POISS=fscanf(FP1,%f,1) 泊松比 THICK=fscanf(FP1,%d,1) %厚度LNODS=fscanf(FP1,%d,3,NELEM) %单元定义数组(单元结点号) 说明:建立LNODS矩阵,该矩阵指出了每一单元的连接信息。矩阵的每一行针对每一单元,共计 NELEM;每一列相应为单元结点号(编码)、按逆时

8、针顺序输入。命令中,3,NELEM表示读取NELEM行3列数据赋值给LNODS矩阵。显然,LNODS(i,1:3)依次表示i单元的i,j,k结点号。COORD=fscanf(FP1,%f,2,NPION) %结点坐标数组 说明:建立COORD矩阵,该矩阵用来存储各结点x,y方向的坐标值。从FP1文件中读取全部结点个数NPOIN的坐标值,从1开始按顺序读取。COORD(i,1:2)表示第i个结点的x,y坐标。FORCE=fscanf(FP1,%f,3,NFORCE) %结点力数组 说明: (n,3) n:受力结点数目,(n,1):作用点,(n,2):x方向,(n,3):y方向FIXED=fsca

9、nf(FP1,%d,3,inf) %约束信息数组 说明: (n,3) n:受约束节点数目, (n,1):约束点 (n,2)与(n,3)分别为约束点x方向和y方向的约束情况,受约束为1否则为0 总体说明:从输入文件FP1中读入结点个数,单元个数,结点荷载个数,受约束边界点数,弹性模量,泊松比,厚度,单元定义数组,结点坐标数组,结点力数组,约束信息数组;程序中弹性模量仅输入了一个值,表明本程序仅能求解一种材料构成的结构,如:钢筋混凝土结构、钢结构,不能求解钢筋混凝土钢组合结构。infinite采用了命令fscanf,其中:%d表示读入整数格式,%f表示读入浮点数;1表示读取1个数,A,B形式表示读

10、A行B列数组,A,B表示将A,B转置,inf表示正无穷。%-5 调用子程生成单刚,组成总刚并加入约束信息 ASSEMBLE()%-6 调用子程生成荷载向量 FORMLOAD()%-7 计算结点位移向量 ASDISP=ASTIFASLOD%-8调用子程计算单元应力 WRITESTRESS()%*9 关闭输出数据文件 fclose(FP2);%*读取ASSEMBLE 子程%*function ASSEMBLE()% 所引用的全局变量:global NPION NELEM NVFIX LNODS ASTIF THICK global BMATX SMATX AREA FIXED%- -% 计算单刚并

11、生成总刚 ASTIF(1:2*NPION,1:2*NPION)=0; %张成特定大小总刚矩阵并置0 说明:Array stiffness建立单元刚度矩阵ASTIF,该矩阵的行列数均为2*NPION ,NPION表示结点数,每个结点有两个方向的力和位移。%- for i=1:NELEM FORMSMATX(i) %调用应力子程序 ESTIF=BMATX*SMATX*THICK*AREA; %求解单元刚度矩阵 a=LNODS(i,:); %临时向量,用来记录当前单元的节点编号 for j=1:3 for k=1:3ASTIF(a(j)*2-1):a(j)*2,(a(k)*2-1):a(k)*2)=

12、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); %跟据节点编号对应关系将单元刚度分块叠加到总刚矩阵中 end end end 说明:FORMSMATX(i)调用应力子程序,提取i单元的应力矩阵SMATX;a=LNODS(i,:)记录i单元的三个结点编号;forend循环语句表示行从1到3循环,列从1到3循环,将单刚中的元素叠加至总刚中:ASTIF(a(j)*2-1):a(j)*2,(a(k)*2-1):a(k)*2)表示总刚中第a(j)*2-1到:a(j)*2行,第a(k)*2-1到a(k)*2列的元素

13、由单刚中第j*2-1到j*2行,第k*2-1到k*2列的元素叠加而得,a(j)*2即将单元中的位移编码对应到整体的位移编码。%-%将约束信息加入总刚(置0置1法) NUM=1; %计数器(当前已分析的节点数)NVFIX:受约束边界点数 i=0; %计数器(当前已处理的约束数) tmp(NVFIX)=0; %临时存被约束的序号 while iNVFIX for j=-1:0 if FIXED(NUM,j+3)=1 %若发现约束temporary i=i+1; %计数器自增 tmp(i)=FIXED(NUM)*2+j; %求约束序号 end end NUM=NUM+1; end 说明: tmp(N

14、VFIX)=0,形成一个元素值均为0的一行,NVFIX列的行向量,执行while语句,首先判断i是否小于控制数据NVFIX,若小于则往下进行,若不小于则退出。执行for语句,FIXED(NUM,j+3)表示约束信息数组中第NUM行,第j+3列的元素,j从-1到0,即j+3表示2到3列,即约束信息数组中描述结点x和y方向受约束的情况,判断FIXED(NUM,j+3)若等于1,则约束数自增,若不等于1则跳出。FIXED(NUM)表示FIXED(NUM,1),tmp(i)=FIXED(NUM)*2+j计算整体约束序号,将序号放入tmp行向量中的i列。%- for i=1:NVFIX ASTIF(1:

15、2*NPION,tmp(i)=0; %将一约束序号处的总刚列向量清0 ASTIF(tmp(i),1:2*NPION)=0; %.将一约束序号处的总刚行向量清0 ASTIF(tmp(i),tmp(i)=1; %将行列交叉处的元素置为1 end 说明:后处理法中置0置1法,设(包括),则将总刚中的主元素K jj换为1,j行和j列的其他元素均改为零。%*% 读取FORMSMATX子程%* function FORMSMATX(ELEMENT) %计算应力矩阵 %引用所需的全局变量 global NPION NELEM COORD LNODS YOUNG POISS global BMATX DMAT

16、X SMATX AREA%- %生成弹性矩阵D a=YOUNG/(1-POISS2); DMATX(1,1)=1*a;DMATX(1,2)=POISS*a;DMATX(2,1)=POISS*a;DMATX(2,2)=1*a;DMATX(3,3)=(1-POISS)*a/2; 说明: 平面应力问题的弹性矩阵,其中,E为弹性模量,为泊松比。%- i=ELEMENT; %i为当前所计算的单元号 %计算当前单元的面积 AREA=det(1 COORD(LNODS(i,1),1) COORD(LNODS(i,1),2);. 1 COORD(LNODS(i,2),1) COORD(LNODS(i,2),2

17、);. 1 COORD(LNODS(i,3),1) COORD(LNODS(i,3),2);)/2; 说明:det表示求矩阵行列式的值,其中分别表示一个三角形单元的三个节点坐标。MATLAB中若一行中无法写下一个完整的命令,则可以在行尾加入3个连续的英文句号,表示命令余下的部分在下一行出现。%- %生成应变矩阵B for j=0:2 b(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,(r

18、em(j+2),3)+1),1); end BMATX=b(1) 0 b(2) 0 b(3) 0;. 0 c(1) 0 c(2) 0 c(3);. c(1) b(1) c(2) b(2) c(3) b(3)/(2*AREA); 说明:应变矩阵rem表示求余函数,rem(x,y)命令返回的是x-n.*y,当y0时,n=fix(x./y),其中fix为最近的整数取整。%- SMATX=DMATX*BMATX; %求应力矩阵S=D*B%*% 读取FORMLOAD子程%* function FORMLOAD() %本子程生成荷载向量%-%所需引用的全局变量global ASLOD NPION NFOR

19、CE FORCE%-ASLOD(1:2*NPION)=0; %张成特定大小的0向量 说明:ASLOD为总体荷载向量,每个结点有x,y两个方向的结点力。%- for i=1:NFORCE ASLOD(FORCE(i,1)*2-1):FORCE(i,1)*2)=FORCE(i,2:3); end 说明:FORCE(i,1)为作用点,FORCE(i,2:3)为x,y方向的结点力。%-%将有约束处的荷载置为0 NUM=1; i=0; tmp(NVFIX)=0; while iNVFIX for j=-1:0 if FIXED(NUM,j+3)=1 i=i+1; tmp(i)=FIXED(NUM)*2+

20、j; end end NUM=NUM+1; end for i=1:NVFIX ASLOD(tmp(i)=0; end 说明:置0置1法,同上。%*ASDISP=ASTIFASLOD %计算结点位移向量%*% 读取WRITESTRESS子程%* function WRITESTRESS()%求解内力,即两个方向的正应力与一个剪应力()%- %所引用的全局变量 global NELEM NPION SMATX ASDISP LNODS%-ELEDISP(1:6)=0; %当前单元的结点位移向量 说明:ELEDIS为单元的结点位移%- for i=1:NELEM for j=1:3 ELEDISP(j*2-1:j*2)=ASDISP(LNODS(i,j)*2-1:LNODS(i,j)*2); end FORMSMATX(i) % %调用子程求应力矩阵 i STRESS=SMATX*ELEDISP %求内力 end 说明:通过循环,依次从结构位移列阵中对号,赋值给第i个单元的单元位移向量ELEDISP。%- 1.2 程序应用举例【例1】利用三角形

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1