有限元大作业matlab课程设计例子.docx
《有限元大作业matlab课程设计例子.docx》由会员分享,可在线阅读,更多相关《有限元大作业matlab课程设计例子.docx(17页珍藏版)》请在三一办公上搜索。
1、有限元大作业matlab课程设计例子有 限 元 大 作 业 程 序 设 学校:天津大学 院系:建筑工程与力学学院 专业:01级工程力学 姓名:刘秀 学号: 指导老师: 计 连续体平面问题的有限元程序分析 题目: 如图所示的正方形薄板四周受均匀载荷的作用,该结构在边界上受正向分布压力,p=1kNm,同时在沿对角线y轴上受一对集中压力,载荷为2KN,若取板厚t=1,泊松比v=0。 2kN 1kN/m 2kN 分析过程: 由于连续平板的对称性,只需要取其在第一象限的四分之一部分参加分析,然后人为作出一些辅助线将平板“分割”成若干部分,再为每个部分选择分析单元。采用将此模型化分为4个全等的直角三角型单
2、元。利用其对称性,四分之一部分的边界约束,载荷可等效如图所示。 程序原理及实现: 用FORTRAN程序的实现。由节点信息文件NODE.IN和单元信息文件ELEMENT.IN,经过计算分析后输出一个一般性的文件DATA.OUT。模型基本信息由文件为BASIC.IN生成。 该程序的特点如下: 问题类型:可用于计算弹性力学平面问题和平面应变问题 单元类型:采用常应变三角形单元 位移模式:用用线性位移模式 载荷类型:节点载荷,非节点载荷应先换算为等效节点载荷 材料性质:弹性体由单一的均匀材料组成 约束方式:为“0”位移固定约束,为保证无刚体位移,弹性体至少应有对三个自由度的独立约束 方程求解:针对半带
3、宽刚度方程的Gauss消元法 1kN/m 输入文件:由手工生成节点信息文件NODE.IN,和单元信息文件ELEMENT.IN 结果文件:输出一般的结果文件DATA.OUT 程序的原理如框图: 求解方程获得节点位移 形成单元刚度矩阵 开始 输入数据 BASIC.IN NODE.IN ELEMENT.IN(单元信息文件) 以半带存储方式形成整体刚度矩阵形成节点载荷向量 处理边界条件 结束 计算单元及节点应力 输出方件 DATA.OUT 主要变量: ID: 问题类型码,ID1时为平面应力问题,ID=2时为平面应变问题 N_NODE: 节点个数 N_LOAD: 节点载荷个数 N_DOF: 自由度,N_
4、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)分别为该节点沿x,y方向的节点载荷数值
5、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): 节点的应力分量 子程序说明: READ_IN: 读入数据 BAND_K: 形成半带宽的整体刚度矩阵 FORM_KE: 计算单元刚度矩阵 FORM_P: 计算节点载荷 CAL_AREA:计算单元面积
6、DO_BC: 处理边界条件 CLA_DD: 计算单元弹性矩阵 SOLVE: 计算节点位移 CLA_BB: 计算单元位移应变关系矩阵 CAL_STS:计算单元和节点应力 文件管理: 源程序文件: chengxu.for 程序需读入的数据文件: BASIC.IN,NODE.IN,ELEMENT.IN 程序输出的数据文件: DATA.OUT 数据文件格式: 需读入的模型 基本信息文件BASIC.IN的格式如下表 实际需输入的数据 问题类型,单元个数,节第1行,每两个数之间用“,”号基本模型数据 点个数,有约束的节点隔开 数,有载何的节点数 材料性质 第2行,每两个数之间用“,”号弹性模量,泊松比,单
7、元隔开 厚度 LJK_U(N_BC,3) 在材料性质输入行之后另起行,每位移约束的节点编号,该节点约束信息 两个数之间用“,”号隔开 节点x方向约束代码,该节点y方向代码, P_IJK(N_LOAD,3) 在节点约束信息输入行之后另起载荷作用的节点编号,该节点荷载信息 行,每两个数之间用“,”号隔开 节点x主向载荷,该节点y方向载荷, 栏目 格式说明 需读入的节点信息文件NODE.IN的格式如下表 栏目 节点信息 格式说明 实际需输入的数据 每行为一个节点的信息ND_ANSYS(N_NIDE) 该节点y方向坐标 需读入的单元信息文件ELEMENT.IN的格式如下表 栏目 格式说明 每行为一个单
8、元的信息 实际需输入的数据 NE_ANSYS(N_ELE,14) 单元的节点号1单元的节点号2单元的节点号3单元的节点号4 0000000000 单元信息 输出结果文件DATA.OUT格式如下表 栏目 节点位移 实际输出的数据 I RESULT_N(2*I_ 1) RESULT_N(2*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方向应力 剪切应力 单元应力的三个分量 节点
9、应力的三个分量 算例原始数据和程序分析: 模型基本信息文件BASIC.IN的数据为 1,4,6,5,3 1.,0.,1. 1,1,0,2,1,0,4,1,1,5,0,1,6,0,1 1,-0.5,-1.5,3.,-1.,-1,6,-0.5,-0.5 手工准备的节点信息文件NODE.IN的数据为 1 0.0 2.0 2 0.0 1.0 3 1.0 1.0 4 0. 0. 5 1.0 0. 6 2.0 0. 手工准备的单元信息文件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
10、0 1 1 1 1 0 3 3 5 6 6 0 0 0 0 1 1 1 1 0 4 源程序文件chengxu.for为: PROGRAM FEM2D DIMENSION IJK_ELE(500,3),X(500),Y(500),IJK_U(50,3),P_IJK(50,3), &RESULT_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
11、,FILE=FOR_POST.DAT) READ(4,*)ID,N_ELE,N_NODE,N_BC,N_LOAD IF(ID.EQ.1)WRITE(8,20) IF(ID.EQ.2)WRITE(8,25) 20 FORMAT(/5X,=PLANE STRESS PROBLEM=) 25 FORMAT(/5X,=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_
12、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(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 WRIT
13、E(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(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,
14、 N_ELE) 72 FORMAT(7f9.4) c CLOSE(4) CLOSE(5) CLOSE(6) CLOSE(8) CLOSE(9) END c c to get the original data in order to model the problem SUBROUTINE READ_IN(ID,N_ELE,N_NODE,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,
15、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=1,N_NODE) READ(6,*)(NE_ANSYS(I,J),J=1,14),I=1,N_ELE) DO 10 I=1,N_NODE X(I)=ND_ANSYS(I,2) Y(I)=ND_ANSYS(I,3) 10 CONTINUE DO 11
16、 I=1,N_ELE DO 11 J=1,3 IJK_ELE(I,J)=NE_ANSYS(I,J) 11 CONTINUE N_BAND=0 DO 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 20 CONTINUE N_BAND=(N_BAND+1)*2 IF(ID.EQ.1) THEN ELSE PE=PE/(1.0-PR*PR) PR=PR/(1.0-PR) END IF RETURN END c C to form the stiff
17、ness 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 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
18、)+DD(I,K)*BB(K,J) DO 20 I=1,6 DO 20 J=1,6 AKE(I,J)=0.0 DO 20 K=1,3 20 AKE(I,J)=AKE(I,J)+SS(K,I)*BB(K,J)*AE*PT RETURN END c c to form banded global stiffness matrix SUBROUTINE BAND_K(N_DOF,N_BAND,N_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,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有限元 作业 matlab 课程设计 例子
链接地址:https://www.31ppt.com/p-3581669.html