# ChebyshevExpansionSolver¶

class ChebyshevExpansionSolver(maximum_order, tolerance, temperature=None)

Calculate the density matrix using the Chebyshev expansion method.

Parameters: maximum_order (int > 0) – The highest order used in the Chebyshev expansion. tolerance (float) – The threshold to treat Chebyshev coefficients as zero. temperature (PhysicalQuantity of type temperature.) – The smearing of the Fermi distribution. Default: 300*Kelvin
maximumOrder()
Returns: The highest order used in the Chebyshev expansion. int
temperature()
Returns: The smearing temperature of the Fermi distribution. PhysicalQuantity of type temperature
tolerance()
Returns: The threshold where the Chebyshev coefficients are treated as zero. float

## Notes¶

The implemented Chebyshev expansion method is based on the work of Baer et al., J.Chem.Phys.107(23),1997. The method has a $$O(N^2)$$ complexity.

The method decomposes the density matrix as a sum of Chebyshev polynomials

$D = \sum_{n=0}^{P-1} a_{n}(\beta, \varepsilon_{F}) T_n(H)$

with $$a_{n}$$ the Chebyshev coefficients as a function of the inverse temperature $$\beta$$ and Fermi energy $$\varepsilon_{F}$$. The Chebyshev polynomials $$T_{n}$$ are evaluated as a function of the system’s Hamiltonian $$H$$ for each k-point.

In contrast to the method of Baer et al., the order of the Chebyshev expansion is dynamically changed to obtain density matrix results within the requested accuracy. On construction the caller needs to be specify the maximum number of terms in the Chebyshev expansion and the tolerance at which trailing Chebyshev coefficients are considered zero.