-
Notifications
You must be signed in to change notification settings - Fork 16
Time evolution for next-nearest neighbor Hamiltonian #164
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Hi Yue, For the To achieve that, I guess the hardest part is to write a similar routine for determining the contraction for arbitrary lattice indices. I can try and have a look at this, but it is definitely also possible to just special case only the versions you currently need and postpone implementing the rest. For periodic MPS, there is not too much support in MPSKit unfortunately. This is mostly because these algorithms tend to work very differently (since there is no more canonical form), and since no-one has yet needed this there hasn't been too much effort adding this. There are also just way less algorithms available for this. |
+1 for adding additional support for MPO-factorized operators on top of what we have now, and even adding support for actual product operators where instead of an MPO we can represent these as a tuple of rank-2 tensor maps. There's quite a few cases where this happens, and for interactions that act on more than 2 sites this will make a significant difference. |
For my use cases, I only need MPOs up to length 3 during the time evolution. For measuring of expectation values, I can go back to the 2-site next-nearest neighbor gates and use the old routine, so I have no urgent need to have a general |
BTW, does MPSKit have finite MPS algorithms? That can also be helpful in construction of a "local" bond environment for NTU, as I wanted to do here. |
Yes, for finite MPS there's an entire range of algorithms available |
I plan to start adding the ability to handle Hamiltonians with next-nearest neighbor (NNN) terms (e.g. the J1-J2 model) in the iPEPS time evolution algorithms. There are a number of choices:
This two methods constructs an environment around the 3 sites (using the bond weights / CTMRGEnv) involved in the update to define the cost function. There is another class of "loop update" methods, which treats the 2 x 2 sites around the NNN bond as a PBC-MPS (there will be 3 "physical axes" at each site):
I plan to add the "loop update" methods first. Except the SU method 1, the NNN term is expressed as a 3-site MPO. The loop update can also involve a 4-site MPO in the 2 x 2 loop. But in our current way to store the Hamiltonian as a
LocalOperator
, each term is a whole gate. Should we add the ability forLocalOperator
to store a multi-site term as an MPO, or just do a manual conversion specifically for the time evolution methods?In addition, could you please also inform me if there are existing methods from MPSKit that can be used to optimize a PBC-MPS?
The text was updated successfully, but these errors were encountered: