Sweeping algorithms for tree tensor networks #44
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Moved here from ITensor/ITensorTDVP.jl#43
A first working attempt at generalizing MPS sweeping algorithms to tensor networks on arbitrary tree geometries. All algorithms should work for both
ITensors.MPS
andITensorNetworks.TreeTensorNetworksState
(except some of the newer additions which I haven't generalized yet), with the same syntax currently used in ITensorTDVP.jl.Aside from some patching to work with
MPS
and trees using a common interface, the main internal changes are how the sequence of update steps within an individual sweep is generated and how individual local updates are performed. The idea is that a sequence ofSweepStep
s is generated for the given geometry depending on the kind of sweeping being used (e.g. 1- or 2-site, reverse steps or not), where eachSweepStep
contains all the information needed for a single local update. This allows to split off the geometry-dependent part and adds flexibility in the sweeping sequences used. In addition, by treating each local update step in the same way we can use a single update routine for all local updates (whether it's a bond- or site-update, forwards or backwards evolution...) irrespective of what happens before or after in the sequence.