Best practices for TDVP

Hello Miles and Matt,

Firstly, thank you for developing and maintaining this wonderful tensor-network package. Recently, I have been using ITensorTDVP.jl to perform time evolution on a long-range interacting system and I was curious about the best practices. Sorry if these questions were covered somewhere in the documentation that I missed.

  1. What is an appropriate value for the “cutoff” parameter? For DMRG, we are often happy with a truncation error of 10^{-5} or 10^{-6}, but the TDVP examples seem to be using a much lower value for the cutoff.

  2. Is there a general rule of thumb for picking the time step? Of course, a larger time step leads to a larger Trotter error but is there a way to guess, based on the scales of the Hamiltonian’s parameters, what a reasonably accurate time step should be?

  3. If I understand correctly, the current TDVP code does not yet have the subspace expansion implemented, so we should set nsite=2. However, some papers have suggested to first use two-site TDVP to increase the bond dimension for the initial time steps and then switch to the one-site TDVP. Is this something you would recommend and are there any advantages to doing so?

  4. When should we set normalize=true or normalize=false?

  5. Also, could the choice of solver_backend = “exponentiate” or “applyexp” lead to different final results, and are there reasons to sometimes use one over the other?

Thank you for your help and taking the time to answer these questions, which I’m posting in this forum with the hope that other people will find them useful as well. I really appreciate your support.

Best,
Cole

2 Likes

Hi Cole,
Thanks for the question and glad you are using ITensor. About your specific questions, unfortunately the answer to many of these are just “it depends”. That is, it depends on what problem you are solving and to what time you need to go, and what quantities you are most interested in calculating and how accurately you need them.

So while e.g. a good question about comparing this cutoff to ones used for DMRG, I think since TDVP is overall more computationally demanding (because it’s like doing a DMRG sweep or two for each time step you take, and you usually want to do many time steps), that sometimes people actually raise the cutoff because they can only afford a lower-accuracy calculation compared to the initial DMRG one (assuming they started from a ground state).

Similarly, I think the rule of thumb in TDVP for picking the time step is something like “as large as you can make it while still getting the accuracy you need” because unlike Trotter-gate methods, TDVP can actually handle a pretty large time step sometimes, up to even \tau=1.0.

You’re right we don’t have the subspace expansion yet, but it’s on its way sometime this fall or early next year. For now I agree two-site is best to start with. About switching to 1-site at a later time in the evolution, I would say that makes sense especially if you are doing imaginary-time evolution, where the state eventually will become close to the ground state so the basis isn’t changing too much after a while. For real time it’s a bit less clear how well that will work without the subspace expansion. (I.e. it might work for simpler problems with very short-range interactions but fail for harder problems in real time without the expansion.)

I’d recommend setting normalize=true unless you need the unnormalized state.

About the solvers, mostly “applyexp” is now a backup solver only for testing, and we prefer the “exponentiate” one which is more robust and should be the default.

Hope that’s helpful and others might also like to comment on their own experiences –

Miles

2 Likes

Hi Miles,

Thanks for your quick and very helpful response. I have just one last follow-up question: is there a way to gauge the accuracy (that you brought up in your answer) of a TDVP calculation?

For instance, I was thinking that one could, say, keep track of how much the energy changes over the course of the two-site time evolution and accordingly, pick a cutoff value that leads to a net change below a certain threshold. Is this too naïve an approach, and if so, are there smarter ways to determine how accurate the calculation is?

Once again, thank you for taking the time to answering these questions.

Best,
Cole

ITensorTDVP supports global subspace expansion TDVP method (Even though I don’t know why the head file of basis-extend is not included by the latest release of ITensorTDVP). It works well in my work compared to 5-th TEBD.

I think it just needed to be tested and reviewed, and make sure it has the interface that we want. It’s helpful to get feedback that it’s working. @miles maybe we should go ahead and review and merge that PR?