[gpaw-users] Band structure calculation

Jakob Arendt Rasmussen jar at inano.au.dk
Wed Feb 1 11:21:18 CET 2012


Hi

I'm doing a band structure  calculation along the second axis in the 
brillouin zone where I do one k-point at a time. this works fine in 
fd-mode, but in lcao-mode I get weird (i.e. large (numerically)) 
eigenvalues for the gamma-point - giving an ugly spaghetti-plot... The 
eigenvalues for the gamma-point spans from -520000 eV to -120 eV jumping 
tens of eV in the valence end whereas for the other k-points the 
eigenvalues spans from -22 eV to 1.8 eV jumping tens of meV.

The structure optimization was done like this:
###########################
from ase.io.trajectory import PickleTrajectory
from ase.optimize import BFGS
from gpaw import GPAW

id='3x9_con'
traj=PickleTrajectory(id+'.traj')
atoms=traj[-1]

calc=GPAW(nbands=170,
           mode='lcao',
           basis='dzp',
           h=0.16,
           kpts=(1,8,1),
           xc='PBE',
           spinpol=True,
           txt=id+'_opt.txt')

atoms.set_calculator(calc)
dyn=BFGS(atoms,trajectory=id+'_opt.traj',logfile=id+'_opt.log')
dyn.run(fmax=0.05)
calc.write(id+'_opt.gpw')
###########################

and the band structure like this:
###########################
from gpaw import GPAW
from gpaw.mixer import MixerSum
import os

id='3x9_con'

nkpt = 40
kpts = [(0, 0.5 * k / (nkpt - 1), 0) for k in range(nkpt)]

for kpt in kpts:
     if id+'_%1.2f_band.gpw' %kpt[1] in os.listdir('./'):
         continue
     else:
         calc = GPAW(id+'_opt.gpw',
                     txt=id+'_%1.2f_band.txt' %kpt[1],
                     kpts=[kpt],
                     fixdensity=True,
                     usesymm=None,
                     maxiter=500,
                     mixer=MixerSum(),
                     convergence={'bands': -5})

         calc.scf.converged=False

         calc.get_potential_energy()
         calc.write(id+'_%1.2f_band.gpw' %kpt[1])
###########################

Best,
Jakob


More information about the gpaw-users mailing list