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.
- Return type:
int
- temperature()¶
- Returns:
The smearing temperature of the Fermi distribution.
- Return type:
PhysicalQuantity of type temperature
- tolerance()¶
- Returns:
The threshold where the Chebyshev coefficients are treated as zero.
- Return type:
float
- uniqueString()¶
Return a unique string representing the state of the object.
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
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.