Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

why do we need Multiline #133

Open
guochu opened this issue Mar 20, 2024 · 4 comments
Open

why do we need Multiline #133

guochu opened this issue Mar 20, 2024 · 4 comments

Comments

@guochu
Copy link

guochu commented Mar 20, 2024

Dear Maartenvd:
I feel MPSKit (and of course TensorKit) is a great project! Thanks for you effort to maintain it.
I have a (maybe naive) question about the Multiline object for Infinite MPO and infnite MPS, which caused a lot of confusion for me to understand your code. In 1D applications I can not think of any situation where we have to stack up several Infinite MPOs or Infinite MPSs together. Am I wrong? It is possible to give a brief comment about the design principle of using Multiline?
Thanks in advance for your time!

@lkdvos
Copy link
Member

lkdvos commented Mar 20, 2024

Hi guochu, thanks for your kind words!

The Multiline object is indeed a bit confusing, and I don't think there really is any application for 1D quantum physics related computations. In principle, we could think of computing a variance with these objects, but this is not how it's implemented and I think that would be more complicated than the current implementation.

This being said, the main reason for the MultilineMps and MultilineMpo is found when considering 2D partition functions in the context of statistical mechanics, or even boundary-MPS methods for PEPS algorithms. In these cases, the mpo represents a transfer matrix, and might have a non-trivial unitcell in both horizontal and vertical directions. Finding a fixed point for this operator can be done by considering a non-trivial unitcell for the MPS as well, leading to the multiline approach. For a concrete example, this happens already for the 6 vertex model when imposing the CU1 symmetry. See this test in MPSKitModels

@guochu
Copy link
Author

guochu commented Mar 20, 2024

Thanks for you reply Lucas!

For the 2D application where the Multiline object becomes necessary, it is because there exist multiple degenerate fixed points, which belong to different symmetry sectors?

@lkdvos
Copy link
Member

lkdvos commented Mar 20, 2024

That might be one way of thinking of it, but I would say It is more along the same lines as how the infinite quantum spin 1/2 Heisenberg model works. If you impose the symmetry, you necessarily need to break translation invariance, leading to an A-B structure in the groundstate. This clearly also means that B-A is also a groundstate, and in some sense you can label these states by their virtual space sectors: the former would have alternating integer and half-integer sectors, while the latter has alternating half-integer and integer sectors.

If you then think of an MPO tensor which has half-integer charges not only on the physical (vertical) legs, but also on the virtual (horizontal legs), you would start by applying this MPO to a state of type A-B, and end up with a state of type B-A. If you would have assumed translation invariance in the vertical direction, then the overlap would have been zero because of the symmetry constraints.

Nevertheless, this does not necessarily only show up for these symmetry reasons, you could just have a physical lattice with a 2x2 unit cell and different interactions, in which case the transfer matrix would be $T = T_1 * T_2$. Finding a fixed point of that transfer matrix is done by solving $T * \psi = \lambda * \psi$, and the ansatz of a single MPS would enforce $T_1 * \psi \sim \psi$ and $T_2 * \psi \sim \psi$ which is too strict. Thus, we adapt this to become $T_1 * \psi_1 \sim \psi_2$ and $T_2 * \psi_2 \sim \psi_1$, and solve for this coupled set of equations, which is essentially what MPSMultiline intends:

$$\begin{pmatrix}0&T_1\\T_2&0 \end{pmatrix} \begin{pmatrix}\psi_1 \\ \psi_2 \end{pmatrix} \sim \begin{pmatrix}\psi_1 \\ \psi_2 \end{pmatrix}$$

@guochu
Copy link
Author

guochu commented Mar 21, 2024

Really thanks for your reply! I think I roughly see the point:)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants