Statistiques
| Révision :

root / ase / test / CO2_Au111.py @ 1

Historique | Voir | Annoter | Télécharger (1019 octet)

1 1 tkerber
from math import sqrt, pi
2 1 tkerber
from ase import Atoms
3 1 tkerber
from ase.calculators.emt import EMT
4 1 tkerber
from ase.constraints import FixBondLengths
5 1 tkerber
from ase.optimize import BFGS, QuasiNewton
6 1 tkerber
from ase.neb import SingleCalculatorNEB
7 1 tkerber
from ase.lattice.surface import fcc111, add_adsorbate
8 1 tkerber
from math import sqrt, cos, sin
9 1 tkerber
10 1 tkerber
11 1 tkerber
zpos = cos(134.3/2.0*pi/180.0)*1.197
12 1 tkerber
xpos = sin(134.3/2.0*pi/180.0)*1.19
13 1 tkerber
co2 = Atoms('COO', positions=[(-xpos+1.2,0,-zpos),
14 1 tkerber
                              (-xpos+1.2,-1.1,-zpos),
15 1 tkerber
                              (-xpos+1.2,1.1,-zpos)])
16 1 tkerber
17 1 tkerber
slab = fcc111('Au', size=(2, 2, 4), vacuum=2*5, orthogonal=True)
18 1 tkerber
slab.center()
19 1 tkerber
add_adsorbate(slab,co2,1.5,'bridge')
20 1 tkerber
slab.set_pbc((True,True,False))
21 1 tkerber
d0 = co2.get_distance(-3, -2)
22 1 tkerber
d1 = co2.get_distance(-3, -1)
23 1 tkerber
24 1 tkerber
calc = EMT()
25 1 tkerber
slab.set_calculator(calc)
26 1 tkerber
constraint = FixBondLengths([[-3,-2],[-3,-1]])
27 1 tkerber
slab.set_constraint(constraint)
28 1 tkerber
dyn = BFGS(slab, trajectory='relax.traj')
29 1 tkerber
dyn.run(fmax=0.05)
30 1 tkerber
assert abs(co2.get_distance(-3, -2) - d0) < 1e-14
31 1 tkerber
assert abs(co2.get_distance(-3, -1) - d1) < 1e-14