Does non-Hermitian Hamiltonian works in TDVP?

Actually, i just want to get a series of states of non-Hermitian Hamiltonian evolution. If i use tdvp in t=0-3, but i want to acquire the states of each time (assuming dt=0.01) step, how can i operate?

Sorry for the slow reply – it might work, but I don’t think we’ve explicitly tested it. Can you try just inputting it for a small example where you have exact results available to test?

As far as how to obtain the state at each time, the interface for our Julia TDVP code is still not fully stabilized and is experimental at this point, so it may change, but for the moment the approach I would recommend is to make a custom “observer”. To do this, you can follow the pattern shown in the test/test_tdvp.jl file (in the ITensorTDVP source code) below where it says “Using Observers.jl” around line 400 of that file.

You can make a function with any name you like, taking the keyword arguments psi,sweep,outputlevel,current_time then pass this function into an Observer object and finally pass this Observer object into tdvp through the step_observer! keyword argument. Then your function can output psi at each step.

(Alternatively, in the near future, we will provide a way to call individual steps of TDVP but right now this could be slow because of the “cached” Hamiltonian environment tensors that would have to be recomputed each time.)

1 Like