Lorenz Water Wheel
WHAT IS IT?
The Physical Lorenz Water Wheel is a water wheel whose buckets leak but don't dump, gimbaled so they stay upright as the wheel turns. Water enters them at the top of the wheel as they pass under a supply, and it leaks out of them at a slower rate. If the rates of fill and leakage are in the proper proportion, the water wheel acts chaotically, turning first one way then back the other way, always at different speeds and different amounts of angle.
HOW TO USE IT
: You may want to slow the model down a little (95% on my computer) to get a better idea about what is going on. The Setup button resets the wheel to an initial state with the buckets empty. The Go button turns on the water. The sliders control how much water enters the buckets when they are on the sky colored patches and how much water leaks out when they are not. There are monitors that record the amount and direction of the force on the wheel from the buckets, the wheel's rotational speed, and one at the bottom that records the location in degrees of one of the buckets. This last monitor records how many times the wheel has turned in either direction as a total. It has an interesting relationship with the output on the line graph.
THINGS TO NOTICE
: Click on the graph panel to open a large graph. Watch the line go from positive to negative as the wheel reverses its rotation. Watch a few cycles and then try to predict from the graph what it will do for the next several cycles. Can You do it?
EXPLORATIONS
: Experiment with the sliders, how do they effect the activity of the wheel? Can you get the wheel to spin a long time at a constant rate? The third line in the Observer procedures defines a value for friction. Try commenting this line out of action with a semi-colon (;) and see what happens.
STARLOGO FEATURES
: I wrote two versions of the rotation algorithm. The first controlled speed by having the turtles making turtle circles in place and taking more steps. I was changing the angle in proportion to the speed with a multiplier that seemed to work well for many sided polygons. If the turtles got going too fast, or possibly when they had made enough steps, the centers of their circles drifted apart, and the water wheel gradually started pulsing larger and smaller. This version uses trigonometry to place the buckets and they behave themselves better, although they don't demonstrate their own version of sensitivity to initial conditions. The turtle buckets are operated from the Observer Procedures to keep them synchronized. If they run as Turtle Ptrocedures, the busy ones fall behind the slackers.
Edward Lorenz' water wheel is a mechanical analogy for convection in a fluid. More information on this person and his work (beginning in the early 1960's!) can be found in the first chapter of James Gleick's book, CHAOS.
Turtle procedures
to place-buckets
setxy (10 * cos key-direction + (who * 32.73)) (10 * sin key-direction + (who * 32.73))
seth 0
end
; Use tirg to position buckets relative to the key bucket, 32.73 = 360 degrees / 11 buckets
; The program is in Observer procedures to keep the buckets in sync.
Observer procedures
turtles-own [amount] ;of water in a given bucket
globals [speed force friction key-direction] ;speed of the wheel, force will be the averages of the products
; of the amounts and their xcors, and the
; direction of the key bucket from the center.
to Set-up
ct ;clear turtles
create-and-do 11 [setc blue + 4 setshape bucket-shape place-buckets] ;make eleven blue buckets in a circle
set speed 2 set key-direction 0 ;initialize a value for speed key bucket at the top.
clearplots ;Reset the graph
end
to Go
getforce ;Calculates the force on the wheel
ifelse speed > 0 [set friction (speed * speed * -.0001)] [set friction (speed * speed * .0001)] ;friction opposes speed
set speed ((speed + force) + friction) ;adjust speed with new force
ask-turtles[
if amount > 0 [set amount amount - leak / 50] ;water leaks
setc (109 - amount / 5) ;colors react to amount
set key-direction key-direction + (speed / 500) ;calculate new key direction
place-buckets ;the wheel turns, place-buckets is a turtle procedure.
if pc = sky and amount < 40 [set amount amount + drop / 10] ;Sky colored patches fill buckets
]
end
to getforce
set force ((((amount-of 0) * (xcor-of 0) ) + ((amount-of 1) * (xcor-of 1)) + ((amount-of 2) * (xcor-of 2)) +
((amount-of 3) * (xcor-of 3)) + ((amount-of 4) * (xcor-of 4)) + ((amount-of 5) * (xcor-of 5)) + ;averages the force of all 11 buckets
((amount-of 6) * (xcor-of 6)) + ((amount-of 7) * (xcor-of 7)) + ((amount-of 8) * (xcor-of 8)) + ;there is a more elegant way
((amount-of 9) * (xcor-of 9)) + ((amount-of 10) * (xcor-of 10))) / -1000) ; and scales it to the model
end
