Hi everyone,

I am working on calculating the energy gap of spin-3/2 AKLT Hamiltonian on hexagonal lattice. However, on my group computer server, I am only able to run on a 2*3 hexagonal lattice (12 sites) with periodic boundary conditions. To be specific, I used CouplingModel and MPOModel to construct the Hamiltonian on Honeycomb lattice. I did DMRG for twice to first obtain the ground state and then the excited energy. I set chi_max=200.

Recently, I have noticed that many people use a more efficient DMRG, SU(2) symmetric DMRG. By virtue of SU(2) symmetry, the bond dimension of the MPO can be highly reduced. So I am wondering if TeNPy also has this nice function? If it does, can anyone show me how to implement it?

Another little question is, for running DMRG on 2D lattice, what size can be reached currently on normal computer servers? And how long does it take to do DMRG for this size?

Best regards,

Yunting

## How to realize SU(2) symmetric DMRG?

### Re: How to realize SU(2) symmetric DMRG?

You should be able to get to significantly larger system sizes even on desktops. Typical run times range from several hours up to a couple of days (up to one or two weeks) on typical desktops / single-node cluster machines, depending on what's available to you.

The usual geometry of choice are long, "thin" cylinders with a circumference of 8, 10 or maybe up to 12 spin-1/2, so for spin-3/2 that's probably more about 4,5 or 6 sites circumference (=2-3 honeycomb unit cells), but typically much longer in *x* direction along the cylinder. Scaling with Lx is roughly linear, and with infinite cylinder DMRG, you can usually go to Lx=infinity, but scaling with Ly is exponentially, since you expect an area law for the entanglement entropy S ~ log(chi) ~ Ly, so you need to be very careful with scaling up Ly and very carefully check the behaviour of the truncation error with increasing chi.

For challenging simulations (especially gapless systems and systems with large entanglement entropy like spin liquids), typical MPS bond dimensions these days are on the order of a few thousand - if you don't go beyond chi_max=200, I'd be very skeptical on the results.

Note that I would also strongly recommend to use a cylinder with periodic boundary conditions in y (typically, this leads to smaller finite-size effects from Ly), but

As for the SU(2) symmetry: As of now, we don't have non-abelian symmetries like SU(2) implemented, but we are working on it. It is highly non-trivial to implement, though, and required a complete rewrite how tensors are stored internally and get contracted, and requires more thoughts during the construction of MPOs, so it is a really big change in TeNPy that will take a while until we are done.

On a side note, for chi=200 you're might be just at the edge of where charge conservation can actually give you a speedup, since there's significantly more overhead (especially for non-abelian charges) to figure out which dense tensor blocks to contract. We optimze TeNPy for the use case of several-hour simulations - if you need really fast (~minutes) DMRG simulations with small bond dimensions, the python-based TeNPy is not the right library.

However, you should definitely check that you're indeed exploiting the

The usual geometry of choice are long, "thin" cylinders with a circumference of 8, 10 or maybe up to 12 spin-1/2, so for spin-3/2 that's probably more about 4,5 or 6 sites circumference (=2-3 honeycomb unit cells), but typically much longer in *x* direction along the cylinder. Scaling with Lx is roughly linear, and with infinite cylinder DMRG, you can usually go to Lx=infinity, but scaling with Ly is exponentially, since you expect an area law for the entanglement entropy S ~ log(chi) ~ Ly, so you need to be very careful with scaling up Ly and very carefully check the behaviour of the truncation error with increasing chi.

For challenging simulations (especially gapless systems and systems with large entanglement entropy like spin liquids), typical MPS bond dimensions these days are on the order of a few thousand - if you don't go beyond chi_max=200, I'd be very skeptical on the results.

Note that I would also strongly recommend to use a cylinder with periodic boundary conditions in y (typically, this leads to smaller finite-size effects from Ly), but

**open**boundary conditions in x direction, since you need otherwise**much**larger bond dimensions - on general grounds, one expects \(S_{PBC} \approx 2 S_{OBC}\), so \(\chi_{PBC} \approx \chi_{OBC}^2\) for the same precision!As for the SU(2) symmetry: As of now, we don't have non-abelian symmetries like SU(2) implemented, but we are working on it. It is highly non-trivial to implement, though, and required a complete rewrite how tensors are stored internally and get contracted, and requires more thoughts during the construction of MPOs, so it is a really big change in TeNPy that will take a while until we are done.

On a side note, for chi=200 you're might be just at the edge of where charge conservation can actually give you a speedup, since there's significantly more overhead (especially for non-abelian charges) to figure out which dense tensor blocks to contract. We optimze TeNPy for the use case of several-hour simulations - if you need really fast (~minutes) DMRG simulations with small bond dimensions, the python-based TeNPy is not the right library.

However, you should definitely check that you're indeed exploiting the

*abelian*part of that symmetry, i.e. the Sz conservation - if your simulations*do*run several hours, charge conservation will give you a significant speedup, often at least a factor of 2 or 4. If your simulation runs 3 days instead of a week, that makes a big difference.### Re: How to realize SU(2) symmetric DMRG?

Hi Johannes,

Thank you so much for your response. This really helps a lot!

You are right that I did not open any charge conservation here, and that might be the key reason why my DMRG is so slow. Since several months before when I first start using DMRG to calculate the energy gap of 1D chain AKLT Hamiltonian, I found that the ground energy depends on the choice of the initial state. So to avoid the pre-choosing of initial state, I turned off all conservation and found my result within my expectation. But today, I realize that the charge sector of the initial state really matters to the speedup.

So for AKLT Hamiltonian, the ground state should be in the spin 0 sector, and the excited state may be in the sector with only one spin up, am I right? Then should we still project out the ground state when we want to get the excited state in the charge sector? Or, in general, we have to do the projecting but for AKLT Hamiltonian, if it only has one unique ground state, then we just do the DMRG in different sectors?

Thanks again for your other instructions!

Thank you so much for your response. This really helps a lot!

You are right that I did not open any charge conservation here, and that might be the key reason why my DMRG is so slow. Since several months before when I first start using DMRG to calculate the energy gap of 1D chain AKLT Hamiltonian, I found that the ground energy depends on the choice of the initial state. So to avoid the pre-choosing of initial state, I turned off all conservation and found my result within my expectation. But today, I realize that the charge sector of the initial state really matters to the speedup.

So for AKLT Hamiltonian, the ground state should be in the spin 0 sector, and the excited state may be in the sector with only one spin up, am I right? Then should we still project out the ground state when we want to get the excited state in the charge sector? Or, in general, we have to do the projecting but for AKLT Hamiltonian, if it only has one unique ground state, then we just do the DMRG in different sectors?

Thanks again for your other instructions!