Structural Singularities and Ideal Mechanical Systems

July 17th, 2017 by Mahdieh Mehrabi

Written by: David Briant – Project Engineer

Creating multibody models can be quite complicated; getting the geometry correct, linking components with correct joint types and getting mass and inertias correct, all have big effects on the motion of mechanical systems and the correlation of simulated models against real systems. This can be made easier, in some respects, by creating ideal mechanical systems. These are mechanical systems with lumped masses and using joints and translations that don’t have compliance/flexibility. However, there is an issue with eliminating flexibility; a mechanism made with multiple joints between 2 components can be over-constrained, thus replicating real mechanisms and generating correct mounting forces can be complicated.

A common example of this is a door on hinges. In real life it would be mounted with at least 2 hinges, top and bottom, both with only 1 degree of freedom to rotate around the vertical axis of the door, allowing it to pivot around only one axis but not move in any direction. There is a joint in Dymola that has exactly the same constraint, called the revolute (Modelica.Mechanics.MultiBody.Joints.Revolute), allowing only the rotation around one axis and no translations. If you were to model a door in an ideal system and use 2 revolutes as hinges, as in real life, then it would be over-constrained. This is because the second hinge is constraining the same freedoms as the first and as there is no compliance in either the door or the frame then these constraints are redundant. Consider what would happen if only one joint were used, then the door would still work, as the door still only has 1 degree of freedom, which means that the second joint would be surplus to requirements.

When making a model of a door in Dymola, an ideal version of a real door would look something like figure 1, with 2 joints and a door with mass and animations. The door stopper is a spring-damper that applies force when the door has swung round by a predefined angle to impede the door opening further.

Singular Model

Figure 1: Ideal Realistic Model

The problem with this model is, as described above, with the position and rotation of the top joint defined by the bottom joint. It produces the following error message when checking the model:

Singular Error

Figure 2: Error Message for an Ideal Realistic model

The error message describes a model that has the same number of equations as unknowns, which, as it describes, contains a joint that constrains the same motion. The simple, efficient solution for this is to remove one of the joints, in this case the top joint. This allows the model to run, using the stop and the model runs as shown below.

Door Opening

Figure 3: Door Opening With 1 joint

The benefit of modelling in this manner, reducing multiple joints to one is that the simulation, especially for complex systems such as full vehicles, is comparatively quick, normally easier to initialise and easier to create. The downside of this model is that while the motion is correct and the forces for the total system are correct, the force in the joints can be inaccurate. In the example, the door is mounted on one hinge, meaning that the full weight of the door would be hanging on the lower mount, with torques generated to stop the door falling over.

There are some methods of mounting the door using 2 joints, each with their pros and cons:

To continue using ideal, non-flexible components, Dymola includes some constraint joints (Modelica.Mechanics.MultiBody.Joints.Constraints) that allow base joints to have constraints removed, allowing each joint to constrain freedoms without duplication. In the example of the door the bottom hinge would be changed to a spherical, allowing all rotations, but no translation, meaning that there are 2 degrees of freedom that still need to be constrained. Therefore, the top joint needs to stop the door falling over, either by constraining translations at the location of the top hinge or the two rotations in the relevant axis. The MSL constraints joint has a spherical that can deactivate constraints of translations of individual axis. In the case of the door it would be the vertical constraint (z-axis) that would need to be removed, but constraining the x and y axis. This allows the forces to be measured correctly in both the x and y axis, but all the z force would be applied through the lower joint.

The second method is to introduce flexibility between the upper and lower joints, either in the frame or door; this can be done either with one or two bushes. If done with one bush at one joint then two joints can be used but the forces will still be applied through the ideal joint connected to the door, as the bush generates force from changes in position or velocity, but as the ideal joint is constraining the freedom in the axis that would generate forces then the bush doesn’t create any.

Single Bush

Figure 4: Single Bushed

Dual Bush

Figure 5: Dual Bushed

Alternatively, two bushes can be used to mount revolutes either to the door or to the doorframe; in this case the stiffness and damping is less important as long as the stiffness and damping is equal, distributing the force equally. Thus, this would be the most accurate form of this type of simulation before moving to Finite Element Analysis.

While this was a simple example, when expanding it to a larger, more complex multibody system the same methods can be used to allow more realistic mountings and reducing complexity to a point where there are no mechanical loops.

When making larger idealised mechanical systems (e.g. rigid, non-compliant), a method that seems to be most effective is to consider what motions the individual components need to have and then reduce them down to the individual joints that are going to be used. So rather than considering the system in an application setting, consider the degrees of freedom of each component and how the connection of components motion will limit/affect the freedom of each other.

This can often show a modeller what freedom a component has/hasn’t got that then can be rectified/confirmed.

Please get in touch if you have any questions or have got a topic in mind that you would like us to write about. You can submit your questions / topics via: Tech Blog Questions / Topic Suggestion.