Question about using TDVP

Hi,

I’m trying to use the TDVP package in ITensors and I have a few questions

  1. I’m trying to do the time evolution with a hamiltonian H, and look at the results at each time step from t_i to t_f in time step = \tau, I have two implementations:
for dt in start:τ:fin
    ψ1 = tdvp(H,  -im * dt, ψ;  cutoff, nsite=2, time_step= -im * τ/2, normalize=true)
end 

And

for dt in start:τ:fin
    ψ1 = tdvp(H,  -im * τ, ψ1;  cutoff, nsite=2, time_step= -im * τ/2, normalize=true)
end 

I assume that the two achieve the same goal, except for the fact that the second one will be O( t_{total}/\tau) faster because I’m repeating every step in the first code? (I was not sure if the time_step== t_total will cause an issue so I just divide the time step by 2)

  1. It seems that the TDVP results have much ‘less’ dynamics than the TEBD approach for my system.
    By looking at |\langle \psi_{init} | \psi_{res}\rangle |, the TEBD results at t=5.0 with \tau =0.1, gives |\langle \psi_{init} | \psi_{res} \rangle |\approx 0.1, where the TDVP with the same parameters gives around 0.95, i.e. the wavefunction changes a lot more in the TEBD calculation than TDVP.
    I know this is a very rough metric, but I’m still curious if I did something wrong in the calculation, or that there are way to improve the results of the TDVP by adjust the local krylov dimension, say.

I had to stare at the two codes for a while to see the difference. The first code keeps starting over from the same initial state ψ which is not really what it meant by the dynamics of a quantum system. The second one takes the state at the previous time and evolves it to the next step, which is the correct thing to do.