Hi, thanks for the question. I think the core of your question is: what are the best ways to use ITensor to time-evolve systems which don't have nearest-neighbor interactions (in a 1D, MPS path order sense, which includes 2D systems).

To understand all of these methods, I'd recommend the review article by Paeckel:

https://arxiv.org/abs/1901.05824

as well as some of the material adapted from it on the tensornetwork.org website:

http://tensornetwork.org/mps/algorithms/timeevo/

There are three main methods available in connection with ITensor, and let me briefly list the pros and cons:

using an MPO representation of the time evolution operator U=exp(-i tau H):

Pros: it is easy to set this up using AutoMPO and the toExpH function, so it is good for testing the other methods too

Cons: it is not very accurate in a few different ways, including having a large sensitivity to finite-time-step effects and also can result in MPS with rather large bond dimensions, more than what more accurate methods can provide

More information including a paper reference here:

http://itensor.org/docs.cgi?vers=cppv3&page=formulas/tevol_mps_mpo

using the Trotter method but with additional "swaps" or "swap gates":

Pros: this method is the most reliable, in terms of being sure of convergence once it is implemented in a correct way. It is also not too hard to program. It can give very good accuracy too.

Cons: we don't have this available in a fully automatic way in the C++ version of ITensor (we do now in the Julia version, though). So you will have to implement the "swap" moves yourself, which temporarily bring further-neighbor sites together to become nearest neighbor.

using the TDVP method

Pros: this method is the best one to use, if you want the most state-of-the-art accuracy and efficiency. It has a very small time-step error and gives very accurate results, with relatively low bond dimensions. You can take rather large time steps for efficiency while still getting good results.

Cons: it is the most technical of the three to program. Also *caution* it can fail to converge if the initial state of the MPS has a poor basis, such as a product state or a state which has small overlap with the ideal state at a slightly later time. One way to overcome this initial-state problem is to start by using one of the other techniques above (Trotter is recommended for this) for a short time, then switch to TDVP. Or switch from one-site to two-site TDVP. Finally, one can use newer, more sophisticated TDVP convergence techniques such as in this recent paper: https://arxiv.org/abs/2005.06104

The TDVP method has been implemented in ITensor as an external code, and is available here:

https://github.com/ITensor/TDVP

Best regards,

Miles