# The ordering of sites in DMRG for 2D Kitaev systems

+1 vote

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.

Now I'd like to calculate entanglement entropy of the lower left plaquette, so I re-ordered the label in the following:

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:
(2,1,Sz)
(6,5,Sz)
(8,3,Sz)
(9,7,Sz)
(11,10,Sz)
(12,4,Sz)
(15,14,Sz)
(17,16,Sz)
(18,13,Sz)
(4,1,Sy)
(6,3,Sy)
(11,9,Sy)
(13,5,Sy)
(14,7,Sy)
(15,10,Sy)
(16,2,Sy)
(17,12,Sy)
(18,8,Sy)
(3,2,Sx)
(5,4,Sx)
(7,1,Sx)
(9,8,Sx)
(10,6,Sx)
(12,11,Sx)
(14,13,Sx)
(16,15,Sx)
(18,17,Sx)
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.

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!)

Best,
Miles

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