M13_MonteCarloPhaseTrans - Cal Poly San Luis Obispo

advertisement
M13- Monte-Carlo Simulation of a Phase Transition
Jonathan Fernsler, Dept. of Physics, Cal Poly, San Luis Obispo – modified from
“Computational Physics” by Nicholas J. Giordano
We’ve learned about integration using the Monte-Carlo technique. Another use of this
method is to simulate a thermodynamical system. A macroscopic object has too many
interacting particles (~1023!) to possibly predict the state of all particles at any time, but
the average behavior of the system as a whole is predictable. The interacting particles
obey the laws of statistical mechanics and when averaged over the macroscopic object,
we can extract equilibrium thermodynamics. We will use Monte Carlo methods to
simulate a phase transition induced by a change in temperature of a ferromagnet.
Ising Model of Magnetism
Magnetism is an inherently quantum mechanical phenomena, and as Niels Bohr proved,
ferromagnetism cannot exist in a classical system. His proof was accomplished before
quantum mechanics had been invented, so this was a indication that the world didn’t
work according to classical physics. A quantum property of magnetism is the electron’s
spin, which has an associated magnetic moment. Ferromagnetism arises when a
collection of spins all point in the same direction, which produces a total moment that is
macroscopic in size. We would like to understand how the interactions between spins
produce ferromagnetism. We also know that when heated, this magnetism is lost as the
system undergoes a phase transition (this happens at about 1000K in iron). We would
like to understand how this occurs and how magnetic
properties depend on temperature.
We will use the Ising model to explore a system of
interacting spins to investigate magnetism. We will
treat our ferromagnet as a collection of atoms
arranged on a lattice with each atom possessing spin
= ½ (see figure). To treat the full quantum
mechanical interactions between atoms would be very
difficult (we would need to include angular
momentum and other effects), so instead we will use
a greatly simplified model, which nonetheless
captures most of the interesting physics. Each spin,
represented as an arrow, is able to point along either
the +z or –z direction; i.e. up or down. No other
orientation is permitted, and we can therefore
simplify the ith spin as si = 1 (this is a strange quantum mechanical property that when
measuring spin, the wavefunction “collapses” so it is either along the axis of
measurement or antiparallel). Let’s initialize a matrix called spins and choose its
dimensions:
% define the experimental parameters
687320962 2/6/16
Page 1 of 5
clear all; close all;
nx = 10; % number of spins in x direction
ny = 10;
% number of spins in y direction
% initialize an nx by ny lattice of randomly generated +1
% or -1 spins
spin = InitSpin(nx,ny);
Each of the so-called Ising spins interacts with other spins in the lattice: in a ferromagnet,
this favors parallel alignment of pairs of spins. In the real system, these interactions will
be largest between nearest neighbor spins and fall off rapidly for spins farther apart. In
our simple model we will only consider interactions between nearest neighbors, so the
energy of the system is:
E  J  si s j
ij
where the sum is over all nearest neighbor pairs <i,j> , and J is the “exchange constant”,
which is positive for a ferromagnet. Therefore, the red spin in the figure interacts only
with the yellow spins in the above figure. But what do we do if a spin is on the edge of
the lattice? We could have several boundary conditions, but we will choose “periodic”
boundaries, which will effectively make our lattice seem larger than it really is. A spin
 will interact with its usual nearest neighbors, but will also
on the edge of a boundary
interact with the spin on the opposite side of the lattice: i.e. the lattice wraps around on
itself. This effectively makes the lattice infinite in size, which is advantageous for
simulating the thermodynamics of a macroscopic system. But the system still doesn’t
quite behave the way we’d like, because the maximum distance two spins can be away
from each other is L/sqrt(2) where L is the size of the lattice. You can compute the
energy of the entire spin lattice with the provided function EnergyMC, where we take
J=1, which uses functions to take into account the periodic boundary conditions:
energy = EnergyMC(spin);
In our model, two parallel-aligned spins have an interaction energy –J and two
antiparallel spins have energy +J. To lower energy the spins will favor parallel
alignment. You might think that this would always lead to a set of spins that are always
aligned parallel over the whole sample to lower energy. However, we have to consider
the disordering effects of temperature. Assuming that our spin system is in equilibrium
with a heat bath at temperature T, the probability of find the system in any particular
state, , is proportional to the Boltzmann factor
E kB T

where E is the energy of the state  found from our equation for the energy of the
system, kB is Boltzmann’s constant, and P is the probability of finding the system in that
state. Therefore, low energies E have a high probability of occurring (favoring parallel
spins) and higher energies E have a lower, but still finite probability. Each of these
states  is a particular configuration of spins, which we call a microstate. With a lattice
containing N spins, there are 2N possible microstates. We are interested in systems where
P ~e

