Eigensolver: Chebyshev Filtering
**Introduce a Chebyshev filter as an alternative to Iterative Eigensolvers **
Based on the implementation presented in Zhou2006 and Zhou2014.
This MR adds:
- Norm of a 2D matrix, ||A||_2. The spectral norm of a matrix A is the largest singular value of A, such that ||A||_2 = max_eigenvalue(A)
- A new run option to the input file and eigensolver class.
-
Document input variables in the MR
-
- A implementation of initial bounds estimation for the region we wish to filter (that is not amplified by the polynomial, and hence not discarded).
- A Chebyshev polynomial that dampens the region [a, b] and returns filtered vectors (corresponding to eigenvalues < a in energy)
NOTE, I have made every effort to a avoid using FLOAT
in favour of dp
, as the former is an obsolete implementation, and should be removed from the source.
Application Tests
In the tests, I observe an increase of 2-3 in calculation speed-up.
References were computed in serial.
TODOs
-
Add application tests -
ChebyFirstNiter = 1
caused a set fault in the one instance I tried it. Try for multiple tests -
Apply findent - I can't just use emacs select all as this breaks the desired declaration alignments
- As such, don't bother commenting on the formatting. I will apply findent once I get the fork, and after all other issues are cleaned up
Edited by Alex Buccheri