-
Notifications
You must be signed in to change notification settings - Fork 26
Add C4v CTMRG #321
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
base: master
Are you sure you want to change the base?
Add C4v CTMRG #321
Conversation
|
Your PR no longer requires formatting changes. Thank you for your contribution! |
|
This PR already involves lots of things. For QR CTMRG, besides getting projectors from QR instead of SVD, the way to enlarge corners is also different. Maybe we focus on the |
Completely agree, I anyway assumed this would go into a separate PR. Also I apologize for making this PR so big, I found it somewhat hard to split up the changes needed to make the whole apparatus compatible with C4v CTMRG. |
One approach is to make |
Codecov Report❌ Patch coverage is
... and 3 files with indirect coverage changes 🚀 New features to boost your workflow:
|
Co-authored-by: Yue Zhengyuan <yuezy1997@icloud.com>
I have thought about this but this would be rather annoying as an intermediate stage I think since it would break a lot of the general CTMRG functions that I use now leading to a lot of code duplication and extra work (that I don't really have time for at the moment). I'd rather do it once but properly. I hope that's fine! |
|
I think in principle the tests should run through now. Once we have merged #264 and some details have been settled, I will add a small example to the docs on how to use C4v CTMRG. |
|
Since we are going to also introduce CTMRG on triangular lattices in #324 (which also has a C6v specialization), it may be better to reorganize files into sub-folders under
Similarly, the pure contraction functions in |
In this PR we will finally add a dedicated C4v CTMRG algorithm. I started with the standard version using
eighprojectors but we can easily also implement a QR version by making aC4vQRProjectoralgorithm and the correspondingc4v_projectormethod. (@Yue-Zhengyuan said he would be up for doing this :-)) This C4v routine is completely differentiable using naive AD,:diffgaugeand:fixedmode.Note that I needed to generalize the
gauge_fixmethod forCTMRGEnvs to not have separate methods for all the C4v stuff. Same thing is true for environment initialization, where it would be nice to have aninitialize_environmentmethod where one can dispatch on an algorithm. Here we'll have to wait until we merge #264.Let me also say that it would eventually be nicer to have a dedicated
C4vCTMRGEnvsince this would make things cleaner. However, this would entail a larger rewrite of quite a few things, so I propose that I postpone this rewriting and cleaning up process until I have more resources for that again. (In general I feel like we should clean up and refactor some stuff again since the codebase has been growing quite a bit.) Anyways, for now it would be nice to have a working C4v CTMRG that people can use.This is still very much under construction but I'll finish up things and adjust the test suite tomorrow.
Closes #258.