[ase-users] What is wrong with my script?

Vivien Petzold petzold at fysik.dtu.dk
Tue Jan 27 17:11:32 CET 2009


Dear ASE and GPAW users,

a calculation of mine is behaving absolutely crazy, I would say. Some 
excerpt from the gpaw-output:


#####################################################################
Using the PBE Exchange-Correlation Functional.
Spin-Polarized Calculation.
Magnetic Moment:   11.200000
Total Charge:      0.000000
Fermi Temperature: 0.100000
Eigen Solver:      rmm-diis
                    (2 nearest neighbors central finite-difference stencil)
Poisson Solver:    Jacobi
                    (Mehrstellen finite-difference stencil)
Interpolation:     6th Order
Reference Energy:  -661888.209388

symmetries:
     _
XYZ XYZ
4 k-points in the Irreducible Part of the Brillouin Zone (total: 16)
Linear Mixing Parameter:           0.1
Pulay Mixing with 5 Old Densities
Damping of Long Wave Oscillations: 100

Convergence Criteria:
Total Energy Change per Atom:           0.001 eV / atom
Integral of Absolute Density Change:    0.001 electrons
Integral of Absolute Eigenstate Change: 1e-09
Number of Bands in Calculation:         102
Bands to Converge:                      Occupied States Only
Number of Valence Electrons:            160

Positions:
   0 Ni    0.0000    0.0000    0.0000
   1 Ni    2.4890    0.0000    0.0000
   2 Ni    1.2445    2.1556    0.0000
   3 Ni    3.7335    2.1556    0.0000
   4 Ni    1.2445    0.7185    2.0323
   5 Ni    3.7335    0.7185    2.0323
   6 Ni    0.0000    2.8741    2.0323
   7 Ni    2.4890    2.8741    2.0323
   8 Ni    0.0000    1.4370    4.0645
   9 Ni    2.4890    1.4370    4.0645
  10 Ni    1.2445    3.5926    4.0645
  11 Ni    3.7335    3.5926    4.0645
  12 Ni    0.0000    0.0000    6.0968
  13 Ni    2.4890    0.0000    6.0968
  14 Ni    1.2445    2.1556    6.0968
  15 Ni    3.7335    2.1556    6.0968

Atomic orbitals used for initialization: 144
                      log10-error:    Total        Iterations:
            Time      WFS    Density  Energy       Fermi  Poisson  MagMom
iter:   0  14:21:49                  -5644.66486  4      252      +1.2831
                      log10-error:    Total        Iterations:
            Time      WFS    Density  Energy       Fermi  Poisson  MagMom
iter:   0  14:25:59  +1.9            -2718.93668  8      1        +4.7600
iter:   1  14:28:22  +2.1            -2013.70598  7      1        +5.3953
iter:   2  14:30:45  +2.1            -1826.52132  8      1        +3.2067
iter:   3  14:33:53  +1.8   -0.4      2024.54737  43     243      +0.4607
iter:   4  14:37:00  +1.6   -0.7      4618.41423  23     233      +0.2124
##################################################################


For the following steps, the total energy varies around +10000 ...
My script:


##################################################################
mm = {'Ni': 0.7,
       'N': 3.,
       'O': 2.}

from ase.lattice.surface import *
loa = fcc111('Ni', size=(2,2,4), vacuum=10., orthogonal=True)
magmom = [mm[a.get_symbol()] for a in loa]
loa.set_magnetic_moments(magmom[:])

from ase.constraints import FixAtoms
constraint = FixAtoms(indices=range(8))
loa.set_constraint(constraint)

from gpaw import *
from Numeric import sort
spin = sort(abs(loa.get_initial_magnetic_moments()))[-1]>0.
mixer = Mixer(0.1, 5, metric='new', weight=100.0)
if spin:
   mixer = MixerSum(0.1, 5, metric='new', weight=100.0)

def getNumberOfBands(smblList):
   Nvalence = {'Ni': 10, 'Pd': 10, 'Rh': 9, 'C' : 4, 'O' : 6, 'N' : 5}
   nob = 0
   for a in smblList:
     nob = nob + Nvalence[a]
   nob = int((nob/2+nob%2)*1.15)+10
   return nob

#def getKpoints(cell,ntimesl=40,periodic=2):
def getKpoints(cell,ntimesl=15,periodic=2):
   k=[]
   for i in range(0,periodic):
 
l=sqrt(cell[i][0]*cell[i][0]+cell[i][1]*cell[i][1]+cell[i][2]*cell[i][2])
     n=int(ntimesl/l/2)*2+2
     k.append(n)
   for i in range(periodic,3):
     k.append(1)

   kpoints=(k[0],k[1],k[2])
   return kpoints

nkpts=getKpoints(loa.get_cell())
bands=getNumberOfBands(loa.get_chemical_symbols())

calc = GPAW(h = 0.2,
             xc = 'PBE',
             kpts = nkpts,
             nbands = bands,
             mixer = mixer,
             maxiter = 2000,
             txt = 'out.txt')

loa.set_calculator(calc)

from ase import *
dyn = QuasiNewton(loa, logfile = 'Ni111.qn', trajectory='Ni111.traj')
dyn.run(fmax=0.01, steps=30)
##################################################################


I am helpless ...

Hoping someone out there finds the problem and thanks in advance,
Vivien



More information about the ase-users mailing list