Pendulums are often used as example to explain simple dynamic problems. They look simple and it is easy to make one using random stuff from your office. Inertia of a pendulum is the mass of whatever you decide to swing around and the spring term is taken care of by gravity. The resulting natural period is something most people learn in high-school: Two times pi times the square-root of g over length.

Surprisingly, mathematically these simple pendulums can be a nightmare. Why? Well, two reasons:

First of all the system is non-linear. This is explained here. Modelling non-linear problems in frequency domain requires caution.

Secondly, when using a rope with a stiffness, this introduces an additional natural period which is typically much shorter than the period of the swing. This becomes an issue when trying to model a pendulum in time-domain: small time-steps are needed to capture this mode while normal time-steps are needed to capture the swinging mode. Using an implicit time-stepping method will help in this case but will also introduce additional challenges considering energy conservation (“wet van behoud van ellende”) . Even in frequency domain the large difference in natural periods can become challenging as is translates into a large difference in eigenvalues and thus a bad conditioning of the system matrix.

Yet pendulums occur frequency in offshore engineering.

Stiff vertical spring: check, small movements: check

So we have a relevant situation that is easy to understand and difficult to capture mathematically. This is why pendulums make such a good test case. So lets do just that.

Pendulum 1

With dave it is possible to model hinges. This allows us to model a pendulum with only one degree of freedom.

1 dof model
  1. Add a rigid body
  2. Release rotation about the y-axis
  3. Place the cog at z=-10
  4. Solve statics
  5. Go the mode-shapes
  6. Calculate and observe!

The reported natural period is 6.34 seconds, which is exactly that of a small amplitude pendulum.

But there is more to check. The top of the screen gives some additional information:

It reports that the inertia is 100 mT*m2 and the stiffness is 98.1 kN/rad. The inertia is 1 mT at at distance of 10m from the rotational center so 1 * 10^2 = 100 :: ok.

The stiffness is the rotational stiffness about the origin of the body. A small rotation of “delta” radians results in a horizontal displacement of the weight of delta * L ( = 10* delta). The gravity acting on the body is 1mT * 9.81. So the stiffness is 10*delta * mass * 9.81 / delta = 98.1 :: ok.

Rope pendulum

Next step, rope pendulum. Instead of using a point mass we will use a 2x2x2m body with its cog at the center and its liftpoint at the top. In this case the static equilibrium solver will be used to solve the position of the mass and the tension in the rope. Also a visual is attached to the mass for better visualization.

Making a rope-pendulum
  1. Add a rigid body. Release all its degrees of freedom. Set the mass to 1.0 and move it a bit away from the origin (to be able to add the cable later)
  2. Attach a visual to the body
  3. Attach a poi to the body
  4. Create a poi at the global origin. This is a poi without parent, so it it rigidly connected to the world (“luchtanker”)
  5. Select both the pois
  6. Add a cable
  7. Set the length of the cable to 9m and the stiffness to something high.
  8. Solve statics

Observe that the position of the body is solved as well as the tension in the rope:

Next step is the modal analysis.

Unconstrained mode

After clicking “Calculate modeshapes” the message “unconstrained” is shown. The table in the mode-shape widget shows that Body mode:5 is unconstrainted. Now “5” is pythonesque for the 6th entry (python and C start counting at 0). So mode 5 is rotation about the Z-axis.

Which makes sense. We could go back to the “construct” screen to remove that degree of freedom but we can also do that here directly.

No inertia

The next error is that the body is able to rotate about its center but no inertia is associated with this rotation. Again this makes sense.

This could be solved by entering a value for the rxx,ryy and rzz values like before, but there is also a button “quick-fix model”. Pressing that button tries to solve all the dynamic issues with minimum impact. In this case pressing that button sets the radii to something very small.

(This button would also have solved the unconstrained Z-rotation by attaching a spring to it).


The swing motion is now composed of excitation of two modes: Rotation and translation. The combined effect results in the expected natural period of 6.34s.

Also the piston-mode is found at 0.01s. or 1054 rad/s.; This corresponds to omega = sqrt(k/m) with k = EA/L of the cable (10000000 / 9 )and m =1 .

But there is more!

Looking carefully reveals that the mass does not swing but instead moves horizontally. There is no vertical movement, no excitation of mode 2 (Z-movement). This is because this is all linear theory. A movement of the body in the positive X-direction would need to cause an upward motion in Z, so dz/dx > 0 . However, a motion in the negative X-direction would ALSO need to cause an upwards motion, so dz / -dx > 0. These can not both be true. So the only solution is dz/dx = 0, hence no vertical motion.