3.8 Kinetic energy, scalar relativity, spin-orbit coupling, and full relativity
For elements beyond approximately =30, relativistic effects near the nucleus cannot be neglected in an all-electron treatment—both for core, and for valence electrons. For the purposes of “everyday” matter, the full theory is given by Dirac’s four-component Equation, but in the “practice” of materials physics and chemistry, we still tend to think in terms of Schrödinger-like objects. The following standard levels of approximation are available:
-
•
Non-relativistic kinetic energy (one or two collinear spin components of the Kohn-Sham orbitals)
-
•
Scalar-relativistic kinetic energy expression (one or two collinear spin components).
-
•
Perturbative spin-orbit coupling, a single correction step to the Kohn-Sham eigenvalues based on the Kohn-Sham orbitals from a non-relativistic or scalar-relativistic s.c.f. cycle. Perturbative spin-orbit coupling in FHI-aims is primarily intended to obtain qualitatively accurate relativistic corrections for energy band structures and eigenfunctions. A detailed benchmark of the accuracy of the approach is given in Ref. [148]. Importantly, changes to the total energy beyond the sum-of-eigenvalues are not included, and total energy gradients (forces) are also unavailable.
-
•
An essentially fully relativistic treatment of the Kohn-Sham kinetic energy – specifically, the so-called quasi-four-component (Q4C) approximation – is nearing completion. In physical terms, this includes self-consistent spin-orbit coupling as well as the so-called “small component” of the Dirac eigenfunctions, where the small component is based on a free-atom-like approximation. At the time of writing (March 2020), the Q4C approach is still restricted to total energies and Kohn-Sham eigenvalues for closed-shell systems at the level of semilocal DFT. The Q4C implementation is still considered highly experimental and therefore not yet fully documented. In particular, parallelization is not yet complete, forces are not available and support for hybrid DFT is not yet available. Please do not use the approach without contacting Rundong Zhao and Volker Blum.
Scalar relativity and spin-orbit coupling
While the non-relativistic level of theory is exactly defined and will be the same in any first-principles implementation (at a complete basis set, all-electron level anyway), there are many different versions of scalar-relativistic approximations which can yield considerably different total energies for different systems. Their unifying feature is that any two scalar-relativistic methods should still yield the same energy differences for properties that concern valence electrons: Binding energies, valence eigenvalues, etc.
The recommended level of scalar relativity in FHI-aims is the so-called “atomic ZORA” approximation, as defined specifically in Equations (55) and (56) of Ref. [36]. It is important to refer to this specific definition since there are other variants of ZORA (“zero-order regular approximation”) in the literature and in other codes, including variants also called “atomic ZORA” but following a different mathematical definition.
The keyword needed to use this level of theory is
relativistic atomic_zora scalar
That’s it.
The “atomic ZORA” level of theory as implemented in FHI-aims has held up extremely well in large, high-accuracy benchmarks of scalar-relativistic total-energy based properties [195] as well as energy band structures [148]. It works for the right mathematical reasons. It can, in principle, be used across the entire periodic table (there should be no need to resort to non-relativistic calculations except for benchmarking purposes).
In addition, a non-selfconsistent treatment of spin-orbit coupling for band structures, densities of states, absorption properties and for the independent-particle dielectric response is also available and can be used in addition to (on top of) scalar relativistic calculations using the atomic ZORA. This is described in detail in Ref. [148], including a simple discussion of relativistic treatments in general and of how the “atomic ZORA” and the spin-orbit coupling formalism on top of it are related.
The keyword to add post-scf spin-orbit coupling is
That’s it. Note that this keyword can be used as a followup to both non-spinpolarized and spin-polarized scalar-relativistic calculations.
An important fact to keep in mind is that a scalar-relativistic calculation yields two distinct spin sets of spin states, one for each spin channel. However, after the perturbative spin-orbit coupling treatment, only a single set of states emerges as output, since spin-orbit coupling mixes the scalar-relativistic spin states and the spin channels are no longer distinct. Thus, the output files for any quantities derived from spin-orbit coupled calculations (densities of states, band structures, etc.) are not and cannot be printed as separate spin channels - only one set of files is written that includes states derived fron both former spin channels.
More details follow below, but here are three additional important point:
-
•
Never mix results from different scalar relativistic treatments in total-energy differences. Absolute total-energy differences between different relativistic treatments can be very large because the deep core state energies change.
-
•
The absolute core level energies in the “atomic ZORA” approximation are far away from measured core level energies that would appear in experiment or in the actual Dirac equation. However, the relative core level shifts (differences) between different chemical systems are still reliable.
-
•
FHI-aims also includes another relativistic treatment called “scaled ZORA” but this seems to be slightly less accurate and does not have support for forces or stresses or any other use cases. We do not recommend to use “scaled ZORA” any more (“atomic ZORA” simply seems to do the better job).
More details on spin-orbit coupling
Spin-orbit coupling (SOC) is a simple consequence of transforming Dirac’s equation to a (two-component) Schrödinger-like form. This leads to an approximate “spin-orbit-coupled” Hamiltonian of the form
| (3.36) |
where is the usual scalar relativistic kinetic energy operator (e.g., atomic ZORA), is the local or non-local potential, and is the spin-orbit coupling operator,
| (3.37) |
FHI-aims currently implements a treatment of spin-orbit coupling which adds spin-orbit coupling corrections to the Kohn-Sham eigenvalues, band structures, and densities of states in a single evaluation after the scalar-relativistic s.c.f. cycle has converged. This means that it is a post-processed implementation of spin-orbit coupling. It works in the Hilbert space of calculated scalar-relativistic eigenstates, as opposed to the “full” space spanned by the computational basis set, to dramatically reduce the problem size. This is known as the “second-variational” method. It only calculates and diagonalizes the spin-orbit-coupled Hamiltonian once; therefore, the resulting spin-orbit-coupled eigenstates are non-self-consistent.
Full details on the implementation of spin-orbit coupling in FHI-aims, as well as a derivation of the spin-orbit-coupled Hamiltonian from the Dirac equation and a detailed benchmark of the effect of spin-orbit coupling on band structures, may be found in Ref. [148] When publishing results using spin-orbit coupling in FHI-aims, please remember to cite this reference.
Applying the SOC operator as a correction to scalar-relativistic eigenvectors is quantitatively accurate (to a few 0.01 eV for valence band structures) for elements below Xe (=54) when combined with atomic ZORA. For heavy elements (approximately Au and beyond) this level of theory is only qualitatively accurate. It captures the majority of the SOC effect, but quantitative deviations above 0.1 eV for band structures must be expected. Similarly, the corrections for any core levels would require one to go beyond non-self-consistent SOC.
Since this implementation of spin-orbit coupling operates in the Hilbert
space spanned by the calculated scalar-relativistic eigenvectors, for
accurate high-lying bands one must include sufficiently many unoccupied
states. This may be done by setting empty_states to a higher
value or, if you are feeling particularly paranoid, setting the
calculate_all_eigenstates keyword to include all possible
eigenstates. It is the opinion of the authors that this is only relevant
for materials containing Au and heavier elements.
As of FHI-aims version 20231212, empty_states are automatically increased by:
n_empty_states = n_empty_states + 10*n_atoms
by default for spin-orbit coupled calculations (i.e. when include_spin_orbit is enabled). As SOC is evaluated in the basis of the available scalar-relativistic KS states, the number of states included in the scalar-relativistic SCF sycle is smaller than the full basis size leading to inadequate numerical convergence. This effect is more noticeable in hybrid systems. This does make SOC calculations more expensive, however, it will lead to better numerically converged results. If a user wishes to override this default setting, they could manually set empty_states as desired.
Which Parts of FHI-aims Support Spin-Orbit Coupling?
The current spin-orbit coupling implementation started in 2014. FHI-aims has been in development since 2004. While we are actively working on enhancing support for spin-orbit coupling and relativistic schemes beyond throughout FHI-aims , due to the sheer size of the code base some of the functionality in FHI-aims does not have spin-orbit coupling support. Enabling the SOC keyword will do nothing for functionality that has not been modified to support SOC, and the code will return scalar-relativistic values. A partial list of functionality that does support SOC and will output spin-orbit-coupled values is
-
•
Band structure calculations
-
•
Densities of state calculations, both interpolated and non-interpolated
-
•
Mulliken analyses
-
•
Atom/species-projected densities of state
-
•
Dielectric functions and absorption coefficients
-
•
Orbital cube plotting
In general, spin-orbit coupling can be applied both for non-spinpolarized and spin-polarized scalar-relativistic input. However, after spin-orbit coupling is applied, only one set of states remains since the spin channels are no longer separated (spin-orbit coupling mixes the formerly separate spin channels).
The best way to determine whether a particular method supports spin-orbit coupling is to look at its manual entry.
One advantage of post-processed SOC is that one still has access to scalar-relativistic values, as the spin-orbit-coupled values are generated from the scalar-relativistic values. Physical insight may be gained by comparing scalar-relativistic and spin-orbit-coupled values against one another. For example, strong spin-orbit splitting of eigenstate is a dead giveaway that it contains p-orbitals for a heavy species. When spin-orbit coupling is enabled, FHI-aims will output both scalar-relativistic and spin-orbit-coupled values whenever this is computationally feasible. For methods supporting spin-orbit coupling that output results to files, the files containing the scalar-relativistic values will have an additional suffix ".no_soc" to distinguish them from the spin-orbit-coupled values.
Another advantage of post-processed SOC is, simply, computational efficiency. Particularly hybrid DFT calculations are already extremely demanding at the non-spin-polarized, scalar-relativistic level of theory. The ability to pursue SOC corrections after, rather than during a self-consistent scalar-relativistic allows us to access significantly larger problem sizes than would otherwise be possible.
Tags for general section of control.in:
Tag: include_spin_orbit(control.in)
Usage: include_spin_orbit method
Purpose: Include the effects of spin-orbit coupling, when supported, in
post-processed features of FHI-aims. When using spin-orbit coupling in
your calculation, please cite Ref. [148]
method The method for including spin-orbit coupling. Available options are
-
•
pauli: Employs the Pauli approximation for the SOC operator as discussed in Ref. [148]. Default.
-
•
atomic_zora: Employs the atomic ZORA Hamiltonian for the perturbative SOC.
If method is not specified, the Pauli approximation is used by default. The deprecated non_self_consistent option also triggers the Pauli approximation. Note that both the Pauli and atomic ZORA methods are non-self-consistent in this context.
Note: While FHI-aims also prints out a corrected total-energy expression based on the SOC-corrected eigenvalues, do not use this value. It is experimental.
Note: This will set the empty_states keyword to a higher value automatically.
Tag: compute_kinetic(control.in)
Usage: compute_kinetic
Purpose: Experimental - for test purposes, allows to compute the kinetic energy via
the product of the kinetic energy matrix and the density matrix
This flag is presently kept for test purposes only (the electronic kinetic energy is separately computed and printed for each scf iteration anyway) but may be useful for some future modifications.
Tag: override_relativity(control.in)
Usage: override_relativity flag
Purpose: If explicitly set, allows to override the stop enforced by
the code when physically questionable relativistic
settings are used.
flag is a logical expression, either .true. or
.false. Default: .false.
For example, this will allow you to run a physically incorrect calculation of heavy elements (think Au) with Schrödinger’s expression for the kinetic energy, instead of a scalar relativistic treatment. The results will be wrong, so this flag should only be set for test purposes. When set, the code assumes that the user must know what they are doing.
Tag: relativistic(control.in)
Usage: relativistic r-type s-type
[threshold]
Purpose: Specifies the level of relativistic treatment in the
calculation.
r-type is a string, specifying the basic approximation
made.
s-type is a string, specifying whether a scalar treatment
is desired (currently, only the scalar option is
supported).
threshold is a small positive real number, allowing to
reduce some integration effort.
Detailed expressions for the scalar relativistic treatments available here are given in Ref. [36]. We here only repeat the salient options and expressions. Possible options for r-type are:
-
•
none : Non-relativistic kinetic energy. In this case, s-type and threshold need not be provided.
-
•
atomic_zora : Atomic ZORA approximation as described in Ref. [36]. threshold need not be provided. This is the currently recommended option for energy differences and valence and unoccupied eigenvalues.
-
•
zora The ZORA approximation is used throughout the s.c.f. cycle, followed by a “scaled ZORA” [303] post-processing step (rescaling of all eigenvalues). WARNING: Do not rely on intermediate, simple ZORA total energies, but only on the final, rescaled total energies instead! ZORA (unscaled) is not the same as “atomic ZORA” and cannot be trusted. We also no longer recommend scaled ZORA values since there is no clear advantage. Just use atomic_zora unless there is need to do otherwise.
Forces are only provided for none and atomic_zora. The default is atomic_zora scalar.
Remember to never take energy differences between calculations performed with different “relativistic” settings.
We recommend to simply use atomic_zora for all calculations, unless there is a particular need to stay with relativistic none.
If you really do want to use scaled ZORA (the case of zora keyword), the threshold option is required. It specifies the threshold value above which the difference between the sum-of-free-atoms ZORA expression and that for the actual potential during the s.c.f. cycle will be calculated. In areas of shallow potentials, where both expressions are substantially similar, this saves the extra integration effort associated with ZORA. For (very!) safe settings, threshold may be set to 10-12; in our experience, also 10-9 does not lead to any noticeable accuracy loss.
For 1120, the setting none will be accepted, but a warning will be issued. For >20, choosing none will cause the code to stop with an error message in order to avoid accidental calculations with incorrect relativity. If a non-relativistic calculation is still desired, for example for test purposes, this “stop” can be disabled by setting the flag override_relativity—but use this only if you know what you are doing.
Tag: use_spin_texture(control.in)
Usage: use_spin_texture Estart Eend
Purpose: Calculate the spin texture of bands that fall in the designated
energy range defined by Estart and Eend.
Estart : lower bound of the energy range of bands for
which the spin texture will be calculated. Estart is
defined with reference to the
Fermi level (electronic chemical potential) calculated internally by
FHI-aims. Unit: eV
Eend : upper bound of the energy range of bands for
which the spin texture will be calculated. Eend is
defined with reference to the
Fermi level (electronic chemical potential) calculated internally by
FHI-aims. Unit: eV
This flag is presently based on the perturbative spin-orbit coupling method. Therefore, you should in the same time set:
relativistic atomic_zora scalar
Since the use_spin_texture keyword is computed on bands, you should also set:
or
If you wish to compute the spin texture of the S.C.F. k-grid, please see the keyword use_spin_texture_scf.
Spin texture is defined as the expectation value of the vector of Pauli matrices. The complete formulae we use, with examples, are given in the methods section and supporting information of Ref. [154]. By setting this flag, the code will calculate the expectation values for three components (, , and ), which can help understand the spin polarization behaviour of individual bands. The values are printed out in separate files named spin_texture.out and spin_texture.dat which contain the same kind of data but simply in different formats.
Please note that for degenerate eigenstates on symmetric k-points, the value of the spin texture will be meaningless, since for these states the eigenvectors are arbitrary. Because the eigenvectors are arbitrary, different eigensolvers will output different eigenvectors, and the eigenvectors will also be different on different hardware or for calculations with different numbers of tasks. As of version 250304 the spin_texture.dat additionally contains the k-points in relative coordinates of the reciprocal basis vectors (i.e. how they are specified in an output band command) to allow more straightforward determination of the symmetric k-points. The symmetric k-points are those which correspond to relative fractional k-vectors of the form [0 0 ], [0 ], or [ ] for some .
As of version 250224 use_spin_texture can be used in combination with the ScaLAPACK eigensolver (KS_method parallel). Previously, only use of the LAPACK eigensolver (KS_method serial) in combination with use_spin_texture was possible.
Tag: use_spin_texture_scf(control.in)
Usage: use_spin_texture_scf Estart Eend
Purpose: Calculate the spin texture of the S.C.F. k-grid in the designated
energy range defined by Estart and Eend.
Estart : lower bound of the energy range of eigenstates for
which the spin texture will be calculated. Estart is
defined with reference to the
Fermi level (electronic chemical potential) calculated internally by
FHI-aims. Unit: eV
Eend : upper bound of the energy range of eigenstates for
which the spin texture will be calculated. Eend is
defined with reference to the
Fermi level (electronic chemical potential) calculated internally by
FHI-aims. Unit: eV
Like the use_spin_texture keyword, use_spin_texture_scf is presently based on the perturbative spin-orbit coupling method. Therefore, you should in the same time set:
relativistic atomic_zora scalar
Also analogous to the use_spin_texture keyword, the three components (, , and ), are printed out in separate files named spin_texture_scf.out and spin_texture_scf.dat.
As of version 250304, use_spin_texture_scf can be used in combination with the ScaLAPACK eigensolver (KS_method parallel).