|
96 | 96 | "cell_type": "code", |
97 | 97 | "source": [ |
98 | 98 | "function O_shift(L)\n", |
99 | | - " τ = BraidingTensor{ComplexF64}(ℂ^2, ℂ^2)\n", |
100 | | - " O = TensorMap(τ)\n", |
| 99 | + " I = id(ComplexF64, ℂ^2)\n", |
| 100 | + " @tensor O[W S; N E] := I[W; N] * I[S; E]\n", |
101 | 101 | " return periodic_boundary_conditions(InfiniteMPO([O]), L)\n", |
102 | 102 | "end" |
103 | 103 | ], |
|
112 | 112 | "eigenvalues. The eigensolver will find an orthonormal basis within each energy subspace, but\n", |
113 | 113 | "this basis is not necessarily a basis of eigenstates of the translation operator. In order\n", |
114 | 114 | "to fix this, we diagonalize the translation operator within each energy subspace.\n", |
115 | | - "The resulting energy levels have one-to-one correspondence to the operators in CFT, where the momentum is related to their conformal spin as $P_n = \\frac{2\\pi}{L}S_n$." |
| 115 | + "The resulting energy levels have one-to-one correspondence to the operators in CFT, where\n", |
| 116 | + "the momentum is related to their conformal spin as $P_n = \\frac{2\\pi}{L}S_n$." |
116 | 117 | ], |
117 | 118 | "metadata": {} |
118 | 119 | }, |
|
149 | 150 | { |
150 | 151 | "cell_type": "markdown", |
151 | 152 | "source": [ |
152 | | - "Calculating scaling dimensions from the energy gap" |
| 153 | + "We can compute the scaling dimensions $\\Delta_n$ of the operators in the CFT from the\n", |
| 154 | + "energy gap of the corresponding excitations as $E_n - E_0 = \\frac{2\\pi v}{L} \\Delta_n$,\n", |
| 155 | + "where $v = 2$. If we plot these scaling dimensions against the conformal spin $S_n$ from\n", |
| 156 | + "above, we retrieve the familiar spectrum of the Ising CFT." |
153 | 157 | ], |
154 | 158 | "metadata": {} |
155 | 159 | }, |
|
159 | 163 | "source": [ |
160 | 164 | "v = 2.0\n", |
161 | 165 | "Δ = real.(energies[1:18] .- energies[1]) ./ (2π * v / L)\n", |
162 | | - "p = plot(momenta, real.(Δ);\n", |
163 | | - " seriestype=:scatter, xlabel=\"momentum\", ylabel=\"energy\", legend=false)\n", |
164 | | - "vline!(p, [2π / L * i for i in -3:3]; color=\"gray\", linestyle=:dash)\n", |
| 166 | + "S = momenta ./ (2π / L)\n", |
| 167 | + "\n", |
| 168 | + "p = plot(S, real.(Δ);\n", |
| 169 | + " seriestype=:scatter, xlabel=\"conformal spin (S)\", ylabel=\"scaling dimension (Δ)\",\n", |
| 170 | + " legend=false)\n", |
| 171 | + "vline!(p, -3:3; color=\"gray\", linestyle=:dash)\n", |
165 | 172 | "hline!(p, [0, 1 / 8, 1, 9 / 8, 2, 17 / 8]; color=\"gray\", linestyle=:dash)\n", |
166 | 173 | "p" |
167 | 174 | ], |
|
203 | 210 | "outputs": [], |
204 | 211 | "cell_type": "code", |
205 | 212 | "source": [ |
206 | | - "E_ex, qps = excitations(H_mps, QuasiparticleAnsatz(), ψ, envs; num=16)\n", |
| 213 | + "E_ex, qps = excitations(H_mps, QuasiparticleAnsatz(), ψ, envs; num=18)\n", |
207 | 214 | "states_mps = vcat(ψ, map(qp -> convert(FiniteMPS, qp), qps))\n", |
208 | | - "E_mps = map(x -> expectation_value(x, H_mps), states_mps)\n", |
| 215 | + "energies_mps = map(x -> expectation_value(x, H_mps), states_mps)\n", |
209 | 216 | "\n", |
210 | 217 | "momenta_mps = Float64[]\n", |
211 | | - "append!(momenta_mps, fix_degeneracies(states[1:1]))\n", |
212 | | - "append!(momenta_mps, fix_degeneracies(states[2:2]))\n", |
213 | | - "append!(momenta_mps, fix_degeneracies(states[3:3]))\n", |
214 | | - "append!(momenta_mps, fix_degeneracies(states[4:5]))\n", |
215 | | - "append!(momenta_mps, fix_degeneracies(states[6:9]))\n", |
216 | | - "append!(momenta_mps, fix_degeneracies(states[10:11]))\n", |
217 | | - "append!(momenta_mps, fix_degeneracies(states[12:12]))\n", |
218 | | - "append!(momenta_mps, fix_degeneracies(states[13:16]))\n", |
| 218 | + "append!(momenta_mps, fix_degeneracies(states_mps[1:1]))\n", |
| 219 | + "append!(momenta_mps, fix_degeneracies(states_mps[2:2]))\n", |
| 220 | + "append!(momenta_mps, fix_degeneracies(states_mps[3:3]))\n", |
| 221 | + "append!(momenta_mps, fix_degeneracies(states_mps[4:5]))\n", |
| 222 | + "append!(momenta_mps, fix_degeneracies(states_mps[6:9]))\n", |
| 223 | + "append!(momenta_mps, fix_degeneracies(states_mps[10:11]))\n", |
| 224 | + "append!(momenta_mps, fix_degeneracies(states_mps[12:12]))\n", |
| 225 | + "append!(momenta_mps, fix_degeneracies(states_mps[13:16]))\n", |
| 226 | + "append!(momenta_mps, fix_degeneracies(states_mps[17:18]))\n", |
219 | 227 | "\n", |
220 | 228 | "v = 2.0\n", |
221 | | - "Δ = real.(energies[1:18] .- energies[1]) ./ (2π * v / L)\n", |
222 | | - "plot(momenta_mps, Δ;\n", |
223 | | - " seriestype=:scatter, xlabel=\"momentum\", ylabel=\"energy\", legend=false)\n", |
224 | | - "vline!(p, [2π / L * i for i in -3:3]; color=\"gray\", linestyle=:dash)\n", |
225 | | - "hline!(p, [0, 1 / 8, 1, 9 / 8, 2, 17 / 8]; color=\"gray\", linestyle=:dash)\n", |
226 | | - "p" |
| 229 | + "Δ_mps = real.(energies_mps[1:18] .- energies_mps[1]) ./ (2π * v / L_mps)\n", |
| 230 | + "S_mps = momenta_mps ./ (2π / L_mps)\n", |
| 231 | + "\n", |
| 232 | + "p_mps = plot(S_mps, real.(Δ_mps);\n", |
| 233 | + " seriestype=:scatter, xlabel=\"conformal spin (S)\",\n", |
| 234 | + " ylabel=\"scaling dimension (Δ)\", legend=false)\n", |
| 235 | + "vline!(p_mps, -3:3; color=\"gray\", linestyle=:dash)\n", |
| 236 | + "hline!(p_mps, [0, 1 / 8, 1, 9 / 8, 2, 17 / 8]; color=\"gray\", linestyle=:dash)\n", |
| 237 | + "p_mps" |
227 | 238 | ], |
228 | 239 | "metadata": {}, |
229 | 240 | "execution_count": null |
|
244 | 255 | "file_extension": ".jl", |
245 | 256 | "mimetype": "application/julia", |
246 | 257 | "name": "julia", |
247 | | - "version": "1.11.5" |
| 258 | + "version": "1.10.4" |
248 | 259 | }, |
249 | 260 | "kernelspec": { |
250 | | - "name": "julia-1.11", |
251 | | - "display_name": "Julia 1.11.5", |
| 261 | + "name": "julia-1.10", |
| 262 | + "display_name": "Julia 1.10.4", |
252 | 263 | "language": "julia" |
253 | 264 | } |
254 | 265 | }, |
|
0 commit comments