刚体如何在有限元代码中实现

计算科学 有限元 计算物理学
2021-12-10 05:40:10

我正在编写用于结构分析的有限元代码,并且我想实现刚体。这通常是怎么做的?假设我有一个方形网格,一半的网格定义为刚性的,另一半定义为可变形的。“边界节点”(网格的可变形部分和刚性部分之间共享的节点)上的力如何转移到刚体的 6 个(二维中为 3 个)自由度?

我在某处读到,您可以遍历可变形部件和刚性部件之间共享的所有节点,并对所有力求和(或将它们表示为广义力)以获得作用在刚体上的总力。我可以看到这将如何用于显式有限元,但不适用于隐式/静态,因为这对刚度矩阵没有贡献。

任何有关如何在我的代码中实现刚体的见解都值得赞赏。

1个回答

将所谓的“刚性元素”视为一组约束方程的最佳方式。这就是我的意思。

在三个维度上,每个刚体都有一个具有六个自由度的独立节点——三个平移和三个旋转。通常,刚体可以在任意连接点集合处连接到模型中的其他元素,每个连接点与独立节点相距一定距离。由于身体是刚性的,这些连接节点的运动可以从独立节点的简单运动学关系中获得。换句话说,所有连接节点的运动都被约束为具有运动学方程组的独立节点的运动。

那么如何在有限元代码中实现这些约束方程呢?有关该主题的文献通常将这些类型的约束称为多点或多自由度约束,因为这些关系涉及模型中两个或多个点(节点)的自由度。有几种方法可以实现这些约束,Felippa 在这两个介绍性说明中对它们进行了讨论:MultiFreedom Constraints I和MultiFreedom Constraints II