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