PDOS
- sisl.physics.electron.PDOS(E, eig, state, S=None, distribution='gaussian', spin=None)[source]
Calculate the projected density of states (PDOS) for a set of energies, E, with a distribution function
The
is calculated as:where
is the distribution function used. Note that the distribution function used may be a user-defined function. Alternatively a distribution function may be acquired from Distribution functions.In case of an orthogonal basis set
is equal to the identity matrix. Note thatDOS
is the sum of the orbital projected DOS:For non-colinear calculations (this includes spin-orbit calculations) the PDOS is additionally separated into 4 components (in this order):
Total projected DOS
Projected spin magnetic moment along
directionProjected spin magnetic moment along
directionProjected spin magnetic moment along
direction
These are calculated using the Pauli matrices
, and :Note that the total PDOS may be calculated using
where may be either of , or .- Parameters:
E (
ndarray
) – energies to calculate the projected-DOS fromeig (
ndarray
) – eigenvaluesstate (
ndarray
) – eigenvectorsS (
ndarray
, optional) – overlap matrix used in the calculation. If None the identity matrix is assumed. For non-colinear calculations this matrix may be halve the size oflen(state[0, :])
to trigger the non-colinear calculation of PDOS.distribution (Literal['gaussian', 'lorentzian', 'fermi', 'bose-einstein', 'cold', 'step-function', 'heaviside'] | ~typing.Callable[[~collections.abc.Buffer | ~numpy._typing._array_like._SupportsArray[~numpy.dtype[~typing.Any]] | ~numpy._typing._nested_sequence._NestedSequence[~numpy._typing._array_like._SupportsArray[~numpy.dtype[~typing.Any]]] | bool | int | float | complex | str | bytes | ~numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes]], ~numpy.ndarray]) – a function that accepts
as argument and calculates the distribution function.spin (
str
orSpin
, optional) – the spin configuration. This is generally only needed when the eigenvectors correspond to a non-colinear calculation.
See also
- Distribution functions
a selected set of implemented distribution functions
DOS
total DOS (same as summing over orbitals)
COP
calculate COOP or COHP curves
spin_moment
spin moment
Geometry.apply
allows one to convert orbital data, to atomic data
- Returns:
projected DOS calculated at energies, has dimension
(1, state.shape[1], len(E))
. For non-colinear calculations it will be(4, state.shape[1] // 2, len(E))
, ordered as indicated in the above list. For Nambu calculations it will be(8, state.shape[1] // 4, len(E))
.- Return type:
- Parameters:
distribution (Literal['gaussian', 'lorentzian', 'fermi', 'bose-einstein', 'cold', 'step-function', 'heaviside'] | ~typing.Callable[[~collections.abc.Buffer | ~numpy._typing._array_like._SupportsArray[~numpy.dtype[~typing.Any]] | ~numpy._typing._nested_sequence._NestedSequence[~numpy._typing._array_like._SupportsArray[~numpy.dtype[~typing.Any]]] | bool | int | float | complex | str | bytes | ~numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes]], ~numpy.ndarray])