首页 > 范文大全 > 正文

空间薄壁梁单元面向对象程序的实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇空间薄壁梁单元面向对象程序的实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要: 针对传统有限元分析软件主要面向过程设计,其可维护性和可扩展性等较差的问题,基于面向对象程序设计方法,建立具有内部节点的空间薄壁截面梁单元模型,给出线弹性空间薄壁梁单元的UML类图,介绍矩阵类、截面类、材料类、节点类、单元类和结构类等6种类成员的主要属性和方法.用C#编制相应的有限元程序,通过T形框架算例比较和验证其位移和弯曲转角计算值、理论解和ANSYS的BEAM 189梁单元的数值解,结果表明该程序精度良好,可用于空间薄壁结构的有限元分析.

关键词: 空间梁; 薄壁截面; 有限元; 面向对象程序设计

中图分类号: TU323.3; TP311.1

文献标志码: B

Objected-oriented program implementation of

spatial thin-walled beam element

WANG Xiaofeng1, LUO Xiaoqun2, ZHANG Qilin2

(1.School of Civil Engineering, Beijing Jiaotong University, Beijing 100044, China;

2. School of Civil Engineering, Tongji University, Shanghai 200092, China)

Abstract: As to the poor maintainability and scalability of the traditional finite element analysis software because they are designed by process-oriented program design method, the model is established for spatial thin-walled section beam element with interior nodes on the basis of object-oriented program design method, a UML class diagram is showed for linear elastic spatial thin-walled beam element, and the main attributes and methods of six class members are introduced, including classes of matrix, section, material, node, element, and structure. A finite element program is developed by C# and used to solve the displacement and bending angle of a T-shaped frame. The calculation results are compared with the theoretical solutions and numerical solutions of beam element BEAM 189 of ANSYS. The comparison indicates that the program is accurate and can be applied in the finite element analysis of spatial thin-walled structures.

Key words: spatial beam; thin-walled section; finite element; object-oriented program design

0 引 言

有限元法已成为工程领域,特别是结构分析中应用最广泛的数值方法之一,是许多高新科学和技术的基本工具和有效手段.当前,许多有限元软件主要面向过程设计,其可维护性和可扩展性较差,模块之间的松耦合程度不高,数据与操作分离,使得修改或增加一个模块会影响到其他模块.20世纪90年代兴起的面向对象程序设计方法[1]将数据和操作封装在类中,提高程序的可维护性、可扩展性和可重用性,克服面向过程设计的不足.

本文基于面向对象方法建立具有内部节点的空间薄壁梁单元模型[2-5],采用C#编制相应的面向对象有限元程序,通过算例比较和验证计算结果与理论解以及ANSYS的BEAM 189壳单元的数值解.

1 类关系

有限元法涉及很多关于矩阵的运算,因此首先建立矩阵类.空间薄壁梁单元具有确定的单元长度、截面形式和材料特性等,其两端分别为节点i和j,据此分别建立节点类、截面类、材料类和单元类等.考虑到薄壁截面形状的多样性,可将截面类作为基类,将槽形、工字形和矩管等截面作为子类派生;为满足后续非线性分析的需要,可将单元类作为基类,将弹性单元类作为其泛化子类.薄壁结构实际由薄壁梁单元按照一定的结构体系组合形成,因此又建立结构类.考虑到后续非线性计算的需要和调用计算方法的一致性,可将结构类建为基类,隐藏其具体子类的弹性结构类.线弹性空间薄壁梁单元的UML类图见图1.

图1中,矩形框图表示类.在每个矩形框图中,最上格中的粗体字表示类名,字体为斜体的表示抽象类;中间格列出类的字段和属性,由于类图主要表明类之间的关系,为表示简洁,只列出部分属性;最下格列出的是该类中的部分方法(在UML中又称为操作).属性和方法前面的“+”表示可见性为“public”;“#”表示可见性为“protected”;“-”表示可见性为“private”.[6]在中间和最下格中,冒号前面为属性或方法名称,冒号后面为类型或返回类型名称.方法签名中“in”表示输入参数.折线段表示关联(association),关联两端旁边的数字“1”和“*”用于描述关联的多重性,“1”表示对应1个,“*”表示对应多个.一端为菱形的关联表示聚合(aggregation),一端为中空三角形的关联表示子类对父类的泛化(generalization).

2 类成员

2.1 Matrix类

Matrix类即矩阵类,其主要属性包括矩阵的行数RowNum(int型)、矩阵的列数ColumnNum(int型)和索引指针this[int i, int j](int型i和j分别表示Matrix对象的行索引和列索引,返回类型为double).主要方法为:“+”,“-”,“*”,“/”运算符的重载,返回类型均为Matrix对象;矩阵的2范数Model(),返回类型为double;矩阵转置Transpose(),返回类型为Matrix对象;矩阵求逆Inverse(),返回类型为Matrix对象.

2.2 Section类

Section类即截面类,为抽象基类,主要属性包括截面编号SectionNo(int型)和截面类型SectionType(enum型).主要方法为:截面面积Area(),返回类型为double;计算截面形心Centroid(),返回类型为Point对象;计算截面剪心ShearCent(),返回类型为Point对象;截面对y轴的惯性矩Iy(),返回类型为double;截面对z轴的惯性矩Iz(),返回类型为double;截面扇性惯性矩Iω(),返回类型为double.Section类的泛化子类包括CShaped类、IShaped类和Rectangle类等.

2.3 Material类

Material类即材料类,对于各向同性的线弹性材料,材料类的属性包括弹性模量E(double型)和泊松比Posson(double型).方法为剪切模量G()(通过E和Posson计算,返回类型为double).

2.4 Node类

Node类即节点类,其主要属性分别为节点编号NodeNo(int型);节点坐标X,Y和Z(double型);节点位移Displacement(考虑截面翘曲,节点具有7个自由度,类型为double[7]).

2.5 ElementBase类

ElementBase类即单元类,为抽象类.弹性单元和非线性单元都作为子类继承该类,其主要属性包括单元编号ElementNo(int型),单元节点NodeI和NodeJ(Node对象),材料Material(Material对象)以及截面Section(Section对象).主要方法为:单元长度Length(),返回类型为double;转换矩阵TranMatrix(),返回类型为Matrix对象;整体坐标系下的单元刚度矩阵ElementMatrixGlobal(),返回类型为Matrix对象.子类ElementElastic实现父类的抽象方法ElementMatrixLocal()(局部坐标系下的单元刚度矩阵,返回类型为Matrix对象).

2.6 StructureBase类

StructureBase类即结构类,为抽象类.结构的弹性分析和非线性分析都派生于该类,该类也为单元对象和节点对象的容器类,其主要属性包括单元数ElementNum(int型)、节点数NodeNum(int型)、单元集合Elements(ElementBase[])、节点载荷NodeLoad(Matrix对象)、约束Constraint(Matrix对象)和节点位移NodeDisp(Matrix对象).主要方法为:总刚集成TotalMatrix(),返回类型为Matrix对象;总刚非奇异化TotalMatrixUnsingular(),返回类型为Matrix对象.子类StructureElastic实现父类的抽象方法Solve()(有限元求解,返回类型为void).

3 算例验证

某T形框架及其材料截面见图2,其中,图2(a)C处受z向载荷Q=-1 000 N作用,材料的弹性模量为2.1×107 N/cm2,泊松比为0.25.截面为中空矩形截面,见图2(b).

计算结果对比见表1,可知,本文有限元程序的计算结果与不考虑剪切变形影响的经典理论解差别微小,与基于1阶剪切变形理论的Timoshenko解完全一致,其精度高于ANSYS的BEAM 189梁单元.

4 结束语

有限元法是科研和工程领域中最常用的数值计算方法之一,但目前许多有限元软件仍采用面向过程的程序设计方法,因此在可扩展性、可重用性和可维护性等方面都存在很大不足.本文基于面向对象的方法,根据自行建立的具有内部节点自由度的薄壁截面梁单元,采用C#编制面向对象的有限元程序.利用编制的有限元程序,通过算例比较和验证计算结果与理论解以及ANSYS的BEAM 189壳单元的数值解,结果表明本文程序的计算精度良好,可用于空间薄壁结构的有限元分析.

参考文献:

[1] 马永其, 冯伟. 面向对象有限元程序研究综述[J]. 计算机应用研究, 2001, 18(10): 7-13.

MA Yongqi, FENG Wei. Advance in object-oriented finite element programming[J]. Application Res Computers, 2001, 18(10): 7-13.

[2] WANG Xiaofeng, ZHANG Qilin, YANG Qingshan. A new finite element of spatial thin-walled beams[J]. Appl Math & Mech, 2010, 31(9): 1141-1152.

[3] WANG Xiaofeng, YANG Qingshan, ZHANG Qilin. A new beam element for analyzing geometrical and physical nonlinearity[J]. Acta Mechanica Sinica, 2010, 26(4): 605-615.

[4] WANG Xiaofeng, YANG Qingshan. Geometrically nonlinear finite element model of spatial thin-walled beams with general open cross section[J]. Acta Mechanica Solida Sinica, 2009, 22(1): 64-72.

[5] 王晓峰, 杨庆山. 基于Timoshenko梁理论的薄壁截面梁弯扭耦合分析[J]. 工程力学, 2008, 25(5): 12-16.

WANG Xiaofeng, YANG Qingshan. Coupled bend and torsion analysis of the spatial thin-walled beam using Timoshenko theory[J]. Eng Mech, 2008, 25(5): 12-16.

[6] 刘弘, 刘希玉. 面向对象程序设计[M]. 北京: 北京邮电大学出版社, 2005: 218-238.