在线工博会

船舶面向对象有限元的应用研究
中国船舶科学研究中心 罗金炎 陈庆强
为节省流量,手机版未显示文章中的图片,请点击此处浏览网页版
提要:本文在论述了船舶结构有限元软件研究现状的基础上,综述了面向对象有限元方法的特征以及在船舶结构有限元分析软件研究中的应用。最后简要阐述了在VC6.0 环境
下基于MFC 类库应用面向对象方法如何编制船舶结构有限元程序Marifep。
关键词:面向对象有限元船舶结构
0 引 言
在工程界有限元法是应用最为广泛的数值分析方法之一。这个方法在本世纪中叶首次应用以来,得到了充分的发展和应用。特别是近十余年来个人计算机的普及使得计算机硬件的费用大大降低;同时,计算机的运算速度也日益提高越来越多的有限元程序可以在个人计算机上解决各种复杂的工程问题。在船舶工程中有限元方法的应用也有很大的发展,大量的有限元软件应用于船舶结构强度稳定性以及振动等方面的分析研究。
传统的船舶有限元分析程序大多采用面向过程的编程方法来设计,编程语言也采用面向过程的计算机语言,如FORTRAN、C等。这类编程语言在有限元应用中着重考虑的是对数学公式
的翻译,所设计的软件系统的可重用性和可移植性都比较差。面向过程的有限元程序往往只有少数专业人员才能读懂和使用,要想重新利用该程序有时会导致程序的全盘改动。对于上万行甚至几十万行的程序,某个很小的改动都有可能造成整个系统的崩溃。另外,在具体应用中若采用新的有限元算法、新型结构元件以及新材料等,必须使原有程序适应当前的数据、函数和物理模型,即要求修改或补充已有的程序,从而增加了程序的复杂性,大大降低了程序的效率,并极大地增加了有限元分析程序维护的难度。
20 世纪80 年代后期兴起了新的面向对象编程技术。面向对象程序设计方法是计算机程序开发方法的一种变革,是利用计算机解决问题的一种新的思维方式,它使程序设计更加贴近现实。随着面向对象程序设计方法的兴起,在科学计算领域内有限元程序的设计开发也迎来了新的发展契机。由于面向对象的程序设计方法正好弥补了传统方法的不足,用面向对象的方法来研究有限元,把面向对象方法和有限元方法相结合,从而产生了面向对象的有限元方法[1]。
因此,针对船舶有限元分析程序本身的复杂性和易错性,以及在程序设计方法上的不足,结合面向对象技术提供的新的、先进的设计方法,采用面向对象技术原理进行船舶有限元分析程序的开发就成为船舶有限元分析程序发展的趋势。在开发船舶结构有限元分析前后处理系统(Marifep)中,我们采用了面向对象技术方法,感觉面向对象技术特别适合于有限元分析软件的开发编制。
1 面向对象有限元方法的特征
面向对象方法的核心思想是将一切客观实体都看成对象。面向对象方法将待解决的问题进行实体分解,实体的选择不是基于计算机本身的能力,而是因为实际中它们确实存在,并具有某些物理或概念性界限。实体在计算机程序中表示为对象,其目的在于实际问题中的实体与程序中的对象具有一一对应的关系。用面向对象的语言进行程序编制意味着将实体对象抽象建立为新的数据类型(称为类Class),以及使这些数据类型能够通过建立仅与类相关的方法(函数)来处理信息,将数据结构和其操作封装在类对象中,达到类对象中数据结构与其操作过程彼此不分离,从而提高了程序的易重用性、易维护性、易扩展性。用户建立类对象的变量,并将信息传送给类对象,实现利用计算机解决实际问题的目的。
有限元方法在按层次分类和聚合方面与面向对象方法有许多相似之处,由于具有了面向对象方法的特点,有限元方法同样具有可重用性和可扩展性,通过运用相同的基类单元,可组合成多种不同类型和不同规模的结构体。面向对象结构有限元分析程序有着更高层次的抽象和分类,因此它的可重用性和可扩展性内容更为广泛和深入,为扩展计算分析功能和增加单元模型带来了方便。
总之面向对象的有限元方法具有如下优点:
1 对象与类概念明确,易于组织程序体系结构;
2 程序模块具有强内聚度和低耦合度,易于维护和修改;
3 与其它系统的数据交换具有强嵌入性;
4 系统易于向智能化方向发展。
2 船舶结构的面向对象分析和设计
船体结构本身是由壳板、型材等元件组成的组合体,其力学模型可以抽象为大型空间薄壁结构 [2]。在船舶结构设计计算时,通常总是将船体这样一个空间薄壁结构,人为地分成若干平面板架系统来进行分析计算,如甲板板架、舷侧板架、船底板架和舱壁板架等,各个板架相互连接,相互支持,使整个主船体构成坚固的空心的水密建筑物。我们可以用各类单元(板壳单元、平面应力膜单元、杆单元、梁单元等)来直接离散薄壁结构,进而建立理想化计算模型,最终得到一个空间的有限元组合模型。
根据船舶结构有限元分析方法,在具体船舶结构的分析过程中,可以将整个船舶结构作为一个对象,称作整体结构对象。整体结构对象又是一个聚合对象,或称容器对象,它包含了多种成分对象。将成分对象抽象归类时,要遵循各类“分工明确、各行其责”的原则,明确对象类所描述的内容及其操作功能。根据这一原则,从整体结构中可细分出单元对象、结点对象、载荷对象和材料特性对象,等如图1 所示。再进一步对这些对象进行描述和建模,形成所谓的结构对象类。

