PDOS

sisl.physics.phonon.PDOS(E, mode, hw, distribution='gaussian')[source]

Calculate the projected density of modes (PDOS) onto each each atom and direction for a set of energies, E, with a distribution function

The PDOS(E) is calculated as:

PDOSα(E)=iϵi,αϵi,αD(Eωi)

where D(Δ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.

DOS(E)=αPDOSα(E)
Parameters:
  • E (ndarray) – energies to calculate the projected-DOS from

  • mode (ndarray) – eigenvectors

  • hw (ndarray) – eigenvalues

  • 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 Eϵ as argument and calculates the distribution function.

See also

Distribution functions

a selected set of implemented distribution functions

DOS

total DOS (same as summing over atoms and directions)

Returns:

projected DOS calculated at energies, has dimension (mode.shape[1], len(E)).

Return type:

numpy.ndarray

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])