面向对象的有限元编程|综述

时间:2022-07-25
本文章向大家介绍面向对象的有限元编程|综述,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一个重要的概念:类的聚合

一个类可以包含诸多成员,而其中某些成员又可以是其他类的的对象。当一个类Person 包含一个成员name时,Person中的每个对象都将拥有一个string类的对象,这就是Has-a关系。每个person的实例都有(has)sring类的一个实例。术语聚合(Aggregation)通常用来描述一个类的对象拥有其它类的对象的情况。

class person
{
    std::string  name;
    int          age;
};
//...

面向对象有限元编程综述

在面向对象的有限元分析领域,具体的有限元模型可看作一个对象,叫作整体结构对象。整体结构对象又是一个聚合对象,它包含了多种其它类的对象,例如节点对象,单元对象,材料对象,荷载对象等等。如图1所示,将这些对象通过算法又形成整体结构对象。

  • 单元类

单元对象是构成整个结构对象的基本要素,如杆单元,梁单元,板单元,壳单元等等。虽然单元形状和特性各不相同,但基本特征和功能是相同的。比如都具有一定的几何形状,通过节点与其它单元连接,包含材料信息,在结构分析中各单元皆以单元刚度矩阵的形式组装成整体结构。

  • 节点类

节点是连接各单元的关节,单元按照节点分布组合成整体结构对象。节点类的属性主要有:节点坐标,节点自由度,节点力,节点约束等等。

  • 约束类

约束类的节点类是Has-a关系,也就是说,节点对象的一个成员 是约束类的成员。以一个桁架节点约束为例

class TrussRestrain 
{
 protected:
 int  RX;
 int  RY;
//...
};


class TrussNode 
{
protected:
   size_t id;
   double coordX, coordY;
   TrussRestrain  nodeRestrain;
  
//...
};
  • 材料类

材料类用于对材料特性的描述,如弹性模量,密度,线膨胀系数等等。对于线弹性静力分析,只需要弹性模量就可以了。对于非线性分析,还需要材料的本构关系。

  • 数值计算类

数值计算类用于求解以及数据结构的组织,比如刚度矩阵,位移向量,节点力向量等等。

  • 整体结构类

整体结构对象代表了整个结构,是一个聚合对象。整体结构类通过算法管理成员对象之间的关系,进行结构的计算分析。整体结构类只有一个实例,即结构对象。