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
Earray_like

energies to calculate the projected-DOS from

eigarray_like

eigenvalues

statearray_like

eigenvectors

Sarray_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.

distributionfunc or str, optional

a function that accepts \(E-\epsilon\) as argument and calculates the distribution function.

spinstr 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