有限元编程综述

  • 格式:doc
  • 大小:1.08 MB
  • 文档页数:12

有限元编程综述

——平面四节点等参单元分析

姓 名:

学 号:

指导老师:

日 期:

有限元编程综述

1

摘 要: 有限元法,主要用来解决复杂结构中力与位移的关系。其基本思想是将具有无限个自由度的连续的求解区域离散为具有有限个自由度、且按一定方式(节点)相互连接在一起的离散体(单元),即将连续体假想划分为数目有限的离散单元,而单元之间只在数目有限的指定点处相互联结,用离散单元的集合体代替原来的连续体。本文主要介绍有限元分析的基本思想及有限元编程的主要流程,并通过一个平面四节点等参单元来具体论述相关内容。

关键词:有限元 基本原理 平面四节点等参单元 分析流程

1 基本原理及概述

所谓有限元法(FEA),其基本原理是把连续的几何机构离散成有限个单元,并在每一个单元中设定有限个节点,从而将连续体看作仅在节点处相连接的一组单元的集合体,同时选定场函数的节点值作为基本未知量并在每一单元中假设一个近似插值函数以表示单元中场函数的分布规律,再建立用于求解节点未知量的有限元方程组,从而将一个连续域中的无限自由度问题转化为离散域中的有限自由度问题。求解得到节点值后就可以通过设定的插值函数确定单元上以至个集合体上的场函数。对每个单元,选取适当的插值函数,使得该函数在子域内部、在子域分界面上以及子域与外界面上都满足一定的条件。单元组合体在已知外载荷作用下处于平衡状态时,列出一系列以节点、位移为未知量的线性方程组,利用计算机解出节点位移后,再用弹性力学的有关公式,计算出各单元的应力、应变,当各单元小到一定程度,那么它就代表连续体各处的真实情况。

通常情况下的有限元分析过程是运用可视化分析软件(如ANSYS、ABAQUS、SAP等)进行前处理和后处理,而中间的计算部分一般采用自己编制的程序来运算。具有较强数值计算和处理能力的Fortran语言是传统有限元计算的首选语言。随着有限元技术的逐步成熟,它被应用在越来越复杂的问题处理中,但在实际应用中也暴露出一些问题。有时网格离散化的区域较大,而又限于研究精度的要求,使得划分的网格数目极其庞大,结点数可多达数万个,从而造成计算中要运算的数据量巨大,程序运行的时间较长的弊端,这就延长了问题解决的时间,使得求解效率降低。因为运行周期长,不利于程序的调试,特别是对于要计算多种运行工况时的情况;同时大数据量处理对计算机的内存和CPU 提出了有限元编程综述

2

更高的要求,而在实际应用中,单靠计算机硬件水平的提高来解决问题的能力是有限的。因此,必须寻找新的编程语言。

随着有限元前后处理的不断发展和完善,以及大型工程分析软件对有限元接口的要求,有限元分析程序不应只满足解题功能,它还应满足软件工程所要求的结构化程序设计条件,能够对存储进行动态分配,以充分利用计算机资源,它还应很容易地与其它软件如CAD 的实体造型,优化设计等接口。现在可编写工程应用软件的计算机语言较多,其中C语言是一个较为优秀的语言,很容易满足现在有限元分析程序编程的要求。

C语言最初是为操作系统、编译器以及文字处理等编程而发明的。随着不断完善,它已应用到其它领域,包括工程应用软件的编程。近年来,C语言已经成为计算机领域最普及的一个编程语言,几乎世界上所有的计算机都装有C的编译器,从PC机到巨型机到超巨型的并行机,C与所有的硬件和操作系统联系在一起。用C 编写的程序,可移植性极好,几乎不用作多少修改,就可在任何一台装有ANSI、C编译器的计算机上运行。C既是高级语言,也是低级语言,也就是说,可用它作数值计算,也可用它对计算机存储进行操作。

2 编程思想

本程序采用C语言编程,编制平面四边形四节点等参元程序,用以求解平面结构问题。程序采用二维等带宽存储整体刚度矩阵,乘大数法引入约束,等带宽高斯消去法求解位移,然后求中间高斯点的应力,最后用绕节点平均法讲单元应力等效到节点上,再将结果写到tecplot文件中。

在有限元程序中,变量数据需赋值的可分为节点信息,单元信息,载荷信息等。对于一个节点来说,需以下信息:节点编号(整型),节点坐标(实型),节点已知位移(实型),节点载荷(实型),边界条件(实型)等。同样,对于一个单元来说,需以下信息:单元的节点联接信息(整型),材料信息(弹性模量,泊松比等)(实型)等。

