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
Copy file name to clipboardExpand all lines: examples/quantum1d/1.ising-cft/main.jl
+11-16Lines changed: 11 additions & 16 deletions
Original file line number
Diff line number
Diff line change
@@ -51,33 +51,28 @@ either diagramatically as
51
51
52
52
or in the code as:
53
53
"""
54
-
55
-
id =complex(isomorphism(ℂ^2, ℂ^2))
56
-
@tensor O[-1-2; -3-4] := id[-1, -3] * id[-2, -4]
57
-
T =periodic_boundary_conditions(InfiniteMPO([O]), L)
54
+
functionO_shift(L)
55
+
id =complex(isomorphism(ℂ^2, ℂ^2))
56
+
@tensor O[-1-2; -3-4] := id[-1, -3] * id[-2, -4]
57
+
T =periodic_boundary_conditions(InfiniteMPO([O]), L)
58
+
return T;
59
+
end
58
60
59
61
md"""
60
62
We can then calculate the momentum of the groundstate as the expectation value of this
61
63
operator. However, there is a subtlety because of the degeneracies in the energy
62
64
eigenvalues. The eigensolver will find an orthonormal basis within each energy subspace, but
63
65
this basis is not necessarily a basis of eigenstates of the translation operator. In order
64
66
to fix this, we diagonalize the translation operator within each energy subspace.
67
+
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$.
65
68
"""
66
-
67
-
momentum(ψᵢ, ψⱼ=ψᵢ) =angle(dot(ψᵢ, T * ψⱼ))
68
-
69
+
69
70
functionfix_degeneracies(basis)
70
-
N =zeros(ComplexF64, length(basis), length(basis))
71
71
M =zeros(ComplexF64, length(basis), length(basis))
72
72
for i ineachindex(basis), j ineachindex(basis)
73
-
N[i, j] =dot(basis[i], basis[j])
74
-
M[i, j] =momentum(basis[i], basis[j])
73
+
M[i, j] =dot(basis[i],O_shift(L)*basis[j])
75
74
end
76
75
77
-
vals, vecs =eigen(Hermitian(N))
78
-
M = (vecs'* M * vecs)
79
-
M /=diagm(vals)
80
-
81
76
vals, vecs =eigen(M)
82
77
returnangle.(vals)
83
78
end
@@ -99,7 +94,7 @@ plot(momenta,
99
94
xlabel="momentum",
100
95
ylabel="energy",
101
96
legend=false)
102
-
97
+
vline!([2π/L*i for i=-3:3],color="gray",linestyle=:dash)
0 commit comments