root / ase / optimize / test / CO_Au111.py @ 1
Historique | Voir | Annoter | Télécharger (870 octet)
1 | 1 | tkerber | from math import sin, cos, pi |
---|---|---|---|
2 | 1 | tkerber | from ase import Atoms |
3 | 1 | tkerber | from ase.calculators.emt import EMT |
4 | 1 | tkerber | from ase.constraints import FixAtoms |
5 | 1 | tkerber | from ase.optimize.test import run_test |
6 | 1 | tkerber | from ase.lattice.surface import fcc111, add_adsorbate |
7 | 1 | tkerber | |
8 | 1 | tkerber | name = 'CO_Au111'
|
9 | 1 | tkerber | |
10 | 1 | tkerber | def get_atoms(): |
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 | no2 =Atoms('CO', positions=[(-xpos+1.2,0,-zpos), (-xpos+1.2,-1.1,-zpos)]) |
14 | 1 | tkerber | |
15 | 1 | tkerber | # Surface slab
|
16 | 1 | tkerber | slab =fcc111('Au', size=(2, 2, 4),vacuum=2*5, orthogonal = True ) |
17 | 1 | tkerber | slab.center() |
18 | 1 | tkerber | add_adsorbate(slab,no2,1.5,'bridge') |
19 | 1 | tkerber | slab.set_pbc((True,True,False)) |
20 | 1 | tkerber | |
21 | 1 | tkerber | #constraints
|
22 | 1 | tkerber | constraint = FixAtoms(mask=[(a.tag == 4) or (a.tag == 3) or (a.tag==2) for a in slab]) |
23 | 1 | tkerber | slab.set_constraint(constraint) |
24 | 1 | tkerber | return slab
|
25 | 1 | tkerber | |
26 | 1 | tkerber | def get_calculator(): |
27 | 1 | tkerber | calc = EMT() |
28 | 1 | tkerber | return calc
|
29 | 1 | tkerber | |
30 | 1 | tkerber | run_test(get_atoms, get_calculator, name, steps=200) |