# ising_2d_simulation

ising_2d_simulation, a Python code which carries out a Monte Carlo simulation of a 2D Ising model.

A 2D Ising model is defined on an MxN array of cells. Each cell can have a "charge" or "spin" of +1 or -1. A neighborhood of a cell is defined to be itself, and the four immediate neighbors to the north, south, east, and west. A cell may change its charge; the likelihood of doing so depends on whether the charge of the neighbors agrees with the charge of the cell.

This code begins with a random assignment of charges to the cells. It then computes the neighbor agreement at each cell. It then updates the entire configuration in one step, using the neighbor agreement to determine the likelihood of flipping.

Currently, the chance that a cell will "flip" is determined from a table of probabilities based on the number of agreeing neighbors:

 Agree Prob 1 2 3 4 4 0.98 0.85 0.5 0.15 0.02

### Usage:

ising_2d_simulation m n iterations thresh
where
• m and n are the number of rows and columns of cells. The default values are 10.
• iterations is the number of iterations to take. The default value is 15.
• thresh is a number between 0 and 1 that chooses the percentage of negative (red) charges. The default value is 0.5.

Note that the user might also want to vary the transition probabilities. This cannot currently be done on the command line, and requires editing the code and recompiling it.

### Languages:

ising_2d_simulation is available in a C version and a C++ version and a Fortran90 version and a MATLAB version and an Octave version and a Python version.

### Related Data and codes:

python_simulation, a Python code which uses simulation to study card games, contests, and other processes which have a random element. Usually, the purpose is to try to predict the average behavior of the system over many trials.

### Reference:

• Bryan Hayes,
The World in a Spin,
On the Ising model of ferromagnets and other physical systems,
American Scientist,
Volume 88, Number 5, September-October 2000, pages 384-388,

### Source Code:

Last revised on 27 November 2022.