QuantumKitHub / MPSKit.jl

A Julia package dedicated to simulating quantum many-body systems using Matrix Product States (MPS)
MIT License
126 stars 28 forks source link

why do we need Multiline #133

Open guochu opened 5 months ago

guochu commented 5 months ago

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 commented 5 months ago

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 commented 5 months ago

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 commented 5 months ago

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 commented 5 months ago

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