有限元程序设计课件.ppt
《有限元程序设计课件.ppt》由会员分享,可在线阅读,更多相关《有限元程序设计课件.ppt(84页珍藏版)》请在三一办公上搜索。
1、教学程序:FEP1 李明瑞编 FEP2 李明瑞编 ZFEP,第一章 绪论,有限元程序的基本内容 有限元求解器,1.1 有限元程序的基本内容,有限元法的解题步骤,求应力等,有限元程序的基本内容:,数据输入阶段,前处理,一、数据输入阶段前处理,读入和生成数据,形成有限元网格,为有限元矩阵计算作准备。(数据或图形输入),标题和控制信息 计算存贮分配 节点坐标和约束信息 单元信息 材料信息 载荷信息,二、有限元矩阵的计算、组集和求解处理器,计算插值函数矩阵 N、几何矩阵B、Jacob矩阵 J 在高斯点进行数值积分,求得单刚、单元载荷组集成总刚、总载 求解,三、数据输出阶段后处理,输出结果(场变量和场变
2、量导数等),打印结果。场变量包括:位移、温度、流场的速度势等;场变量导数包括:应力、应变、热流、流场速度势等,输出形式:数据输出和图形输出,1-2 有限元求解器,带宽法:只存储总刚矩阵的半带宽内的元素。等带宽法:每行的带宽相等,常采用二维数组存储变带宽法:每行的带宽不等,常采用一维数组存储,一、带宽法,变带宽分块求解思想:一个变量的消元只影响刚度矩阵的一部分元素,较大的节点分量方程组可以分成较小的局部系数矩阵按节点逐步求解。,波前法是另一种分块储存的变带宽法,其消元次序是按单元编号进行,边组集边消元。调入内存的单元所保留的节点称为波前节点,所消去的节点称为消元节点,消元节点是与以后调入的单元没
3、有联系的节点,即该节点的方程已组集完。波前法的回代按消元节点的反序进行。对内存的需求取决与最大波前宽。,二、波前法,V-Fortran,Fortran语言的基本格式变量基本语句子例子程序 函数子程序 其它功能、模块,第二章 FEP2 程序的总体设计与输入数据,FEP2 的设计任务 FEP2 的结构设计 FEP2 的主程序 FEP2 的主控程序 FEP2 的数据输入格式与程序实现,2-1 FEP2 的设计任务,1.FEP2的简要题目说明 FEP2是一个具有通用性的教学程序,可用于计算一般的线性静力学问题。已设计了平面梁单元与平面3-9节点元两种单元,但留下接口。2.支持软件与硬件 FORTRAN
4、77以上编译器、各种微机3.FEP2的功能,3.FEP2的功能1)输入文件名由用户自由定义,但限制为4个字符,输入文件扩展名为“DAT”,输出文件扩展名为“OUT”。2)节点坐标、单元信息等具有线性自动生成功能。3)可以处理多种工况、多种类型单元组合结构问题。4)可以处理固定约束和指定位移。5)采用变带宽存储、三角分解法求解刚度方程。6)为多种单元留下接口。,2-2 FEP2 的结构设计,FEP2:由形式主程序、主控程序、功能模块组成。主程序的主要功能:定义输入、输出文件名,调用主控程序PCONTR,主控程序PCONTR的主要功能模块:1)内存分配 2)网格生成3)变带宽存储设置 4)单刚的形
5、成与组集5)刚度矩阵的分解 6)形成节点载荷7)形成与组集单元载荷 8)求解位移9)求单元应力 10)求结构反力,FEP2 程序框图,FEP2(主程序),PCONTR(主控程序),SETMEM 检查内存,PROFIL 形成变带宽刚度矩阵地址,PFORM(3)形成单刚并组集,LDLT 总刚的三角分解,GENVEC 形成节点载荷,PFOM(3)构造并组集单元载荷,FORBACK 前消回代求出位移,PFORM(4)计算单元应力,PFORM(6)计算结构反力,2-3 FEP2 的主程序,一、文件名 FEP2 的文件名可由用户自由定义(限制为4个字符),通过人机交互方式确定。设计中引入以下技巧:,1)规
6、定输入文件名FI与输出文件名FO为8个字符 2)规定两个字符数组NAMINP(8),NAMOUT(8)3)用IQUIVALENCE语句使FI与NAMINP、FO与NAMOUT 等价4)用DATA语句给FI和FO赋初值:“.DAT”、“.OUT”5)输入NAMINP的前四个字符作为输入输出文件名,COMMON/PSIZE/MAXM,MAXA CHARACTER*8 FI,FO CHARACTER NAMINP(8),NAMOUT(8),HEAD*50 COMMON/HEAD/HEAD1 EQUIVALENCE(FI,NAMINP(1),(FO,NAMOUT(1)DATA FI,FO/.DAT,.
7、OUT/WRITE(*,(A)INPUT FILE NAME(4 LETTERS ONLY):READ(*,(4A1)(NAMINP(I),I=1,4)DO 10 I=1,4 10 NAMOUT(I)=NAMINP(I),OPEN(6,FILE=FO)OPEN(5,FILE=FI)MAXM=16000 MAXA=16380 CALL PCONTR(FO)END,二、定义数组 FEP2 中设置了两个数组M(1600)和 A(16380),数组M是作为存放坐标、单元信息、载荷、位移等,数组 A 则是存放刚度矩阵用的,其上界与FORTRAN(编译器)版本和计算机内存有关,确定了程序的计算规模。这两个
8、数组也可合并成一个。,2-4 FEP2 的主控程序,PCONTR:实质上的主程序。分以下几大段:,一、程序头(前12语句),SUBROUTINE PCONTR(FO)CHARACTER*8 FO LOGICAL ERR,ASEM COMMON/M/M(6000)COMMON/A/A(16380)COMMON/CDATA/NDF,NDM,NEN,NJ,NE,NEQ COMMON/PSIZE/MAXM,MAXA COMMON/MDATA/NUMMAT CHARACTER FD*25,FORC*6,P COMMON/PRINT/P COMMON/ASEM/ASEM DATA FORC/FORC/FD
9、/NODAL FORCE/DISPL/,FO:输出文件名 ERR:逻辑变量,作出错信息控制(.TRUE.为错)ASEM:逻辑变量,作为判断是否要组集总刚 数组A:存放总刚的元素 数组M:存放单刚、单元信息、节点坐标等 NDF 最大自由度数 NDM 空间维数 NEN 单元的最多节点数 NJ 节点总数 NE 总单元数 NEQ 总方程数NUMMAT 材料类型数 FD,FORC:文字变量,作为输出的标题用 P:文字变量,判断是否要输出单刚,二、输入控制信息、确定主要数组的地址(1434语句),NEN1=NEN+1 每个单元信息的存储量(节点号+材料号)NNEQ=NJ*NDF 总节点 节点自由度数 NS
10、T=NDF*NEN 单刚阶数 NXC=1 节点坐标数组XC的首址 NIX=NXC+NJ*NDM 单元信息数组IX的首址 NID=NIX+NEN1*NE 结构方程号编码数组ID的首址 ND=NID+NNEQ 材料常数数组的首址 NXL=ND+20*NUMMAT 单元节点坐标数组XL的首址 NLD=NXL+NEN*NDM 单元节点自由度数组LD的首址 NUL=NLD+NST 单元节点位移数组UL的首址 NS=NUL+NST*2 单刚数组S的首址 NP=NS+NST*NST 总刚对角线地址向量JP的首址,READ(5,*)NJ,NE,NUMMAT,NDF,NDM,NEN WRITE(*,2000)N
11、J,NE,NUMMAT,NDF,NDM,NEN WRITE(6,2000)NJ,NE,NUMMAT,NDF,NDM,NEN NEN1=NEN+1 NNEQ=NJ*NDF NST=NDF*NEN NXC=1 NIX=NXC+NJ*NDM NS=NUL+NST*2 NP=NS+NST*NST NF=NP+NST NU=NF+NNEQ NJP=NU+NNEQ NEND=NJP+NNEQ,2-5 FEP2的数据输入格式与程序实现,FEP2的数据信息(自由格式):,1)控制信息:NJ,NE,NUMMAT,NDM,NEN,2)坐标信息(一组)N,NG,(XL(I),I=1,NDM)节点号 节点号增量 坐标
12、或载荷 由GENVEC生成节点坐标或载荷向量,通过NDM,CD,FC 进行识别生成的是节点坐标,还是载荷向量。,CD:NODAL COORDINATES FC:COORCD:NODAL FORCE/DISPL FC:FORC,SUBROUTINE GENVEC(NDM,X,CD,FC,NJ,ERR)CHARACTER CD*18,FC*6 LOGICAL ERR REAL X(NDM,*),XL(6)ERR=.FALSE.N=0 NG=0102 L=N LG=NG READ(5,*,ERR=999)N,NG,(XL(I),I=1,NDM)101 IF(N.LE.0.OR.N.GT.NJ)GO
13、TO 109 DO 103 I=1,NDM103 X(I,N)=XL(I)IF(LG)104,102,104104 LG=ISIGN(LG,N-L),LI=(IABS(N-L+LG)-1)/IABS(LG)DO 105 I=1,NDM 105 XL(I)=(X(I,N)-X(I,L)/LI106 L=L+LG IF(N-L)*LG.LE.0)GO TO 102 IF(L.LE.0.OR.L.GT.NJ)GO TO 108 DO 107 I=1,NDM LMLG=L-LG107 X(I,L)=X(I,LMLG)+XL(I)GO TO 106 WRITE(6,3000)L,CD WRITE(*,3
14、000)L,CD ERR=.TRUE.GO TO 102 CONTINUE,3)单元信息(一组)L,LX,LK,(IDL(K),K=1,NEN)单元号 单元号增量 材料号 节点号 0,0,0,结束由ELDA子程序生成单元信息,IX(NEN1,NE)二维数组。NEN=NEN+1 NE 单元总数,4)材料信息(一组或多组)对于每一类材料,要求输入两个记录:a)材料类型号,单元类型号 b)一批与单元类型相关的常数(不超过20个),对于梁单元,输入两个如下12个常数:NP,E,G,A或 Ix,Iy或 Iz,Rh0,As,N1,N2,Ni,W,a类型(NP=0:平面梁作用平面载荷;1:平面梁作用空间载荷
15、)Rh0:单位长度的质量密度N1:梁左端铰为1,非铰为0 N2:右端铰为1,非铰为0 Ni:单元载荷类型(0,1,2,3,4)(0为无载荷)单元载荷由 EQLOAD 处理成等效节点载荷,对于平面元,输入6个常数:E,XNU,TH,L,K,I TH:单元厚度 L:沿一个方向的高斯积分点数(2,3,4)K:沿一个方向应力输出的高斯点数 I:=0 平面应变 0 平面应力,PMESH 调用 ELEMLIB,再调用 BEAM or PLANE,SUBROUTINE PMESH(XC,IX,ID,D,NEN1)CHARACTER COOR*6,XX*18 COMMON/CDATA/NDF,NDM,NEN,
16、NJ,NE,NEQ COMMON/MDATA/NUMMAT COMMON/ELDATA/LM,N,MA,MCT,IEL,NEL DIMENSION XC(NDM,*),IX(NEN1,*),ID(NDF,*),D(20,*)LOGICAL ERR DATA XX/NODAL COORDINATES/COOR/COOR/1 CALL GENVEC(NDM,XC,XX,COOR,NJ,ERR),1 CALL GENVEC(NDM,XC,XX,COOR,NJ,ERR)IF(ERR)WRITE(*,3000)IF(ERR)STOP 2 CALL ELDAT(IX,NEN1)3 DO 304 N=1,N
17、UMMAT WRITE(6,2000)MA,IEL WRITE(*,2000)MA,IEL IF(MA.EQ.0)GO TO 4 CALL PZERO(D(1,MA),20)D(20,MA)=IEL CALL LEMLIB(D(1,MA),P,XC,IX,S,P,NDF,NDM,NST,1)304 CONTINUE 2000 FORMAT(/MATERIAL TYPE,I4,ELEMENT TYPE,I4/)4 CALL BOUN(ID)END,5)约束信息(包括指定位移)(一组)PMESH 调用 BOUN 输入:N,NG,(IDL(I),I=1,NDF)节点号 节点号增量 坐标或载荷 0,0
18、,0,(平面元4个0,梁元5个0)IDL(I):约束信息,被约束的自由度给非零值(1或-1),其它为0。1:该自由度被约束,但不继续生成-1:该自由度被约束,要求继续生成,6)载荷信息 载荷输入仍由 GENVEC 完成,维数:NDF,对于指定位移,生成方式与节点载荷相同,5)输入约束信息,6)输入其值。,第三章 总刚度矩阵的变带宽存贮与求解,总刚度矩阵的变带宽存贮与对角线地址LDLT 三角分解自由度指示矩阵ID与对角线地址矩阵,3-1 总刚度矩阵的变带宽存贮与对角线地址,总刚度矩阵的性质:对称、正定、稀疏只存贮半带宽内的元素(下三角、变带宽),稀疏对称矩阵A中的元素可用两个一维数组B和JP完全
19、确定。B的上界为A中的下三角、变带宽内元素总数,存贮A内的元素。JP的上界为A的阶数,存贮A的各行对角线元素的序号,称为对角线元素地址数组。,对应关系:A(I,J)=B(JP(I)I+J)每一行第一个非零元素的列号Mi:M1=1,Mi=I JP(I)+JP(I-1)+1,SUBROUTINE PROFIL(JP,ID,IX,NEN1,NK)COMMON/CDATA/NDF,NDM,NEN,NJ,NE,NEQ DIMENSION JP(1),ID(NDF,1),IX(NEN1,*),IDL(18)NEQ=0 NAD=0 DO 50 N=1,NJ DO 40 I=1,NDF J=ID(I,N)IF
20、(J)30,20,3020 NEQ=NEQ+1 ID(I,N)=NEQ JP(NEQ)=0 GO TO 4030 NAD=NAD-1 ID(I,N)=NAD40 CONTINUE50 CONTINUE,C.COMPUTE ROW BANDWIDTH DO 500 N=1,NE DO 400 I=1,NEN II=IX(I,N)IF(II.EQ.0)GO TO 400 DO 300 K=1,NDF KK=ID(K,II)IF(KK.LE.0)GO TO 300 DO 200 J=1,NEN JJ=IX(J,N)IF(JJ.EQ.0)GO TO 200 DO 100 L=1,NDF LL=ID(L
21、,JJ)IF(LL.LE.0)GO TO 100 M=MAX0(KK,LL)JP(M)=MAX0(JP(M),IABS(KK-LL)100 CONTINUE200 CONTINUE300 CONTINUECONTINUE500 CONTINUE,C.COMPUTE DIAGONAL POINTERS FOR PROFIL NK=1 JP(1)=1 IF(NEQ.EQ.1)RETURN DO 600 N=2,NEQ600 JP(N)=JP(N)+JP(N-1)+1 NK=JP(NEQ)WRITE(*,2000)NK2000 FORMAT(THE MAXIMUM STORAGE OF GLOBAL
22、 STIFFNESS=,I6/)RETURN END,SUBROUTINE ADDSTF(LD,JP,S,NST)CHARACTER Y COMMON/PRINT/Y COMMON/A/A(16380)COMMON/CDATA/NDF,NDM,NEN,NEJ,NE,NEQ COMMON/ELDATA/LM,N,MA,MCT,IEL,NEL DIMENSION LD(*),JP(*),S(NST,NST)IF(Y.EQ.Y.OR.Y.EQ.y)WRITE(*,2000)N,S FORMAT(ELEMENT NUMBER,I4,ELEMENT STIFFNESS/(6E12.5),DO 200 J
23、=1,NST K=LD(J)IF(K.LE.0)GO TO 200 L=JP(K)-K DO 100 I=1,NST M=LD(I)IF(M.GT.K.OR.M.LE.0)GO TO 100 M=L+M A(M)=A(M)+S(J,I)100 CONTINUE200 CONTINUE RETURN END,3-2 LDLT 三角分解,求解方程:Ax=b A 对称、正定矩阵=Ux=y U 单位上三角矩阵,对A进行三角分解=A=LLTL 下三角矩阵,通过比较系数法确定,需要开方运算,LDLT三角分解=A=LDLTL 下三角矩阵,D 对角矩阵,i=1,n;j=2,i,LDLT(A,JP,N)DIME
24、NSION A(*),JP(*),Ax=b=LDLT x=b 令 LT x=y=LD y=b,前消公式:,i=2,n,回代公式:,i=n-1,1,SUBROUTINE FORBACK(A,B,JP,N)DIMENSION A(*),B(*),JP(*),3-3 自由度指示矩阵ID与对角线地址矩阵,ID(NDF,NJ):非零值(1或-1)为被约束的自由度,0为活化自由度。,在PROFIL 中,改造数组ID,原来的零元素(活化自由度)用正数计,原来的非零元素(非活化自由度)用负数计,全部零元素(活化)的个数记为NEQ(总刚矩阵的阶数)。,计算刚度矩阵的带宽的方案比较:,1)以各节点自由度为研究对象
25、,利用单元信息IX,找出与该点联系的节点,然后比较节点自由度之最大者。运算量:NJ*NDF*NE*NEN*NDF,2)逐一研究各单元,分别取出各节点的各个自由度与该单元中其它节点的自由度比较,差值最大者再与所研究的自由度之带宽值(初值为零)比较,取其中最大者代替原有的带宽值。运算量:NE*NEN*NDF*NEN*NDF,两者运算量比:NJ:NE 选方案 2 带宽=自由度之最大差值+1 暂存放于 JP 中,若已知对角线地址数组 JP,则第 I 行的带宽:JP(1)=1,JP(I)JP(I 1),若 JP 存放的是带宽,则对角线地址数组:JP(1)=JP(1)=1 JP(2)=JP(2)+JP(1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有限元 程序设计 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-3541019.html