Chaotic Lorentz Waterwheels
Back to the home page

Introduction
The branch of mathematics known as "Chaos", after the void before the world was created in ancient Greek myths, deals with events that appear to be random – the weather, for example, or the path of a double pendulum swinging backwards and forwards – but which can, in fact, be modelled mathematically. It was discovered (not invented – chaotic systems have been around for as long as the universe) during the 20th century, and much of the early work was done by Edward Lorenz, a professor at the Massachusetts Institute of Technology1. He had access to one of the first electronic computers, and used it to create a very simple model of a weather system, with a view to predicting what was going to happen. It was a simple simulation, but it was chaotic; and not only was he unable to predict the weather accurately, he discovered quite by accident one of the main characteristics of chaotic systems: sensitive dependence on initial conditions, or the "Butterfly Effect".

The reason is that with a chaotic system, small differences at the beginning of a period of time can be magnified into larger ones very rapidly. The example always given is that of a butterfly flapping its wings in America producing, through the magnification of air movements in the chaotic atmosphere, a hurricane in Japan. Lorenz discovered this because he had decided to rerun one section of the simulation, to study it in more detail. He typed in the numbers the programme had produced at the beginning of the period of time, and waited for the programme to produce more data. The numbers it generated, though, began by being similar to those the previous time, but slowly diverged until there was no resemblance at all. This was because the numbers Lorenz had typed in were given to only three decimal places, whereas the computer had been working to six decimal places, and had shortened the numbers merely to save space on the printout. This tiny difference – one thousandth of a unit – gradually made the "weather" follow a completely different course to the previous one, and inspired Lorenz to take a closer look at the mathematics behind his programme. It is this that means that weather forecasts are never accurate for more than a few days, because to predict the behaviour of a chaotic system over an indefinite time requires knowledge of its initial conditions to infinite precision.

Much of Lorenz’s work involved convection in a layer of liquid. If the temperature difference between the top and bottom of a cell of fluid becomes greater than a certain value, the normally docile rotating cylinders of fluid become chaotic. Their behaviour never exactly repeats itself, but Lorenz found that if he plotted three different variables on orthogonal axes he could produce a weird two-lobed shape, like the face of an owl. The lines that made it up never crossed each other, but nevertheless followed this shape perpetually – it "attracted" the lines, and so it was named the "Lorenz Attractor", the first of the so-called strange attractors that govern the many systems in which chaos plays a part.

Lorenz also found that he could produce the attractor from another system, a waterwheel with a tap above the axis of rotation that was constantly flowing and buckets with holes in the bottom. If the tap were hardly letting out any water, the waterwheel would not turn, since the water would leak out of the bottom of the bucket it fell into before it could do any work. More water, and the wheel would turn at a constant speed, but after a certain level of flow most of the water would not have time to drip out of the bottom of the buckets before it started travelling up the other side of the wheel, and so would attempt to slow the wheel down and cause it to turn in the other direction.

The rest of this article gives examples of both a software and a physical Lorenz Waterwheel that I have made.

The programme
This is written in BBC Basic V, and runs fast enough to be interesting on a RiscPC, though it should work on any modern Acorn. It would need to be modified to run in QBasic on an IBM PC, especially in the graphics section. The code should be self-explanatory, via the comments after REM statements.

REM Lorenz Waterwheel, by David Wyatt (Coll.) 25/2/00
MODE 21 : REM or any suitable graphics mode
ORIGIN 640,512 : REM Set the origin to the centre of the screen
REM ***************
bucketnum%=4 : REM Number of buckets – equally spaced around the wheel
fill%=5 : REM Rate at which buckets are filled when underneath the tap
empty%=2 : REM Rate at which buckets empty
angvelo=0 : REM Starting rotational speed of wheel
REM **************
bucketang=360/bucketnum%+1 : REM angle between buckets
DIM bucket(bucketnum%)
ang=360/bucketnum%
REPEAT : REM Main loop
bucketang+=angvelo
PROClevel : REM Calculate water levels in all the buckets
PROCaccel : REM Calculate acceleration of wheel
PROCpic : REM Draw picture of wheel at current position
UNTIL 0
DEF PROCpic : REM Draw circle for wheel, rectangles for buckets with water levels, and a triangle for the tap
CLS
MOVE 0,0
GCOL 0,30
CIRCLE FILL 0,0,10
CIRCLE 0,0,100
GCOL 0,15
MOVE -10,200
DRAW 10,200
DRAW 0,150
DRAW -10,200
FOR n%=0 TO bucketnum%-1
GCOL 0,3
RECTANGLE 100*COS(RAD(bucketang+(n%*ang)))- 25,100*SIN(RAD(bucketang+(n%*ang)))-25,50,50
GCOL 0,60
RECTANGLE FILL 100*COS(RAD(bucketang+(n%*ang)))-25,100*SIN(RAD(bucketang+(n%*ang)))-25,50,bucket(n%+1)
NEXT n%
ENDPROC
DEF PROClevel : REM Level of water in each bucket
FOR n%=1 TO bucketnum%
IF bucket(n%)>empty% THEN bucket(n%)-=empty% : REM Empty bucket
IF 100*COS(RAD(bucketang+((n%-1)*ang)))<25 AND 100*COS(RAD(bucketang+((n%-1)*ang)))>-25 AND 100*SIN(RAD(bucketang+((n%-1)*ang)))>0 THEN bucket(n%)+=fill% : REM Fill bucket if under tap
NEXT n%
ENDPROC
DEF PROCaccel
moment=0
FOR n%=1 TO bucketnum%
force=bucket(n%) : REM Weight of bucket
moment+=force*100*COS(RAD(bucketang+(n%*ang))) : REM Net turning force on wheel
NEXT n%
angaccel=DEG(ASN((moment/100)/100)) : REM Angular acceleration
angvelo+=angaccel : REM Angular velocity
ENDPROC

The physical waterwheel
This is merely a three-bucket waterwheel, which is less than ideal since one of the buckets frequently gets stuck at the bottom – a four-bucket model is the real minimum. The buckets themselves are tin cans with two 6mm holes at the top for the supporting axle to go through, and another at the bottom to let the water out. They are supported on pieces of studding 12cm long, with a nut and a washer on either side of the discs. The sides of the wheel are discs of MDF 6mm thick and 30cm in diameter, though for 4 buckets a larger size would be necessary. Holes equally spaced around the edge hold the buckets, while one in the middle accepts the axle, a 15cm length of 5mm steel rod. This goes through holes in two 20cm x 30cm pieces of 6mm MDF, which are supported by two blocks of wood that have slots cut in them the right distance apart to allow the wheel to turn freely. All the wooden components are varnished to make them waterproof. The water comes from a piece of tubing held above the centre of the wheel, or to one side (to stop the wheel stalling), and the whole assembly should be put in a large sink, or else in a deep tray, to catch the water from the buckets.

The waterwheel described above took me about 2.5 hours to make, not counting the drying time for the varnish. It is not very robust, though, and if a more permanent one were being made it would be better to use metal or plastic instead of wood, and to try and make a slightly better bearing. All the same, my primitive model will start turning by itself, and occasionally stop, too, though it does not often turn the other way since I have to hold the end of the tubing to one side to stop the wheel halting.


A diagram of the finished waterwheel

Pictures


Overall view of the waterwheel. The copper wire is meant to hold the "tap".


View showing the axles of the wheel and cans, along with the base of the tap holder (N.B. in a future version, this should be done more robustly).


Front view


Top view

Acknowledgements

References

  1. James Gleick, Chaos (pub. Minerva, 24th February 1997)