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 \(\mathrm{PDOS}(E)\) is calculated as:
\[\mathrm{PDOS}_\nu(E) = \sum_i \psi^*_{i,\nu} [\mathbf S | \psi_{i}\rangle]_\nu D(E-\epsilon_i)\]where \(D(\Delta E)\) is the distribution function used. Note that the distribution function used may be a user-defined function. Alternatively a distribution function may be aquired from
distribution
.In case of an orthogonal basis set \(\mathbf S\) is equal to the identity matrix. Note that
DOS
is the sum of the orbital projected DOS:\[\mathrm{DOS}(E) = \sum_\nu\mathrm{PDOS}_\nu(E)\]For non-collinear 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 \(x\) direction
- Projected spin magnetic moment along \(y\) direction
- Projected spin magnetic moment along \(z\) direction
These are calculated using the Pauli matrices \(\boldsymbol\sigma_x\), \(\boldsymbol\sigma_y\) and \(\boldsymbol\sigma_z\):
\[\begin{split}\mathrm{PDOS}_\nu^\Sigma(E) &= \sum_i \psi^*_{i,\nu} \boldsymbol\sigma_z \boldsymbol\sigma_z [\mathbf S | \psi_{i}\rangle]_\nu D(E-\epsilon_i) \\ \mathrm{PDOS}_\nu^x(E) &= \sum_i \psi^*_{i,\nu} \boldsymbol\sigma_x [\mathbf S | \psi_{i}\rangle]_\nu D(E-\epsilon_i) \\ \mathrm{PDOS}_\nu^y(E) &= \sum_i \psi^*_{i,\nu} \boldsymbol\sigma_y [\mathbf S | \psi_{i}\rangle]_\nu D(E-\epsilon_i) \\ \mathrm{PDOS}_\nu^z(E) &= \sum_i \psi^*_{i,\nu} \boldsymbol\sigma_z [\mathbf S | \psi_{i}\rangle]_\nu D(E-\epsilon_i)\end{split}\]Note that the total PDOS may be calculated using \(\boldsymbol\sigma_i\boldsymbol\sigma_i\) where \(i\) may be either of \(x\), \(y\) or \(z\).
Parameters: - E : array_like
energies to calculate the projected-DOS from
- eig : array_like
eigenvalues
- state : array_like
eigenvectors
- S : array_like, optional
overlap matrix used in the \(\langle\psi|\mathbf S|\psi\rangle\) calculation. If None the identity matrix is assumed. For non-collinear calculations this matrix may be halve the size of
len(state[0, :])
to trigger the non-collinear calculation of PDOS.- distribution : func or str, optional
a function that accepts \(E-\epsilon\) as argument and calculates the distribution function.
- spin : str or Spin, optional
the spin configuration. This is generally only needed when the eigenvectors correspond to a non-collinear calculation.
Returns: - numpy.ndarray
projected DOS calculated at energies, has dimension
(state.shape[1], len(E))
. For non-collinear calculations it will be(4, state.shape[1] // 2, len(E))
, ordered as indicated in the above list.
See also
sisl.physics.distribution
- a selected set of implemented distribution functions
DOS
- total DOS (same as summing over orbitals)
spin_moment
- spin moment for states