在FORTRAN 程序中,以上这些变量混合在一起,很难辨认,使程序的可读性不好,如需要进行单元网络的自适应划分,节点及单元的修改将非常困难。在进行C语言编译过程中,采用结构struct 使每个节点信息存储在一个结构体有限元编程综述

3

数组中,提高程序的可读性,使数据结构更趋于合理。

3 平面四节点等参单元介绍

四节点等参单元实际单元与基本单元的映射关系如图 3-1所示

坐标的映射关系为:

其位移模式和坐标的映射有相同的插值函数,形函数为:

单元应变矩阵为:

xyxyuxuyuvyx

上式一般简写为:

B

其中B的子块矩阵为 图 3-1 有限元编程综述

4

iiiiiNxNByNNyx

由于iN是、的函数,在iB中的x、y要按照复合函数来求导,即

iiiiiiNNNxyxxJNNNxyyy

从而有:

1iiiiNNxJNNy

因此,单元应力矩阵为:

DB

单元刚度矩阵为:

TeAKBDBhdxdy

其中积分采用三点高斯积分,

3311,11111(,)()(,)nipijijiiijifddfWf

其中,2nipn(高斯积分点的总数),i和j或iW是加权系数,i和j是单元内的坐标.。对于三点高斯积分,高斯积分点的位置: 110.6,5.09.0,220.0,8.09.0,330.6,5.09.0。

结构刚度矩阵为:

eeKK

结构结点荷载列阵为:

eePP 有限元编程综述

5

注意,对于上两式中e的理解不是简单的叠加而是按照对应的自由度集成。

总刚平衡方程:

KP

从式上式求出:

1KP

4 有限元分析流程

一个典型的有限元分析过程主要包括以下几个步骤:

1) 读输入数据,定义节点及单元数组。

2) 由边界条件计算方程个数,赋值荷载列阵。

3) 读入在带状存储的总刚度矩阵中单元和载荷信息。

4) 定义总刚度阵数组。

5) 组装总刚度阵。

6) 解方程组。

其流程图可见下图:

输入边界条件(力、位移)

形成各荷载工况的节点荷载总刚分解

回代求出位移及输出

计算应变、应力 形成单元刚单刚向总刚投坐标变换 输入原始参数

计算总刚规模

形成总刚方程

向总节点荷载阵投放 形成单元荷载阵

调整几何、弹性矩阵 调整单元位移列阵 有限元编程综述

6

5计算流程图

开始

输出节点位移

计算局部坐标系下的单元刚度矩阵

坐标变换矩阵 输入控制信息

n=nf·np

ndf=nd·nf

计算单元的IS(ndf)数组

取出单元在总体坐标系下的节点位移

计算局部坐标系下单元节点位移 输入原始数据

形成LD(n)数组

计算局部坐标下的单元刚度矩阵

坐标变换矩阵

总体坐标下的单元刚度矩阵

形成单元的IS(ndf)数组

单元刚度矩阵向结构刚度矩阵叠加

进行约束处理

求解线性方程组求得结构节点位移 计算局部坐标系下单元节点力应力

输出节点位移和应力

结束 有限元编程综述

7

6 程序变量及函数说明

6.1 控制信息

np:结构节点总数

ne:结构离散单元总数

nr1,nr2:总的约束的节点数,nr1,x方向;nr2,y方向

nd:每个单元的节点数

nf:每个节点的自由度数

ld:集中力载荷的个数

nm:材料的种类

nu1,nu2:非零位移边界条件的节点数,nu1,x方向;nu2,y方向

u1,u2:非零位移的大小,u1,x方向;u2,y方向

n=nf*np :结构的节点位移总数

ndf=nd*nf :每个单元的节点自由度数

6.2 输入的原始数据

x(np):节点的x方向坐标

y(np):节点的y方向坐标

me(nd,ne):单元节点的总体编号

nrr(nr1+nr2) :约束为零的位移所对应的总体位移编号

p(n):载荷向量

nu(nu1+nu2):位移载荷

mat(6,nm):材料参数

6.3程序中的其他标识符

LD(n):存放结构刚度阵所以主对角线元素在A(nn)中的序号

IS(ndf):单元节点位移和节点力在总体位移阵列和载荷阵列中对应的序号

EK(ndf,ndf):总体坐标系下的单元刚度矩阵