iTDVP and canonical forms
Posted: 18 Aug 2021, 22:25
I'm working on developing an iTDVP algorithm using TeNPy. I'm able to recycle most of the aspects from the finite TDVP code, but there are some issues when trying to insert the updated tensors to for an updated MPS. Essentially, we have a 1-site and 0-site effective Hamiltonian that we use to update the singular values, and the tensor with form "Th". Let's denote updated tensors Th' and s'. First, s' is no longer necessarily diagonal, and also Th' is no longer in its canonical form. To test this, I would expect that since Th = A-s, that Th' = A'-s', and so contracting Th' with Th'* from the left, should result in s' contracted with s'* from the left (essentially the test in the function "MPS.norm_test()"). However, this test fails, and the difference grows with the time evolution time dt.
I'm hoping maybe I can get help with the following question. Is this loss of canonical form actually a property of the iTDVP evolution procedure, or is it a bug in my code? Also, if it is a property of the iTDVP procedure, how do I then bring these tensors into the appropriate form to then create an updated MPS? Making s' diagonal can be done using an SVD, and absorbing U, V appropriately using the gauge freedom we have, but it's not as clear to me what to do with Th'.
Thank you for your time.
Best,
Nick
I'm hoping maybe I can get help with the following question. Is this loss of canonical form actually a property of the iTDVP evolution procedure, or is it a bug in my code? Also, if it is a property of the iTDVP procedure, how do I then bring these tensors into the appropriate form to then create an updated MPS? Making s' diagonal can be done using an SVD, and absorbing U, V appropriately using the gauge freedom we have, but it's not as clear to me what to do with Th'.
Thank you for your time.
Best,
Nick