@@ -11,61 +11,58 @@ Latt = YCTria(9, 6) |> Snake! # Triangular lattice
1111J′ = 0.0
1212
1313lsD = let
14- lsD = broadcast(Int64 ∘ round, 2 .^ vcat(6 : 10 ))
15- repeat(lsD, inner= 2 )
14+ lsD = broadcast(Int64 ∘ round, 2 .^ vcat(6 : 10 ))
15+ repeat(lsD, inner = 2 )
1616end
1717lsE = zeros(length(lsD))
1818lsinfo = Vector{Any}(undef, length(lsD))
1919lsTimer = Vector{Any}(undef, length(lsD))
2020
2121# initial state
2222Ψ = let
23- if Sym == :U₁
24- aspace = vcat(Rep[U₁](0 => 1 ), repeat([Rep[U₁](i => 1 for i in - 1 : 1 / 2 : 1 ), ], size(Latt) - 1 ))
25- Ψ = randMPS(U₁Spin. pspace, aspace)
26- elseif Sym == :SU₂
27- aspace = vcat(Rep[SU₂](0 => 1 ), repeat([Rep[SU₂](i => 1 for i in 0 : 1 // 2 : 1 ), ], size(Latt) - 1 ))
28- Ψ = randMPS(SU₂Spin. pspace, aspace)
29- end
30- Ψ
23+ if Sym == :U₁
24+ aspace = vcat(Rep[U₁](0 => 1 ), repeat([Rep[U₁](i => 1 for i in - 1 : 1 / 2 : 1 )], size(Latt) - 1 ))
25+ Ψ = randMPS(U₁Spin. pspace, aspace)
26+ elseif Sym == :SU₂
27+ aspace = vcat(Rep[SU₂](0 => 1 ), repeat([Rep[SU₂](i => 1 for i in 0 : 1 // 2 : 1 )], size(Latt) - 1 ))
28+ Ψ = randMPS(SU₂Spin. pspace, aspace)
29+ end
30+ Ψ
3131end
3232
3333let
34- if Sym == :U₁
35- H = AutomataMPO(U₁Heisenberg(Latt; J′= J′))
36- else
37- H = AutomataMPO(SU₂Heisenberg(Latt; J′= J′))
38- end
39- Env = Environment(Ψ' , H, Ψ)
34+ if Sym == :U₁
35+ H = AutomataMPO(U₁Heisenberg(Latt; J′ = J′))
36+ else
37+ H = AutomataMPO(SU₂Heisenberg(Latt; J′ = J′))
38+ end
39+ Env = Environment(Ψ' , H, Ψ)
4040
41- for (i, D) in enumerate(lsD)
42- lsinfo[i], lsTimer[i] = DMRGSweep2!(Env;
43- GCstep=GCstep , GCsweep= true, verbose= verbose,
44- trunc= truncdim(D) & truncbelow(1e-8))
45- lsE[i] = lsinfo[i][2][1].Eg
46- end
41+ for (i, D) in enumerate(lsD)
42+ lsinfo[i], lsTimer[i] = DMRGSweep2!(Env;
43+ GCstep = GCstep, GCsweep = true, verbose = verbose,
44+ trunc = truncdim(D) & truncbelow(1e-8))
45+ lsE[i] = lsinfo[i][2][1].Eg
46+ end
4747
48- GC.gc()
48+ GC.gc()
4949end
5050
5151# Observables
5252Obs = let
53- Tree = ObservableTree()
54- for i in 1:size(Latt), j in i+1:size(Latt)
55- if Sym == :U₁
56- addObs!(Tree, (U₁Spin.Sz, U₁Spin.Sz), (i, j); name= (:Sz, :Sz))
57- addObs!(Tree, U1Spin.S₊₋, (i, j); name= (:Su, :Sd))
58- elseif Sym == :SU₂
59- addObs!(Tree, SU₂Spin.SS, (i, j); name= (:S, :S))
60- end
61- end
53+ Tree = ObservableTree()
54+ for i in 1:size(Latt), j in i+1:size(Latt)
55+ if Sym == :U₁
56+ addObs!(Tree, (U₁Spin.Sz, U₁Spin.Sz), (i, j), (false, false) ; name = (:Sz, :Sz))
57+ addObs!(Tree, U1Spin.S₊₋, (i, j), (false, false) ; name = (:Su, :Sd))
58+ elseif Sym == :SU₂
59+ addObs!(Tree, SU₂Spin.SS, (i, j), (false, false) ; name = (:S, :S))
60+ end
61+ end
6262
63- @time calObs!(Tree, Ψ; GCspacing=1000, verbose=verbose, showtimes=10)
63+ @time calObs!(Tree, Ψ; GCspacing = 1000, verbose = verbose, showtimes = 10)
64+
65+ convert(Dict, Tree)
6466
65- if Sym == :U₁
66- convert(Dict, Tree)
67- elseif Sym == :SU₂
68- convert(Dict, Tree)
69- end
7067end
7168
0 commit comments