0 votes
asked by (120 points)

Hello everybody,

I am currently implementing a time-evolution proceeded by a 2site dmrg groundstate optimisation. For the groundstate search, I have 4 conserved quantum numbers, but the time-evolution may break up to 3 of these. I cannot just do my groundstate search with the single non-broken quantum number, as then I would start my evolution with a groundstate from the wrong subspace (i.e. I need the other quantum numbers for the dmrg to find the groundstate in one specific subspace).

The two “naive” ways of implementing this kind of setup is only using the single quantum number which is never broken and then either doing imaginary time-evolution starting from an initial state in the correct quantum number block (instead of 2 site optimisation to find the groundstate), or adding an energy penalty to the Hamiltonian (to stay in the correct subspace) and using 2 site optimisation.

Neither of these solutions have great appeal, because the groundstate search is less controllable. So I was wondering if someone has an idea how to effectively change the siteset between groundstate search and time-evolution from 4 down to less than 4 quantum numbers.

Or is there a way how to efficiently read through all my tensor components of my mps and copy them by hand into a new mps defined on the new siteset.

Any help would be appreciated.

Best wishes

commented by (53.9k points)
Hi Johannes, before I try to answer, I have a question: why can't you follow the path of just conserving the single conserved quantity throughout? I understand that it would make the ground state search less ideal (at least at the level that conserving more quantities makes the calculation faster) but is it also because the "ground state" you are starting in is actually the ground state of a particular QN sector, rather than the absolute lowest energy state across all sectors?

If it is the absolute lowest energy state, then there should be no reason why doing usual 2 site DMRG would be an issue.
commented by (120 points)
Hi Miles,

thank you for your quick reply. It's exactly as you said. I need to start my evolution with the "ground state" of  particular QN sector rather than the global lowest energy state, so just using the single quantum number doesn't give me the correct initial state for my evolution.

Best wishes
commented by (53.9k points)
Hi Johannes,
Just to give you a short answer before I attempt a more detailed answer (for which I haven't had a lot of time this week): the short answer is that what you're wanting to do is pretty difficult given our current quantum number system, which requires all quantum numbers to be globally the same for efficiency reasons. (Thinking of lifting this in the future if it's not too much of an efficiency hit.)

But one solution is just to read off all of the numbers inside your tensors, write these to a file, then read them into a separate code which loads them back into a new MPS but one having different quantum numbers on the indices. If you get and set these numbers through the IQTensor interface, you won't have to deal with the details of the internal storage. Note that with the new "order" method that was recently added for ITensors and IQTensors, you can say


then access the i=2,j=1,k=7 element like


or set that same element like


Please log in or register to answer this question.

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.