# Can I time-evolve the system with three-site interaction by using TEBD?

+2 votes
asked

Hello all!

I'm a beginner at ITensor (c++) and MPS calculation.
Let me ask questions.

Can I calculate the time-evolution using TEBD in the system with three-site interaction?
I assume the Hamiltonian, such as

\hat{H} = \sumi si \cdot (s{i+1}\times s{i+2})

in arXiv:1901.05824v3 (Figure 11)

Can I calculate such long-range interaction by TEBD using swap gates?
Or should I use other suitable methods to calculate the Hamiltonian with long-range interaction, for example, TDVP?

I understand that the simple long-range interaction, such as \hat{h}i\hat{h}{i+n}, can be written as a product of nearest-neighbor interaction gates (including swap gate) regardless of number $n$.

My questions are

1. Can I rewrite the interaction, such as \hat{h}i\hat{h}{i+1}\hat{h}_{i+2}, into a product of nearest-neighbor interaction?
2. In the ITensor library, Can I calculate the time-evolution of the system with three-site interaction directly by using swap gates?

I would appreciate it if you could answer my questions.
Thank you.

Gri

## 1 Answer

+1 vote
answered by (70.1k points)

Hi Gri,
Thanks for the good question. The short answer is yes it can be done with ITensor, though with the support for different algorithms currently differing a bit from the C++ versus Julia version.

The current status is:
- there is a good quality TDVP package for the C++ version
- the function "apply" which performs TEBD in Julia can handle three and even more site operators very easily

Ideally we'd have both algorithms in both language - that's happening this year for TDVP in Julia but isn't done yet.

But since you said you're working in C++, TDVP would be a really great choice for this kind of interaction, which is quite straightforward to make into an MPO using the AutoMPO system. (Truly long range is trickier in both versions of ITensor, though works well on modestly sized systems or with more custom techniques to make MPOs "by hand" as it were.)

The main tricky thing to know about TDVP is that it can need a little help in the early part of a time evolution, where the state may change very rapidly. Just lowering the time step is one thing that can help, but can be insufficient. Other techniques are to use a more reliable, if slower, technique like TEBD for the few handful of time steps or to use "basis expansion" methods like those of Yang and White to help with convergence. (M. Yang is the person who actually wrote the C++ TDVP ITensor code!)

Best regards,
Miles

commented by (180 points)
Hi Miles!
Thank you very much for your rapid answer!!
I understand the C++ TDVP package will be helpful, so I will try to calculate the time-evolution using the TDVP method!

I appreciate your clear answer.
Also, thank you very much for providing the ITensor library and this support page.

Gri
commented by (70.1k points)
Glad the answer was helpful!