Page 1 of 1
Hamiltonian Solver in VASP
Posted: Mon Aug 23, 2021 3:55 am
by KieranSong
Dear All,
Can I ask a question about the Hamiltonian solver in VASP code? Because VASP code is based on plane-wave basis set, the size of the Hamiltonian is usually gigantic. I mean that each column in the Hamiltonian matrix may contain more than ten thousand elements. I think that the direct diagonalization of such gigantic Hamiltonian may lead to 'out-of-memory' and 'time-consuming' issues.
Would any expert please tell me the way VASP code solves the Hamiltonian; particularly, how to compute the eigenvalues for the band structure calculation? Does it use any special efficient methodology to deal with the gigantic Hamiltonian?
Many thanks in advance.
Kind regards,
Kieran
Re: Hamiltonian Solver in VASP
Posted: Mon Aug 23, 2021 4:21 am
by marie-therese.huebsch
Dear Kieran,
Thank you for asking. Indeed diagonalizing the Kohn-Sham Hamiltonian in a computationally efficient manner to the degree of accuracy needed to describe material properties is a huge challenge! There are many different electronic minimization algorithms implemented in VASP, and they each have different advantages and disadvantages. Check out the
ALGO and
IALGO tags!
A good starting point to learn more about this topic is the
electronic minimization category on the VASP Wiki, and the
DFT, PW and PAW talk by Martijn Marsman from a previous VASP workshop.
Best regards,
Marie-Therese
Re: Hamiltonian Solver in VASP
Posted: Mon Aug 23, 2021 10:22 am
by KieranSong
Dear Marie-Therese,
Thank you for the answer and suggestion.
Please, allow me to be more explicit with an example question. Suppose VASP has already found the Hamiltonian matrix to describe the a system under the equilibrium state and I want to calculate the band structure for this system. Would you please tell me how VASP deals with the gigantic Hamiltonian matrix? Does it diagonalize the Hamiltonian matrix directly or use any other efficient method in order to obtain the eigen value for this Hamiltonian on each k point?
I used ZHEEV subroutine in LAPACK library to diagonalize a tight binding Hamiltonian with the size of 200 by 200 in order to obtain the eigen value for a system; while, I found that the procedure took quite a long time. VASP used plane-wave basis set and this means that the Hamiltonian matrix is even much more larger than the tight binding one. I wonder how VASP code obtain the eigen value for the band structure calculation.
I would really appreciate any of your answer.
Kind regards,
Kieran
Re: Hamiltonian Solver in VASP
Posted: Tue Aug 24, 2021 12:47 am
by marie-therese.huebsch
Dear Kieran,
VASP tries to parallelize as much as possible (see
KPAR,
NPAR,
NCORE,
NSIM, ...). There are direct and indirect diagonalization methods used depending on
ALGO and
IALGO. VASP also uses the symmetry of the system to reduce the number of Kohn-Sham orbitals it actually computes, see
ISYM. Another important factor is the use of
projector-augmented-wave (PAW) pseudopotentials, that are designed to work at low
cutoff energy for the plane-wave basis.
After you watch the lecture and read the VASP Wiki and some related references, you could look at the code to see how it is done step by step. Note that, as mentioned, there are multiple methods. I am afraid that I cannot guide you through the code here.
Best regards,
Marie-Therese