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