We present a method for computing partial spectra of Hermitian matrices, based on a combination of subspace iteration with rational filtering. In contrast with classical rational filters derived from Cauchy integrals or from uniform approximations to a step function, we adopt a least-squares (LS) viewpoint for designing filters. One of the goals of the proposed approach is to build a filter that will lead to linear systems that are easier to solve by iterative methods. Among the main advantages of the proposed LS filters is their flexibility. Thus, we can place poles in more general locations than with the formulations mentioned above, and we can also repeat these poles a few times for better efficiency. This leads to a smaller number of required poles than in existing methods. As a consequence, factorization costs are reduced when direct solvers are used and the scheme is also beneficial for iterative solvers. The paper discusses iterative schemes to solve the linear systems resulting from the filtered subspace iteration that take advantage of the nature and structure of the proposed LS filters. The efficiency and robustness of the resulting method is illustrated with a few model problems as well as several Hamiltonian matrices from electronic structure calculations.
Bibliographical noteFunding Information:
This work was supported by the "High-Performance Computing, and the Scientific Discovery through Advanced Computing (SciDAC) program" funded by U.S. Department of Energy, Office of Science, Advanced Scientific Computing Research, and Basic Energy Sciences DE-SC0008877. The theoretical part of the contribution by the second author was supported by NSF grant CCF-1505970. The authors would like to thank the anonymous referees for carefully reading the manuscript. We also thank the second referee for providing a short proof of Proposition 2.3.
© 2016 Society for Industrial and Applied Mathematics.
- Cauchy integral formula
- Electronic structure
- Krylov subspace methods
- Polynomial filtering
- Rational filters
- Subspace iteration