Closed samlipton closed 5 years ago
siesta
convention in terms of how the values are stored. If I remember correctly: [Re(upup) Re(dndn) Re(updn) -Im(updn) Im(upup) Im(dndn) Re(dnup) Im(dnup)]
The reason for the apparent weird layout is because in the non-colinear case one only needs the first 4 elements, and in that case the 2x2 spin-box is Hermitian enabling -Im(updn)
to be used as Im(dnup)
.However, when doing H.eigh
or band.eigh
the method automatically knows whether it is a spin-orbit coupling matrix, non-colinear, spin-polarized or non-polarized calculation and does the appropriate thing. So basically, there is never need to change any routines when switching from a non-polarized to any other spin-configuration. sisl auto-detects this and does the correct thing, if the method hasn't been implemented an issue will be raised (otherwise it should be considered a bug). :)
@samlipton did this answer your question? I.e. can I close the issue? :)
@samlipton I'll close this as resolved. If it hasn't been resolved, please let me know :)
Sorry for the late reply. I was testing SO in graphene and TMDs with the implementation : [Re(upup) Re(dndn) Re(updn) -Im(updn) Im(upup) Im(dndn) Re(dnup) Im(dnup)] (1)
As far as I'm concerned, this issue is closed if SO is indeed described by (1)
In 6ac2a79c2ccac2e678fb8b951898f21c8b2f9e80 I have changed this the spin-orbit to hold:
[Re(upup) Re(dndn) Re(updn) Im(updn) Im(upup) Im(dndn) Re(dnup) Im(dnup)]
FYI!
Describe the feature
Spin-orbit (SO) is currently implemented as an 8-sized vector. I'm guessing that it is actually a 4-sized vector for the real and imaginary parts, as the pyx codes do not handle complex numbers yet (see issue #104). Therefore, is it correct that we have :
If SO is treated that way, are there any changes to make when diagonalizing the matrix at k ? e.g when doing :