一个类可以包含诸多成员,而其中某些成员又可以是其他类的的对象。当一个类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;
//...
};
材料类用于对材料特性的描述,如弹性模量,密度,线膨胀系数等等。对于线弹性静力分析,只需要弹性模量就可以了。对于非线性分析,还需要材料的本构关系。
数值计算类用于求解以及数据结构的组织,比如刚度矩阵,位移向量,节点力向量等等。
整体结构对象代表了整个结构,是一个聚合对象。整体结构类通过算法管理成员对象之间的关系,进行结构的计算分析。整体结构类只有一个实例,即结构对象。
★★★ 往期相关 ★★★