687320962 2/6/16
Page 2 of 5
N is very large (remember N~1023 for a real macroscopic sample!) so the total number of
microstates is extremely large. In order to discover the behavior of the system, we need to
calculate the probabilities of being these microstates.
We can also measure the magnetization of the system to observe how this changes with
temperature. The magnetization is
M   M P

where M   si is the magnetization of one particular microstate . Now we want to
try to calculate the properties of the system and see how they depend on temperature.

Monte Carlo Method

We wish to see how our system interacts with its environment: the heat bath at
temperature T. According to statistical mechanics, the role of a heat bath is to exchange
energy with the spin system and thereby bring it into equilibrium at some temperature T.
As the system gains or loses energy from the bath, spins are flipped causing the system to
move to new microstates. Each microstate corresponds to a particular arrangement of
spins. The measured value of magnetization depends on probability of find the system in
various microstates.
In the Monte Carlo method, you begin with the system in a particular microstate. You
then choose a spin (either sequentially or at random) and the energy required to make it
flip, Eflip, is calculated. If Eflip is negative (so the energy is lowered by making the spin
change direction) then the spin is flipped and the system is in a new microstate. If Eflip is
positive (so the energy is raised by flipping the spin) we make a decision. A randomly
generated number between 0 and 1 is compared to the Boltzmann factor exp(-Eflip/kBT).
If this number is larger than the Boltzman factor, the spin is flipped, if it is smaller the
spin stays the same. Hence the system may move to a different microstate, depending on
the value of the random number. This algorithm of choosing a spin and deciding whether
to flip it is repeated over the whole lattice, which has now entered a new microstate. The
function spinMC accomplishes this:
T=1.3; % Define your temperature
spin = spinMC(spin,T);
% one cycle of flipping spins
Make sure to look through each of the provided functions to see that you understand how
they work and what they are doing.
Now we can explore this system and examine the thermodynamics. Above, we’ve taken
the lattice into a new microstate and we can compute the energy of that microstate.
However to explore the system more accurately, we want to examine many microstates of
687320962 2/6/16
Page 3 of 5
the same system to look at averages and fluctuations. This simple model gives a
surprisingly accurate picture of magnetization as we’ll see.
You’ll be using lots of for loops to cycle through the lattice and its microstates, so make
sure you’re comfortable with that from the previous assignment. Below you will write
some functions and a script to explore the system and place your generated plots and
observations in a document about the Ising model.
Assignment: M13_MonteCarloPhaseTrans
1. Write a function MagMC(spin) which computes the magnetization of the whole
lattice. We can use this to watch how the Ising model can melt from a
ferromagnetic phase when temperature is increased.
2. You now have functions to compute the energy and magnetization and to advance
the Ising model to a new microstate. In your script, compute the energy and
magnetization per spin for 1000 time steps (cycling through the lattice to find a
new microstate) for T = 1.1 and plot them vs. the Monte Carlo time steps. Do
these plots make sense? Now compute the average energy <E> and
magnetization <M> per spin over all the time steps from these values in your
script. Monte Carlo time steps are not actually related to the time
3. How does the size of the lattice affect your calculations of average energy? Try a
range of LxL lattice sizes where L = 2, 4, 6, …20 and find the average energy
<E> per spin for 1000 time cycles. Remember that the “correct” thermodynamics
is simulated by an infinitely-sized system. This may take a few minutes to find
the average magnetization of a very large system. Generate a plot showing how
the lattice size affects the calculated energy and explain what is happening.
4. We will use a lattice of size 10x10 for the rest of the simulation. Now we want to
explore how temperature affects the energy and magnetization. Set up a loop to
compute the average energy <E> and magnetization <M> per spin over 1000 time
steps and plot these values on two separate plots versus the temperature ranging
from T = 0.5 to 2.5 in steps of 0.05. There is a phase transition occurring when
the temperature changes: explain what is happening to the spin lattice as a
function of temperature.
5. You might notice that the data near the phase transition is noisy. If you run your
simulation again, there will be significantly different values in this region from
one run to the next. This happens because of large fluctuations in the spin
orientation as you reach a critical point at the phase transition itself. The specific
heat is related to the energy as C = d<E>/dT. At a phase transition in an infinitely
large system the specific heat diverges at the critical temperature TC, which means
that there are very large fluctuations in the spins. We can compute the size of
these fluctuations by computing the average energy per spin over 1000 Monte
Carlo time steps as we did before and additionally computing the average energy
687320962 2/6/16
Page 4 of 5
squared <E2> over the same time steps. The variance is defined as
2
2
E   E 2  E . According to fluctuation-dissipation theorem of statistical
E 
mechanics, the variance of the energy is related to the specific heat by C 
2

kB T 2
Compute the specific heat from this equation for the range of temperatures from
problem 4 and plot vs. the temperature. You can take kB = 1 for this plot, as we
only want to see how our specific heat changes when we approach the transition.

What temperature does the transition occur at and what is happening
here?
687320962 2/6/16
.
Page 5 of 5
Download