Hamiltonian Solver in VASP

Question on input files/tags, interpreting output, etc.

Please check whether the answer to your question is given in the VASP online manual or has been discussed in this forum previously!

Moderators: Global Moderator, Moderator

Post Reply
Message
Author
KieranSong
Newbie
Newbie
Posts: 13
Joined: Mon May 13, 2019 8:07 am

Hamiltonian Solver in VASP

#1 Post by KieranSong » Mon Aug 23, 2021 3:55 am

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

marie-therese.huebsch
Full Member
Full Member
Posts: 175
Joined: Tue Jan 19, 2021 12:01 am

Re: Hamiltonian Solver in VASP

#2 Post by marie-therese.huebsch » Mon Aug 23, 2021 4:21 am

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

KieranSong
Newbie
Newbie
Posts: 13
Joined: Mon May 13, 2019 8:07 am

Re: Hamiltonian Solver in VASP

#3 Post by KieranSong » Mon Aug 23, 2021 10:22 am

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

marie-therese.huebsch
Full Member
Full Member
Posts: 175
Joined: Tue Jan 19, 2021 12:01 am

Re: Hamiltonian Solver in VASP

#4 Post by marie-therese.huebsch » Tue Aug 24, 2021 12:47 am

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

Post Reply