I am writing a finite element code for structural analysis, and I want to implement rigid bodies. How is this usually done? Say that I have a square mesh, with one half of the mesh being defined rigid and the other deformable. How are the forces on the "boundary-nodes" (the nodes shared between the deformable and rigid part of the mesh) transfered to the 6 (3 in 2D) dofs of the rigid body?

I read somewhere that you could loop through all the nodes that are shared between the deformable and rigid parts, and sum all the forces (or express them as generalized forces) to get the total force acting on the rigid body. I can see how this would work for explicit finite element, but not for implicit/static since this does not contribute to the stiffness matrix.

Any insight in how to implement rigid bodies in my code is appreciated.

  • $\begingroup$ Why not just take the stiffness of the rigid part as very large via the material properties? $\endgroup$
    – DanielRch
    Jun 14, 2018 at 20:14
  • 3
    $\begingroup$ @DanielRch it is more efficent to make it rigid because you reduce the number of dofs, and you can not make it to stiff in explicit simulations due to the timestep becoming to small. $\endgroup$
    – lijas
    Jun 15, 2018 at 15:43

1 Answer 1


The best way to think of so-called "rigid elements" is as a set of constraint equations. Here is what I mean by that.

In three dimensions each rigid body has one independent node with six degrees-of-freedom-- three translations and three rotations. In general, the rigid body can connect to other elements in the model at an arbitrary collection of attachment points, each located at some distance from the independent node. Since the body is rigid, the motion of these attachment nodes can be obtained from simple kinematic relations from the independent node. In other words, the motion of all the attachment nodes is constrained to the motion of the independent node with sets of kinematic equations.

So how does one implement these constraint equations in a finite element code? The literature on this topic often refers to these types of constraints as multi-point or multi-freedom constraints because the relations involve degrees of freedom at two or more points (nodes) in the model. There are several ways these constraints can be implemented and they are discussed in these two introductory notes by Felippa: MultiFreedom Constraints I and MultiFreedom Constraints II .

  • $\begingroup$ Thank you for the help. I have made a "constrainthandler" in my code, so hopefully it is quite easy to implement. I have a follow up question: Am I correct that the contraint equation should be this: X_node - (R_body + A*u) = 0? $\endgroup$
    – lijas
    Jun 15, 2018 at 15:57
  • $\begingroup$ No. The constraint equations are purely kinematic-- i.e. displacements at each attachment node are written in terms of displacements and rotations of the rigid body. $\endgroup$ Jun 15, 2018 at 16:17
  • $\begingroup$ That was what i was trying to the show with the equation, I the previous post. X_node is the node position of one of the nodes, R is the rigid body position, A is the transformation matrix, and u is the local positionvector of the point that should be connected to the node. $\endgroup$
    – lijas
    Jun 15, 2018 at 18:32
  • $\begingroup$ Sorry, I misunderstood your notation. $\endgroup$ Jun 21, 2018 at 18:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.