globals [ iterations ;; keep track of how many time steps have passed sum-of-spins ;; sum of all the spins -- keeping track of this ;; means that we can always instantly calculate ;; the magnetization (which is the average spin) ] patches-own [ spin ;; holds -1 or 1 ] to setup [initial-magnetization] ca set iterations 0 ask patches [ ifelse initial-magnetization = 0 [ set spin random-one-of [-1 1] ] [ set spin initial-magnetization ] recolor ] set sum-of-spins sum values-from patches [spin] setup-plot update-plot end to go ;; the model runs very slowly if we update the display ;; and the plot at every iteration, so let's group ;; a bunch of iterations together (it doesn't matter ;; exactly how many) without-interruption [ repeat (count patches) [ ask random-one-of patches [ update ] set iterations iterations + 1 ] update-plot ] end to update ;; patch procedure locals [Ediff] ;; flipping changes the sign on our energy, so the difference in energy ;; if we flip is -2 times our current energy set Ediff 2 * spin * sum values-from neighbors4 [spin] if (Ediff <= 0) or (temperature > 0 and (random-float 1.0 < exp ((- Ediff) / temperature))) [ flip ] end to flip ;; patch procedure set spin (- spin) set sum-of-spins sum-of-spins + 2 * spin recolor end to recolor ;; patch procedure ifelse spin = 1 [ set pcolor red ] [ set pcolor blue ] end to-report magnetization report sum-of-spins / count patches end ;;; plotting procedures to setup-plot set-current-plot "Magnetization" ;; draw a horizontal line to show the x axis set-current-plot-pen "axis" auto-plot-off plotxy 0 0 plotxy 1000000000 0 auto-plot-on end to update-plot set-current-plot "Magnetization" set-current-plot-pen "average spin" plotxy iterations magnetization end ; *** NetLogo Model Copyright Notice *** ; ; This model was created as part of the projects: ; PARTICIPATORY SIMULATIONS: NETWORK-BASED DESIGN FOR SYSTEMS LEARNING IN ; CLASSROOMS and INTEGRATED SIMULATION AND MODELING ENVIRONMENT. ; The project gratefully acknowledges the support of the ; National Science Foundation (REPP & ROLE programs) -- grant numbers ; REC #9814682 and REC-0126227. ; ; Copyright 2003 by Uri Wilensky. Updated 2003. 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. ; ; To refer to this model in academic publications, please use: ; Wilensky, U. (2003). NetLogo Ising model. ; http://ccl.northwestern.edu/netlogo/models/Ising. ; 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/Ising ; for terms of use. ; ; *** End of NetLogo Model Copyright Notice *** @#$#@#$#@ GRAPHICS-WINDOW 321 10 727 437 16 16 12.0 1 10 1 1 1 CC-WINDOW 321 446 706 571 Command Center BUTTON 10 41 95 74 NIL setup -1 NIL 1 T OBSERVER T BUTTON 88 92 231 125 NIL go T 1 T OBSERVER NIL MONITOR 197 253 311 302 NIL iterations 3 1 SLIDER 16 139 312 172 temperature temperature 0 10 2.24 0.01 1 NIL MONITOR 197 200 311 249 magnetization magnetization 3 1 PLOT 15 305 311 504 Magnetization time average spin 0.0 20.0 -1.0 1.0 true false PENS "average spin" 1.0 0 -16776961 true "axis" 1.0 0 -16777216 true BUTTON 99 41 220 74 setup-random setup 0 NIL 1 T OBSERVER T BUTTON 224 41 312 74 setup +1 setup 1 NIL 1 T OBSERVER T @#$#@#$#@ WHAT IS IT? ----------- This is a model of a magnet at the microscopic level. The magnetic moments (spins) of the atoms in the magnet can either be up or down. Spins can change as a result of being influenced by neighboring spins and by the ambient temperature. The overall behavior of the system will vary depending on the temperature. When the temperature is low, there is spontaneous magnetization, and we say that the system is in the ferromagnetic phase. When the temperature is high, there is no spontaneous magnetization, and we say that the system is in the paramagnetic phase. (At room temperature, a refrigerator magnet is ferromagnetic, but an ordinary piece of iron is paramagnetic.) This very abstract model can be interpreted in other ways as well, for example as a model of liquid/gas phase transitions (where the two states are liquid and gas, instead of two magnetic spin states). It has also been used as a basis for simulating phenomena in the social sciences that involve phase-transition-like behavior. HOW IT WORKS ------------ We represent the two possible spin states with the numbers +1 or -1. Spins of +1 are shown in red, spins of -1 in blue. The energy at each spin is defined as the negative of the sum of the products of the spin with each of its neighboring four spins. So for example if a spin is surrounded by four opposing spins, then the energy is 4, the maximum possible. But if a spin is surrounded by four like spins, then the energy is -4, the minimum possible. Basically, the energy measures how many like or opposite neighbors the spin has. A spin decides whether to "flip" to its opposite as follows. The spins are seeking a low energy state, so a spin will always flip if flipping would decrease its energy. But the spins sometimes also flip into a higher energy state. We calculate the exact probability of flipping using the Metropolis algorithm, which works as follows. Call the potential gain in energy Ediff. Then the probability of flipping is e ^ (-Ediff/temperature). The gist of this formula is that as the temperature increases, flipping to a higher energy state becomes increasingly likely, but as the energy to be gained by flipping increases, the likelihood of flipping decreases. You could use a different formula with the same gist, but the Metropolis algorithm is most commonly used. To run the model, we repeatedly pick a single random spin and give it the chance to flip. HOW TO USE IT ------------- Choose an initial temperature with the TEMPERATURE slider, then press SETUP to set up the grid and give each spin a random initial state. (Or, if you want to start with all the spins set to the same state, press SETUP -1 or SETUP +1.) Then press GO to watch the model run. You can move the TEMPERATURE slider as the model runs if you want. The magnetization of the system is the average (mean) of all the spins. The MAGNETIZATION monitor and plot show you the current magnetization and how it has varied so far over time. THINGS TO NOTICE ---------------- In the default settings for the model, the temperature is set fairly low. What happens to the system? THINGS TO TRY ------------- What happens when the temperature slider is very high? (This is called the "paramagnetic" state.) Try this with all three setup buttons. What happens when the temperature slider is set very low? (This is called the "ferromagnetic" state.) Again, try this with all three setup buttons. Between these two very different behaviors is a transition point. On an infinite grid, the transition point can be proved to be 2 / ln (1 + sqrt 2), which is about 2.27. On a large enough finite toroidal grid, the transition point is near this number. What happens when the temperature is near, but above the transition point? What happens when the temperature is near, but below the transition point? Note that the nearer you are to the transition point, the longer the system takes to exhibit its characteristic behavior -- in such cases, we say that the system has a long "correlation length". So near the transition point, you'll need to do more and longer runs in order to be sure you understand what the typical behavior of the system is. When the temperature is low, the system should quickly reach a fully magnetized state. Note that if you set the temperature very low, sometimes fairly stable thick "stripes" of opposite colors can form, preventing the system from reaching full magnetization. This is an effect of the finite size and toroidal shape of the grid. EXTENDING THE MODEL ------------------- The formula for Ediff given above can be modified by multiplying the result by a "coupling constant" (if we don't do this, effectively we are using a coupling constant of 1). Using a negative coupling constant changes the model into its "antiferromagnetic" variant. Experiment with the effect of varying the coupling constant. Can you eliminate the exponential formula for the probability of flipping and replace it with a simple discrete rule that gives similar behavior? How could you relate TEMPERATURE in this model to temperature in Fahrenheit, Celsius or Kelvin? If you think of the two grid states as "present" and "absent", then this model can be changed slightly to be a model of the motion of particles if you add a rule that states can only flip in pairs, so that the total number of particles is conserved. Add this rule and see what behaviors result. At each iteration, we give only one spin a chance to flip. There are other possible methods, for example, the "checkerboard" update rule: if you imagine the rectangular lattice as being made of alternating white and black squares like a checkerboard, then at each iteration first all the white squares update simultaneously, then all the black squares update simultaneously. On a parallel computer with many processors, and a programming language which takes advantage of them, the checkerboard rule would run much much faster. Since NetLogo only simulates parallelism using a single processor, the checkerboard rule does not run dramatically faster (though it is somewhat faster). Note that that the checkerboard rule requires the grid of spins to have even dimensions; see Even Grid Example in the Code Examples section of the Models Library to learn how to make such a grid in NetLogo. NETLOGO FEATURES ---------------- The REPEAT and WITHOUT-INTERRUPTION commands are essential here for keeping the model from running too slowly. See the GO procedure. RELATED MODELS -------------- Voting (a social science model, but the update rules are very similar, except that there is no concept of "temperature") CREDITS AND REFERENCES ---------------------- Thanks to Seth Tisue for this implementation and to Sara Solla and Kan Chen for their help with this model. The Ising model was first proposed by Wilhelm Lenz in 1920. It is named after his student Ernst Ising, who also studied it. This NetLogo model implements the Monte Carlo simulation of the Metropolis algorithm for the two dimensional Ising model. The Metropolis algorithm comes from a 1953 paper by Nicholas Metropolis et al. There are many web pages which explore the Ising model in greater detail than attempted here. Here are a few: http://bartok.ucsc.edu/peter/java/ising/keep/ising.html http://oscar.cacr.caltech.edu/Hrothgar/Ising/references.html http://www.physics.cornell.edu/sethna/teaching/sss/ising/intro.htm http://physics.syr.edu/courses/ijmp_c/Ising.html http://www.npac.syr.edu/users/paulc/lectures/montecarlo/ To refer to this model in academic publications, please use: Wilensky, U. (2003). NetLogo Ising model. http://ccl.northwestern.edu/netlogo/models/Ising. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL. In other publications, please use: Copyright 2003 by Uri Wilensky. All rights reserved. See http://ccl.northwestern.edu/netlogo/models/Ising for terms of use. @#$#@#$#@ default true 0 Polygon -7566196 true true 150 5 40 250 150 205 260 250 @#$#@#$#@ NetLogo 2.0beta4 @#$#@#$#@ setup 0 repeat 75 [ go ] @#$#@#$#@ @#$#@#$#@