MATLAB Matlab Ising model: Anti-ferromagnet

Click For Summary
SUMMARY

This discussion focuses on implementing the 2D Ising model simulation in MATLAB, specifically transitioning from an anti-ferromagnetic to a ferromagnetic state. The user seeks guidance on creating an alternating lattice of spins (1s and -1s) and visualizing the matrix as a color grid. A solution for generating the checkerboard pattern is provided using MATLAB code. Additionally, the user inquires about calculating thermal averages of magnetization and energy using a Monte Carlo algorithm, emphasizing the need for averaging results across different temperatures.

PREREQUISITES
  • Familiarity with MATLAB programming
  • Understanding of the Ising model in statistical mechanics
  • Knowledge of Monte Carlo simulation techniques
  • Basic concepts of thermal averages in physics
NEXT STEPS
  • Learn how to implement the Monte Carlo algorithm for the Ising model in MATLAB
  • Explore MATLAB's imagesc function for advanced matrix visualization
  • Research methods for calculating thermal averages in statistical mechanics
  • Investigate debugging techniques in MATLAB to troubleshoot simulation errors
USEFUL FOR

Researchers, physicists, and students working on simulations of the Ising model, as well as MATLAB users interested in statistical mechanics and data visualization techniques.

Beer-monster
Messages
285
Reaction score
0
Hi

I'm working on a MATLAB simulation of the 2D Ising model, and would like to verify my code and its results. One thing I'd like to try and observe is the transition from anti-ferromagnet to ferromagnet, but I'm not sure how to create the initial lattice in Matlab. I've already made a (pseudo)random lattice of spins and one that starts as a ferromagnet.

In other words, how can I create a lattice with alternating elements (1s and -1s)?

Also, is there a way to plot or graph my matrix as a colour/greyscale grid, so that -1s are black and +1s are black say? Currently I've used a surface plot but have to rotate the 3D image to a plan view.
 
Physics news on Phys.org
As an additional point. I'd also like to calculate the thermal average of magnetisation and Energy <M>,<E> as a function of temperature. I'm not quite sure how to do this with a Monte Carlo algorithm, without a partition function. Is the best way to run the alogrithm for different temperatures then average the results for each temperature?
 
Beer-monster said:
In other words, how can I create a lattice with alternating elements (1s and -1s)?

If I understand what you're asking for (a checkerboard pattern?)
Code:
Y = zeros(m,n) %make a mxn matrix of zeros

%now make checkerboard 1,-1
Y(1:2:end,1:2:end) = 1
Y(2:2:end,1:2:end) = -1
Y(1:2:end,2:2:end) = -1
Y(2:2:end,2:2:end) = 1

Also, is there a way to plot or graph my matrix as a colour/greyscale grid, so that -1s are black and +1s are black say? Currently I've used a surface plot but have to rotate the 3D image to a plan view.

try "doc imagesc"
you can call options to customize the colors, read up on it.
 
Thanks for the tip. That did the trick nicely. The simulation is showing the wrong behaviour but the graphs look good:biggrin:

Does anyone have any tips for debugging a code in matlab, I'm really not seeing my error at the moment.
 
Just follow the input/output chain backwards (pause ad display function can help with this).
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
Replies
6
Views
2K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 6 ·
Replies
6
Views
5K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K