You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
where $t$ is the hopping amplitude, $U$ the on-site repulsion, and $\mu$ the chemical potential.
14
+
At integer filling and large $U/t$ the system is a **Mott insulator**: bosons are localized by interactions and the superfluid density $\rho_s = 0$.
15
+
As $t/U$ increases, quantum fluctuations eventually drive a transition to a **superfluid** phase with $\rho_s > 0$.
16
+
This tutorial uses the ALPS worm QMC code to locate this quantum phase transition on a two-dimensional square lattice at filling $\langle n \rangle = 1$ (set by $\mu = U/2 = 0.5$).
14
17
15
-
#### Preparing and running the simulation from the command line
18
+
##Superfluid density across the transition
16
19
17
-
The parameter file <ahref="https://github.com/ALPSim/ALPS/blob/master/tutorials/mc-05-bosons/parm5a"download>`parm5a`</a> with the following contents sets up Monte Carlo simulations of the quantum Bose Hubbard model on a square lattice with 4x4 sites for a couple of hopping parameters (t=0.01, 0.02, ..., 0.1) using the worm code.
20
+
We first scan a wide range of hopping values on a $4 \times 4$ lattice to observe how the superfluid density $\rho_s$ (called "Stiffness" in ALPS) evolves across the transition.
21
+
The Hilbert space is truncated at `Nmax=2` bosons per site, which is a good approximation near the Mott lobe at unit filling.
18
22
19
-
```
20
-
LATTICE="square lattice";
21
-
L=4;
22
-
MODEL="boson Hubbard";
23
-
NONLOCAL=0;
24
-
U = 1.0;
25
-
mu = 0.5;
26
-
Nmax = 2;
27
-
T = 0.1;
28
-
SWEEPS=500000;
29
-
THERMALIZATION=10000;
30
-
{ t=0.01; }
31
-
{ t=0.02; }
32
-
{ t=0.03; }
33
-
{ t=0.04; }
34
-
{ t=0.05; }
35
-
{ t=0.06; }
36
-
{ t=0.07; }
37
-
{ t=0.08; }
38
-
{ t=0.09; }
39
-
{ t=0.1; }
40
-
```
23
+
#### Setting up and running on the command line
41
24
42
-
The corresponding Python script is found at <ahref="https://github.com/ALPSim/ALPS/blob/master/tutorials/mc-05-bosons/tutorial5a.py"download>`tutorial5a.py`</a>.
25
+
The parameter file <ahref="https://github.com/ALPSim/ALPS/blob/master/tutorials/mc-05-bosons/parm5a"download>`parm5a`</a>:
43
26
44
-
#### Evaluating the simulation and preparing plots using Python
27
+
```
28
+
LATTICE="square lattice"
29
+
L=4
30
+
MODEL="boson Hubbard"
31
+
NONLOCAL=0
32
+
U=1.0
33
+
mu=0.5
34
+
Nmax=2
35
+
T=0.1
36
+
SWEEPS=500000
37
+
THERMALIZATION=10000
38
+
{t=0.01;}
39
+
{t=0.02;}
40
+
{t=0.03;}
41
+
{t=0.04;}
42
+
{t=0.05;}
43
+
{t=0.06;}
44
+
{t=0.07;}
45
+
{t=0.08;}
46
+
{t=0.09;}
47
+
{t=0.1;}
48
+
```
45
49
46
-
To load the results and prepare plots we load the results from the output files and collect the magntization density as a function of magnetic field from all output files starting with `parm5a`.
50
+
`NONLOCAL=0` disables non-local measurements to keep the output compact.
47
51
48
52
```
49
-
data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm5a'),'Stiffness')
plt.title('Bose-Hubbard model on a $4\\times 4$ lattice')
60
101
plt.show()
61
102
```
62
103
63
-
#### Questions
104
+
$\rho_s$ should be small (consistent with zero) for small $t/U$ and grow to a finite value for large $t/U$, with a crossover near the critical hopping $(t/U)_c \approx 0.060$.
64
105
65
-
What is the signature of the phase transition?
106
+
## Locating the critical point
66
107
67
-
### The transition from the Mott insulator to the superfluid
108
+
To pin down $(t/U)_c$ more precisely we exploit finite-size scaling.
109
+
At the quantum critical point, $\rho_s \sim L^{-(d+z-2)}$ where $d=2$ is the dimension and $z=1$ is the dynamical exponent for this universality class (3D XY).
110
+
For $d=2$, $z=1$ this gives $\rho_s \sim L^{-1}$, so the combination $\rho_s L$ is dimensionless at criticality and curves for different $L$ cross at $t_c$.
68
111
69
-
We next want to pin down the location of the phase transition more accurately. For this we simulate a two-dimensional square lattice for various system sizes and look for a crossing of the quantity $\rho_s L$.
112
+
We simulate three system sizes $L = 4, 6, 8$ on a fine grid of hopping values around the expected critical point.
70
113
71
-
#### Preparing and running the simulation from the command line
114
+
#### Setting up and running on the command line
72
115
73
-
In the parameter file <ahref="https://github.com/ALPSim/ALPS/blob/master/tutorials/mc-05-bosons/parm5b"download>`parm5b`</a> we focus on the region around the critical point for three system sizes L=4, 6, and 8:
116
+
The parameter file <ahref="https://github.com/ALPSim/ALPS/blob/master/tutorials/mc-05-bosons/parm5b"download>`parm5b`</a>:
74
117
75
118
```
76
-
LATTICE="square lattice";
77
-
MODEL="boson Hubbard";
78
-
NONLOCAL=0;
79
-
U = 1.0;
80
-
mu = 0.5;
81
-
Nmax = 2;
82
-
T = 0.05;
83
-
SWEEPS=600000;
84
-
THERMALIZATION=150000;
85
-
{L=4; t=0.045;}
86
-
{L=4; t=0.05;}
87
-
{L=4; t=0.0525;}
88
-
{L=4; t=0.055;}
89
-
{L=4; t=0.0575;}
90
-
{L=4; t=0.06;}
91
-
{L=4; t=0.065;}
92
-
{L=6; t=0.045;}
93
-
{L=6; t=0.05;}
94
-
{L=6; t=0.0525;}
95
-
{L=6; t=0.055;}
96
-
{L=6; t=0.0575;}
97
-
{L=6; t=0.06;}
98
-
{L=6; t=0.065;}
99
-
{L=8; t=0.045;}
100
-
{L=8; t=0.05;}
101
-
{L=8; t=0.0525;}
102
-
{L=8; t=0.055;}
103
-
{L=8; t=0.0575;}
104
-
{L=8; t=0.06;}
105
-
{L=8; t=0.065;}
119
+
LATTICE="square lattice"
120
+
MODEL="boson Hubbard"
121
+
NONLOCAL=0
122
+
U=1.0
123
+
mu=0.5
124
+
Nmax=2
125
+
T=0.05
126
+
SWEEPS=600000
127
+
THERMALIZATION=150000
128
+
{L=4; t=0.045;}
129
+
{L=4; t=0.05;}
130
+
{L=4; t=0.0525;}
131
+
{L=4; t=0.055;}
132
+
{L=4; t=0.0575;}
133
+
{L=4; t=0.06;}
134
+
{L=4; t=0.065;}
135
+
{L=6; t=0.045;}
136
+
{L=6; t=0.05;}
137
+
{L=6; t=0.0525;}
138
+
{L=6; t=0.055;}
139
+
{L=6; t=0.0575;}
140
+
{L=6; t=0.06;}
141
+
{L=6; t=0.065;}
142
+
{L=8; t=0.045;}
143
+
{L=8; t=0.05;}
144
+
{L=8; t=0.0525;}
145
+
{L=8; t=0.055;}
146
+
{L=8; t=0.0575;}
147
+
{L=8; t=0.06;}
148
+
{L=8; t=0.065;}
106
149
```
107
-
108
-
The corresponding Python script is found at <ahref="https://github.com/ALPSim/ALPS/blob/master/tutorials/mc-05-bosons/tutorial5b.py"download>`tutorial5b.py`</a>.
109
-
110
-
#### Evaluating the simulation using Python
111
150
112
-
We first load the superfluid density (stiffness) into three different data sets, one for each system size L:
151
+
The lower temperature ($T = 0.05$) and longer runs compared to `parm5a` are needed to resolve the crossing clearly.
113
152
114
153
```
115
-
data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm5b'),'Stiffness')
The script <ahref="https://github.com/ALPSim/ALPS/blob/master/tutorials/mc-05-bosons/tutorial5b.py"download>`tutorial5b.py`</a> adapts `tutorial5a.py`: rename the prefix to `parm5b`, lower `T` to 0.05, increase `THERMALIZATION` to 150000 and `SWEEPS` to 600000, and loop over both `L` and `t`:
161
+
162
+
```Python
163
+
import pyalps
164
+
import matplotlib.pyplot as plt
165
+
import pyalps.plot
166
+
167
+
parms = []
168
+
for L in [4, 6, 8]:
169
+
for t in [0.045, 0.05, 0.0525, 0.055, 0.0575, 0.06, 0.065]:
0 commit comments