+1 vote
asked by (130 points)

Hi Miles,

I am using itensor to run DMRG for Heisenberg chain with some long range Heisenberg interactions. Basically, I am using the first code sample on the itensor homepage. I can run up to about 28 spins without implementing any symmetry. However, there are strong finite size effect, so I would like to utilize total s^2 and momentum quantum number. I am having trouble using IQtensor properly. It would be very helpful if you can provide a simple example for DMRG using IQMPO and IQMPS. Thanks.


1 Answer

+1 vote
answered by (70.1k points)

Hi Po-Hao,
The good news about using symmetries (conserving Abelian quantum numbers) with ITensor is that it usually requires minimal changes to your code. If you have a look at the iqdmrg sample code (the file sample/iqdmrg.cc) that is a good example of how to set up DMRG for a spin model which conserves Sz.

The way the initial total Sz value is set is through the initial state given to DMRG. The InitState object helps you with this; in the sample code the total Sz is zero, but you could flip one of the spins to access another sector. Let me know if you still have some questions after looking at that code.

Unfortunately we don't offer non-Abelian symmetries, so you can't use S^2 as a quantum number (this is much more technical to implement than Abelian quantum numbers). Momentum conservation is also tricky; as far as I know it's not really known how to conserve momentum with DMRG in 1d systems. For narrow 2d systems one can work in a momentum-space basis in the y-direction to conserve momentum that way. But working in a momentum-space basis in the x-direction would lead to a huge increase in entanglement and ruin much of the usefulness of DMRG. For infinite DMRG perhaps there is a clever way to implement momentum conservation but that would require further research (and would make a nice paper if one figured it out!).


commented by (130 points)
Thank you.  
So if I want to know those quantum numbers for a few lower energy states, I should use the corresponding operators to obtain them.  Obtaining momentum quantum number seems to require a little work but it is still doable.
commented by (70.1k points)
Yes, that is correct. Of course for momentum you will need to have a translation invariant system for it to be well defined, so either infinite or periodic.
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.