4.1. Spin-orbit interaction (SOI)
Spin-orbit interaction is a relativistic effect that couples the experienced magnetic field by an electron with its spin magnetic moment [A12]. This coupling lifts the degeneracy between the different spin states, causing splitting in its energies. This interaction could spin-split the valence and conduction bands of semiconductors and has been explored to design spin-based devices. In the field of spintronics, the study of spin-orbit coupling is of paramount importance to control and manipulate the electron states.
In the NanoDCAL code, the linear combination of atomic orbitals (LCAO) calculations takes into account the SOI effect using relativistic norm-conserving pseudopotentials and making an on-site approximation to the spin-orbit matrix elements [FOS07]. Within the framework of non-relativistic theory, the spin should be an intrinsic physical property of the system rather than an input parameter. Thus, when relativistic effects have to be considered to perform the calculations, in NanoDCAL the spin-orbit interaction requires:
Relativistic pseudopotentials;
General spin method (the spin arrangement has to be noncollinear).
Important
Before each calculation, some physical quantities have to be well converged. Please check the set values at:
calculation.realspacegrids.E_cutoffcalculation.k_spacegrids.numbercalculation.SCF.convergenceCriteria(\(10^{-6}\) for density matrix)
In this tutorial, we will show how to compute the SOI effect in general spin calculations for silicon (Si) and gallium arsenide (GaAs) crystals. For these materials the valence bands are largely p-like solutions of the Schrodinger equation. The p states possess the orbital angular momentum \(l = 1\), and the state is 3-fold degenerate (\(m_{l}\) = -1, 0, +1). The \(m_{l}\) is the projection of \(l\) on an arbitrary axis are described by different orthogonal wave functions.
The calculation steps are given as follows:
Build the structures:
Generate the Si primitive cell using ASE.
Generate the GaAs primitive cell using ASE.
Self-consistent (SCF) calculations:
Perform the NoSpin SCF calculation for both materials.
Perform the GeneralSpin SCF calculation with SOI for both materials.
Band structure calculations:
Calculate and compare band structures with and without spin-orbit interaction.
4.1.1. Build the structures
Generating the Si primitive cell
The Si primitive FCC cell (diamond structure) can be automatically generated using the provided Python script gen_Si.py.
To execute this script, the user must install the required Python packages:
ase (Atomic Simulation Environment)
numpy
These packages can be installed using the command below:
pip install ase numpy
Note
It is highly recommended to use an isolated environment, such as a Python virtual environment or a Conda environment, when installing additional Python modules on your system, in order to prevent potential conflicts with dependencies from other projects.
Generate the Si primitive cell in XYZ format by running:
python gen_Si.py
The structure is constructed using the lattice parameter a = 5.4307 Å for the diamond structure (space group Fd-3m) with 2 atoms in the primitive cell (Si.xyz). The primitive cell vectors are:
Generating the GaAs primitive cell
The GaAs primitive FCC cell (zincblende structure) can be generated using the provided Python script gen_GaAs.py.
Generate the GaAs primitive cell in XYZ format by running:
python gen_GaAs.py
The structure is constructed using the lattice parameter a = 5.6532 Å for the zincblende structure (space group F-43m) with 2 atoms in the primitive cell (GaAs.xyz).
4.1.2. SCF calculations
Generating the NoSpin SCF input files
Once the Si and GaAs structures have been set up, the user can generate the NanoDCAL NoSpin input files using the provided Python script gen_scf_nospin.py by running:
python gen_scf_nospin.py
The script will generate two input files:
NoSpin SCF input file for Si structure
Si-NoSpin.scf.inputNoSpin SCF input file forGaAs structure
GaAs-NoSpin.scf.input
Generating the GeneralSpin SCF input files with SOI
To include the spin-orbit interaction, the user must generate the GeneralSpin SCF input files using the provided Python script gen_scf_generalspin.py, by running:
python gen_scf_generalspin.py
Generate the GeneralSpin SCF input files:
GeneralSpin input file for Si structure
Si-GeneralSpin.scf.inputGeneralSpin input file for GaAs structure
GaAs-GeneralSpin.scf.input
NoSpin SCF input file (Si example)
%%What quantities should be calculated
calculation.name = scf
%Basic setting
calculation.occupationFunction.temperature = 300
calculation.realspacegrids.E_cutoff = 80 Hartree
calculation.xcFunctional.Type = GGA_PBE96
calculation.k_spacegrids.number = [ 18 18 18 ]'
system.centralCellVectors = [[0 2.71535 2.71535]' [2.71535 0 2.71535]' [2.71535 2.71535 0]']
system.spinType = NoSpin
%Iteration control
calculation.SCF.monitoredVariableName = {'rhoMatrix','hMatrix','totalEnergy','bandEnergy','gridCharge','orbitalCharge','spinPolar'}
calculation.SCF.convergenceCriteria = {1e-06,1e-06,1e-06,[],[],[],[]}
calculation.SCF.maximumSteps = 200
calculation.SCF.mixMethod = Pulay
calculation.SCF.mixRate = 0.1
calculation.SCF.mixingMode = H
calculation.SCF.startingMode = H
%calculation.SCF.donatorObject = NanodcalObject.mat
%Basic set
system.neutralAtomDataDirectory = './pseudos'
system.atomBlock = 2
AtomType OrbitalType X Y Z
Si PBE-DZP 0.67883750 0.67883750 0.67883750
Si PBE-DZP 2.03651250 2.03651250 2.03651250
end
GeneralSpin SCF input file with SOI (Si example)
%%What quantities should be calculated
calculation.name = scf
%Basic setting
calculation.occupationFunction.temperature = 300
calculation.realspacegrids.E_cutoff = 80 Hartree
calculation.xcFunctional.Type = GGA_PBE96
calculation.k_spacegrids.number = [ 18 18 18 ]'
system.centralCellVectors = [[0 2.71535 2.71535]' [2.71535 0 2.71535]' [2.71535 2.71535 0]']
system.spinType = GeneralSpin
%Iteration control
calculation.SCF.monitoredVariableName = {'rhoMatrix','hMatrix','totalEnergy','bandEnergy','gridCharge','orbitalCharge','spinPolar'}
calculation.SCF.convergenceCriteria = {1e-06,1e-06,1e-06,[],[],[],[]}
calculation.SCF.maximumSteps = 200
calculation.SCF.mixMethod = Pulay
calculation.SCF.mixRate = 0.1
calculation.SCF.mixingMode = H
calculation.SCF.startingMode = H
%calculation.SCF.donatorObject = NanodcalObject.mat
calculation.spinOrbitInteraction.isIncluded = true
%Basic set
system.neutralAtomDataDirectory = './pseudos'
system.atomBlock = 2
AtomType OrbitalType X Y Z SpinPolarization_r SpinPolarization_theta SpinPolarization_phi
Si PBE-DZP 0.67883750 0.67883750 0.67883750 0.001 0 0
Si PBE-DZP 2.03651250 2.03651250 2.03651250 0.001 0 0
end
The most relevant keywords specific to the SOI calculation are:
system.spinType = GeneralSpinDetermines the spin description in the calculation. GeneralSpin enables noncollinear spin treatment.calculation.spinOrbitInteraction.isIncluded = trueEnables the spin-orbit interaction in the calculation. This keyword can only be used withsystem.spinType = GeneralSpin.SpinPolarization_r,SpinPolarization_theta,SpinPolarization_phiDefine the initial guess spin orientation in spherical coordinate system for each atom.
Most of the remaining keywords are common for both NoSpin and GeneralSpin calculations and were already specified in the keywords-scf section.
Tip
The NoSpin and GeneralSpin calculations are performed to explore the effects of spin-orbit interaction over the electronic structure of Si and GaAs materials.
To peform the SOC correction the keyword
calculation.spinOrbitInteraction.isIncluded = truemust be included.
Warning
Before running the calculation, make sure to copy the pseudopotential files from the NanoDCAL database to the ./pseudos directory.
For SOI calculations, relativistic pseudopotentials are required.
To download the pseudopotentials access the Nanoacademic-portal.
Running the SCF calculations
Run the NoSpin and GeneralSpin SCF calculations. Execute NanoDCAL with the following commands:
nanodcal Si-NoSpin.scf.input
nanodcal Si-GeneralSpin.scf.input
nanodcal GaAs-NoSpin.scf.input
nanodcal GaAs-GeneralSpin.scf.input
After each calculation is finished, the following output files are generated:
NanodcalObject.mat: Contains the converged electronic structure data required for subsequent calculations.
log.txt: Contains the calculation log with SCF convergence information.
4.1.3. Band structure calculations
Generating the band structure input file
With the converged SCF solutions (NanodcalObject.mat), we can now calculate the band structures.
Use the provided Python script gen_bs_input.py to generate the input file.
Generate the band structure input file (BandStructure.input) by running:
python gen_bs_input.py
Band structure input file
system.object = NanodcalObject.mat
calculation.name = bandstructure
calculation.bandStructure.symmetryKPoints = {'L','G','X'}
%calculation.bandStructure.coordinatesOfTheSymmetryKPoints = [0.5 0.5 0.5;0 0 0;0.5 0 0.5]'
calculation.bandStructure.numberOfKPoints = 400
%calculation.bandStructure.plot = true
calculation.control.xml = true
Note that both Si and GaAs crystals have the same Fd-3m space group. Therefore, the same band structure input file (the same high-symmetry k-points) can be used to compute the band structure for all structures. The high-symmetry path is \(L \rightarrow \Gamma \rightarrow X\).
Run the band structure calculations for each SCF result:
nanodcal BandStructure.input
After the calculations, the BandStructure.xml data files are generated and can be used for plotting and analysis.
Plotting the band structures
The band structures can be visualized and compared using the provided Python script plot_bands_soi.py.
Plot the results for Si by running:
python plot_bands_soi.py Si-NoSpin/BandStructure.xml Si-SOI/BandStructure.xml Si
Plot the results for GaAs by running:
python plot_bands_soi.py GaAs-NoSpin/BandStructure.xml GaAs-SOI/BandStructure.xml GaAs
4.1.4. Simulation results
Band structure analyses of Si crystal
The calculated result shows that Si crystal has an indirect bandgap (\(E_{g}\)) of about 0.54 eV. The highest occupied state (valence band maximum) is localized at the \(\Gamma\)-point while the lowest unoccupied state (conduction band minimum) is outer of higher symmetry points along the \(\Gamma\)-X direction. As one can see in Fig. 4.1.1, this indirect band gap remains the same for both NoSpin and General Spin method [TB09].
Fig. 4.1.1 Band structures of Si with NoSpin (black) and SOI (red).
The most relevant difference between the NoSpin and General Spin method occurs on the top of the valence band maximum. To see this let us amplify the energy values around the \(\Gamma\)-point, as shown in Fig. 4.1.2.
Fig. 4.1.2 Amplification of the Si-NoSpin and Si-SOI band structures at \(\Gamma\)-point.
At the \(\Gamma\)-point, in the absence of SOI, there are three-fold degenerated valence bands of about -0.0277 eV. These three valence bands are commonly known as the heavy-hole (HH), light-hole (LH), and split-off (SOI) bands. The inclusion of SOI partially removes this degeneracy. In this calculation, the result shows the split a single band (split-off) moves down in energy, while the other two bands remains degenerated (HH and LH) at the \(\Gamma\)-point.
The energetic difference between the singly and doubly degenerate bands was found to be \(\Delta\) = 0.03, which is close to the experimental data (\(\Delta\) = 0.05eV) [YHS89].
Band structure analyses of GaAs crystal
Now we will analyze the GaAs semiconductor material. The direct band-gap is localized at the \(\Gamma\)-point, as shown in Fig. 4.1.3. As one can see, the SOI coupling affects significantly the band structure. This is somewhat expected since heavier elements are characterized by stronger SOI coupling.
Considering the results with and without SOI effects, the top of the valence band shifts upwards, while the conduction bands shift downwards leading to a reduction of the bandgap of about 0.1 eV. At the \(\Gamma\)-point, the SOI splits the triply-degenerate valence bands into a doubly-degenerated bands and a single band. We found an energy split of \(\Delta\) = 0.30 eV, in good agreement with experimental results (\(\Delta\) = 0.34eV).
Fig. 4.1.3 Band structures of GaAs with NoSpin (black) and SOI (red).
4.1.5. References
J. Autschbach. Perspective: Relativistic effects J. Chem. Phys. 136 (2012) p. 150902.
F. Fernandez-Seivane, M. A. Oliveira, S. Sanvito and J. Ferrer. On-site approximation for spin-orbit coupling in linear combination of atomic orbitals density functional methods J. Phys.: Condens. Matter 19 (2007) p. 489001.
F. Tran and P. Blaha. Accurate band gaps of semiconductors and insulators with a semilocal exchange-correlation potential Phys. Rev. Lett. 102 (2009) p. 226401.
Z. Yu, Y. X. Huang, and S. C. Shen. Spin-orbit splitting of the valence bands in silicon determined by means of high-resolution photoconductive spectroscopy Phys. Rev. B 39 (1989), p. 6287.