Monte Carlo simulation of hard disks


The application of the Metropolis algorithm for a system of hard disks can be stated very simply:

1. Choose a particle at random and generate trial a change in its x and y coordinates:

x(i) = x(i) + (2r - 1)δ

y(i) = y(i) + (2r - 1)δ,

where r is a uniform random number in the unit interval and δ is the maximum displacement.

2. Accept the trial move if the trial position of the disk does not overlap another disk. Otherwise, the move is rejected and the old configuration is retained. A reasonable, although not necessarily optimum choice for δ is to choose its value such that approximately 20% of the trial moves are accepted.

The program uses units such that the diameter σ = 1.


1. The main quantity of interest is the radial distribution function g(r). Describe its qualitative r-dependence. How does g(r) change with increasing density?

2. How does the form of g(r) compare to that a system of particles interacting with the Lennard-Jones potential at the same density?

3. The pressure P of a system of hard disks is related to the value of g(r) at contact by the expression


Because the hard disks rarely touch, it is difficult to obtain good statistics for g(r) at contact. Fit the values of g(r) close to r = σ to a second-order polynomial in r and extrapolate the values of g(r) for r greater than r = σ+.

4. What does the phase diagram of a system of hard disks look like? Does the system become a solid at high densities? Start the system at a low density and slowly compress the system. We do so by first determining the minimum distance between the centers of any two disks. Because this distance cannot be less than σ, its value bounds the amount that we can compress the system. We multiply this distance by the parameter λ = scale lengths after every Monte Carlo step per particle. Start the system in a rectangular configuration and then compress the system by setting scale lengths = 0.95. Is the system a fluid or a solid at high densities? If its a solid, what is its symmetry?

Java Classes

Updated 3 March 2009.