globals [ clock ;; number of ticks that have passed in simulation membrane-edge-x ;; horizontal distance from center to edge of membrane membrane-edge-y ;; vertical distance from center to edge of membrane ] turtles-own [ edge? ;; are we on the edge of the membrane? driver? ;; are we part of the green driving plate? x ;; position on x axis in space y ;; position on y axis in space z ;; position on z axis in space velocity ;; velocity along z axis neighbor-turtles ;; agentset of turtles adjacent to us ] to setup ca set clock 0 set membrane-edge-x floor (screen-edge-x / 2) set membrane-edge-y floor (screen-edge-y / 2) set-default-shape turtles "circle" ask patches with [(abs pxcor <= membrane-edge-x) and (abs pycor <= membrane-edge-y)] [ sprout 1 [ set edge? (abs xcor = membrane-edge-x) or (abs ycor = membrane-edge-y) if edge? [ set color blue ] set driver? (abs (xcor - driver-x) <= driver-size) and (abs (ycor - driver-y) <= driver-size) if driver? [ set color green ] set x xcor set y ycor set z 0 set velocity 0 recolor ] ] ask turtles [ set neighbor-turtles turtles-on neighbors4 ] project end to recolor ;; turtle procedure if not edge? and not driver? [ set color scale-color red z -20 20 ] end to go ask turtles with [not driver? and not edge?] [ propagate ] ask turtles [ ifelse driver? [ set z (driver-amplitude * (sin (0.1 * driver-frequency * clock))) ] [ set z (z + velocity) recolor ] ] project set clock clock + 1 end to propagate ;; turtle procedure -- propagates the wave from neighboring turtles set velocity (velocity + (stiffness * 0.01 * (sum values-from neighbor-turtles [z] - 4 * z))) set velocity (((1000 - friction) / 1000) * velocity) end ;;; procedures for displaying in 2-D or 3-D to project ifelse three-d? [ project-3d ] [ project-2d ] end to project-3d ask turtles [ setxy (x + (cos view-angle) * y) (z + (sin view-angle) * y) ;; don't draw turtles that "wrap" around the screen edge ifelse abs (z + (sin view-angle) * y) > screen-edge-y [ hide-turtle ] [ show-turtle ] recolor ] end to project-2d ;; Set our on-screen x and y coordinates to be the same as our real ;; coordinates. This is only needed for if the user turns THREE-D? ;; off while the model is running. ask turtles [ setxy x y recolor show-turtle ] end ; *** NetLogo Model Copyright Notice *** ; ; This model was created as part of the project: CONNECTED MATHEMATICS: ; MAKING SENSE OF COMPLEX PHENOMENA THROUGH BUILDING OBJECT-BASED PARALLEL ; MODELS (OBPML). The project gratefully acknowledges the support of the ; National Science Foundation (Applications of Advanced Technologies ; Program) -- grant numbers RED #9552950 and REC #9632612. ; ; Copyright 1996 by Uri Wilensky. All rights reserved. ; ; Permission to use, modify or redistribute this model is hereby granted, ; provided that both of the following requirements are followed: ; a) this copyright notice is included. ; b) this model will not be redistributed for profit without permission ; from Uri Wilensky. ; Contact Uri Wilensky for appropriate licenses for redistribution for ; profit. ; ; This model was converted to NetLogo as part of the project: ; PARTICIPATORY SIMULATIONS: NETWORK-BASED DESIGN FOR SYSTEMS LEARNING IN ; CLASSROOMS. The project gratefully acknowledges the support of the ; National Science Foundation (REPP program) -- grant number REC #9814682. ; Converted from StarLogoT to NetLogo, 2001. Updated 2003. ; ; To refer to this model in academic publications, please use: ; Wilensky, U. (1996). NetLogo Wave Machine model. ; http://ccl.northwestern.edu/netlogo/models/WaveMachine. ; Center for Connected Learning and Computer-Based Modeling, ; Northwestern University, Evanston, IL. ; ; In other publications, please use: ; Copyright 1998 by Uri Wilensky. All rights reserved. See ; http://ccl.northwestern.edu/netlogo/models/WaveMachine ; for terms of use. ; ; *** End of NetLogo Model Copyright Notice *** @#$#@#$#@ GRAPHICS-WINDOW 299 10 708 440 28 28 7.0 0 10 1 1 1 CC-WINDOW 3 368 297 510 Command Center BUTTON 71 41 149 74 NIL setup NIL 1 T OBSERVER T BUTTON 152 41 229 74 NIL go T 1 T OBSERVER T SLIDER 10 114 150 147 stiffness stiffness 0.0 50 50.0 1.0 1 NIL SLIDER 11 181 151 214 driver-x driver-x -11 11 -11 1 1 NIL SLIDER 152 181 292 214 driver-y driver-y -11 11 0 1 1 NIL SWITCH 11 324 129 357 three-d? three-d? 0 1 -1000 SLIDER 11 215 151 248 driver-size driver-size 0 10 2 1 1 NIL SLIDER 152 215 292 248 driver-amplitude driver-amplitude 0.0 30.0 9.0 1.0 1 NIL SLIDER 71 249 234 282 driver-frequency driver-frequency 0.0 100.0 100.0 1.0 1 NIL SLIDER 151 114 292 147 friction friction 0.0 99.0 10.0 1.0 1 NIL SLIDER 130 324 292 357 view-angle view-angle 0.0 90.0 45.0 1.0 1 NIL TEXTBOX 14 92 135 112 Membrane settings TEXTBOX 13 161 103 179 Driver settings TEXTBOX 11 306 101 324 Display settings @#$#@#$#@ WHAT IS IT? ----------- This model simulates wave motion in a membrane. The four edges of the membrane are fixed to a frame. A green rectangular area represents a driver plate that moves up and down, exhibiting sinusoidal motion. HOW TO USE IT ------------- Controls of membrane properties: The FRICTION slider controls the amount of friction or attenuation in the membrane. The STIFFNESS slider controls the force exerted on a turtle by a unit deflection difference between the turtle and its four neighbors. Controls of the driving force: The DRIVER-FREQUENCY slider controls the frequency at which the green area of the membrane (the driving force) moves up and down. The DRIVER-AMPLITUDE slider controls the maximum height of the green area of the membrane. The DRIVER-X and DRIVER-Y sliders control the position of the driver. The DRIVER-SIZE slider controls the size of the driver. Controls for viewing: The THREE-D? switch controls the view point of the projection. OFF is for the top view (2-D looking down), and ON gives an isometric view, at an angle chosen with the VIEW-ANGLE slider. RUNNING THE MODEL ----------------- Click the SETUP button to set up the membrane. Click GO to make the selected area of the membrane (the green turtles) begin moving up and down. THINGS TO NOTICE ---------------- The membrane is made up of lines of turtles. Each turtle acts as it were connected to its four neighboring turtles by springs. In this model, turtles move only up and down -- the force's direction IS only up and down. The greater the distance between a turtle and its neighbors, the stronger the force. When the green turtles move up, they "pull up" the turtles which are their neighbors, which in turn pull up the turtles which are their neighbors, and so on. In that way, a wave moves along the membrane. When the wave reaches the edges of the membrane (the blue turtles), the wave is reflected back to the center of the membrane. The amplitude of the green turtles is fixed regardless of the stiffness of the membrane. However, moving a stiff membrane requires a lot more force to move it the same amount as an unstiff membrane. So even as the stiffness of the membrane is increased, the wave height will remain the same because the amplitude is kept the same. THINGS TO TRY ------------- Try different membranes. Soft membranes have smaller stiffness values and hard membranes have larger stiffness values. Try different driving forces, or try changing the frequency or amplitude. It is very interesting to change the size and the position of the driving force to see symmetrical and asymmetrical wave motions. Try to create a "standing wave," in which some points in the membrane do not move at all. EXTENDING THE MODEL ------------------- In this model, the movement of the turtles is only in the vertical direction, perpendicular to the membrane. Modify the model such that the movement is within the membrane plane, i.e. the x-y plane. You can also try to add additional driving forces to make a multi-input membrane model. Another thing you can try is to apply different waveforms to the driving-force to see how the membrane reacts to different inputs. Try changing the overall shape of the driving force. Try to build a solid model, that is, a model of waveforms within all three dimensions. Instead of using amplitude to create the wave, change it to apply a fixed amount of force continuously. NETLOGO FEATURES ---------------- Note the use of the TURTLES-FROM reporter to find turtles on neighboring patches. A key step in developing this model was to create an internal coordinate system. X, Y, and Z are just three turtles-own variables. You can imagine that turtles are situated in and move around in 3-space. But to display the turtles on the screen, which is two-dimensional, the turtle's three coordinates must be mapped into two. In the 2-D view, the turtle's x and y coordinates are translated directly to the screen, and the z coordinate is indicated only by varying the color of the turtle using the SCALE-COLOR primitive. In the 3-D view, an isometric projection is used to translate x, y, and z (the turtle's real position) to xcor and ycor (its position on the screen). In this projection, a point on the screen may correspond to more than one point in the 3-dimensional coordinate system. Thus in this projection we still vary the color of the turtle according to its z position, to help the eye discriminate. In the 3-D version, it does not make sense for the turtles to "wrap" if they reach the top or bottom of the screen, so turtles are hidden if their computed ycor exceeds the boundaries of the screen. CREDITS AND REFERENCES ---------------------- Thanks to Weiguo Yang for his help with this model. To refer to this model in academic publications, please use: Wilensky, U. (1996). NetLogo Wave Machine model. http://ccl.northwestern.edu/netlogo/models/WaveMachine. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL. In other publications, please use: Copyright 1996 by Uri Wilensky. All rights reserved. See http://ccl.northwestern.edu/netlogo/models/WaveMachine for terms of use. @#$#@#$#@ default true 0 Polygon -7566196 true true 150 5 40 250 150 205 260 250 circle false 0 Circle -7566196 true true 35 35 230 @#$#@#$#@ NetLogo 2.0beta4 @#$#@#$#@ @#$#@#$#@ @#$#@#$#@