Ising Benchmark

No preview image

1 collaborator

Uri_dolphin3 Uri Wilensky (Author)

Tags

(This model has yet to be categorized with any tags)
Model group CCL | Visible to everyone | Changeable by group members (CCL)
Model was written in NetLogo 4.1pre9 • Viewed 147 times • Downloaded 24 times • Run 0 times
Download the 'Ising Benchmark' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

globals [
  result
  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 benchmark
  random-seed 2929
  reset-timer
  setup 0
  repeat 2000000 [ go ]
  set result timer
end 

to setup [initial-magnetization]
  ca
  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
  update-plot
end 

to go
  ask one-of patches
    [ update ]
  tick
  update-plot
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
     (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 

;; in the real model this isn't a separate procedure and we don't
;; bother calling set-current-plot and set-current-plot-pen all the
;; time.  but I've left this in here so the model functions partly as
;; a benchmark on set-current-plot and set-current-plot-pen (and on
;; function call overhead)

to update-plot
  set-current-plot "Magnetization"
  set-current-plot-pen "average spin"
  plotxy ticks magnetization
end 

There are 3 versions of this model.

Uploaded by When Description Download
Uri Wilensky over 12 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky over 12 years ago Ising Benchmark Download this version
Uri Wilensky over 12 years ago Ising Benchmark Download this version

Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.