(机械电子工程专业论文)有限元计算的面向对象方法及程序研究.pdf_第1页
(机械电子工程专业论文)有限元计算的面向对象方法及程序研究.pdf_第2页
(机械电子工程专业论文)有限元计算的面向对象方法及程序研究.pdf_第3页
(机械电子工程专业论文)有限元计算的面向对象方法及程序研究.pdf_第4页
(机械电子工程专业论文)有限元计算的面向对象方法及程序研究.pdf_第5页
已阅读5页,还剩78页未读 继续免费阅读

(机械电子工程专业论文)有限元计算的面向对象方法及程序研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北方工业大学硕士学位论文 摘要 有限元法是一种解决复杂工程计算问题的有效的离散化计算方法。有限元法以经典 理论为基础,以计算机为工具,通过有限元程序实现对复杂工程问题的分析计算。然 而,对于一些有特殊求解要求的更为复杂的问题,例如需要对同一分析对象的不同区域 分别给出力学有限元解和力学边界元解,或要求对同一分析对象的传热学问题和力学强 度问题同时求解等,若采用单一离散化方法分析就会使得求解方式过于刚性,无论从算 法的适用性还是经济性方面考虑都有所不足。对这类问题应该采取更具柔性的求解方 式,即采取耦合了多种离散化算法的联合求解方式去做分析。本论文所进行的主要工作 是为自主研发的,包含上述功能的基于有限元边界元联合求解的力学流势传热学耦合 分析平台的有限元计算模块部分,该计算模块基于国际s t l 标准,从而更加充分地 发挥了面向对象方法的技术优势。 本论文全面系统地将基于s t l 标准的面向对象的概念和方法应用到有限元程序设 计的各个环节,完整地探索和展示了面向对象有限元分析、设计和实现的全过程,所涉 及的主要工作和结论如下。 1 运用面向对象的分析方法对有限元计算过程进行分析,确定有限元分析计算过 程中的类及其屙畦、应完成的功能,以及各个类之间的相互关系和接口形式,在此过程 中,引入统一建模语言u m l ,对类肛寸象的属性、方法,以及类之间的相互关系进行了 图形化描述。 2 运用面向对象的设计方法,对类的方法及类之间的接口进行了详细设计,并在 文中对总刚矩阵的形成、总载向量的组装等重点部分做了详细说明。 3 使用面向对象的程序设计语言一标准c + + 语言,对前阶段设计的类进行了编程 实现,形成了进行有限元计算的基础类库。在实现过程中,运用了基于标准模板类库 ( s t l ) 技术,以向量模板类的特化继承对象为变容量数据容器,实现了可按计算实例 的离散节点数量动态存取数据的机制和数据容器的零容量启动,从而避免了运算时系统 对静态内存空间的超量占用。 本论文实现的基础类库能够完成平面问题的有限元计算,并且可以在此类库的基础 上,通过派生新的单元类来实现更复杂的有限元计算任务。 关键词:面向对象,有限单元法,标准模板类库 一1 北方工业大学硕士学位论文 o b j e c t - o r i e n t e df i n i t e - e l e m e n tm e t h o da n dp r o g r a m m i n g a b s t r a c t t h ef i n i t e e l e m e n tm e t h o d ( f e m ) i sa ne f f e c t i v ed i s c r e t ea n a l y s i s i n gm e t h o di nd e a l l i n g w i t hc o m p l e xe n g i n e e r i n gp r o b l e m s t h ef e mw h i c hi sb a s e do nt h ec l a s s i c a lt h e o r i e sa n d c o m p u t e rt e c h n o l o g y ,i sa p p l i e dv i ac o m p u t e rs o f t w a r e h o w e v e r , f o rs o m es p e c i a lc o m p l e x p r o b l e m s ,s u c ha sp r o b l e m sw h i c hr e q u i r e df e ma n s w e r a n db o u n d a r ye l e m e n tm e t h o d ( b e l v 0 a n s w e ri nd i f f e r e n ta r e ao ft h ea n a l y s i s e do b j e c t ,o rp r o b l e m sw h i c hn e e db o t hc a l o r i f i c sa n d m e c h a n i c sa n a l y s i s i n g ,i tw o u l db el a c k i n gf l e x i b i f i t ya n di n s u f f i c i e n tb o t hi na p p l i c a b i l i t ya n d e c o n o m yi f w ea p p l y j u s tas i n g l ed i s c r e t ea n a l y s i s i n gm e t h o dt 0t h ep r o b l e m s f o rt h i sk i n do f p r o b l e m sw e c a nu s em o r ef l e x i b l em e t h o dw h i c h c o u p l e sk i n d so fd i s c r e t ea l g o r i t h m s t h e w o r kd o n ei nt h i sp a p e ri st od e v e l o pt h ef e mc a c u l a t i n gm o d u l eo ft h ec o m b i n e da n a l y s i s i n g p l a t f o r mw h i c hh a v et h ea b i l i t ym e f i o n e da b o v e t h em o d u l ew h i c ha p p f i e ds t lt e c h o n o l o g y s h o w st h ea d v a n t a g eo fo b j e c t o r i e n t e dm e t h o d ( o o m ) b e t t e r t h ep a p e rd i s c u s s e dt h ef e a p r o g r a m m i n gw i t ho ot e c h n o l o g yw h i c hb a s e do ns t l , a p p l i e d t h e o b j e c t o r i e n t e d a n a l y s i s 、d e s i g n a n d p r o g r a m m i n g t o t h e w h o l e p r o c e s s o f f e a p r o g r a m m i n g , g a v ea saf u l l ys h o wo ft h eo b j e c t o r i e n tf i n i t e e l e m e n tm e t h o d ( o o f e m ) p r o g r a m m i n g t h em a i n w o r ka n dc o n c l u s i o n sa r ea sf o l l o w s : f i m t :a n a l y s i st h ef i n i t e e l e m e n tp r o c e s sw i t h t h eo b j e c t - o r i e n t e da n a l y s i s ( o o a ) m e t h o d , d i s c u s st h ec l a s s e sa n dt h e i rp r o p e r t i e sa n df u n d i o n sr e l a t e dt ot h ep r o c e s s ,a n da l s ot h e r e l a t i o n sa n di n t e r f a c e so ft h e s ec l a s s e s i nt h i sp a r t ,a u t h o ra p p l i e st h eu n i f i e dm o d e l i n g l a n g u a g e ( u m l ) i nd e s c r i b i n gt h ec l a s s e sa n dt h e i rr e l a t i o n s s e c o n d :d e s i g nt h ef u n c t i o n sa n di n t e r f a c e so ft h ec l a s s e si nd e t a i lw i t ht h eo b j e c t o r i e n t e d d e s i g n ( o o d ) m e t h o d i nt h ep a p e r , t h e r ea r es o m ep a r t sw h i c hd i s c u s st h em a i np o i n t ss u c ha s t h ef o r mo ft h eo v e r a l lr i g i d i t ym a t r i x t h i r d :i m p l e m e n tt h ed e s i g n e dm o d e lw i t hs t a n d a r dc + + l a n g u a g e g i v eal i b r a r yo ff e m c l a s s e s t h el i b r a r yi m p l e m e n t e di nt h i sp a p e rc a nb eu s e df o rc a l c u l a t i n gp l a n ep r o b l e m s ,a n dy o u c a nd e r i v en e wc l a s s e sf r o mi tt of u l f i l ly o u rn e wc a l c u l a t i n gt a s k s k e yw o r d s :o b j e c t - o r i e n t e d ,f i n i t e - e l e m e n tm e t h o d ,s t a n d a r dt e m p l a t el i b r a r y 一2 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研 究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得j e 左王些太堂或其他教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示谢意。 学位论文作者签名程弟婚篮字日期:弦辟s 月2 f 日 学位论文版权使用授权书 本学位论文作者完全了解j e 直王些盍堂有关保留、使用学位论文的规定,有 权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借 阅。本人授权j e 直王些盍堂可以将学位论文的全部或部分内容编入有关数据厍进 行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名:彳= 熟伟 签字日期:侔s 月2 1 日 学位论文作者毕业后去向: 工作单位:光也晾) 陶岗、 通讯地址: 导师签名:鳄嘎7 i 、关 签字日期:功缉 月叫日 电话:侈s 又s 1 j f 7 邮编: 北方工业大学硕士学位论文 1 绪论 有限元方法是求解各种复杂数学物理问题的重要方法,是处理各种复杂工程问题的 重要分析手段,也是进行科学研究的重要: 具。该方法的应用和实施包括三个方面:计 算原理、计算机软件、计算机硬件,而有限元分析实现的最后载体是经技术集成后的有 限元分析软件。随着计算机技术的发展,有限元技术也得到了充分的发展和应用。特别 是近十几年来,个人计算机的普及,计算机的硬件费用大大降低,同时计算机的运行速 度也日益提高,使得越来越多的有限元程序可以在个人计算机上解决各种复杂的工程问 题。目前,有限元方法和有限元软件已成为许多高新科学和技术研究的基本工具和有效 手段。 随着计算机技术的快速发展,有限元分析计算技术在不断提高,有限元分析的计算 内容也日趋繁多,以传统的结构化编程方式编制的有限元分析程序在可扩充性和代码可 重用性方面受到许多制约,面向对象编程技术的出现,使软件编程摆脱了这些不利因 素,由于其具有诸多优点,面向对象编程方法正在成为程序设计的主流。 1 1 有限单元法 1 1 1 概述 有限元法实质上是一种在力学模型上进行近似的数值计算方法,最初是2 0 世纪5 0 年代作为处理固体力学问题的方法出现的。追溯历史,早在1 9 4 3 年,c o u r a n t 已经应用 了单元的概念。1 9 4 5 1 9 5 5 年,a r g y r i s 等人在结构矩阵分析方面取得了很大的进展。 1 9 5 6 年,t u r n e r 、c l o u g h 等人把刚架位移法的思想推广应用于弹性力学平面问题,他们 把平面划分成若干三角形单元和矩形单元,单元中的位移函数采用近似表达式,推导单 元的刚度矩阵,建立节点位移与节点力之间的单元刚度方程【”。1 9 6 0 年,c l o u g h 首先把 这种解决弹性问题的方法,给予特定的名词,称为“有限元法”。几乎与此同时,我国 的冯康也独立提出了类似的方法。 有限单元法的基本思路是,将结构物看成由有限个划分的单元组成的整体,以单元 节点的位移或节点力作为基本未知量求解。按选取基本未知量的不同,可分为位移法、 力法和混合法。位移法选取节点位移为基本未知量,力法选取节点力作为基本未知量, 而混合法选取一部分节点位移和一部分节点力作为基本未知量 2 1 。 有限单元法进行结构分析的基本步骤如下: 一结构物的离散化 北方工业大学硕士学位论文 离散化是将待分析的结构物从几何上用线或面划分为有限个单元,即将结构物看成 有限个单元构成的组合体。按结构物形状的不同和分析的要求,选取不同形式的单元, 通常在单元的边界上设置节点,节点联接相邻的单元。结构物的离散化时,划分的单元 的大小和数目应根据计算精度的要求和计算机的容量来决定。 二单元分析 所谓单元分析就是设法导出单元的节点位移和节点力之问的关系,既建立单元刚度 矩阵。在分析杆件结构时,其单元通常为等截面直杆,单元两端的节点位移和杆端力之 间的转换关系可直接利用结构力学导出的公式给出。而在分析弹性力学平面问题时,每 个平面单元内的任意点的位移需要按一定的函数关系用节点位移来表示,这种函数称为 位移函数或位移模式,我们选择的位移函数应保证解的收敛性,因此建立合理的位移函 数是单元分析的关键。位移函数确定后,就可以利用弹性力学的基本方程推导出单元刚 度矩阵。 此外,还需要按静力学等效原则将作用于每个单元上的外力简化到节点上,构成等 效节点力。 对每一个单元进行上述分析之后,可建立起单元刚度方程。 三整体分析 整体分析就是将各个单元组成结构整体进行分析。整体分析的目的在于导出整个结 构节点位移与节点力之间的关系,即建立整个结构的刚度方程。 整体分析的步骤为:首先按一定的集成规则,将各单元刚度矩阵集合成结构整体刚 度矩阵,并将单元等效节点荷载集合成整体等效节点荷载列阵;然后引入结构的位移边 界条件,求解整体平衡方程组,得出基本未知量一节点位移列阵:最后计算各单元的内 力和变形。 1 1 2 建立有限元列式的变分格式和加权余量格式 变分格式和加权余量格式是建立有限元列式的两种最常用途径。前者用于描述问题 的微分方程存在极小化泛函的情形,而后者则直接对微分方程的加权残差进行离散化处 理,适用于一切形式的微分方程。在一定条件下,这两种途径可获得相同的有限元列 式。 一建立有限元公式的变分格式 以各类变分原理为基础是推导大多数有限元列式最常用的方式。这一方法的优点 是:偏微分方程对应的泛函一般具有明确的物理概念,如总势能、总余能等等;着眼于 寻求广义解( 弱解) 从而降低了对函数光滑性的要求;变分原理保证了广义解在网格细 北方工业大学硕士学位论文 化的过程中会收敛到真实解。已有为数众多的文献详细阐述了如何在固体力学、流体动 力学( 位势流) 、热传导、电磁场等领域中建立有限元分析格式。这里以小变形下弹性 力学边值问题为例,简述用变分原理建立有限元格式的一般过程。 线弹性力学的基本方程为: 平衡方程:z - v + f :0 1 几何方程:e = ( v “+ u v ) z 本构关系:丁:c e 其中t 为c a u c h y 应力张量, 是本构张量。 ( 1 _ 1 ) f 为体力矢量,e 为小应变张量,u 为位移矢量,c 若边界r 上存在划分r l ur 2 = r ,r , n r := 巾,则边界条件提法为: t n = f 在l 上 u=n 在r 2 上 ( 1 2 ) 业已证明,在所有满足r 2 上边界条件的容许位移中,满足平衡方程和应力边界条 件的真实位移将使总势能泛函的变分为零( 泛函取极小值) 。 兀2 帮剧n 妒+ d - f 。f - s 卯 ( 1 3 ) 从( 1 _ 3 ) 出发可导出弹性力学中的有限元平衡方程。为简单起见,假设整个区域 只划分为一个单元。设单元节点位移矢量为 u ) ,则单元内位移矢量为 “= ) ( 1 4 ) 其中【n 为位移插值函数矩阵。设e 对应的( 工程) 应变量为但) ,t 对应的应力矢 量为 t ) , c ) 为本构张量的矩阵形式。借助于几何方程和本构方程,可将应变 e ) 和 u ) 的形式。 仁) = 1 日 p )哥 = 【c 枷) 在此基础上, ( 1 3 ) 中的各项积分可表示成 u ) 的形式。 丢妒。尉q = 丢埋酽h e ) 擒= 丢缈u 九日九c ”】 u m q = 丢 u 九k 】 u f f f f , u d 9 2 = 明r ( u ) 7 【 7 f ) 矗q = 【,) 7 p ) , j 旷,“d f 。小【,) 7 【j v 】7 f d r = u 广 _ p ) ; - 3 一 北方丁业大学硕士学位论文 p ) ,、 p ) = 分别表示出体力与面力引起的等效节点力,若令 p ) = p f + 扫) = , 则总势能泛函数兀为: 丌( 【, ) = 专 u r 【k 】 u 卜 u , p 对总势能变分并令其等于零,得有限元方程: k = p ( 1 5 ) 在分析区域被划分成多单元情形下,对【k 】还有存在单刚矩阵组装成总刚过程。在 引入位移边界条件后,【k 】是一个对称正定的稀疏矩阵。 二建立有限元公式的加权余量格式 数学物理中的许多定解问题并不存在对应的变分原理。此时,加权余量法就为建立 有限元格式提供了另外一种途径。它不依赖变分原理,直接从问题的控制微分方程出 发,数学处理上直观、方便;依据权函数的不同选择可以导出各种有限元格式。下面就 以不可压缩的粘性流动为例,简单阐述使用加权余量法中伽辽金格式建立有限元列式的 过程。 在不考虑温度效应的情况下,不可压缩n e w t o n 流体的控制微分方程为: 平衡方程:p 告= t - v + 加 连续方程:v - v = 0( 1 6 ) 本构方程:t = 一p i + 2 口d 其中p 为流体密度,v 为速度矢量,t 为c a u c h y 应力张量,b 是体力矢量,p 为静 水压力,肛为动力粘性系数,d = ( w + v v ) 2 为形变速率张量。若边界为r ,且存在 划分r , u r := f 、r l n r ;庐以a n u r 4 ;f 、n n n = 砂,则边界条件为: n 。r = 厂 ( 1 7 ) v = 订 v n = k ( 1 8 ) p = p n 为r 上的外法线矢量。设v 、p 是方程方程( 1 6 ) 的近似解,则平衡方程和连续 方程的加权余量格式为: 彤和告- t v - p b 加= 。 ( 1 9 4 北方工业大学硕士学位论文 f f f w o ) d q = 0 ( 1 1 0 ) 积分式中k 、致是权函数,其不同形式可导出不同的加权余量格式。特别地,令 睨= 6v 就可导出平衡方程的伽辽金格式:对连续方程,令巩= 印。对上两式进行分 部积分,注意对称张量t 存在以下张量恒等式: 丁v 。6 v = v 口6v ) 一t d d 应用c a u s e 公式,并在r 2 和r 4 上应用相应的边界条件,得: 缈p 罢筇+ 丁6 d ) d q2 驴制q + 盯,跏t c m , 甄铲6 p 。i 矗q 。l 铲却孤 q r 3 ( 1 _ 1 2 ) 式( 1 1 1 ) 即虚功原理:惯性力与应力张量的虚功之和等于外力的虚功;而 ( 1 1 2 ) 则表明静水压力产生的虚余功为零。 同样,在一个单元内建立有限元列式。设单元节点速度矢量 v ,压力速度矢量为 p ) ,则可建立单元内速度v 和压力p 的插值形式 t ) ,并且表示成节点量 v ) 和 舛的 形式 d = 【8 ( 1 1 3 ) f =怛) p陲 = 【c 】 口】0 卜伽 阻】 p ) 征此基自出上将秒 分瓦( 1 1 1 ) 、( 1 1 2 ) 改与成矩1 5 孚公式。 驴却争q2 缈缈詈珊巾v h 彤q 2 肼p 彤 7 】7 彤) + p l y 1 九工】【】彤) d q = 6 彤) 7 】) + 6 ) 7 瞄“】) f f f s d d f a 。1 5 1 6 州。缸y d g a 5 北方t 业大学硕士学位论文 = p 彤) 7 ( 【b r 【c 口】杪卜【b 7 m ) 【日h q ) d q = 6 p 7 ) 7 【k ”】p 7 ) + d y ) 7 i g ”】斜 驴跏q + 巧,+ 涮丁;a 彤,7 陟m 7 p m q + 印九,归 = 6 r f 妒护涵5 驴册7 ( b 毒毒 t 1 m 脚 = d p ) 7 陋”】彤) 彤删r 。俨册7 v 一打= 6 尸r f 3 其中 m 】为质量矩阵, g c o “】为对流矩阵,暖“】为扩散矩阵,陋- 】为速度压力 关联矩阵, f ) 为外力( 体力和面力) 的等效节点力,速度梯度矩阵【l 】的定义为: l u = 却i o x 【k 一】为连续矩阵, f ,为边界流量向量。最后得到有限元方程组: 司+ 雌p 咛僻鼢 n 方程( 1 1 4 ) 构成不可压缩粘性流的速度一压力有限元列式,它是一个非线性方程 组,我们注意到陋】一【k ”】7 、陋一】,陋“】7 ,系数矩阵的非对称性给粘性流体有 限元分析造成极大的困难。 从上面的推导过程可知,虽然建立有限元列式的数学手段及所处理问题的物理含义 各不相同,但不同的有限元分析过程却表现出过程和数据结构的相似性。这种相似性为 后面建立对有限元分析的总体抽象奠定了基础。 1 2 有限元软件技术 1 2 1 有限元程序的内容 有限元程序是把有限元理论和方法用计算机实施计算过程的纽带,有限元分析通常 有三个基本内容1 3 1 ,如图1 1 所示。 6 1rj、lrj忙r忙r 北方工业大学硕士学位论文 图1 1 有限元程序内容 一前处理( 数据输入阶段) 这个阶段主要是读入数据或输入简图、生成数据,以便形成有限元网格,为有限元 分析计算做好准备。主要内容有: ( 1 ) 过程控制信息,包括节点总数、单元批数或总数、问题类型、材料数组、支 座数、载荷工况数等。控制信息用来控制数组的规模、循环语句的终止点或控制转移 等。 ( 2 ) 网格自动生成。 ( 3 ) 节点坐标和约束信息。 7 北方工业大学硕士学位论文 ( 4 ) 单元信息,由单元类型、单元节点组成。 ( 5 ) 材料信息。 ( 6 ) 载荷信息。 ( 7 ) 计算简图生成,便于检查原始数据是否有错,以便及时加以修改。 二分析计算 这个阶段主要是有限元矩阵的计算、组装和求解。主要内容有: ( 1 ) 计算单元的刚度矩阵,简单的单元可直接利用显式,“对号入座”,组装成 总体刚度矩阵。 ( 2 ) 计算单元非节点载荷的等效节点载荷向量,“对号入座”,组装总载荷向 量。 ( 3 ) 根据已知的位移边界条件,进行约束处理,消除总刚度方程的奇异性。 ( 4 ) 利用线形代数方程组的解法,对总刚度方程进行求解,得出结构节点位移向 量等。 三后处理 这一阶段是对每一个单元建立单元节点位移向量,再计算单元内指定截面的内力或 指定点的应力。目前,后处理的发展很快,主要时增加图形输出,如变形图、弯矩图、 剪力图、轴力图、主应力分布图、等应力线等。 另外,尚需进行软件集成,设计友好的界面,便于用户操作使用。 1 2 2 有限元软件的发展 国际上,在上世纪5 0 年代末、6 0 年代初就投入大量的人力和物力开发具有强大功 能的有限元分析程序。其中最为著名的是由美国国家宇航局( n a s a ) 在1 9 6 5 年委托 美国计算科学公司和贝尔航空系统公司开发的n a s t r a n 有限元分析系统。该系统发 展至今已有几十个版本,是目前世界上规模最大、功能最强的有限元分析系统。在2 0 此纪6 0 年代末7 0 年代初,有限单元法在理论上已基本成熟,并开始陆续出现商业化的 有限元分析软件。世界各地的研究机构和大学也发展了一批规模较小但使用灵活、价格 较低的专用或通用有限元分析软件,主要有德国的a s k a 、英国的p a f e c 、法国的 s y s t u s 、美国的a d i n a 、a n s y s 和s t a r d y n e 等公司的产品。而目前,在工程中 广泛应用的有限元分析软件是a n s y s 。 国内有限元分析软件的发展远落后于美国等国家,国内有限元分析软件大多是专用 软件,如t b s a 、t a t 等建筑类软件。然而,即便是上述那些通用结构分析软件也不能 解决所有问题,而且,随着工程技术的发展和研究的深入,还会不断涌现出新的待解问 8 北方工业大学硕士学位论文 题。另一方面,我国现有的大型有限元分析软件大多购买国外的软件,而购买国外软件 存在如下的问题:首先是软件的源代码核心部分不能买到,暗箱运算对工程设计带来隐 患;其二是工程都有自身的特殊性,如由于材料的特殊性要改变材料的本构关系,要在 购买的软件上作有针对性的修改十分困难;其三是软件价格高,如a n s y s 软件不带源 代码的商用版价格在4 0 多万人民币,购买源代码价格更高。因此,了解结构分析程序 设计原理和方法,开发我国自主的通用有限元分析软件是很有必要的。 1 2 3 传统有限元程序设计面临的问题 开发有限元程序是一项相当困难的工作,这不仅因为要将深奥的有限元理沦程序 化,而且在于传统的程序设计思想给有限元程序的丌发、调试以及日后的扩充都带来了 很大的困难。对于后者,其中既有历史上的原因,也有程序设计思想和方法上的原因。 从历史上看,f o r t r a n 是最早出现、也被誉为最适合科学计算的高级算法语言。因 此,最初的有限元分析程序都采用f o r t r a n 语言编写是十分自然的。时至今日,著名的 大型分析软件如a d i n a 、a n s y s 、m a r c 的分析模块仍然采用f o n r a n 伶后若不加说 明,f o r t r a n 均指a n s if o r t r a n7 7 1 。但作为一种程序设计语言,f o r t r a n 缺乏现代程序设 计语言的一些基本特征,主要表现在以下几方面: 一缺乏动态内存分配能力 所谓动态内存分f l b ( d y n a m i cm e m o r ya 1 1 0 c a t i o n l ,是指程序在运行时根据需要向系统 申请所需内存。在有限元分析中,所须内存的大小取决于分析规模,而这只有在程序运 行时才能确定,因此动态内存分配是开发有限元分析程序必须解决的基本技术。 然而,f o r t r a n 恰恰缺乏这种能力:程序中的所有数组大小必须事先确定。在 a d i n a 8 1 中借助于公用块实现了“半动态”内存分配,它在无名公用块中定义一个大 数组c o m m o n a ( 1 0 0 0 0 0 0 ) ,该数组存储a d i n a 8 1 的所有有限元信息。对a 数组是分 段使用的,例如在一次平面应力分析中,使用1 0 5 个节点和2 0 个8 节点单元,则a 可 能的一种使用方式为:a ( 1 ) - a ( 1 0 5 ) 存储每个节点的x 坐标,a ( 1 0 6 ) - a ( 2 1 0 ) 存储节点y 坐标,a ( 2 1 1 ) a f 4 2 0 ) 存储节点位移等等。这并非真正意义上的动态内存分配技术,而 且使得程序的数据组织环环相扣,对一处数据的修改极可能牵一发而动全身,从而造成 程序扩充性的困难。 二f o r t r a n 缺乏自定义数据类型的手段 程序从本质上讲是对现实世界的某种仿真,因此程序设计语言数据类型的多寡,反 映了该语言对现实世界的仿真能力的大小。当然,任何一种程序设计语言所预定义的数 据类型f 这里指i s o 标准中所确定的数据类型,如f o r t r a n 中的整型、实型等数据类型i 总 9 北方工业大学硕士学位论文 是最基本而又十分有限的,不足以很好地描述现实世界的各类问题。解决这个矛盾的途 径就是允许程序员根据实际情况定义所需的数据类型。例如,在有限元中,单元包含有 许多内涵,如单元类型、单元材料、单元节点等等,因此完全可定义一种新的数据类型 来刻划单元的属j 眭。允许自定义数据类型,就意味着现实世界中的物理模型和该模型的 计算机实现之间,可以有尽可能直接的对应关系,这一思想非常有利于实现大型软件系 统。 三对公用块不加限制的使用 作为全程变量( 即同一程序中的所有模块都能对其访问) ,公用块在数据传递效率上 较“虚实结合”要高,因此它在大型f o n r a l l 程序中起着重要的作用,例如在a d 矾a 8 1 中的数组a 。 但是,公用块带来的弊病也是显然的。首先,它引起数据流向的不唯一眭,使得程 序的数据管理变得困难;其次,在任何子程序中均可使用公用块中的数据,又使得在程 序开发中出错的可能性增加。按结构化程序设计的观点,各程序模块应做到尽量独立, 但公用块的使用却削弱了各模块之间独立性。 除此之外,f o r t r a n 还存在其它一些缺点,如变量标志符长度过短,变量不经定义 就可使用等等。这些缺点可通过采用适当的程序设计语言得以修正,如c 语言就具有动 态内存分配函数,并且能自定义所需数据类型。既然c 已经较好地克服了f 0 r t m 的缺 点,那么阻碍人们采取进一步行动的唯困难,似乎就是将现有的具有成千上万行 f o r t r a n 代码的有限元程序改写成c 语言的工作量太大。然而,有限元程序研制、维护 和扩充中的困难性,并不会因为更换一种程序设计语言而得到根本上的改观,更深层次 的原因在于指导有限元软件开发的结构化程序设计思想。 结构化程序设计思想的核心在于模块化,即任务的分解。它是指将一个大型复杂的 程序分解为若干独立的程序段,即模块( 函数或子程序) ,每一模块完成某种特定的功 能,并可单独设计和调试。 完全符合结构化思想的模块应只通过单一界面进行数据交换( 公用块的使用破坏了 这一规则) 。模块化具有两个显著的优点:第一是局部性,对程序某一局部( 通常是模块 内部) 的更改不影响其余部分,同时也将错误限定在各个模块中,有效地防止错误的扩 展,提高了软件系统的稳定性和可维护1 生;第二是过程的抽象性,人们使用一个模块时 只需了解它的功能和界面参数的含义,而无需知道它的实现细节是怎样的,这也在很大 程度上解决了代码重用性问题,避免人们的重复劳动。 1 0 一 北方工业大学硕士学位论文 自顶向下和逐步细化是结构化程序设计的主要方法。结构化思想的引入,改变了过 去在程序设计中无规范可循而由程序设计者随心所欲的状况,这使大型软件系统在按层 次分工开发和组装的工业化生产方式的方向上迈出了重要的一步。不可否认,结构化程 序设计思想对开发大型有限元程序起到的巨大推动作用。事实上,时至今日,几乎所有 的有限单元法教材,仍然按结构化程序设计的思想来介绍其中的有限元示范程序。但随 着有限元应用的日益扩大以及有限元理论的不断发展,人们对有限元程序在维护性、扩 充性等方面提出了更高的要求,结构化程序设计方法的局限性也逐渐暴露出来。 在程序= 算法+ 数据结构这一模式下,模块完成了对功能的封装,但由于模块本身不 封装它要操作的数据,使得模块的运行严格受控于程序的基本数据结构。而大型有限元 程序往往涉及多个分析领域,其中的数据多且繁,在扩充程序功能时几乎不可避免地要 对基本数据结构进行或大或小的修改,这都会导致所涉及的模块改写或重写,从而降低 了程序的扩充性。因此,人们迫切需要一种新的程序设计方法,它继承结构化对过程抽 象的优点,同时又克服过程与数据分离的缺点。 1 3 面向对象方法与面向对象有限元 1 3 1 面向对象方法 面向对象方法是一种新兴的程序设计方法,或者说是一种新的程序设计范型,其基 本思想是运用对象、类继承、封装、聚合、消息传递、多态性等概念来构造系统进行程 序设计。该方法强调直接以问题域中的事务为中心来思考问题、认识问题,并根据这些 事物的本质特征,把它们表示为系统中的对象,作为系统的基本构成单位。它对描述事 物的属性、特点及事物之间的关系具有一套较完整的系统分析方法,并填平了语言上的 鸿沟。因此,面向对象方法是一种先进的软件开发方法,它较传统的程序设计思想更接 近于人的思维,它把待求解问题变简单,而不是变复杂,面向对象方法已经不仅是一些 具体的软件开发技术与策略,而且是一整套关于如何看待软件体统与现实关系,以说明 观点来研究问题并进行求解,以及进行系统构造的软件方法学。 面向对象方法的实施过程可用如下简单公式表示: 面向对象= 对象、类+ 结构与连接+ 继承+ 封装+ 消息通信 其经典过程则包括面向对象分析( o b j e c t - o r i e n t e da n a l y s i s ,o o a ) 、面向对象设计 ( o b j e c t o r i e n t e dd e s i g n ,o o d ) 、面向对象编程( o b j e c t o r i e n t e dp r o g r a m ,o o p ) 。 北方工业大学硕士学位论文 面向对象分析是直接将问题映射为对象表示的实体,用类层次表达系统的抽象层次 关系,用消息在各对象之间传递控制的数据流的系统分析和建模方法【”。主要工作有对 象的识别、对象属性和方法的确定,以及对象之间的相互关系的确定等等。 面向对象设计是指利用已经形式化的分析模型,扩充其构造成分,改进类、对象实 体描述,进而构成一个完整的软件模型。一般分为扩充和具体设计两个步骤。 面向对象编程的主要工作时选用某种面向对象程序设计语言以及合适的编程环境, 实现面向对象设计的软件系统。 1 3 2 面向对象有限元 面向对象的设计思想提供了更好地处理软件复杂性的方法。在结构化设计中程序员 常常感到缺乏抽象层次,面向对象方法则提供程序设计不同的抽象层次,从对象到类直 至整个应用程序框架。它能加速软件开发、方便地扩充代码,并提供在市场上有竞争力 的软件产品,这也是面向对象的思想在被应用于有限元软件开发的原因之一。 针对有限元分析程序本身的复杂性和易错性,以及在程序设计方法上的不足,结合 面向对象技术提供的新的、先进的设计方法,采用面向对象技术原理进行有限元分析程 序的开发已经成为有限元分析程序发展的必然结果。 面向对象有限元方法就是将有限元理论和软件工程中的面向对象方法紧密的结合在 一起。它的应用,包括有限元面向对象分析( o o a ) 、有限元面向对象设计( 0 0 d ) 和有限元面向对象编程( o o p ) 。 1 3 3 面向对象有限元的研究进展 面向对象有限元方法( o o f e m ) 的研究于始上世纪8 0 年代后期,经过十多年的发 展,已经取得一定的成果。 在国际上,d r r e h a n k 和j w b a u 曲【9 墟出了有限元程序设计的新技术面向对 象的方法。p e s k i n r t l 和r u s s om f i l o l 用这种方法设计了三个基本类:p r o b l e m 、 d o m a i n 和e q u a t i o n 。m i u e lg rb r u c cw r f o r d e ,r i c a r d oo f o s c h i 和s i e g f i i e d f s t i e m e r i “】研究了面向对象有限元程序的原型,这个原型把对象分为自由度、节点、单 元和材料等等,每一种对象都有独立处理数据的能力。f o r d e 等还对面向对象的有限元 方法和传统的有限元方法做了比较。f e n v e sg l 【1 2 1 在面向对象有限元程序设计的算法方 面,研究了用面向对象的概念来对节点重新编号的方法。r i m a c l 【i e 【1 3 j 提出了扩展的有 限元对象,并指出,面向对象的方法在有限元问题的应用中,可以提高有限元程序的模块 化程度,减少错误的产生,并使程序设计的思路更为清晰化。t h o m a sz i m m e r m a n n ,y v e s d u b o i s - p e l e r i n 和p a t r i c i ab o m m e 1 4 - 1 5 】研究了面向对象有限元编程的控制规则,并用 一1 2 北方丁业大学硕+ 学位论文 s m a l l t a l k 语言编制了面向对象有限元的原型。j u j 和h o s a i nm u 【1 6 】运用面向对象的概念 来设计有限元的子结构。d e y h e r a m e n d y 和t h o m a sz i m m e r m a n n i ”】运用对象的概念开发 了一个可以表达有限元数学方法的系统,这个系统使得矩阵、方程组可以由继承得到。 u d om e i s s n e r ,j o a q u i n 和s c h 6 n e n b o m m 运用o o f e m 对一个三维岩土工程问题进行了分 析。h w e m e r , m m a c k e n 和m s t a r k 1 9 j 研究了在隧道工程中,如何用面向对象的模型来 设计与分析问题。m a c k i e 2 0 提出在o o f e m 中,f e m 用户建立结构模型,这个模型和有 限元模型是分开的;o o f e m 的数据结构是一种分布式的数据结构,而不是传统的集中 式的数据结构。r c h u d o b a , z b i t t n a r 和r k r y s l 2 l 】用o o f e m 研究了显式表述的有限元计 算。h b e r g e r , u g a b b e r t 和p w e i l n e r 【2 】研究了在岩土工程计算机系统中如何用o o f e m 来生成三维有限元网格。z i m i n e r l t l a n n 和e y h e r a m e n d y ( 1 9 9 6 ) 1 2 3 1 研究了符号继承和自动 编程的规则,并为初始边界值问题设计了一个新的有限元模型。 在国内,这方面研究刚起步,周本宽、曹中清和陈大鹏( 1 9 9 6 ) 尝试用b o f l a n dc + + 进 行一种面向对象有限元程序设计,着重进行有限元程序的类的划分与定义,并将几个典型 的类设计成类等级。 项阳,葛修润( 2 咖) 2 5 】研究了一个内嵌、c a d 系统的有限元分析系统,该系统采用面 向对象的方法设计。 魏永涛,于建华和陈君楷( 2 0 0 1 ) 将面向对象的程序设计方法引入有限单元法,通过 构建四个数据类,完整地封装了有限元基本数据。 周德亮,丁继红和马生忠( 2 0 0 2 ) 【2 1 根据地下水模拟有限元的计算特点,依照面向对象 程序设计方法,用c + + 语言,建立了矩阵类、单元类、节点类、有限元主类等。 项阳,平扬,葛修润( 2 0 0 2 ) 【2 8 】用c + + 语言按照面向对象的方法建立了有限元模型的 类,相关的类和方法包括处理矩阵的类、单元类、节点类、高斯点类、形函数类、网格 类等。 朱恒山( 2 0 0 1 ) 2 9 悃r o s e 软件工具,采用u m l 建模语言和c + + 语言编制了面向 对象的有限元程序。 俞铭华等【3 j 采用分层设计原则,设计了面向对象有限元类,并采用c + + 语言编程实 现了杆系结构静力分析、平面问题和板弯曲问题的有限元分析。 综上所述,面向对象的有限元研究还很不成熟,尤其在国内基本处于起步阶段,计 算机应用的发展是日新月异的,计算机语言也有其诞生、发展和更新的过程。某种计算 机语言编写的软件在一定时期发挥了重要的作用,当语言有了更新的发展时,软件也应 该随之进入一个新的阶段。在中国,计算机软件的发展也不应该落后于其他国家的发展 1 3 北方工业大学硕十学位论文 水平,因此,面向对象有限元方法以及面向对象有限元软件的研究和开发,是有重大现 实意义的。 1 4 本文的研究工作 对于一些有特殊求解要求的更为复杂的问题,例如需要对同一分析对象的不同区域 分别给出力学有限元解和力学边界元解,或要求对同一分析对象的传热学问题和力学强 度问题同时求解等,若采用单一的有限元离散化方法分析就会使得求解方式过于刚性, 无论从算法的适用性还是经济性方面考虑都有所不足。对这类问题应该采取更具柔性的 求解方式,即采取耦合了多种离散化算法的联合求解方式去分析。 本论

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论