Time dependent hamiltonian TEBD

Hey I have been using TEBD from Itensor quite a lot. However this time I feel stuck as I have a time dependent hamiltonian which looks something like the this

I guess the basic idea would be to find ground state from DMRG and then do time evolution using TEBD such that at each time step , the appropriate time-dependent hamiltonian is supplied. However, I am unable to write code for it. It would be very helpful if you could help further.

Hi Aditya, sorry for the long delay in answering. Do you still have this question? If so, you are correct about just supplying the appropriate Hamiltonian at each time step.

So the first thing to do is to discretize your evolution in to time steps, based on the time step size you want to use. All I mean is to come up with a list of time values [0, \tau, 2*\tau, ...]. This part is just conceptual.

Next, you can think of a set of Hamiltonians [H(0), H(\tau), H(2 \tau), ...].

Then, the code is just the usual TEBD code except in the first step you apply the gates that would correspond to evolving with the Hamiltonian H(0). Then on the next step you use the gates that would corresponding to evolving with the Hamiltonian H(\tau). And so on down the list. So you just make the gates newly for the next Hamiltonian after each step.

Of course there are some refinements you can think of, such as reusing the gates from the part of H which is the same every time, and only remaking the gates for the part of H which is actually time dependent.

Another refinement might be considering more technical things like maybe averaging H(t) over the whole time window centered around each t but that’s just a vague idea I am mentioning and I’m not sure if it’s correct or would improve the accuracy or not. Just saying there may be some freedom in how the true H(t) is mapped to the gates, within a finite time step approximation.

Hope that helps –