Skip to content

29: Platinum — Spin Hall conductivity

  • Outline: Calculate spin Hall conductivity (SHC) and plot Berry curvature-like term of fcc Pt considering spin-orbit coupling. To gain a better understanding of this tutorial, it is suggested to read Ref. 1 for a detailed description of the theory and the berry_task=shc: spin Hall conductivity chapter of the User Guide.

  • Directory: tutorials/tutorial29/ Files can be downloaded here

  • Input files

    • Pt.scf The pwscf input file for ground state calculation

    • Pt.nscf The pwscf input file to obtain Bloch states on a uniform grid

    • Pt.pw2wan The input file for pw2wannier90

    • Pt.win The wannier90 and postw90 input file

 

  1. Run pwscf to obtain the ground state of platinum

    Terminal
    pw.x < Pt.scf > scf.out
    
  2. Run pwscf to obtain the Bloch states on a uniform \(k\)-point grid

    Terminal
    pw.x < Pt.nscf > nscf.out
    
  3. Run wannier90 to generate a list of the required overlaps (written into the Pt.nnkp file)

    Terminal
    wannier90.x -pp Pt
    
  4. Run pw2wannier90 to compute the overlaps between Bloch states and the projections for the starting guess (written in the Pt.mmn and Pt.amn files)

    Terminal
    pw2wannier90.x < Pt.pw2wan > pw2wan.out
    
  5. Run wannier90 to compute the MLWFs

    Terminal
    wannier90.x Pt
    
  6. Run postw90

    Terminal
    postw90.x Pt # (1)!
    mpirun -np 8 postw90.x Pt # (2)!
    
    1. serial execution
    2. example of parallel execution with 8 MPI processes

Spin Hall conductivity

The intrinsic spin Hall conductivity \(\sigma_{\alpha\beta}^{\text{spin}\gamma}\) is proportional to the BZ integral of the Berry curvature-like term. To evaluate the SHC using a \(25\times 25\times 25\) \(k\)-point mesh, set the following lines in Pt.win,

Input file
berry = true
berry_task = shc
berry_kmesh = 25 25 25

When calculating SHC, adaptive smearing can be used by commenting the following two lines,

Input file
#kubo_adpt_smr = false
#kubo_smr_fixed_en_width = 1

Then set the Fermi energy \(\varepsilon_F\) to a specific value

Input file
fermi_energy = [insert your value here]

or invoke Fermi energy scan by setting

Input file
fermi_energy_min = [insert here your lower range]
fermi_energy_max = [insert here your upper range]
fermi_energy_step = [insert here your step]

and re-run postw90. The SHC is written in the output file Pt-shc-fermiscan.dat. If only fermi_energy is set, the output file will contain SHC at this specific energy; if a list of Fermi energies are set, the output file will contain SHC calculated at each energy point in the list: we call this the "Fermi energy scan" of SHC.

To plot the Fermi energy scan of SHC \(\sigma_{xy}^{\text{spin}z}\) versus \(\varepsilon_F\), issue

Terminal
gnuplot
Gnuplot shell
plot 'Pt-shc-fermiscan.dat' u 2:3 w lp

As a result of the strong and rapid variations of the Berry curvature-like term across the BZ, the SHC converges rather slowly with \(k\)-point sampling, and a \(25\times 25\times 25\) kmesh does not yield a well-converged value.

  • Increase the kmesh density by changing berry_kmesh.

  • To accelerate the convergence, adaptively refine the kmesh around spikes in the Berry curvature-like term, by adding to Pt.win the lines This adds a \(5\times 5\times 5\) fine mesh around those points where \(\vert{\Omega_{\alpha\beta}^{\text{spin}\gamma}}({\bm k})\vert\) exceeds 100 berry_curv_unit. The percentage of points triggering adaptive refinement is reported in Pt.wpout.

Compare the converged SHC value with those obtained in Refs. 1 and 2.

Note some rough estimations of computation progress and time are reported in Pt.wpout (see the SHC part of the Solution Booklet). These may be helpful if the computation time is very long.

Note

  • Since the Kubo formula of SHC involves unoccupied bands, we need to include some unoccupied bands and construct more MLWF. Thus the following parameters should be increased accordingly:

    Input file
    dis_froz_max
    dis_win_max
    projections
    

  • Normally we calculate the SHC \(\sigma_{xy}^{\text{spin}z}\), i.e. \(\alpha = x, \beta = y, \gamma = z\). To calculate other components, the following parameters can be set as 1, 2, 3 with 1, 2, 3 standing for x, y, z respectively.

Berry curvature-like term plots

The band-projected Berry curvature-like term \(\Omega_{n,\alpha\beta}^{\text{spin} \gamma}({\bm k})\) is defined in this equation of the User Guide. The following lines in Pt.win are used to calculate the energy bands colored by the band-projected Berry curvature-like term \(\Omega_{n,\alpha\beta}^{\text{spin} \gamma}({\bm k})\) (in Å\(^2\)), as well as the \(k\)-resolved Berry curvature-like term \(\Omega_{\alpha\beta}^{\text{spin} \gamma}({\bm k})\) along high-symmetry lines in \(k\)-space, i.e. the kpath plot. First comment the line berry = true and then set

Input file
kpath = true
kpath_task = bands+shc
kpath_bands_colour = shc
kpath_num_points = 400
kubo_adpt_smr = false
kubo_smr_fixed_en_width = 1
fermi_energy = [insert your value here]
berry_curv_unit = ang2

After executing postw90, four files are generated: Pt-bands.dat, Pt-path.kpt, Pt-shc.dat and Pt-bands+shc.py. Then plot the band-projected Berry curvature-like term \(\Omega_{n,\alpha\beta}^{\text{spin}\gamma}({\bm k})\) using the script generated at runtime,

Terminal
python Pt-bands+shc.py

and compare with Fig. 2 of Ref. 1. Note a large fixed smearing of 1 eV is used to recover the result in Ref. 1. You can adjust the kubo_smr_fixed_en_width as you like to draw a visually appealing figure. A kpath plot of 0.05 eV smearing is shown in the Solution Booklet.

Besides, you can set kpath_task = shc to only draw \(k\)-resolved term \(\Omega_{\alpha\beta}^{\text{spin} \gamma}({\bm k})\) (the lower panel of the figure), or set kpath_task = bands and kpath_bands_colour = shc to only draw energy bands colored by the band-projected term \(\Omega_{n,\alpha\beta}^{\text{spin} \gamma}({\bm k})\) (the upper panel of the figure).

Similar to that of AHC, we can get a heatmap plot of the \(k\)-resolved Berry curvature-like term \(\Omega_{\alpha\beta}^{\text{spin}\gamma}({\bm k})\), i.e. the kslice plot. To move forward, set kpath = false and uncomment the following lines in Pt.win, Note the kslice_b2 is actually \((\frac{\sqrt{2}}{4}, \frac{3\sqrt{2}}{4},0.0)\) which leads to a square slice in the BZ, making it easier to plot in the generated python script. Re-run postw90, and issue

Terminal
python Pt-kslice-shc+fermi_lines.py

Compare the generated figure with Fig. 3 in Ref. 1, or the Solution Booklet.

Note

Adaptive smearing depends on a uniform kmesh, so when running kpath and kslice plots adaptive smearing should not be used. A fixed smearing is needed to avoid near zero number in the denominator of the Kubo formula in the User Guide. To add a fixed smearing of 0.05 eV, add the following keywords in thePt.win,

Input file
kubo_adpt_smr = .false.
kubo_smr_fixed_en_width = 0.05

Input parameters for SHC

Finally, we provide a complete list of input parameters that can be used to control the SHC calculation, including the calculation of alternating current (ac) SHC which will be introduced in the next tutorial.

  • general controls for SHC

    Input file
    shc_freq_scan
    shc_alpha
    shc_beta
    shc_gamma
    
    kubo_eigval_max
    exclude_bands
    berry_curv_unit
    
  • kmesh

    Input file
    berry_task
    berry_kmesh
    
    berry_curv_adpt_kmesh
    berry_curv_adpt_kmesh_thresh
    
  • ac SHC

    Input file
    kubo_freq_min
    kubo_freq_max
    kubo_freq_step
    
    shc_bandshift
    shc_bandshift_firstband
    shc_bandshift_energyshift
    
    scissors_shift
    num_valence_bands
    
  • smearing

    Input file
    [kubo_]adpt_smr
    [kubo_]adpt_smr_fac
    [kubo_]adpt_smr_max
    
    [kubo_]smr_fixed_en_width
    
  • Fermi energy

    Input file
    fermi_energy
    fermi_energy_min
    fermi_energy_max
    fermi_energy_step
    
  • kpath

    Input file
    kpath
    kpath_task
    kpath_num_points
    kpath_bands_colour
    
  • kslice

    Input file
    kslice
    kslice_task
    kslice_corner
    kslice_b1
    kslice_b2
    kslice_2dkmesh
    
    kslice_fermi_level
    kslice_fermi_lines_colour
    

Their meanings and usages can be found in the berry_task=shc: spin Hall conductivity chapter of the User Guide.


  1. Junfeng Qiao, Jiaqi Zhou, Zhe Yuan, and Weisheng Zhao. Calculation of intrinsic spin hall conduc tivity by wannier interpolation. Phys. Rev. B, 98:214402, Dec 2018. URL: https://link.aps.org/doi/10.1103/PhysRevB.9 8.214402, doi:10.1103/PhysRevB.98.214402

  2. G. Y. Guo, S. Murakami, T.-W. Chen, and N. Nagaosa. Intrinsic spin hall effect in platinum: first-principles calculations. Phys. Rev. Lett., 100:096401, Mar 2008. URL: https://link.aps.org/doi/10.1103/PhysRevLett.100.096401, doi:10.1103/PhysRevLett.100.096401