COP
- sisl.physics.electron.COP(E, eig, state, M, distribution='gaussian', atol=1e-10)[source]
Calculate the Crystal Orbital Population 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.The COP curves generally refers to COOP or COHP curves. COOP is the Crystal Orbital Overlap Population with M being the overlap matrix. COHP is the Crystal Orbital Hamiltonian Population with M being the Hamiltonian.
- Parameters:
E (
ndarray
) – energies to calculate the COP fromeig (
ndarray
) – eigenvaluesstate (
ndarray
) – eigenvectorsM (
ndarray
) – matrix used in the COP curve.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.atol (float) – tolerance value where the distribution should be above before considering an eigenstate to contribute to an energy point, a higher value means that more energy points are discarded and so the calculation is faster.
Notes
This is not tested for non-collinear states. This requires substantial amounts of memory for big systems with lots of energy points.
This method is considered experimental and implementation may change in the future.
See also
- Distribution functions
a selected set of implemented distribution functions
DOS
total DOS
PDOS
projected DOS over all orbitals
spin_moment
spin moment
- Returns:
COP calculated at energies, has dimension
(len(E), *M.shape)
.- Return type:
oplist
- 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])
atol (float)