1、第2章 有限元程序设计方法2.1 程序基本框图程序基本框图1、输入基本数据(结构描述)、输入基本数据(结构描述):(1)控制数据:如结点总数、单元总数、约束条件总数等;(2)结点数据:如结点编号、结点坐标、约束条件等;(3)单元数据:如单元编号、单元结点序号、单元的材料特性、几何特性等;(4)载荷数据:包括集中载荷、分布载荷等。开始输入基本数据计算单元刚度矩阵形成总体刚度矩阵形成结点荷载向量引入约束条件求解方程组,输出结点位移计算单元应力,输出结果结束2、单元分析、单元分析(1)各单元的bi,ci(i,j,m),面积A;(2)应变矩阵B,应力矩阵S;(3)单元刚度矩阵k;(4)单元等价载荷列向
2、量F。开始输入基本数据计算单元刚度矩阵形成总体刚度矩阵形成结点荷载向量引入约束条件求解方程组,输出结点位移计算单元应力,输出结果结束3、系统分析、系统分析(1)整体刚度矩阵K的组装;(2)整体载荷列阵P的形成;K的存储;约束引入;求解的存储;约束引入;求解u总刚存贮总刚存贮全矩阵存贮法:不利于节省计算机的存贮空间,很少采用。Ki,j对称三角存贮法:存贮上三角或下三角元素。半带宽存贮法半带宽存贮法:存贮上三角形(或下三角形)半带宽以内的元素。一维压缩存贮法一维压缩存贮法:半带宽存贮中仍包含了许多零元素。存贮每一行的第一个非零元素到主对角线元素。000000000000000000等带宽形式等带宽
3、形式UBWUBW行行 号号1 IR N1列列 号号JC行行 号号1 IR N1JC-(IR-1)00000000方阵形式方阵形式(1 1)半带宽存贮法)半带宽存贮法方阵存贮和半带宽存贮地址关方阵存贮和半带宽存贮地址关系系存贮方式存贮方式行号行号列号列号方阵存贮方阵存贮IRJC等带宽存贮等带宽存贮IRJC-IR+1u 半带宽计算:设结构单元网格中相邻结点编号的半带宽计算:设结构单元网格中相邻结点编号的最大差值是最大差值是d,则最大半带宽为,则最大半带宽为UBW:为一个结点的自由度数ndfndfdUBW,)1(u结点编号:欲使最大半带宽结点编号:欲使最大半带宽UBW最小,必须注最小,必须注意结点编
4、号方法,使直接联系的相邻节点的最大点意结点编号方法,使直接联系的相邻节点的最大点号差最小。号差最小。例:计算下图半带宽。例:计算下图半带宽。结点数N=91,总刚K中的元素总数为:82(912)(91 2)=33124最大半带宽UBW=(7+1)2=16,半带宽存储矩阵元素总数为182 16=2912,约方阵元素的8.8%。(2)变带宽存贮变带宽存贮(一维压缩存贮)(一维压缩存贮)等带宽存贮虽然已经节省了不少内存,但认真等带宽存贮虽然已经节省了不少内存,但认真研究半带宽内的元素,还有相当数量的零元素。在研究半带宽内的元素,还有相当数量的零元素。在平衡方程求解过程中,有些零元素只增加运算工作平衡方
5、程求解过程中,有些零元素只增加运算工作量而对计算结果不产生影响。如果这些零元素不存、量而对计算结果不产生影响。如果这些零元素不存、不算,更能节省内存和运算时间,采用变带宽存贮不算,更能节省内存和运算时间,采用变带宽存贮可以实现(也称一维数组存贮)可以实现(也称一维数组存贮)。变带宽存贮编程。变带宽存贮编程技巧要求较高,程序较长。技巧要求较高,程序较长。8878776766585655464544363433232214121100000000000000000KKKKKKKKKKKKKKKKKKKK对对 称称u方阵形式的刚度矩阵方阵形式的刚度矩阵KUBW=4顶顶 线线顶线以上零元素无须存贮,仅
6、顶线以下元素。顶线以上零元素无须存贮,仅顶线以下元素。)()()()()()()()()()()()()()()()()()()()()(181916201712211310141161574852931AAAAAAAAAAAAAAAAAAAAAA8878776766585655464544363433232214121100000000000000000KKKKKKKKKKKKKKKKKKKK124610121618MAXA 22u一维数组一维数组A存贮刚度矩阵存贮刚度矩阵K 变带宽存贮:按列存贮方式。变带宽存贮:按列存贮方式。从左到右,逐列存从左到右,逐列存放;对每一列,先存主对角线元素,
7、然后由下而上顺放;对每一列,先存主对角线元素,然后由下而上顺序存放,直到顶线下第一个元素为止。序存放,直到顶线下第一个元素为止。为避免混淆,为避免混淆,我们把存贮我们把存贮K的一维数组称为的一维数组称为A。实现变带宽存贮的关键问题是:总刚中元素实现变带宽存贮的关键问题是:总刚中元素Kij在在一维数组一维数组A中的地址是什么?为此,需要知道主元中的地址是什么?为此,需要知道主元Kii在在A中的位置和相应列高中的位置和相应列高hi。u主元位置:采用一个一维数组主元位置:采用一个一维数组MAXA存主元在存主元在A中中位置。位置。MAXA=1,2,4,6,10,12,16,18,22。u列高列高hj:
8、第:第j行的左带宽。行的左带宽。从第从第j列的主对角线元素起到该列上方第一个非零列的主对角线元素起到该列上方第一个非零元素为止,所含元素的个数称为第元素为止,所含元素的个数称为第j列的列的列高列高,记为,记为hj;如果把第如果把第j列上方列上方第第1个非零元素的行号个非零元素的行号记为记为mj,则第,则第j列的列高为列的列高为 hj=j-mj+1其实,其实,hj就是第就是第j行的左带宽,因而必有行的左带宽,因而必有 UBW=max(hj)j=1,2,N 利用节点位移信息数组利用节点位移信息数组ID(去约束后节点位移自(去约束后节点位移自由度编码),可容易地确定刚度矩阵由度编码),可容易地确定刚
9、度矩阵K任何一列的任何一列的列高。列高。123416783452xY例:求图示框架结构例:求图示框架结构h7=?。利用利用ID数组得各单元的连接数组数组得各单元的连接数组LM(假定小号为(假定小号为i)000000110011852174006300ID(1)ID数组数组节点号:节点号:1 2 3 4按列,遇按列,遇1变变0,遇,遇0加加1。连接数组:连接数组:1号单元:号单元:LM=0,0,1,0,0,2 2号单元:号单元:LM=0,0,2,3,4,5 3号单元:号单元:LM=3,4,5,6,7,8 4单元:单元:LM=0,0,1,6,7,8852174006300ID12341678345
10、2Y1 2 3 4 a)如果如果 ID(i,j)=0则表明则表明j号节点第号节点第i个自由度受有约束。个自由度受有约束。b)如果如果 ID(i,j)0则则j号节点第号节点第i个自由度不受约束。并且,个自由度不受约束。并且,j号节点第号节点第i个位移分量在非约束节点位移列向量个位移分量在非约束节点位移列向量 f 中的序号中的序号就是就是:ID(i,j)852174006300IDu主元主元在一维数组在一维数组A中的地址中的地址 数组数组MAXA的长度是的长度是K的行或列数加的行或列数加1(N+1)。)。K的任何一个主对角元在一维数组的任何一个主对角元在一维数组A中的地址:中的地址:第第j列主对角
11、线元素列主对角线元素Kjj在一维数组在一维数组A中的地址等于中的地址等于前前(j-1)列的列高之和加列的列高之和加1,即,即 确定确定第第j列列列高的办法是:从列高的办法是:从1号单元起,对所有号单元起,对所有单元逐个进行检查。其中,与单元逐个进行检查。其中,与7号位移分量号位移分量同在一个连同在一个连接数组中的接数组中的最小非零号码最小非零号码就是就是m7。显然有。显然有 m7=1 第第7列的列高为:列的列高为:h7=j-mj+1=7 1+1=7 MAXA(j)=h1+hj-2-hj-1+1 =(h1+hj-2+1)+hj-1 =MAXA(j-1)+hj-1因为永远有因为永远有 MAXA(1
12、)=1,MAXA(2)=2故计算主元地址的公式可写为故计算主元地址的公式可写为 MAXA(j+1)=MAXA(j)+hj (2-1)式中,式中,j=2,3,N;hj刚度矩阵刚度矩阵K第第j列的列高。列的列高。一维数组一维数组A的总长度的总长度(S),即刚度矩阵,即刚度矩阵K按变带宽存贮按变带宽存贮的总存贮量的总存贮量 S=MAXA(N+1)-MAXA(1)uKi,j在一维数组在一维数组A中的地址中的地址 记记Ki,j在一维数组在一维数组A中的地址为中的地址为AIJ。则由下图可知,。则由下图可知,A I J=MAXA J +J I (2-2)其中,其中,I=mj,mj+1,J。图图5-12j列列
13、 0000000000000000K第第i 行行顶线下顶线下第第j列列MAXA(J)(j-i)个个元素元素AIJ第第j 行行A中地址中地址Kj,jKi,jKmj,jK中地址中地址mj4、引入约束条件、引入约束条件手算时采用去行列法去行列法,而计算机编程时采用乘乘大数法大数法。即:指定结点位移对应的主对角元素乘上一个大数,同时将P中对应元素换为结点位移指定值与扩大了的主对角线元素的乘积。3210111321333231232221131210111010FFkuuukkkkkkkkk10111313212110111010kukukuk11u5、线性方程组求解、线性方程组求解求解方法常用:GAU
14、SS消元法,QR分解法等。其程序在一些专著中列出(例如见:徐士良编。FORTRAN常用算法程序集。清华大学出版社,1992)。在此不作详细介绍,其方法参阅数值分析有关书籍。6、单元应力、单元应力 节点位移求单元应力。首先整体节点位移变换成单元节点位移,然后再用物理方程求单元应力。S例例1:对角受压的正方形薄板,载:对角受压的正方形薄板,载荷沿厚度均匀分布,为荷沿厚度均匀分布,为2N/m。由。由于对称性,取于对称性,取1/4部分作为计算对部分作为计算对象,试用有限元程序进行计算。象,试用有限元程序进行计算。0.0,0.1,0.1Emh2N/m2N/m2m2mxy例2:简支梁,梁高3m,跨度18m
15、,厚度1m,承受均布荷载10N/m2。已知 按平面应力问题进行计算。18m3mxy167.0,/102210mNE网格划分网格划分考察点y(m)-1.25-0.75-0.250.250.751.25有限元结果19711436-36-114-197弹性力学结果22513444-44-134-225误差28208-8-20-28)(MPax计算结果正应力考察点y(m)-1.25-0.75-0.250.250.751.25有限元结果16.231.237.233.720.73.6弹性力学结果10.926.734.634.626.710.9误差5.34.52.6-0.9-6.0-7.3)(MPaxy计算
16、结果剪应力与弹性力学误差较大。力。材料力学不考虑为挤压应力,属次要应FEMy,2.2 提高计算精度的方法提高计算精度的方法(1)计算结果的整理计算结果的整理计算结果包括位移和应力两个方面。在位移方面,一般无须进行整理工作。应力结果则需要整理。通常认为计算出的应力是三角形单元形心处的应力。而相邻单元之间的应力存在突变,甚至正、负符号都不相同。为了由计算结果推算出结构内某一点的接接实际的应力,必须通过某种平均计算。通常可采用两单元平均法或两单元平均法或绕结点平均法绕结点平均法。平均法整理单元应力两单元平均法两单元平均法:把两个相邻单元中的常应力加以平均,用来表示公共边界中点处的应力。绕结点平均法绕
17、结点平均法:把环绕某一结点的各单元常应力加以平均,用以表示该结点的应力。在内结点效果较好,而在边界结点可能很差,一般改为应由内结点的应力外推计算出来。(2)网格的细分)网格的细分通过网格的细分,使每个单元的面积缩小,那么尽管每个单元是应变、常应力单元,仍可较好地反映结构中的应力变化,使得到的解答收敛于问题的精确解。(3)网格合理布局)网格合理布局 根据应力梯度使网格的布局合理化。即在梯度大的区域网格密些,梯度小的区域应稀些。密、稀网格之间应逐步过渡。(4)改用高阶单元)改用高阶单元 受集中力的悬臂梁,采用128个三结点三角形常应变单元,以及3个八结点四边形高阶单元结果。由图可见,采用高阶元的计算精度比常应变元高得多。带圆孔方板的网格划分2.3 通用有限分析软件通用有限分析软件1、ANSYS9 结构、热、流体、电磁学、声学等。2、SAP2000土木结构分析。习习 题题1、调试教材P26-30程序FEM1。2、修改FEM1,计算P31例2-2。3、以例1为对象,研究单元细分对计算结果的影响。4、用程序完成习题3和4的分析。