-
Notifications
You must be signed in to change notification settings - Fork 5
Make gaugefix! optional
#95
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
|
Is it possible to have a global switch to turn on or off all SVD gauge fixing? |
Jutho
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.
Up to some small comments, this looks great to me.
e2ab949 to
ab2a0e4
Compare
Codecov Report❌ Patch coverage is
🚀 New features to boost your workflow:
|
|
I wonder if the documentation needs to mention something about the gauge fixing not giving rise to a unique and smooth (or even continuous) choice of eigenvectors / singular vectors, which is clear from the fact that if two entries of a vector become equal in magnitude, there will be a sudden jump in the phase assigned to a vector if it changes only slightly. However, it is well known that it is impossible to remedy this globally (i.e. there is no global section), which can be expressed through nonzero topological invariants such as Chern numbers. |
|
We could add something like this to the documentation if you like, perhaps in a footnote, although I'm not sure if this helps that much. |
* Bump v0.6 * rename `gaugefix` -> `fixgauge` * reduce unnecessary warnings * fix `copy_input` signatures in Mooncake tests * Add changelog to docs
After some discussions on PEPS this morning, it turns out that the specific gauge choice can have some (accidental) nice or less nice properties.
For example, it looks like this specific gauge-fixing we have here, for CTMRG algorithms, breaks the C4v symmetry in a more manifest way than not doing it.
The setup is that if we perform CTMRG iteration for a C4v symmetric system without imposing it, not gauge-fixing leads to real and diagonal corner matrices, while this specific gauge choice seems to instead give imaginary ones.
While it sounds like this is a fluke, and definitely not something we ever want to depend on, it does seem fair to have the option to turn off the gauge fixing, both since it isn't strictly required and since if you would want to impose a different gauge yourself, this is now wasted effort.
Here, I added a
gaugefix::Bool = truekeyword argument to the eigenvalue and SVD algorithms to obtain this behavior, and simultaneously slightly refactored the implementation so everything is a little more consistent between the different methods.