Plot Coalescing Benchmark
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
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 light blue, spins of -1 in dark 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.
The default speed of the model is fairly slow. If you move the speed slider to the right, you'll see a dramatic speedup (because NetLogo will spend more of its time computing and less of its time redrawing the grid).
You can also speed up the model with the PLOTTING-INTERVAL slider. If the slider is set to 1, we plot a point every tick. If the slider is set to 100 (default), we plot a point every 100 ticks. The less plotting takes place, the faster the model runs.
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. (Note that if you use the checkerboard rule, the grid of spins must have even dimensions.)
NETLOGO FEATURES
Because only a very small amount happens during each tick, this is a model where the speed slider is especially important, since it lets the user speed the model up by not updating the view every tick.
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 his work on this model and to Sara Solla and Kan Chen for their assistance.
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
Comments and Questions
globals [ 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) result ] patches-own [ spin ;; holds -1 or 1 ] to benchmark random-seed 323232 setup 0 reset-timer no-display repeat 500000 [ go ] set result timer display end to setup [initial-magnetization] clear-all ask patches [ ifelse initial-magnetization = 0 [ set spin one-of [-1 1] ] [ set spin initial-magnetization ] recolor ] set sum-of-spins sum [spin] of patches setup-plot plotxy 0 magnetization end to go ask one-of patches [ update ] tick plotxy ticks magnetization end to update ;; patch procedure ;; flipping changes the sign on our energy, so the difference in energy ;; if we flip is -2 times our current energy let Ediff 2 * spin * sum [spin] of neighbors4 if (Ediff <= 0) or (random-float 1.0 < exp ((- Ediff) / 2.24)) [ set spin (- spin) set sum-of-spins sum-of-spins + 2 * spin recolor ] end to recolor ;; patch procedure ifelse spin = 1 [ set pcolor blue + 2 ] [ set pcolor blue - 2 ] 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 1000000000000000 0 auto-plot-on set-current-plot-pen "average spin" end
There are 3 versions of this model.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.