@@ -19,6 +19,7 @@ conserve_qns = true
1919solver_tol = (x -> x / 10 )
2020outer_iters = 10 # Number of times to increase the bond dimension
2121width = 4
22+ yperiodic = false # OBC vs cylinder
2223
2324# #############################################################################
2425# CODE BELOW HERE DOES NOT NEED TO BE MODIFIED
@@ -30,24 +31,29 @@ initstate(n) = isodd(n) ? "↑" : "↓"
3031s = infsiteinds (" S=1/2" , N; conserve_qns, initstate)
3132ψ = InfMPS (s, initstate)
3233
33- function ITensorInfiniteMPS. unit_cell_terms (:: Model"heisenberg2D" ; width)
34+ function ITensorInfiniteMPS. unit_cell_terms (:: Model"heisenberg2D" ; width, yperiodic )
3435 opsum = OpSum ()
3536 for i in 1 : width
3637 # Vertical
37- opsum += - 0.5 , " S+" , i, " S-" , mod ( i + 1 , width)
38- opsum += - 0.5 , " S-" , i, " S+" , mod ( i + 1 , width)
39- opsum += " Sz" , i, " Sz" , mod ( i + 1 , width)
38+ opsum -= 0.5 , " S+" , i, " S-" , i + 1
39+ opsum -= 0.5 , " S-" , i, " S+" , i + 1
40+ opsum += " Sz" , i, " Sz" , i + 1
4041 # Horizontal
41- opsum += - 0.5 , " S+" , i, " S-" , i + width
42- opsum += - 0.5 , " S-" , i, " S+" , i + width
42+ opsum -= 0.5 , " S+" , i, " S-" , i + width
43+ opsum -= 0.5 , " S-" , i, " S+" , i + width
4344 opsum += " Sz" , i, " Sz" , i + width
4445 end
46+ if yperiodic
47+ opsum -= 0.5 , " S+" , 1 , " S-" , width
48+ opsum -= 0.5 , " S-" , 1 , " S+" , width
49+ opsum += " Sz" , 1 , " Sz" , width
50+ end
4551 return opsum
4652end
4753model = Model (" heisenberg2D" )
4854
4955# Form the Hamiltonian
50- H = InfiniteSum {MPO} (model, s; width)
56+ H = InfiniteSum {MPO} (model, s; width, yperiodic )
5157
5258# Check translational invariance
5359# println("\nCheck translation invariance of the initial VUMPS state")
0 commit comments