-
Notifications
You must be signed in to change notification settings - Fork 12
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
Add full update algorithm #106
base: master
Are you sure you want to change the base?
Conversation
Some recent design thoughts inspired by YASTN: The FU consists of two parts - updating the two tensors connected to a bond, and then updating the surrounding CTM tensors. When updating the two tensors, there can be multiple ways to build the environment around the bond (called the "bond metric" in YASTN). The usual FU use the CTM tensors as the environment, but there is a cheaper method (but still more accurate than SU) called the Neighboring Tensor Update (NTU). There, the bond metric is the exact contraction of a few neighboring tensors, like:
or approximate contraction (using boundary MPS approach) of a relatively larger portion of the network around the bond, like:
There is a large family of such of bond metrics in the YASTN documentation. Thus we may need to write the first part of FU in a more general manner that accepts different kinds of bond metrics, in preparation of adding NTU in the future. |
It might already be possible to achieve something like this by simply restricting the number of iterations in the CTMRG contraction. This is definitely not fully equivalent, so I agree that it would be beneficial to have an abstraction to allow different algorithms there. |
This PR adds the core part of the fast full update (arXiv 1503.05345) algorithm. Compared to simple update, the environment around a bond to be updated is more accurately represented by the CTM tensors, instead of diagonal weight matrices.
Limitations:
Things to do before merging: