A Lorentz waterwheel simulator

download waterwheel simulator
download waterwheel simulator version 3

The Lorentz waterwheel is a construction to show chaotic movement.
It consists of vertically positioned wheel with buckets that are filled by water jets at the top.
Wheel movement is unpredictable as the wheel randomly rotates or pendules back and forth.

Download this Windows program by a click on the lightning icon above.

Below is a reduced picture of the simulator at work:

Controls allow for the setting of water jetspeed, bucket leakspeed and opening/closing of water jets.
The process may be paused for observation.
The history of wheel movent is recorded in a polar graph.
Wheel motion type is pendulum or rotation.
Cycle times are displayed.

Program help

The wheel

The water valves are opened/closed by mouseclicks.

Top controls and clock

Press buttons to rotate the wheel to the start position.
Display between buttons indicates offset of reference spoke.
Zero offset is pointing vertical upward.
These buttons work if the wheel is stopped.

Time display shows total simulation time in 10th of seconds.

The Slow button shows the process in slow motion (half speed).

Bottom controls and indicators

start : press to start the pump.
pause : click to pause / resume the simulation process.
stop : press to stop the pump

fillrate : press and hold mouse button then move (up/down) to set waterjet speed (litres per second).
leakrate : press and hold mouse button then move (up/down) to set bucket leak rate (litres per second).

Note: the right (small) rotation button selects 10th of litres.

modus display shows "rotation" or "pendulum" mode of wheel movement.
cycle time shows time of a rotation or time of one pendulum swing.
proctime shows percentage of time the processor needs to calculate and show the simulation process.

Polargraph speed plot

This graph in polar coordinates shows the wheel speed as distance to the center.
The angle is the position of the reference spoke.
The zero position is pointing upward.


1. Select fillrate and leakrate.
2. Open (close) water jet valves.
3. Rotate wheel to start position.
4. Press start button to start pumping.


The wheel has a radius of 1 meter.
Total mass of wheel and buckets is 25kg.
Bucket shape is a topped piramid, the height is 30cm.
Bucket volume is 28 litres.

The simulation is performed by observing the process in 1 millisecond interval.
During this small time the wheelspeed and bucket volumes are supposed to be constant.
After each millisecond the wheelspeed, wheel position and bucket volumes are updated.
After 10 simulation steps, the wheel is repainted.
So, the picture is refreshed 100 times per second.

Driving force is gravity and originates from buckets that hold water.
The force depends on the bucket position.
Braking forces are from buckets moving up, wheel friction (set to 4 Newton),
a small air friction (Cd value set to 0.5) which is proportional to the squared velocity.
Most braking force is caused by the water supply: this water has no horizontal velocity
and has to be accellerated to reach wheelspeed.

Not taken into account are:
1. Changes of the bucket gravity center which depends on the water volume.

2. Buckets hang at the wheel so their point of gravity follows a circle of also 1 meter radius
but the center is about 15 cm. below the wheel center.

3. Irregular water supply, water movement in buckets, wobbling of buckets.

Originally I used a much heavier wheel construction but this showed
mostly stable rotations.

Many settings of water volume and leak speed result in stable rotation after a few pendulum movements.

Alternating pendulum and rotation show up for fillrate 12, leakrate 3
with 3 valves opened and offset of 2 degrees at the start.
Also if only the middle valve is opened, fillrate is 19, leakrate 3.

I have not build in random variables. Only exception is when the wheel velocity is zero for five seconds.
In that case the wheel position is randomly increased or decreased by 2 degrees.

Waterwheel version 3

The 12 buckets of 28 litres are replaced by 15 buckets of 10 litres.
At the right bottom of the form a rotation button adds friction.
Indicated is the braking force (Newton) per squared velocity.
At a speed of 3m/sec and selected 1.2 value the braking force is 9*1,2 = 10,8N.
Increased friction makes the wheel movement more chaotic.

Have fun!

Interested in the Delphi(7) project?

Download Delphi project

I use two components of my own:

download rotation button component

download microseconds counter component