Project 4, deadline May 2
Computational Physics PHY480/905
Department of Physics and Astronomy, Michigan State University
Spring semester 2018
Studies of phase transitions in magnetic systems
Introduction
The aim of this project is to study a widely popular model to simulate phase transitions, the so-called Ising model in two dimensions. At a given critical temperature, this model exhbits a phase transition from a magnetic phase (a system with a finite magnetic moment) to a phase with zero magnetization.
In its simplest form
the energy of the Ising model is expressed as, without an externally applied magnetic field,
$$
E=-J\sum_{< kl >}^{N}s_ks_l
$$
with
\( s_k=\pm 1 \). The quantity \( N \) represents the total number of spins and \( J \) is a coupling
constant expressing the strength of the interaction between
neighboring spins. The symbol \( < kl> \) indicates that we sum over
nearest neighbors only. We will assume that we have a ferromagnetic
ordering, viz \( J> 0 \). We will use periodic boundary conditions and
the Metropolis algorithm only. The material on the Ising model can be found in chapter 13 of the lecture notes. The Metropolis algorithm is discussed in chapter 12.
Project 4a): A simple \( 2\times 2 \) lattice, analytical expressions
Assume we have only two spins in each dimension, that is \( L=2 \).
Find the analytical expression
for the partition function and the corresponding
expectations values for the energy \( E \), the mean absolute value of the magnetic moment \( \vert M\vert \) (we will refer to this as the mean magnetization),
the specific heat \( C_V \) and the susceptibility \( \chi \)
as functions of \( T \) using periodic boundary conditions.
Project 4b): Writing a code for the Ising model
Write now a code for the Ising model which computes the mean energy
\( E \), mean magnetization
\( \vert M\vert \), the specific heat \( C_V \) and the susceptibility \( \chi \)
as functions of \( T \) using periodic boundary conditions for
\( L=2 \) in the \( x \) and \( y \) directions.
Compare your results with the expressions from a)
for a temperature \( T=1.0 \) (in units of \( kT/J \)).
How many Monte Carlo cycles do you need in order to achieve a
good agreeement?
Project 4c): When is the most likely state reached?
We choose now a square lattice with \( L=20 \) spins in the \( x \) and \( y \) directions.
In the previous exercise we did not study carefully how many Monte Carlo cycles were needed in order to reach the most likely state. Here
we want to perform a study of the time (here it corresponds to the number
of Monte Carlo sweeps of the lattice) one needs before one reaches an equilibrium situation
and can start computing various expectations values. Our
first attempt is a rough and plain graphical
one, where we plot various expectations values as functions of the number of Monte Carlo cycles.
Choose first a temperature of \( T=1.0 \) (in units of \( kT/J \)) and study the
mean energy and magnetisation (absolute value) as functions of the number of Monte Carlo cycles. Let the number of Monte Carlo cycles (sweeps per lattice)
represent time.
Use both an ordered (all spins pointing in one direction) and a random
spin orientation as starting configuration.
How many Monte Carlo cycles do you need before you reach an equilibrium situation?
Repeat this analysis for \( T=2.4 \).
Can you, based on these values estimate an equilibration time?
Make also a plot of the total number of accepted configurations
as function of the total number of Monte Carlo cycles. How does the number of
accepted configurations behave as function of temperature \( T \)?
Project 4d): Analyzing the probability distribution
Compute thereafter the probability
\( P(E) \) for the previous system with \( L=20 \) and the same temperatures, that is at \( T=1.0 \) and \( T=2.4 \).
You compute this probability by simply counting the number of times a
given energy appears in your computation. Start the computation after
the steady state situation has been reached.
Compare your results with the computed variance in energy
\( \sigma^2_E \) and discuss the behavior you observe.
Studies of phase transitions
Near \( T_C \) we can characterize the behavior of many physical quantities
by a power law behavior.
As an example, for the Ising class of models,
the mean magnetization is given by
$$
\langle M(T) \rangle \sim \left(T-T_C\right)^{\beta},
$$
where \( \beta=1/8 \) is a so-called critical exponent. A similar relation
applies to the heat capacity
$$
C_V(T) \sim \left|T_C-T\right|^{\alpha},
$$
and the susceptibility
$$
\begin{equation}
\chi(T) \sim \left|T_C-T\right|^{\gamma},
\label{_auto1}
\end{equation}
$$
with \( \alpha = 0 \) and \( \gamma = 7/4 \).
Another important quantity is the correlation length, which is expected
to be of the order of the lattice spacing for \( T>> T_C \). Because the spins
become more and more correlated as \( T \) approaches \( T_C \), the correlation
length increases as we get closer to the critical temperature. The divergent
behavior of \( \xi \) near \( T_C \)
is
$$
\begin{equation}
\xi(T) \sim \left|T_C-T\right|^{-\nu},
\label{eq:xi}
\end{equation}
$$
with \( \nu=1 \).
A second-order phase transition is characterized by a
correlation length which spans the whole system.
Since we are always limited to a finite lattice, \( \xi \) will
be proportional with the size of the lattice.
Through so-called finite size scaling relations
it is possible to relate the behavior at finite lattices with the
results for an infinitely large lattice.
The critical temperature scales then as
$$
\begin{equation}
T_C(L)-T_C(L=\infty) = aL^{-1/\nu},
\label{eq:tc}
\end{equation}
$$
with \( a \) a constant and \( \nu \) defined in Eq. \eqref{eq:xi}.
We set \( T=T_C \) and obtain a mean magnetisation
$$
\begin{equation}
\langle {\cal M}(T) \rangle \sim \left(T-T_C\right)^{\beta}
\rightarrow L^{-\beta/\nu},
\label{eq:scale1}
\end{equation}
$$
a heat capacity
$$
\begin{equation}
C_V(T) \sim \left|T_C-T\right|^{-\gamma} \rightarrow L^{\alpha/\nu},
\label{eq:scale2}
\end{equation}
$$
and susceptibility
$$
\begin{equation}
\chi(T) \sim \left|T_C-T\right|^{-\alpha} \rightarrow L^{\gamma/\nu}.
\label{eq:scale3}
\end{equation}
$$
Project 4e): Numerical studies of phase transitions
We wish to study the behavior of the Ising model
in two dimensions close to the critical temperature as a function of
the lattice size \( L\times L \). Calculate the expectation values for
\( \langle E\rangle \) and \( \langle \vert M\vert \rangle \), the specific heat
\( C_V \) and the susceptibility \( \chi \) as functions of \( T \) for \( L=20 \), \( L=40 \),
\( L=60 \), and \( L=80 \) for \( T\in [2.1,2.4] \) with a step in
temperature \( \Delta T=0.05 \) or smaller. You may find it convenient to narrow the domain for \( T \).
Plot \( \langle E\rangle \),
\( \langle \vert M\vert\rangle \), \( C_V \) and \( \chi \) as functions of \( T \). Can
you see an indication of a phase transition? Use the absolute value
\( \langle \vert M\vert\rangle \) when you evaluate \( \chi \).
Project 4f): Extracting the critical temperature
Use Eq. \eqref{eq:tc} and the exact result
\( \nu=1 \) in order to estimate \( T_C \) in the thermodynamic limit
\( L\rightarrow \infty \)
using your simulations with \( L=40 \), \( L=60 \), \( L=100 \) and \( L=140 \)
The exact result for the critical temperature (after Lars Onsager) is
\( kT_C/J=2/ln(1+\sqrt{2})\approx 2.269 \) with \( \nu=1 \).
Background literature
If you wish to read more about the Ising model and statistical physics here are three suggestions.
- M. Plischke and B. Bergersen, Equilibrium Statistical Physics, World Scientific, see chapters 5 and 6.
- D. P. Landau and K. Binder, A Guide to Monte Carlo Simulations in Statistical Physics, Cambridge, see chapters 2,3 and 4.
- M. E. J. Newman and T. Barkema, Monte Carlo Methods in Statistical Physics, Oxford, see chapters 3 and 4.
Introduction to numerical projects
Here follows a brief recipe and recommendation on how to write a report for each
project.
- Give a short description of the nature of the problem and the eventual numerical methods you have used.
- Describe the algorithm you have used and/or developed. Here you may find it convenient to use pseudocoding. In many cases you can describe the algorithm in the program itself.
- Include the source code of your program. Comment your program properly.
- If possible, try to find analytic solutions, or known limits in order to test your program when developing the code.
- Include your results either in figure form or in a table. Remember to label your results. All tables and figures should have relevant captions and labels on the axes.
- Try to evaluate the reliabilty and numerical stability/precision of your results. If possible, include a qualitative and/or quantitative discussion of the numerical stability, eventual loss of precision etc.
- Try to give an interpretation of you results in your answers to the problems.
- Critique: if possible include your comments and reflections about the exercise, whether you felt you learnt something, ideas for improvements and other thoughts you've made when solving the exercise. We wish to keep this course at the interactive level and your comments can help us improve it.
- Try to establish a practice where you log your work at the computerlab. You may find such a logbook very handy at later stages in your work, especially when you don't properly remember what a previous test version of your program did. Here you could also record the time spent on solving the exercise, various algorithms you may have tested or other topics which you feel worthy of mentioning.
Format for electronic delivery of report and programs
The preferred format for the report is a PDF file. You can also use DOC or postscript formats or as an ipython notebook file. As programming language we prefer that you choose between C/C++, Fortran2008 or Python. The following prescription should be followed when preparing the report:
- Use your github repository to upload your report. Indicate where the report is by creating for example a Report folder. Please send us as soon as possible your github username.
- Place your programs in a folder called for example Programs or src, in order to indicate where your programs are. You can use a README file to tell us how your github folders are organized.
- In your git repository, please include a folder which contains selected results. These can be in the form of output from your code for a selected set of runs and input parameters.
- In this and all later projects, you should include tests (for example unit tests) of your code(s).
- Comments from us on your projects, with score and detailed feedback will be emailed to you.
Finally,
we encourage you to work two and two together. Optimal working groups consist of
2-3 students. You can then hand in a common report.
© 1999-2018, Computational Physics PHY480/905. Released under CC Attribution-NonCommercial 4.0 license