[gpaw-users] Occupation and degeneracy problem in spin-polarized calculation for atoms
jensj at fysik.dtu.dk
jensj at fysik.dtu.dk
Fri Mar 4 08:41:23 CET 2011
> Hello,
>
> I have done a spin-polarized calculation of oxygen atom using gpaw, the
> scf iteration converges in 22 steps but I think there might be some
> problems with the degeneracy of eigen-energies and their occupations.
> For oxygen atom, the 2p orbital should be 3-folded degenerate, right?
> However, the result of gpaw shows following:
>
> Fermi Level: -6.92162
> Up Down
> Band Eigenvalues Occupancy Eigenvalues Occupancy
> 0 -24.96945 1.00000 -21.38416 1.00000
> 1 -10.67650 1.00000 -7.40534 0.99213
> 2 -10.67650 1.00000 -6.36818 0.00393
> 3 -8.71907 1.00000 -6.36818 0.00393
> 4 -0.52898 0.00000 -0.33566 0.00000
> 5 1.81662 0.00000 2.07444 0.00000
> 6 1.83804 0.00000 2.09461 0.00000
> 7 1.96408 0.00000 2.13537 0.00000
What you have found here is the true ground-state for oxygen, which is not
spherically symmetric and therefore the p-states are not degenerate. If
you want to find the spherically symmetric state you can use something
like this:
from ase import Atoms
from gpaw import GPAW, FermiDirac
atom = Atoms('O', magmoms=[2])
atom.center(vacuum=4)
calc = GPAW(xc='PBE',
occupations=FermiDirac(0.1),
txt='O-sym.txt')
atom.calc = calc
atom.get_potential_energy()
Fermi Level: -7.25294
Up Down
Band Eigenvalues Occupancy Eigenvalues Occupancy
0 -25.19128 1.00000 -21.92994 1.00000
1 -10.21799 1.00000 -7.18362 0.33333
2 -10.21799 1.00000 -7.18362 0.33333
3 -10.21799 1.00000 -7.18362 0.33333
You can also find this state with GPAW's 1-d radial program. Try:
$ python -m gpaw.atom.aeatom O -s
Jens Jørgen
> where for spin-up the three 2p orbital (-10.67650, -10.67650, -8.71907)
> are not degenerate and also for spin-down the 1 electron is supposed to
> equally shared over the three degenerate state 2p orbitals instead of
> with -7.40534 [0.99213], -6.36818 [0.00393], -6.36818[0.00393]. For
> comparison, I did the same calculation using Quantum Espresso and the
> result is shown as follows:
> ------ SPIN UP ------------
> k = 0.0000 0.0000 0.0000 (166101 PWs) bands (ev):
>
> -24.9334 -10.3604 -10.3604 -10.3604 -0.2758 0.3747 0.6266
> 0.6266
>
> occupation numbers
> 1.0000 1.0000 1.0000 1.0000 0.0000 0.0000 0.0000
> 0.0000
>
> ------ SPIN DOWN ----------
>
> k = 0.0000 0.0000 0.0000 (166101 PWs) bands (ev):
>
> -21.7267 -7.2612 -7.2612 -7.2612 -0.2350 0.4426 0.6451
> 0.6451
>
> occupation numbers
> 1.0000 0.3333 0.3333 0.3333 0.0000 0.0000 0.0000
> 0.0000
> which gives the result as I expected.
>
> I am wondering why I got the dramatically different occupations and
> energies in gpaw. Or maybe there is something wrong in my oxygen script?
> which looks as follows:
>
> from ase import Atoms
> from ase.io import write
> from gpaw import GPAW, Mixer, FermiDirac
> from gpaw.mixer import MixerSum
>
> a = 7.94
>
> # Oxygen atom:
> atom = Atoms('O', cell=[a, a, a], pbc=True)
> atom.center()
>
> # GPAW calculator with 6 Kohn-Sham states (bands):
> calc = GPAW(nbands=8,
> xc='PBE',
> gpts=(32, 32, 32),
> occupations=FermiDirac(0.1),
> hund=True, #assigns the atom its correct magnetic moment
> mixer=MixerSum(beta=0.1, nmaxold=5, weight=50.0), # Pulay
> mixer
> txt='O.txt')
>
> atom.set_calculator(calc)
> atom.get_potential_energy()
>
> BTW, I also tested carbon atom whose occupations and degeneracy are also
> different from what I expected. Would anyone help me with this problem?
> Thank you very much in advance.
> _______________________________________________
> gpaw-users mailing list
> gpaw-users at listserv.fysik.dtu.dk
> https://listserv.fysik.dtu.dk/mailman/listinfo/gpaw-users
>
More information about the gpaw-users
mailing list