Spin-Texture Calculation

by Benedikt Maurer for exciting fluorine

Purpose: In this tutorial you will learn how to calculate the spin texture with exciting for GaAs.

0. Define relevant shell variables

Read the following tutorials before starting with the next sections!

From now on the symbol $ will indicate the shell prompt.

1. Theoretical background

An interesting property of the electronic structure with spin-orbit coupling (SOC) is the so-called spin texture. It can be used, e.g., to differentiate between the Rashba and the Dresselhaus effect (see Kepenekian2015).

The spin texture s(n,k) is defined as the expectation value of a vector of Pauli matrices on a two dimensional k-grid. At k for the state n it is defined as:

\begin{align} \boldsymbol s(n,\boldsymbol k) = \langle n,\boldsymbol k|\boldsymbol \sigma | n,\boldsymbol k \rangle \end{align}

2. Spin texture of GaAs

Before you start, create a working directory for this tutorial and move into it:

$ mkdir spin-texture-tutorial && cd spin-texture-tutorial

To calculate the spin texture for GaAs, create the file input.xml with your editor of choice and copy and paste the following lines into it:
   <title>Ga As spin texture</title>
   <structure speciespath="$EXCITINGROOT/species">
      <crystal scale="10.683" >
         <basevect>  0.0     0.5     0.5 </basevect>
         <basevect>  0.5     0.0     0.5 </basevect>
         <basevect>  0.5     0.5     0.0 </basevect>
      <species speciesfile='Ga.xml' rmt='2.0'>
         <atom coord="0.00 0.00 0.00"/>
      <species speciesfile='As.xml' rmt='2.0'>
         <atom coord="0.25 0.25 0.25"/>
      ngridk="4 4 4"
      <spin spinorb="true"/>
      <spintext bands="23 30">
            <parallelogram grid = "12 12">
               <origin coord = "-0.042506  -0.042506  -0.085013"/>
               <point  coord = "-0.042506   0.050235   0.007728"/>
               <point  coord = " 0.050235  -0.042506   0.007728"/>

Set up the correct species path and run exciting to perform the groundstate calculation:

$ SETUP-excitingroot.sh
$ time exciting_smp &

Note that spin-orbit coupling (SOC) is enabled spinorb="true". Spin texture calculations are only allowed for ground states with enabled SOC.
Note also the spintext element in the properties element:

  • The bands attribute defines the band range that is considered. In this case we are interested in the bands around the band gap. You can extract the band numbers from the EIGVAL.OUT.
  • The parallelogram element defines the k-grid for the spin texture calculation. The k-points are homogeneously distributed on a parallelogram in the reciprocal space. In the example of this tutorial, we consider a square with sidelength 0.1 [a.u.] (a.u. = Bohr-1) in the (kx, ky) plane. The centre of this square is the Γ point and the borders are parallel to the Cartesian kx and ky axes.
  • grid defines the number of k-points per direction.
  • The parallelogram is spanned between origin and the points defined by point.

Be aware of that coord is given in reciprocal coordinates.

When the calculation is done, you can plot the spin texture for the first conduction band using the script PLOT-spintext.py (for a detailed description of the script arguments see The python script "PLOT-spintext.py") as follows:

$ PLOT-spintext.py -b 29 -c energy
  • -b defines the band that is considered for the plot which is in this case the first conduction band. You can extract the numbers of the states from EIGVAL.OUT.
  • -c specifies if the energy or the z component of the spin orientation is considered for the contour plot. The choices are "energy" or "spin_z".

Note that the script is designed for rectangular spin textures!

The resulting PNG file PLOT-spintext.png can be should look like the following:


In the plot, k1 and k2 correspond to the k-vectors (k1,0,0)T and (0,k2,0)T, respectively. The color map represents the energy of the chosen state. Note that the unit of k1 and k2 are given in atomic units (Bohr-1).


  • Kepenekian2015: The form of the spin texture and more information on Rashba and Dresselhaus effects is given in: Kepenekian, M., Robles, R., Katan, C., Sapori, D., Pedesseau, L., & Even, J. (2015). Rashba and Dresselhaus Effects in Hybrid Organic-Inorganic Perovskites: From Basics to Devices. ACS Nano, 9(12), 11557–11567. https://doi.org/10.1021/acsnano.5b04409
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License