MC-04 Measurements
Correlation measurements in the directed loop and worm codes
In this tutorial, we will measure correlation functions with the directed loop and worm codes.
Two-dimensional Heisenberg square lattice
Preparing and running the simulation from the command line
The parameter file parm4
sets up Monte Carlo simulations of the quantum mechanical S=1/2 Heisenberg model on a square lattice, and enables various measurement options:
MODEL="spin";
LATTICE="square lattice";
REPRESENTATION="SSE";
MEASURE[Correlations]=true;
MEASURE[Structure Factor]=true;
MEASURE[Green Function]=true;
THERMALIZATION=10000;
SWEEPS=500000;
J= 1;
L=4;
W=4;
T=0.3;
{h=0.1;}
Using the standard sequence of commands you can run the simulation using the quantum SSE code.
parameter2xml parm4
dirloop_sse --Tmin 10 --write-xml parm4.in.xml
Preparing and running the simulation using Python
To set up and run the simulation in Python we use the script tutorial4.py
:
import pyalps
parms = [{
'LATTICE' : "square lattice",
'MODEL' : "spin",
'MEASURE[Correlations]' : True,
'MEASURE[Structure Factor]' : True,
'MEASURE[Green Function]' : True,
'local_S' : 0.5,
'T' : 0.3,
'J' : 1 ,
'THERMALIZATION' : 10000,
'SWEEPS' : 500000,
'L' : 4,
'h' : 0.1
}]
input_file = pyalps.writeInputFiles('parm4',parms)
res = pyalps.runApplication('dirloop_sse',input_file,Tmin=5)
Evaluating the simulation
To look at the results, we now load ALL measurements from output files starting with parm4
. The code to do this is in tutorial4.py
, but we may again copy it to a new script loader4.py
if we ever want to view the results again without running the simulation.
data = pyalps.loadMeasurements(pyalps.getResultFiles())
We now loop through all measurements and print them:
for s in pyalps.flatten(data):
if len(s.x)==1:
print s.props['observable'], ' : ', s.y[0]
else:
for (x,y) in zip(s.x,s.y):
print s.props['observable'], x, ' : ', y
The if
statement checks whether the measured quantity is a scalar or vector-valued quantity.