Difference between applying ITensor gates to MPO

Hey all,
I have some question about why there is a difference using the apply function and developing a MPS on time with ITensor gates between making a MPO and using the “TDVP”.

I will to write a simple example to illustrate what I am talking about.
Let us have a look at the following Hamiltonian:

H=\sum_{i=1}^{N-1}J_{i}S_{i}^{z}+g_{i}S_{i}^{z}S_{N}^{z}

Now, if I will create this Hamiltonian as a MPO it will look like:

    os = OpSum()
    for i in 1:(n-1)
        os += J[i], "Sz", i
    end
    for i in 1:(n-1)
        os += g[i], "Sz", i, "Sz", n
    end
    H = MPO(os, site)

and as a ITensor gates:

    gates = ITensor[]
    for i in 1:n-1
        tempy = []
        hj = J[i] * op("Sz", site[i])*op("Id",site[end])
        push!(tempy, hj)
        hj = g[i] / sqrt(n) * op("Sz", site[i]) * op("Sz", site[end])
        push!(tempy, hj)
        Gj = exp(-tau*im / 2 * sum(tempy))
        push!(gates, Gj)
    end
    append!((gates), reverse(gates))

what is the difference between them? Is there anything I am missing with the ITensors package ?

They are using two different algorithms, which may have various tradeoffs on which one is preferred depending on the Hamiltonian you want to evolve. apply is based on the TEBD algorithm. Perhaps Tensor Network is a helpful reference for learning about the differences between TEBD and TDVP.

Hey mtfishman,
Thank you for your comment.

I read about the two methods, and I have some follow up questions about the implementation of them in ITensor.

  1. If I want to use a long range, random Hamiltonian than the TDVP method will be better? Because I saw that in order to use long range H in TEBD I will need to sweep the interacting site and in my case, each site interacts with all the other sites.

  2. Is there any limit when the two method should give the same result ? Let’s say for a given period of time If you will take your time segment \tau=0.1 on TDVP and \tau=0.01 for the TEBD.

  3. In general I prefer to work with the TDVP, but is there any way to work with this method using mixed states (density matrix)?

For long range interactions, in general you are better off using TDVP, since TEBD requires using swap gates to make the interactions temporarily local in oder to apply the gate and perform the truncation, which can increase the entanglement a lot and therefore become quite expensive.

The two methods should match each other, given enough computational resources (big enough bond dimensions) and taking a limit of small Trotter steps. I couldn’t really give you an exact procedure for when they would match, you would need to run them both carefully and make sure they are each converged and then compare them against each other.

It should be no problem using mixed states with TDVP, see for example the discussion here: Whether TDVP can be used to calculate lindblad master equation. Basically you can just view the density matrix as a state living in a doubled Hilbert space, and make sure you define your mixed state evolution properly.

Thank you for your detailed answer!