0% found this document useful (0 votes)
11 views2 pages

HW 12

Uploaded by

onlinebusy9
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views2 pages

HW 12

Uploaded by

onlinebusy9
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

Computational Methods in Many-Body Physics Tutorial 12

Prof. M. Knap, Prof. F. Pollmann Summer Term 2018


J. Hauschild 2018-07-06

Exercise 12: Stochastic Series Expansion (SSE)


This exercise uses the provided file sse.py, which implements the SSE algorithm.
a) Read the file sse.py.
b) Formally, the series expansions of the exponential e−βH requires an infinte sum
over all n (=the number of (non-identity) operators in the operator string). Yet,
this code works with a fixed length of the operator string, which is only increased
during the warm-up in thermalize. To justify this, generate histograms showing the
distribution of n for simulations of 3 different inverse temperatures β ∈ { 0.1, 1, 64 }
for a lattice of 8 × 8 spins.
Hint: Use the function init_SSE_square for initialization. Call the functions thermalize
and measure for each temperature, and use the function matplotlib.pyplot.hist to
plot a histogram.
c) Use the function run_simulation to measures the energy for various temperatures
0 < T ≤ 2 and L × L systems of increasing system sizes L = 4, 8, 16. Plot the
energy versus temperature T .
Hint: In all your simulations, start from high temperatures (small β) and cool down
to smaller temperatures (large β). This makes the thermalization more efficient and
actually runs faster (The code does only increase the length of the operator string
during thermalization, but never decreases it).
d) Extend the function run_simulation to also measure the specific heat Cv = ∂T hEi =
hn2 i − hni2 − hni per site. Measure and plot it for L = 8 versus T , including error
bars. What do you observe at low temperatures? Can you explain the behaviour?
Since we simulate an anti-ferromagnet favoring anti-alignment of the spins, the relevant
order parameter is the staggered magnetization
X
Ms = (−1)x+y Sx,y
z
. (1)
x,y

The Heisenberg model has a continuous SU(2) symmetry. In the thermodynamic limit
L → ∞, the Mermin-Wagner theorem rules out a spontaneous symmetry breaking in 2D
at any finite T > 0; the basic idea behind the theorem are Goldstone modes, in this case
magnons. Thus, at any fixed temperature T , the magnetization Ms → 0 with increasing
L.
However, the ground state has a finite expectation value Ms = 0.3074(1) for the staggered
magnetization [arXiv:0807.0682]. Since finite systems have an energy gap which vanishes
only for L → ∞, one can extract the ground state magnetization by simulating large
enough β for a given L and only then extrapolate to L → ∞. In other words, one can
exploit that the limits L → ∞ and T → 0 do not commute to extract ground state
properties from finite-temperature simulations.

1
e) Write a function to calculate the staggered magnetization from the configuration of
the spins.
Hint: The function site defines the ordering of the spins. Calculate a 1D array
with the phases stag = (−1)x+y in the same ordering as the spins and store it sepa-
rately (like the bonds), such that a single measurement only involves the calculation
0.5*sum(stag * spins).

f) Measure and plot the absolute value of the staggered magnetization h|Ms |i for L =
4, 8, 16 versus temperature. What is your estimate of the ground state staggered
magnetization?
Bonus Write a function init_SSE_honeycomb similar to init_SSE_square, but initializing the
bonds array to simulate a Honeycomb lattice. What staggered magnetization do you
find in the ground state?
Hint: The honeycomb lattice has a two-site unit cell of A and B sites and 3 bonds
per unit cell. You don’t need to modify the update functions of the diagonal or loop
updates. You can choose stag to be +1 on A sites and −1 on B sites.

You might also like