I'm working with OpenMX and see that I have eigenvalues in the output in two columns: one for spin up and one for spin down. How would I know what the total eigenvalue is? Would I just add them together? Also, the data looks like below:

  286   -0.02008501314452  -0.02008501314452
  287   -0.01559740498122  -0.01559740498122
  288   -0.01243830320899  -0.01243830320899
  289   -0.01220124445157  -0.01220124445157
  290   -0.00578203878459  -0.00578203878459
  291   -0.00371042282201  -0.00371042282201
  292   -0.00331216783551  -0.00331216783551
  293   -0.00118189095836  -0.00118189095836
  294    0.00408542561654   0.00408542561654
  295    0.00507831640267   0.00507831640267
  296    0.00891684168499   0.00891684168499
  297    0.01154985410456   0.01154985410456
  298    0.01401015272980   0.01401015272980
  299    0.01600696638805   0.01600696638805
  300    0.01788534275125   0.01788534275125
  301    0.01850894866304   0.01850894866304
  302    0.02039668066291   0.02039668066291
  303    0.02140787080479   0.02140787080479
  304    0.02331225608436   0.02331225608436
  305    0.02387109420448   0.02387109420448
  306    0.02530373611739   0.02530373611739

Would the HOMO/LUMO bound be at 293/294? If so, this does not match the value I had gotten from a VASP calculation that showed the HOMO/LUMO to be at 236/237. What would cause this discrepancy?

*For reference, the above data is in the "Eigenvalue" section, which has the following heading:

           Eigenvalues (Hartree) of SCF KS-eq.

   Chemical Potential (Hartree) =  -0.16158758016502
   Number of States             = 512.00000000000000
              Up-spin           Down-spin

   k1=  -0.25000 k2=  -0.25000 k3=   0.00000

1 Answer 1


If you want to have eigenvalues for each spin, you need to run a spin polarized calculations. This will set the program to treat both spins differently. After that, you could obtain different values of eigenvalues for each state if your system present spin polarization.

In both cases (with spin polarization on/off), you will have one eigenvalue per spin. Looking close to your result, both values are the same, indicating that your system is not spin-polarized. Then, what you have is a degenerate state: one eigenvalue for two states (spin-up/spin-down). There is no such thing of "total eigenvalue".

About your second question related to HOMO/LUMO. You need to look for the eigenvalues around the Fermi energy (chemical potential), not when they change signs. In this case, the Fermi energy is equal to $-0.16158758016502$. The results shown, are far from the Fermi energy, so, all of them are virtual states (energy greater than the LUMO)

  • $\begingroup$ If you know you have an insulator at zero temperature, you can also find the HOMO by counting electrons: starting from the lowest energy, the $N_e$th eigenvalue will be the highest-occupied one. $\endgroup$
    – elutionary
    Feb 14 at 16:52
  • 1
    $\begingroup$ That works, but I don't know if it is more efficient that just look for the Fermi energy. If your system is big, could be a source of error. $\endgroup$
    – Camps
    Feb 14 at 19:46
  • $\begingroup$ Thank you for your detailed response, I had incorrectly assumed the Fermi energy was automatically at 0. When following what you said, that brings my HOMO/LUMO to be 256/257, but in VASP when I look at the occupation in the PROCAR files, I get 236/237. Is this incorrect? $\endgroup$
    – lzzard
    Feb 15 at 21:43
  • $\begingroup$ The output you share state that the Fermi energy was not shifted. In this case, I can not tell more because it is out of range (it should be below 286). If the Fermi level was shifted to zero, then the levels 293/294 are correct. $\endgroup$
    – Camps
    Feb 16 at 13:55

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .