[ase-users] atom adsorption
Eric German
ernst_german at yahoo.com
Mon Jun 27 12:33:25 CEST 2011
Dear ase users,
I want to calculate the adsorption energy, Eads, of a H atom on the
Ni(111) surface as a test problem.
A 2x2x3 unit cell was employed. A Monkhorst-Pack mesh with 5x5x1
k-grid sampling in the surface Brillouin zone was used. The
exchange-correlation potential was described using the GGA-PW91.
Calculated Eads(ontop) and Eads(fcc) are equal to -3.05 and 3.7 eV,
respectively. These values are considerably higher than those in
published theoretical data (from -2.1 to -2.3 eV) for the ontop and
(from -2.6 to 2.9 eV) for the fcc adsorption, and experimental value
equal to -2.7 eV. Calculations with 2x2x1 and 8x8x1 k-grid do not
change these results. I found that my INCAR file does not include
string ISPIN=2 which there is the script below:
"INCAR"
INCAR created by Atomic Simulation Environment
SYMPREC=1.00e-06
PREC=Med
LREAL=.FALSE.
my script file
# -*- coding: utf-8 -*-
from ase import *
from ase.calculators import *
from ase.constraints import FixAtoms
from ase.optimize import QuasiNewton
from ase.lattice.surface import *
from ase.io import *
h = 1.453
#############
slab = fcc111('Ni', size=(2,2,3), vacuum=10.0)
calc =calculators.vasp.Vasp(prec = 'Med', xc = 'GGA', lreal
=False,kpts=(5,5,1),symprec=1e-6 )
calc.initialize(slab)
slab.set_calculator(calc)
e_slab = slab.get_potential_energy()
print 'slab energy:', e_slab
################
import cPickle as pickle
pckl_file = file("slab_energy.pckl", "w")
pickle.dump(slab.get_potential_energy(), pckl_file)
pckl_file.close()
################
molecule = Atoms('H', positions=[(0, 0, 0)])
molecule.center(vacuum=8)
calc = calculators.vasp.Vasp(prec = 'Med', xc = 'GGA', lreal = False)
calc.initialize(molecule)
calc.set(ispin=2)
molecule.set_calculator(calc)
e_molecule = molecule.get_potential_energy()
print 'molecule energy:', e_molecule
add_adsorbate(slab, molecule, h,'ontop')
print slab.get_tags()
slab.constraints=FixAtoms(mask=[atom.tag>1 for atom in slab])
dyn = QuasiNewton(slab, trajectory='H_Ni_top.traj')
dyn.run(fmax=0.05)
print 'Adsorption
energy:',slab.get_potential_energy()-e_slab-e_molecule
visualize.view(slab)
################
importcPickle as pickle
pckl_file = file("H_Ni_top_ad_energy.pckl", "w")
pickle.dump(slab.get_potential_energy()-e_slab-e_molecule, pckl_file)
pckl_file.close()
Would give me suggestions, why do I get the wrong result
Thank you. Eric German
Department of Chemical Engineering
Technion -- Israel Institute of Technology
Technion City, Haifa 32000, Israel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.fysik.dtu.dk/pipermail/ase-users/attachments/20110627/aa6ec0e6/attachment.html>
More information about the ase-users
mailing list