(图片)

图1 结构对象类组成

程序Marifep 根据具体应用的需要,其结构对象类的设计和作用如下:
(1) 单元基类CElement。该单元基类集中了待解微分方程组的绝大部分信息,在有限元分析中处于中心的地位。面向对象的继承机制特别有助于单元类的设计,从CElement 可以派
生得到各具体的单元类,如图2 所示。其中 CElement 是杆单元CTruss、梁单元CBeam、板壳单元CShell及平面应力单元CPstress 等各种具体单元类的超类。Celement 还集中了具体单元的公共属性:单元节点数据、材料数据、积分点数据、单元刚度距阵和质量距阵等,也集中了这些具体单元的公共操作单元:刚度质量阵的计算、载荷列阵的计算、刚度阵的组集、应力应变的计算等。各种具体单元子类可增加或重载所需部分。

(图片)

图2 各单元类继承关系

(2) 节点类CNode。节点是构成结构的骨架,单元按照各自对应的节点组合成整体结构。节点类主要用于与节点相关内容的描述,它包含节点数据(节点编号、节点坐标、节点位移矢量及自由度等)及施加于这些数据上的操作(节点编号、节点赋坐标值、输出节点坐标值及计算节点载荷列阵等)。
(3) 其他类:它包括材料特性类CMaterial,载荷类CLoad,约束类CDisp等,都是用面向对象方法来描述结构分析的各种相关内容特性。
3 基于MFC[3]的Marifep 程序的编制
面向对象方法一般可以分为三个部分:面向对象分析面向对象设计和面向对象程序实现。在对有限元过程进行面向对象的分析和设计以后,就需要在编程平台上实现编程工作。笔者选择在VC++6.0[4]开发环境下应用MFC 进行有限元程序的面向对象编程,主要要达到的目标有:
(1) 实现有限元各个对象类的面向对象设计,包括对象类之间的继承、包含、委托等关系;
(2) 在程序中用管理对象将各类单元、节点、载荷等对象组织起来;
(3) 确定有限元对象与编程平台所提供的程序框架对象之间的关系,以实现有限元任务管理、前后处理和分析计算等功能。
在Marifep 程序中的(几何)实体和有限元单元基类都是从MFC 的基类CObject 类派生的。而各种具体的几何实体(点、线、面等)和有限元单元(杆单元、梁单元、板壳单元、平面应力单元等)则是分别从实体和单元基类中派生。针对程序系统的实际问题还需要定义和实现材料特性类、载荷类、约束类等,它们都是从MFC的基类CObject 类派生。MFC 类库是VC++环境下开发Windows 应用程序的有力工具,它封装了Windows API 的大部分重要数据结构以及函数调用。如图3 所示是VC 编辑平台对各种有限元对象类的管理。单元还可以不断扩充,体现了程序的可扩充性。

(图片)

图3 VC 编辑器对有限元对象类的管理

MFC 类库除了在对象类的设计和定义有重要的应用外,在面向对象有限元程序中还有两个重要的应用:工具类和图形类的使用。
MFC 封装了相当多的工具类,如CArray 数组类、CList 链表类以及它们的模板。笔者在开发程序中,应用它们对结构对象数据进行管理,极为方便。如应用CObArray 数组类构造了各个单元数组来存储各个单元对象的数据,应用CObList 链表类构造了各个单元链表,实现了对各个图元对象拾取中的选择、存储以及调用等操作[5]。利用面向对象技术,单元基类的各种功能函数对于不同类型的单元都是适用的,体现了程序中代码的可重用性。
MFC 也封装了相当多的图形类,它们以CDC 为基类,能够实现画图、填充、坐标转换等多种功能。这样就可以在有限元集合上扩充各个对象的图形功能,把有限元前后处理的图形显示和分析计算作为统一的对象集合来考虑。Marifep 程序在有限元对象和MFC 负责屏幕显示的CView 对象之间用MFC 构造了一个图形映射对象。该映射对象负责坐标转换、窗口放缩等具体的图形操作细节;而各个有限元对象只要简单的将自身的前后处理绘制在由图形映射对象所提供的虚拟环境中,就可以实现数据可视化效果,如图4 所示。

(图片)

图4 Marifep 程序的可视化效果

4 结 论
本文在论述船舶结构有限元软件研究现状的基础上,综述了面向对象有限元方法的特征以及在船舶结构有限元分析软件研究中的应用。同基于过程的结构化程序设计方法相比,面向对象技术是一种很好的程序系统设计思想,它很好的提供了进一步发展的机制和可能性,特别适合于有限元软件的框架设计和有限元程序的编制。由于应用了面向对象技术,船舶结构有限元程序Marifep的功能目前尽管有限,但也能容易地添加其他的单元类型或数据对象类而加以扩充和完善功能。
参 考 文 献
1 Forde B W R,Foschi R O and Stiemer S F. Objectoriented Finite Element Analysis. Comp. & Struct.34(3), 1990
2 陈铁云 陈伯真,船舶结构力学.上海上海交通大学出版社1990
3 侯俊杰,深入浅出MFC 第二版武汉华中科技大学出版社2001.5
4 马安鹏,Visual C++6.0 程序设计导学北京清华大学出版社2002
5 罗金炎,有限元分析系统中多边形图元的拾取交通与计算机2003 4 60-62 12/24/2005


电脑版 客户端 关于我们
佳工机电网 - 机电行业首选网站