0 votes
asked by (690 points)
retagged by

In certain cases, one may wish to consider only zero-momentum states, i.e. translation-invariant states. Such a notion is only well-defined for periodic boundary conditions (PBC), but one can approximate it with open boundary conditions (OBC) as well.

An example of this is the lattice Schwinger model. If one is using OBC (as described in Equation 2.6 of https://arxiv.org/pdf/1305.3765.pdf), then one can find many low-lying states, compute some momentum proxy operator for each of these states, and identify those that have an expectation of the operator very close to zero. This is what the aforementioned paper does, as shown in Figure 3 and Equation 3.4. This works because the paper is interested in the first three zero-momentum states, and these aren't that bad. The first two zero-momentum states are the first two states anyway, and the third one only requires you to find about 10-15 extra states.

However, this method is unsuitable if one is going to have to comb through a great deal of states with momentum to find the very few with zero momentum. If it were possible, a far better method would be to somehow project into the zero-momentum sector, as described in https://arxiv.org/abs/1803.03326. This is only possible when the Hamiltonian uses periodic boundary conditions, i.e. it has the appropriate terms connecting the last site (or last few sites) with the first site (or first few sites), so it is not possible for the Hamiltonian presented in the first paper, but it is possible for the Hamiltonian presented in Equation 2 of the second paper. Appendix A of this paper gives a detailed explanation of momentum, charge, and parity conjugation in this particular lattice, and in particular it mentions that zero-momentum states are translation-invariant. However, I don't know how to restrict to only this set of states in ITensors.jl, especially since DMRG will explicitly make the state fail to be translation-invariant when it performs a local optimization.

My first thought is to make a projection operator P that kills every state of nonzero momentum while maintaining every state of zero momentum, and then optimizing the modified Hamiltonian H' = P^dagger HP, but I can't really think of a principled way of doing this, and the projector P would make H' significantly more complicated than H, probably to the point of it being unworkable when combined with other constraints. I feel that there must be some other way.

Does anybody know of an efficient way to restrict one's DMRG search to zero-momentum (i.e. translation-invariant) states in ITensors.jl, whether it is the above suggested method or any other method? Any help with this would be greatly appreciated.

commented by (7.3k points)
It sounds like you might want to use an MPS algorithm that works directly in the thermodynamic limit, such as iDMRG (https://arxiv.org/abs/0804.2509) or VUMPS (https://arxiv.org/abs/1701.07035). Unfortunately we don't have those built-in to ITensors.jl right now. I have been meaning to add support for VUMPS, but have had a lot of other things on my plate and was waiting for someone to request it. It is definitely something we want, I could possibly write up a rough version in the next few weeks. If you need it sooner, feel free to write a version yourself and ask questions about the implementation.

1 Answer

0 votes
answered by (44k points)

I agree with Matt's comment than an infinite-size algorithm is what is called for here. It's usually a far superior way to get the main advantages of OBC, such as translation invariance and absence of boundary effects, while working much more naturally for tensor networks.

But regarding the specific question of whether one can directly "target" or go after states of a certain momentum I think it's still a bit of an active area of research. Of course one can just get the ground state and check what momentum it has. Also there are the excited-state methods (which are similar to the single-mode approximation) by Verstraete, Haegeman, et al. which are partly reviewed here: https://arxiv.org/abs/1810.07006. These might be what you are looking for.

Miles

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.

Categories

...