面向对象地有限元程序设计_袁政强

面向对象地有限元程序设计_袁政强

ID:32911492

大小:225.38 KB

页数:8页

时间:2019-02-17

面向对象地有限元程序设计_袁政强_第1页
面向对象地有限元程序设计_袁政强_第2页
面向对象地有限元程序设计_袁政强_第3页
面向对象地有限元程序设计_袁政强_第4页
面向对象地有限元程序设计_袁政强_第5页
资源描述:

《面向对象地有限元程序设计_袁政强》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、第22卷增刊重庆建筑大学学报Vol.22Sup.2000年5月JournalofChongqingJianzhuUniversityMay2000文章编号:1006-7329(2000)s0-144-08面向对象的有限元程序设计袁政强,白绍良,李正良(重庆建筑大学建工学院,重庆400045)摘要:按照面向对象的程序设计方法,遵循有限元分析的本质,采用C++语言,建立了有关描述有限元模型的类,用链表方式实现结点、单元和材料的数据存放、用多态性实现单元的自由链接,方便的实现了单元增减等用传统语言无法实现的功能。据此编制了有限元分析的数值计算程序,并给出了一个实例。关键

2、词:面向对象;有限元;C++语言;链表结构中图分类号:TP311文献标识码:A传统的有限元程序设计一般采用结构化的程序设计方法和结构化语言(如FORTRAN),其程序的扩展能力有限,代码的重复利用率低,调试复杂。面向对象的程序设计,由于程序具有封装性、继承性和多态性等优点,使得程序设计概念清楚,调试容易,代码的重复利用率高,能实现一些用传统方法无法实现的功能,是现代程序设计的主要方法之一。面向对象的有限元程序设计,由于封装性,具有类似黑箱的性能,能够方便地与其它程序例如CAD程序集成,形成集成的软件包。文献[5]中已给出了面向对象的有限元方法,但在结点、材料和单元

3、的处理上仍沿用传统的数组形式。在处理问题的能力上与传统有限元方法无多大的改进。本文利用面向对象的程序设计语言C++,根据有限元的分析过程,建立了有关描述有限元模型的类,用链表方式实现结点、单元和材料数据的动态存放,用动态联编的多态性实现各类型单元的自由链接,大大简化了程序的结构,降低了程序的复杂性,方便的实现了单元抚增减等用传统语言无法实现的功能。用本程序的方法能实现在钢筋混凝土构件裂缝扩展过程中,单元自动裂变和单元材料退化等算法。文中还给出了平面等参单元和平面梁单元的算例。采用VisualC++,在Windows99上实现了二维平面单元计算。结果表明,程序设计和

4、调试周期较传统设计方法明显缩短,代码的利用率也明显提高。1程序设计按照有限元的分析方法,有限元分析的主要数据包括:(1)描述有限元分析的整体数据,如单元总数、结点总数、问题的维数、材料种类数等;(2)结点数据,包括结点坐标、结点自由度(结点参数)、结点力、边界条件等;(3)单元数据,包括单元联络性数据、单元类型、高斯积分点数据和单元所用材料数据等;因此,按照面向对象的程序设计方法,相关的类主要有:(1)结点数据类和相关的方法;(2)单元数据类和相关的方法;(3)材料数据类和相关的方法。1.1结点数据类结点数据包含了结点约束、结点坐标、结点力向量。而这三个向量用已有

5、的模板向量类来定义。[3][4]结点数据类(类概念可参考)。#ifndefNODE收稿日期:2000-04-10基金资助:国家自然科学基金项目(59378351)作者简介:袁政强(1962-),男,贵州人,讲师,主要从事钢筋混凝土结构研究。2000年增刊袁政强等:面向对象的有限元程序设计145#defineNODEclassNodeData{protected:intInd;∥结点指示值(序号)unsignedintNEquation;∥结点在方程中的开始编号,程序自动计算intNodeFree;∥结点自由度数intDim;∥空间维数*Vector〈int〉BC;

6、∥用于指示自由度的约束状态*Vector〈float〉Coor;∥结点坐标*Vector〈float〉Force;∥开始时是结点力,解方程以后是结点位移;*Vector〈float〉Value[8];∥非线性分析和动力分析使用的存放的速度、加速度等值的向量*NodeDatanext;∥自身类型的指针,用于形成链表public:NodeData∷NodeData(intiInd,intiNodeFree,intiDim);∥构造函数~NodeData(){deleteBC;deleteCoor,};∥析构函数public:intGetInd(){return(Ind

7、);};∥取得结点序号*NodeDataGetThis(intiInd);∥根据序号返回本结点地址voidoutputBC();voidoutputCoor();*voidoutputForce(chars);voidSetNEquation(intINeq){NEquation=iNeq;};unsignedintGetNEquation(){returnNEquation;};*Vetor〈int〉GetBC(){returenBC;};*Vetor〈float〉GetForce(){returnForce;};*voidSetForce(Vetor〈floa

8、t〉F){

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。