-
Notifications
You must be signed in to change notification settings - Fork 45
Make changebonds truncation use relative truncation schemes
#283
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
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
... and 2 files with indirect coverage changes 🚀 New features to boost your workflow:
|
changebonds truncation use relative truncation schemes.changebonds truncation use relative truncation schemes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Makes sense, this should probably be reflected in the docstring. The original paper seems to only talk about truncdim-type behaviour so defining what we do with truncbelow seems okay.
leburgel
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Normalizing makes sense to me, and if I understand correctly this now makes sure the squared singular values sum to 1 so the choice of normalization here is perfect for MPS.
I think it's exactly the same so I'm fine with approving as is, but I thought it would be slightly more natural to normalize the AC2 resulting from the effective Hamiltonian right away, rather than normalizing after absorbing in the null spaces. But this would give just the same result, right?
And just out of curiosity, where did you encounter a need to normalize before performing the SVD? Is there something that went wrong when using the algorithms?
If you mean the singular values of the intermediate tensor: yes, this rescales the spectrum such that the singular values sum to 1.
It wouldn't, the
With the finite temperature methods (but this would also be relevant for boundary MPS type applications), the norm of the finite MPS or the MPO actually has meaning. In my case, it is precisely the value of the partition function, which is extensive, so it is actually possible to blow up certain entries if you naively ignore this and go to larger chain lengths. While I was playing around with these different methods to see which one makes the most sense, the results changed quite drastically, because depending on the norm of the operator and MPS, Long story short, we should really just have |
This PR changes the
changebondsimplementations to first normalize before computing the truncated SVD.As we are not using the resulting
S, this effectively has no influence on truncations liketruncdim, however fortruncbelowthis will now truncate a normalized spectrum, therefore being a bit more "scale-invariant".Effectively, this is manually converting the absolute truncation schemes defined in TensorKit to relative ones.