romerogroup / pyprocar

A Python library for electronic structure pre/post-processing
GNU General Public License v3.0
165 stars 72 forks source link

Spin-textures with rotary Arrows distributed in full graph sheet #73

Open Simba2805 opened 2 years ago

Simba2805 commented 2 years ago

Dear All,

I want to plot spin-textures for a particular band which possesses Rashba type of splitting with arrows distributed in a full graph sheet, just like given in the paper spin-texture(Fig. 3 and 5).

My attempt:

I did a DFT calculation using the k-mesh grid which I obtained from PyProcar API. pyprocar.generate2dkmesh(-0.2, -0.2, 0.2,0.2,0,7,7)

After DFT, I used the PROCAR file and extracted data from the particular band and particular spin-projection (Sx,Sy,Sz). As we know the PROCAR file contains the spin-projections for non-collinear spins in the last column and the last three rows for each k point and each band. I used the filter module of PyProcar to get this data.

In my 2d-kmesh, there are 49 points and the 24th is my Gamma point (0,0,0) so around that point, I choose 5 k-points in each direction. making total 11 k-points.

So, now I have spin projections data (values, positive or negative for each k-point) for that band.

I have data like this:

Sx 1 0.688 2 0.544 .... .... 11 -0.627

and similarly for Sy and Sz. (negligible values of Sz.

Meaning to say I have the values in a single array (column), how do I distribute these on a 2D grid. I used python's quiver plot and I did it as follows:

x = np.linspace(-0.2,0.2,11) y = x X,Y = np.meshgrid(x,y) SX,SY = np.meshgrid(Sx[1],Sy[1]) plt.quiver(X,Y,SX,SY)

where Sx[1] and Sy[1] are the second columns in Sx and Sy.

This is not giving me the correct spin texture. The arrows are randomly distributed everywhere. While checking with the PyProcar's fermi2D module I am getting two circular contours with red and blue (spin-up and down) projections.

I also want to know how so I incorporate the Sz contribution using the colour property. as shown in the figures (Fig. 3 and 5).

If someone knows how to plot in MATHEMATICA, please let me know.