MC-08 Quantum Phase Transition
The goal of this tutorial is to locate and characterise quantum phase transitions in a two-dimensional spin model using finite-size scaling of quantum Monte Carlo data. Unlike classical phase transitions, quantum phase transitions occur at and are driven by quantum fluctuations rather than thermal ones. We will use the Binder cumulant and the spin stiffness to pin down the critical coupling, then extract the correlation-length exponent , the anomalous dimension , and the dynamical exponent — placing the transition in its universality class. The model turns out to have two quantum critical points, and we study both.
The model consists of spin- Heisenberg ladders arranged on a square lattice. Each ladder runs horizontally: sites within a ladder are connected along the legs by coupling and across the rungs by coupling . Adjacent ladders are coupled vertically by :
o-J0-o-J0-o-J0-o <- leg
| |
J1 J1 <- rung (within ladder)
| |
o-J0-o-J0-o-J0-o <- leg
| |
J2 J2 <- inter-ladder coupling
| |
o-J0-o-J0-o-J0-o <- leg
| |
J1 J1 <- rung (within ladder)
| |
o-J0-o-J0-o-J0-o <- legThe parameter L sets the number of sites along each leg; W = L/2 sets the number of rows, giving W/2 ladders in total. In this tutorial we consider and vary the inter-ladder coupling (see also Fig. 1 of Wenzel and Janke, Phys. Rev. B 79, 014410 (2009) for an illustration). Even though there are no phase transitions at finite temperatures in 2D Heisenberg models (Mermin-Wagner Theorem), transitions between different ground states can occur at .
Background simulations
The finite-size scaling run across multiple system sizes takes significantly longer than the single-system scans below. Start it now so it runs in the background while you work through the rest of the tutorial.
Command line
Download parm8b and run:
parameter2xml parm8b
loop parm8b.in.xml &Python
Run the first part of tutorial8b.py (the setup and pyalps.runApplication call) in a separate terminal or as a background process before continuing.
Identify the different phases
We begin by considering the two simple limits: decoupled ladders () and the isotropic square lattice (). The decoupled ladders have a ground state with short-range correlations and exhibit a finite spin gap: this is a spin liquid phase. The square lattice, by contrast, displays long-range order with a finite staggered magnetization: this is an antiferromagnetic Néel phase.
A clear way to probe these two phases is through the magnetic susceptibility . Simulate an system over a range of temperatures for both cases and compare the results. For decoupled ladders the susceptibility exhibits activated behaviour at low temperature due to the spin gap; on the square lattice it tends to a finite constant as . Note that on any finite system will eventually tend to zero at low enough temperature due to the finite-size gap, but this is not our focus here. Run the simulation on the command line with parameter file parm8a:
parameter2xml parm8a
loop parm8a.in.xmlor with the Python script tutorial8a.py.
import pyalps
import matplotlib.pyplot as plt
import pyalps.plot
import numpy as np
import pyalps.fit_wrapper as fw
parms = []
for j2 in [0.,1.]:
for t in [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]:
parms.append(
{
'LATTICE' : "coupled ladders",
'LATTICE_LIBRARY': 'lattices.xml', # path to custom lattice definitions
'MODEL_LIBRARY' : 'models.xml', # path to custom model definitions
'local_S' : 0.5,
'ALGORITHM' : 'loop',
'SEED' : 0,
'T' : t,
'J0' : 1 ,
'J1' : 1,
'J2' : j2,
'THERMALIZATION' : 5000,
'SWEEPS' : 50000,
'MODEL' : "spin",
'L' : 8,
'W' : 4
}
)
input_file = pyalps.writeInputFiles('parm8a',parms)
pyalps.runApplication('loop',input_file)For , the value of the spin gap can be estimated from the finite- behaviour of the magnetic susceptibility (derived in Phys. Rev. B 50, 13515 (1994)):
where and the spin gap are fitting parameters. Fit the data for and extract an estimate for the spin gap. Here is an example of how to perform this analysis in Python:
data = pyalps.loadMeasurements(pyalps.getResultFiles(pattern='parm8a.task*.out.h5'),['Staggered Susceptibility','Susceptibility'])
susc1=pyalps.collectXY(data,x='T',y='Susceptibility', foreach=['J2'])
lines = []
gap_j0 = None
for data in susc1:
pars = [fw.Parameter(1), fw.Parameter(1)]
data.y= data.y[data.x < 1]
data.x= data.x[data.x < 1]
f = lambda self, x, pars: (pars[0]()/np.sqrt(x))*np.exp(-pars[1]()/x)
fw.fit(None, f, pars, np.array([v.mean for v in data.y]), data.x)
prefactor = pars[0].get()
gap = pars[1].get()
if data.props['J2'] == 0.0:
gap_j0 = gap
lines += plt.plot(data.x, f(None, data.x, pars))
lines[-1].set_label('$J_2=%.4s$: $\\chi = \\frac{%.4s}{\\sqrt{T}}\\exp\\left(\\frac{-%.4s}{T}\\right)$' % (data.props['J2'], prefactor,gap))The fit returns the gap and the prefactor ; the resulting curves are shown below.
plt.figure()
pyalps.plot.plot(susc1)
plt.xlabel(r'$T$')
plt.ylabel(r'$\chi$')
plt.title('spin gap $\\Delta \\approx$ %.4s' % gap_j0)
plt.legend()
plt.show()For the susceptibility should drop steeply at low , and the fit curve should follow the data closely, yielding a spin gap . For the susceptibility should approach a finite constant as , reflecting the absence of a gap on the square lattice.
Locate the phase transition
Having identified two different phases at and , there must be (at least) one quantum phase transition separating them. The background run started above scans the coupling range for system sizes at an inverse temperature (see parm8b / tutorial8b.py for the full parameter set). Once it has finished, load and analyse the results as described below.
Choice of inverse temperature
The simulations are run at a finite inverse temperature rather than strictly at . The choice is not arbitrary: at this quantum phase transition the dynamical critical exponent is , which means that time and space scale the same way. Keeping ensures that the imaginary-time extent of the path integral grows with system size in the same proportion, so the simulation samples the ground-state physics rather than thermal excitations. You will verify this choice implicitly when you observe that the curves cross at a single point — this crossing only works cleanly if and .
Note also that the computational time of the loop algorithm scales linearly with : since no finite- QMC algorithm can scale better than linearly with the space-time volume , this scaling is optimal even at a quantum critical point.
To confirm that results are not affected by the finite temperature, change to and repeat the simulation — the stiffness and Binder cumulant should be unchanged. Try also to observe how results degrade when the system is far from the ground state.
Staggered magnetization, Binder cumulant, spin stiffness
As in the classical Monte Carlo tutorial, we pinpoint the phase transition using two observables.
The first is the Binder cumulant of the staggered magnetization , the order parameter of the antiferromagnetic phase:
The second is the spin stiffness (Wenzel and Janke, Phys. Rev. B 79, 014410 (2009)), which has smaller finite-size corrections than the Binder cumulant crossing for this model:
where , are the winding numbers of worldlines along the - and -directions. At the quantum critical point , where is the spatial dimension and the dynamical critical exponent. With the combination is dimensionless at criticality, so curves for different all cross at . The fact that both observables cross at a single point — rather than one diverging — indicates a continuous transition rather than a first-order one.
Load and plot the observables with:
data = pyalps.loadMeasurements(pyalps.getResultFiles(pattern='parm8b.task*.out.h5'),['Binder Ratio of Staggered Magnetization','Stiffness'])
binder=pyalps.collectXY(data,x='J2',y='Binder Ratio of Staggered Magnetization', foreach=['L'])
stiffness =pyalps.collectXY(data,x='J2',y='Stiffness', foreach=['L'])
for q in stiffness:
q.y = q.y*q.props['L']
plt.figure()
pyalps.plot.plot(stiffness)
plt.xlabel(r'$J_2$')
plt.ylabel(r'Stiffness $\rho_s L$')
plt.title('coupled ladders')
plt.figure()
pyalps.plot.plot(binder)
plt.xlabel(r'$J_2$')
plt.ylabel(r'$g(m_s)$')
plt.title('coupled ladders')
plt.show()The curves for different should rise from zero on the left and cross near a single point, giving a first estimate of –. The Binder cumulant curves cross in the same region, though with larger finite-size corrections that make the crossing point less sharp at these system sizes. Both observables crossing (rather than one diverging) confirms that the transition is continuous.
Estimates of critical exponents
You have obtained a rough estimate of the quantum critical point . As in the classical case, extracting the critical exponents requires a more precise determination of .
This is done by running larger system sizes on a finer grid of values, as set up in parm8d and tutorial8d.py. Note that these simulations are CPU-intensive and are left as an exercise. Plot the Binder cumulant and the rescaled stiffness for different system sizes; the crossing point gives a refined estimate of . To extract , consider how the derivatives of these quantities with respect to , evaluated at , scale with system size. These derivatives can in principle be measured directly in the Monte Carlo, but for this tutorial it is sufficient to compute them by numerical differentiation using the fine grid.
Perform the numerical differentiations for the different system sizes for both quantities, and plot their values at as a function of system size. Data should scale as a power law:
Extract from a power-law fit. Both quantities should yield consistent estimates close to , the 3D classical Heisenberg value.
Exercise: You can visually determine the quality of your estimate by performing data collapses, as in the classical case. The scaling forms for and are identical to the ones for the Binder cumulant in the classical phase transition example.
Besides and , the last independent exponent can be obtained from the finite-size scaling of the staggered susceptibility at the critical point:
Note that one must use the staggered susceptibility — the susceptibility associated with fluctuations of the order parameter — rather than the uniform susceptibility . Plot at as a function of system size and extract from the slope. The expected value is , close to zero, meaning the staggered susceptibility grows nearly as at the critical point.
Both quantum phase transitions in this tutorial belong to the universality class of the finite-temperature transition of the 3D classical Heisenberg model.
Locate the second quantum critical point
When is very large, the inter-ladder coupling dominates over the intra-ladder couplings , and the system rearranges into effective singlet dimers along the bonds. This is again a gapped spin liquid phase, so the phase diagram has the structure: spin liquid → Néel AFM → spin liquid as increases from 0 to large values. There must therefore be a second quantum critical point at which the Néel order is destroyed.
We repeat the finite-size scaling analysis in the parameter regime using the parameter file parm8c or the script tutorial8c.py, which use the same system sizes and as parm8b but scan the higher- range.
Command line
parameter2xml parm8c
loop parm8c.in.xmlPython
import pyalps
import matplotlib.pyplot as plt
import pyalps.plot
import numpy as np
parms = []
for l in [8,10,12,16]:
for j2 in [1.8,1.85,1.9,1.95,2.,2.05,2.1]:
parms.append(
{
'LATTICE' : "coupled ladders",
'LATTICE_LIBRARY': 'lattices.xml',
'MODEL_LIBRARY' : 'models.xml',
'local_S' : 0.5,
'ALGORITHM' : 'loop',
'SEED' : 0,
'BETA' : 2*l,
'J0' : 1,
'J1' : 1,
'J2' : j2,
'THERMALIZATION' : 5000,
'SWEEPS' : 50000,
'MODEL' : "spin",
'L' : l,
'W' : l//2
}
)
input_file = pyalps.writeInputFiles('parm8c', parms)
pyalps.runApplication('loop', input_file)Load and plot the stiffness and the Binder cumulant using the same analysis commands as before, replacing parm8b with parm8c in the file pattern.
The curves should again cross at a single point, now near . The Binder cumulant crossing should appear in the same region. This second transition belongs to the same universality class as the first — the 3D classical Heisenberg model — so the same critical exponents and apply.
Questions
- Plot the magnetic susceptibility for and . How do the low-temperature behaviours differ, and what does each tell you about the ground state?
- For , fit to and extract the spin gap . How does your estimate compare with values from the literature (Phys. Rev. Lett. 73, 886 (1994); Phys. Rev. Lett. 77, 1865 (1996))?
- From the crossings of the and Binder cumulant curves, what is your estimate of the first quantum critical point ?
- Change to and repeat. Are the stiffness and Binder cumulant affected? Now try : do the results change noticeably? What does this tell you about the role of temperature in these simulations?
- From the power-law scaling , what value of do you obtain?
- From the finite-size scaling of the staggered susceptibility , what value of do you obtain?
- Compare your estimates of and with the 3D classical Heisenberg universality class values reported in Phys. Rev. B 65, 144520 (2002).
- (Advanced) Perform data collapses for and using your estimates of and . How sensitive is the quality of the collapse to the precise value of ?
- Scan to locate the second quantum critical point. How does your estimate compare with the high-precision results of Wenzel and Janke, Phys. Rev. B 79, 014410 (2009)?