-
Notifications
You must be signed in to change notification settings - Fork 52
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
Reusing WCC calculations for Chern numbers of multiple bands #91
Comments
Hi, Currently there is no built-in functionality to do this projection onto different bands after the calculation. But, as you said, this should not be too difficult to do. However, I am fairly certain the argument that the WCC of single bands should be converged if those of the whole set of bands are is incorrect. Consider the simple case of two bands that cross: if both bands are considered, everything is fine. But considering only the "lower" of the two bands for example, you will get a discontinuity at the crossing point and an ill-defined Chern number. |
Thanks for your input. Yes you're right about the WCC convergence. I think in this case one should specify already at the start of the surface run which submatrices one wants to analyze later, so that the convergence metrics are calculated on the worst converging submatrix. Hmm this makes all of this more complicated than I first thought. Could you show me where I can implement these features? I'm still a bit lost in the code base. |
Yeah - so this is indeed a bit more complicated than it probably should be. In general, the convergence features are implemented by the "Controls", see e.g. https://github.com/Z2PackDev/Z2Pack/blob/dev/current/z2pack/surface/_control.py#L33. In the The other important concepts you may have to touch are the "Data" classes - these are constructed from the eigenstates or overlaps, and actually compute the WCC etc.: https://github.com/Z2PackDev/Z2Pack/blob/dev/current/z2pack/line/_data.py The "Result" classes are just a small wrapper around "Data", that also contain the convergence info. The main problem here is that there's currently no nice way to split the Hilbert space and apply the Controls on each sub-space. I'd suggest you start by implementing what you need directly in a new Control, as a proof of concept. The Hilbert space splitting requires some thinking on my part.. and it would actually neatly enable also the symmetry feature (#89). P.S.: I started a developer's guide some time ago here: http://z2pack.ethz.ch/doc/2.1/devguide/index.html. It's incomplete, but some of the concepts are explained there also. Please let me know if some things are unclear. |
Hi there,
I would like to simultaneously calculate the Chern number of all given bands at once. It would be very time consuming if this is done sequentially, since I would like to use the first principles part of Z2Pack. Essentially, I would like to change the number of occupied states in retrospect. I think this should be possible, since it should be save to assume, that if all WCCS of the full overlap matrix converge any submatrix of the overlap matrices should also result in converged WCCs. Is there a way to do this in Z2Pack, that is select submatrices of the overlap matrix to perform a Chern number calculation? Maybe by misusing the symmetry projection code, where instead of a symmetry projector I use a projection matrix onto occupied states or a single band, though it seems like symmetry projection is only available for plotting of WCCs with color-coded symmetry eigenvalues (z2pack.plot.wcc_symmetry).
If this is not currently possible, I think it should be not too hard if I implement a overlap-submatrix selection myself.
The text was updated successfully, but these errors were encountered: