【转载】面向对象的非线性有限元方法

(这个课题曾经很感兴趣,不过由于种种原因,并没有进一步升入研究下去,下面的只是自己当时的一些笔记和想法。)

有限元方法是求解微分方程的边值和初值问题,建立在特定场函数离散化基础上的一种数值方法[1]。近四十年来,有限元方法得到了充分的发展,在建筑、船舶、航空、机械、水利等相当广泛的工程领域得到应用,已经成为这些领域求解工程问题最有效的数值计算方法之一。有限元方法的实现离不开计算机程序。国内外开发了相当多的有限元计算软件,甚至还有商用软件包,如ANSYS、NASTRAN、MARC等等。但是这些商用和非商用软件大多数采用传统的结构化程序设计方法。使用这种传统方法设计出来的程序,数据和代码的分离,使得模块的运行严格依据于程序的基本数据结构,基本数据结构的微小改动会导致所涉及模块的改写。这样就使得程序维护困难,不能方便地扩展。即这些软件存在软件工程中的软件危机问题(可维护性、可重用性、可扩充性差)[2]。八十年代末期人们开始重视这些问题,力求找到新的解决办法。面向对象技术的出现克服了上述结构化程序的不足,为功能模块的集成化、可再用及程序扩展提供了有利条件。

面向对象的程序设计是继承和发展了结构化程序设计而产生的一种新的设计思想[3]。是一种模仿人类建立现实世界模型的方法进行软件开发的思想体系方法。面向对象的程序设计语言具有四种对象化属性:抽象性、封装性、继承性和多态性。其主要特征有:信息隐藏性,便于在概念上体现并行和分布式结构,便于软件的演化和扩充,增加程序设计的灵活性和可理解性。数据抽象和信息隐蔽等机理以及面向对象语言的继承性、封装性、多态性等特性为软件开发提供了理想的模块化机制和比较理想的软件可重用成分。

面向对象有限元方法将有限元理论和软件工程中的面向对象方法紧密的结合在一起。自从1990年B.W.R.Forde[4]第一次完整的阐述面向对象有限元的概念以来,在这一领域的研究工作如火如荼的展开了。但是大部分文章主要还是讨论线弹性问题的面向对象有限元程序设计及实现;已有的非线性有限元程序设计,其内容只是限于弹塑性分析及非线性代数方程组的求解这两个方面[5,6,23]。

由于非线性有限元远比线性有限元复杂,对不同的本构模型其有限元表达格式不尽相同。非线性方程组解的收敛性没有线性方程组的收敛性好。因此进行非线性有限元设计的困难将比线性有限元设计的困难多,主要有:

1)、本构关系类的设计。不同本构关系的有限元表达格式不完全相同,将本构关系看成一个对象,如何设计其类的属性及方法将是一个难题。如超弹性本构关系中材料是不可压缩的,这一点将如何在本构关系类中反映,将是一个难点。

2)、非线性方程组求解类与其它对象类通讯。非线性方程组求解涉及到迭代和分段求解,这与线性问题有很大不同。将非线性方程组求解过程看成一个对象,此对象类将如何同其他已有对象类通讯,这也是一个难点。

3)、非线性有限元的前后处理。一个好的有限元软件应包括前后处理功能,如何将已有的前后处理类嵌入此非线性有限元程序中?这也是一个很棘手的问题。
posted @ 2010-10-04 18:56  斌伯  阅读(536)  评论(0编辑  收藏  举报