+1 vote
asked by (250 points)

Hi all
I'm was hoping to calculate the entanglement entropy for 2D Kitaev's honeycomb lattice. I followed one of Miles' advice posted in 2017:

Re-do the DMRG calculation with the 1D ordering of the sites changed so that your MPS first visits every site in your cluster (in a 1D MPS path sense) before visiting the rest of the sites outside of your cluster. Then just compute the entanglement in the usual 1D fashion across the MPS bond separating the cluster from the rest.

Yet I came across a problem where the ground state energy changes if I re-order the lattice. In the lattice labeled below I got the correct gs energy as compared with ED result: E0 = -3.57 with PBC.
enter image description here

Now I'd like to calculate entanglement entropy of the lower left plaquette, so I re-ordered the label in the following:
enter image description here
such that the red plaquette (1,2,3,4,5,6) is constructed first by Itensor, and I can make a 1D cut thereafter to keep only those in red. The relevant code is:

auto lattice = honeycombLattice(Nx,Ny,{"YPeriodic=",yperiodic,"XPeriodic=",xperiodic});
auto ampo = AutoMPO(sites);
// Isotropic Kitaev interaction
for(auto bnd : lattice)
ampo +=  bnd.type, bnd.s1, bnd.type, bnd.s2;

where honeycombLattice is a function defined by myself, all bonds can be printed:
which looks without error. But Here I got ground state energy E_0 = -3.518 which is different from that of the former ordering. So I'm wondering if I missed something important here. Or also possibly some nuance in the code.

Any advice will be helpful, Thanks!

1 Answer

0 votes
answered by (70.1k points)

Hi, so my first guess is that the new ordering you are trying is just much harder to converge with DMRG. So if my guess is right, you will need to use as many tricks as you can to help the convergence, such as using the noise term if you aren't already, and even trying to make clever initial states to pass into DMRG.

What I would first suggest, though, is to make a simpler model on the same lattice, such as just a magnetic field only (no spin interaction terms) to see if you get the same energy with both paths. You may be able to think of some other tests too where you try Hamiltonians which it would be easier for DMRG to find the ground state for on both lattices.

If you think the above isn't the reason, or cannot get things to converge still, then we could discuss more. A sort of fancier trick to help convergence would be to first run DMRG on the original path with a lower bond dimension, then apply a sequence of "swap gates" or swap moves to reorder the sites to your new path. Then you use this reordered MPS as an initial state for DMRG on the new path. (Or just reorder a well-converged MPS and then not do any more DMRG and just get the entanglement that way!)


commented by (250 points)
Hey Miles, yeah you're right! I increased the number of sweeps and added noise for the first few iterations and the result converges to the exact gs energy lol! Thank you so much!
commented by (70.1k points)
Great! Glad it worked right away
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.