Computing accurate solutions to the Kohn-Sham problem quickly in real space
MetadataShow full item record
Matter on a length scale comparable to that of a chemical bond is governed by the theory of quantum mechanics, but quantum mechanics is a many body theory, hence for the sake of chemistry or solid state physics, finding solutions to the governing equation, Schrodinger's equation, is hopeless for all but the smallest of systems. As the number of electrons increases, the complexity of solving the equations grows rapidly without bound. One way to make progress is to treat the electrons in a system as independent particles and to attempt to capture the many-body effects in a functional of the electrons' density distribution. When this approximation is made, the resulting equation is called the Kohn-Sham equation, and instead of requiring solving for one function of many variables, it requires solving for many functions of the three spatial variables. This problem turns out to be easier than the many body problem, but it still scales cubically in the number of electrons. In this work we will explore ways of obtaining the solutions to the Kohn-Sham equation in the framework of real-space pseudopotential density functional theory. The Kohn-Sham equation itself is an eigenvalue problem, just as Schrodinger's equation. For each electron in the system, there is a corresponding eigenvector. So the task of solving the equation is to compute many eigenpairs of a large Hermitian matrix. In order to mitigate the problem of cubic scaling, we develop an algorithm to slice the spectrum into disjoint segments. This allows a smaller eigenproblem to be solved in each segment where a post-processing step combines the results from each segment and prevents double counting of the eigenpairs. The efficacy of this method depends on the use of high order polynomial filters that enhance only a segment of the spectrum. The order of the filter is the number of matrix-vector multiplication operations that must be done with the Hamiltonian. Therefore the performance of these operations is critical. We develop a scalable algorithm for computing these multiplications and introduce a new density functional theory code implementing the algorithm.