Hi!
I found an example of the four-leg Heisenberg cylinder in the InfiniteMPS package. In that example, the Hamiltonian is defined as below.
function ITensorInfiniteMPS.unit_cell_terms(::Model"heisenberg2D"; width)
opsum = OpSum()
for i in 1:width
# Vertical
opsum += -0.5, "S+", i, "S-", mod(i + 1, width)
opsum += -0.5, "S-", i, "S+", mod(i + 1, width)
opsum += "Sz", i, "Sz", mod(i + 1, width)
# Horizontal
opsum += -0.5, "S+", i, "S-", i + width
opsum += -0.5, "S-", i, "S+", i + width
opsum += "Sz", i, "Sz", i + width
end
return opsum
end
The mod
function links the third site and the zeroth site. Similarly, there is a link between the first site and the fourth site. I wonder if one should use mod1
instead of mod
here.