Closed Chengcheng-Xiao closed 4 years ago
For this to work, we need to calculate both spin channels A_mn
matrixes with respect to z axis (proj_s_qaxis = [0,0,1]
), then dot the eigenvector (coefficient) to the corresponding matrix elements.
Major modifications are needed for this, might take some time.
A test version has been published on branch spin_quantization_axis
More tests are needed before merging tho.
I'm seeing some strange behaviours during testing. For a projection only calculation, VASP with reoriented quantization axis shows larger Rashba effect than QE. Not sure if this is pseudo potential related. However, after Maxloc procedure, all reverts back to normal.
Test input files: 2020-03-30-VASP_QE_compare.tar.gz
Well, looks like this is a pretty stupid one, I forgot Fortran doesn't sterilise its arrays... This means:
A_matrix = A_matrix + CPROJ
will throw some random number to the AMN mat. 🤪
AND no, it still doesn't work. the problem now is rotating quantisation axis doesn't do anything. The root of this is that we need to rotate the guiding functions and get S|gf> before dotting them to the Bloch functions.
In pw2wannier90
, any_uspp
actually includes PAW. I guess only NCPP can be directly used with this method.
Trying to find some tests, closed for now.
The fix now reads in
proj_s_qaxis
. But all spinor projections are done without rotation of quantisation axis.If Im not mistaken, the rotated spinor eigenvectors can be dotted directly onto the
A_mn
when the PAW pseudopotential is used (According toPW2WANNIER90.F90
forpwscf v6.4
):The same could be done in
VASP2WANNIER90
interface.