+1 vote
asked by (270 points)

Hi again,

I am trying to make sense of the ground state of the famous cluster Hamiltonian. It is a well known fact that the cluster state has a bond dimension of 2. However, when I run the following script in Julia, it outputs an MPS of bond dimension 4 which is double of what I expect.


using ITensors

N = 10
sites = siteinds("S=1/2",N)

ampo = AutoMPO()

for j=2:N-1
ampo += 8,"Sz",j-1,"Sx",j,"Sz",j+1;
ampo+= 8,"Sz",N-1,"Sx",N,"Sz",1;
ampo+= 8,"Sz",N,"Sx",1,"Sz",2;

H = MPO(ampo,sites)

sweeps = Sweeps(5) # number of sweeps is 5
maxdim!(sweeps,10,20,100,100,200) # gradually increase states kept
cutoff!(sweeps,1E-10) # desired truncation error

psi0 = randomMPS(sites,bond_dim)#create a random initial MPS

energy,psi = dmrg(H,psi0,sweeps)


I understand that the ground state energies are correct but the program seems to unnecessarily double the dimension. Is there an explanation for this phenomenon and also is there a way to circumvent the issue?

Finally, while running a dmrg script one needs to specify a initial state with some bond dimension. Is there any significance to this initial bond dimension? (After playing around with the code it is my understanding that the final bond dimension can become both more or less than the initial BD.)

1 Answer

+1 vote
answered by (50.5k points)

Hi Arnab,
Thanks for the question. I believe the reason for the bond dimension of 4 you're seeing is because you are using periodic boundary conditions. If you envision the MPS as going around a circle and having bond dimension 2 on every bond, but then flattening this topology into a line, now with the bond N->1 "folded" through or "doubled over" so that it overlaps with all of the bulk bonds then each bulk bond is now carrying both the usual local entanglement (requiring bond dimension 2) as well as the extra entanglement which is going from site 1 to site N, roughly speaking.

Another way of putting this is that while your Hamiltonian is periodic, your MPS isn't, so this mismatch leads to a larger bond dimension.

I tried your code, deleting the N->1 bond terms and sure enough I do get a bond dimension of 2 afterward.


commented by (270 points)
Hi Miles,

Thank you so much for your answer. It makes a lot of sense now.

Welcome to ITensor Support Q&A, where you can ask questions and receive answers from other members of the community.

Formatting Tips:
  • To format code, indent by four spaces
  • To format inline LaTeX, surround it by @@ on both sides
  • To format LaTeX on its own line, surround it by $$ above and below
  • For LaTeX, it may be necessary to backslash-escape underscore characters to obtain proper formatting. So for example writing \sum\_i to represent a sum over i.
If you cannot register due to firewall issues (e.g. you cannot see the capcha box) please email Miles Stoudenmire to ask for an account.

To report ITensor bugs, please use the issue tracker.