Tutorial:ClassicalMCSimulations

From ALPS
Jump to: navigation, search

Local and cluster updates

Local updates

The parameter file classical1/parm1a sets up Monte Carlo simulations of the classical Ising model on finite square lattices (L=2, 4, ..., 48) at the critical temperature TC=2.269186 using local updates.

LATTICE="square lattice"
T=2.269186
J=1
THERMALIZATION=10000
SWEEPS=50000  
UPDATE="local"
MODEL="Ising"
{L=2;}
{L=4;}
{L=8;}
{L=16;}
{L=32;}
{L=48;}

In order to run the simulation you first need to convert this parameter file into a job file in XML format by typing

parameter2xml parm1a

This will generate 6 task files (one for each length L) and a job description file parm1a.in.xml which you can open with an XML browser (such as netscape 7.0 but not 7.1 or 7.2) to check the status of your simulation once you started it. The simulation can be started on a single processor by

spinmc --Tmin 10 parm1a.in.xml

or on multiple processors (in our example 8) using MPI by

mpirun -np 8 spinmc_mpi --Tmin 10 parm1a.in.xml

(In the following examples we will refer to the single processor commands only.) By setting the argument --Tmin 10 the scheduler initially checks every 10 seconds if the simulation is finished (the time is then dynamically adapted by the scheduler).

You can restart a simulation which has been halted (e.g. due to pressing Ctrl-C or reaching the CPU time limit) by starting the simulation with the XML output file, e.g.

spinmc --Tmin 10 parm1a.out.xml

The results of each simulation task will be stored in an XML output file (parm1a.task[1-5].out.xml) which you can open from the job description file parm1a.out.xml using your XML browser or alternatively by converting the output to a text file using either of the following commands:

firefox $PWD/parm1a.out.xml
convert2text parm1a.out.xml

The results of a single task stored for example in parm1a.task1.out.xml can be displayed by using either of the following commands:

firefox $PWD/parm1a.task1.out.xml
convert2text parm1a.task1.out.xml

To obtain more detailed information on the simulation runs (e.g. to check the convergence of errors) you can convert the run files of the tasks (parm1a.task[1-6].out.run1) into XML files by typing

convert2xml parm1a.task*.out.run1

which will generate the XML output files parm1a.task[1-6].out.run1.xml which you can open using your XML browser or alternatively convert to text using either of the following commands:

firefox $PWD/parm1a.task1.out.run1.xml
convert2text parm1a.task1.out.run1.xml

Repeat this for all six tasks and observe that for large lattices the errors no longer convergeby studying the the binning analysis in the files parm1a.task[1-6].out.run1.xml

Cluster updates

The parameter file classical1/parm1b sets up Monte Carlo simulations of the classical Ising model on finite square lattices (L=2, 4, ..., 48) at the critical temperature TC=2.269186 using cluster updates.

LATTICE="square lattice"
T=2.269186
J=1
THERMALIZATION=1000
SWEEPS=100000  
UPDATE="cluster"
MODEL="Ising"
{L=2;}
{L=4;}
{L=8;}
{L=16;}
{L=32;}
{L=48;}

To run the simulations please follow the same procedure as in the case of simulations using local updates, and check if now the errors converge.

parameter2xml parm1b
spinmc --Tmin 10 parm1b.in.xml

Questions

  • Are the results for the measured observables altered by changing the update mechanism?
  • Are the errors converged? (To check this convert the run files as described above.)
  • Do autocorrelation times and errors depend on the update mechanism?
  • Do the autocorrelation times also depend on the lattice size?

Susceptibility of one-dimensional Heisenberg models

The one-dimensional Heisenberg chain

The parameter file classical2/parm2a sets up Monte Carlo simulations of the classical Heisenberg model on a one-dimensional chain with 60 sites for a couple of temperatures (T=0.05, 0.1, ..., 1.5) using cluster updates.

LATTICE="chain lattice"
L=60
J=-1
THERMALIZATION=15000
SWEEPS=500000 
UPDATE="cluster" 
MODEL="Heisenberg"
{T=0.05;}
{T=0.1;}
{T=0.2;}
{T=0.3;}
{T=0.4;}
{T=0.5;}
{T=0.6;}
{T=0.7;}
{T=0.8;}
{T=0.9;}
{T=1.0;}
{T=1.25;}
{T=1.5;}

You can run the simulation by using the following standard sequence of commands

parameter2xml parm2a
spinmc --Tmin 10 parm2a.in.xml

To extract the calculated results for the susceptibilty from the XML output files you can use the extracttext tool to generate a plot of the susceptibility versus temperature. The extraxttext tool expects the plot specification as an XML input file. For this specific case (susceptibility versus energy) you may use the example file plot.xml

<?xml version="1.0" encoding="UTF-8"?> 
<plot name="Susceptibility versus temperature for one-dimensional Heisenberg models">
 
  <legend show="true"/>
  <xaxis label="Temperature"    type="PARAMETER" name="T"/>
  <yaxis label="Susceptibility" type="SCALAR_AVERAGE"/>
  <set label="One-dimensional chain"/>
</plot>

The plot will be generated by typing

extracttext plot.xml parm2a.task*.out.xml

If you have installed xmgrace you can directly create a nice plot by typing:

extractxmgr plot.xml parm2a.task*.out.xml > plot2a.xmgr 
xmgrace plot2a.xmgr

The one-dimensional Heisenberg ladder

The parameter file classical2/parm2b sets up Monte Carlo simulations of the classical Heisenberg model on a one-dimensional ladder with 60 sites for a couple of temperatures (T=0.05, 0.1, ..., 1.5) using cluster updates.

LATTICE="ladder"
L=60
J=-1
THERMALIZATION=15000
SWEEPS=500000 
UPDATE="cluster"
MODEL="Heisenberg"
{T=0.05;}
{T=0.1;}
{T=0.2;}
{T=0.3;}
{T=0.4;}
{T=0.5;}
{T=0.6;}
{T=0.7;}
{T=0.9;}
{T=1.0;}
{T=1.25;}
{T=1.5;}

You may now run the simulation for this model by typing the sequence

parameter2xml parm2b
spinmc --Tmin 10 parm2b.in.xml
extracttext plot.xml parm2b.task*.out.xml

Now use your favorite plotting program to make a graph of the susceptibility as a function of temperature.

If you have installed xmgrace you can directly create a nice plot by typing:

extractxmgr plot.xml parm2b.task*.out.xml > plot2b.xmgr 
xmgrace plot2b.xmgr

Questions

  • How does the susceptibility depend on the lattice?
  • Bonus: You can study larger system sizes and different types of lattices ("cubic lattice", "triangular lattice", check the file lattices.xml), as well.

Additional Exercises

Ising on a triangular lattice

  • Write your own parameter file for the Ising model on a 2d triangular lattice.
  • Perform a simulation at various temperatures, on a small grid (e.g. L=16, L=32). Do you see the difference between the cluster and local updates?
  • Find the approximate location of the phase transition by looking at the magnetization^2 in the ...task?.out.xml file. Extract the data for various temperatures from the xml file and make a plot.
  • Refine your simulation temperatures around the location of the transition, increase the size of your simulation, and compute a better estimate of the phase transition.
  • Run spinmc_evaluate on the ...task?.out.xml files to compute the specific heat, and determine the critical temperature on that grid from the specific heat (again, look at the ...task?.out.xml file, and plot it).
  • Perform finite size scaling.

© 2003-2008 by Simon Trebst, Fabien Alet, Matthias Troyer, Synge Todo, and Emanuel Gull