[gpaw-users] DFT+U failed to converge for bulk CuO

Honkala Karoliina karoliina.honkala at jyu.fi
Mon Apr 15 10:32:36 CEST 2013


Hi !

We are calculating bulk CuO but facing severe problems to get
calculations to converge. CuO is antiferromagnetic material with C2/c
crystal structure, and requires self-interaction correction.
The value for the Hubbard correction, U=4, is taken
from the paper PRB 73, 195107 (2006).


We have tried following things:

- excluded spins, improves  convergence but is not really
  an option because of the antiferromagnetic structure

- played with the eigensolver: cg works better than rmm-diis

- tried different parameters for mixing

- varied the value for Fermi smearing

- varied U value

- used different lattice parameters (in total four: 3 lattice constants
   and one angle) both experimental
  and those given in PRB 73, 235206 (2006)

The calculation does converge with the initial atomic positions (but electronic structure is not antiferromagnetic )but oxygen positions must be optimized and after moving oxygens
once or twice the electronic structure does not converge any more.
So we are not able to optimize the lattice parameters which is our first goal.

The scaled positions for Cu and O are taken from experimental paper J. Phys. Condens. Matter. 3, 8173 (1991).


Does anyone have suggestions how we could get the calculations convergence ?

The script that we are using is below.

Best regards,
                 Karoliina


from numpy import *
from ase.optimize import QuasiNewton
from ase.io.trajectory import PickleTrajectory
from ase.visualize import view
from ase.constraints import FixAtoms
from ase.io import write
from ase import Atoms
from ase.lattice import bulk
from ase.io import read
from ase.lattice.spacegroup import crystal

from gpaw import GPAW
from ase import *
from gpaw import *
from gpaw.mpi import rank
from ase.units import Hartree
from gpaw import GPAW, Mixer
from gpaw.mixer import Mixer, MixerSum

name = 'CuO_bulk_relax_spin'
al = 4.55
bl=  3.34
cl = 4.99
beta=99.507

bulk = crystal(['Cu','O'], [(0.25,0.25,0.0), (0, 0.42, 0.25)], spacegroup=15,setting=1,
                cellpar=[al,bl,cl,90,90,beta],pbc=True)
for a in bulk:
  if a.symbol == 'Cu':
     a.magmom=0.65

U=4.0
U_au = U / Hartree
l=2 # d orbitaali
scale=1
store=0
calc = GPAW(nbands=-50,
                h=0.18,
                xc='PBE',
                maxiter=240,
                width=0.2,
                spinpol= True,
                mixer=MixerSum(0.02, 5, 50),
#                mixer=Mixer(0.02, 5, 50),
                eigensolver='cg',
                kpts=(4,4,4),
                txt=name + '.txt',)

bulk.set_calculator(calc)

calc.initialize(bulk)
for i, a in enumerate(bulk):
    if a.symbol == 'Cu':
        calc.hamiltonian.setups[i].set_hubbard_u(U_au, l, scale, store)

#constraint = FixAtoms(mask=[a.symbol=='Cu' for a in bulk])
#bulk.set_constraint(constraint)

dyn = QuasiNewton(bulk, logfile=name+'.log', trajectory=name+'.traj')

dyn.run(fmax=0.05)
calc.write(name+'.gpw')



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserv.fysik.dtu.dk/pipermail/gpaw-users/attachments/20130415/c0dd4dce/attachment.html 


More information about the gpaw-users mailing list