Diffusion of gold atom on Al(100) surface (constraint) — ASE documentation

### Navigation

- index
- modules |
- Tutorials »

# Diffusion of gold atom on Al(100) surface (constraint)

In this tutorial, we will calculate the energy barrier that was found using the `NEB` method in the Diffusion of gold atom on Al(100) surface (NEB) tutorial. Here, we use a simple `FixedPlane` constraint that forces the Au atom to relax in the yz-plane only:

    from ase.lattice.surface import fcc100, add_adsorbate
    from ase.constraints import FixAtoms, FixedPlane
    from ase.calculators.emt import EMT
    from ase.optimize import QuasiNewton

    # 2x2-Al(001) surface with 3 layers and an
    # Au atom adsorbed in a hollow site:
    slab = fcc100('Al', size=(2, 2, 3))
    add_adsorbate(slab, 'Au', 1.7, 'hollow')
    slab.center(axis=2, vacuum=4.0)

    # Make sure the structure is correct:
    #from ase.visualize import view
    #view(slab)

    # Fix second and third layers:
    mask = [atom.tag > 1 for atom in slab]
    #print mask
    fixlayers = FixAtoms(mask=mask)

    # Constrain the last atom (Au atom) to move only in the yz-plane:
    plane = FixedPlane(-1, (1, 0, 0))

    slab.set_constraint([fixlayers, plane])

    # Use EMT potential:
    slab.set_calculator(EMT())

    for i in range(5):
        qn = QuasiNewton(slab, trajectory='mep%d.traj' % i)
        qn.run(fmax=0.05)
        # Move gold atom along x-axis:
        slab[-1].x += slab.get_cell()[0, 0] / 8

The result can be analysed with the command ase-gui mep?.traj -n -1 (choose Tools ‣ NEB). The barrier is found to be 0.35 eV - exactly as in the NEB tutorial.

Here is a side-view of the path (unit cell repeated twice):

See also

- `ase.neb`
- `ase.constraints`
- Diffusion of gold atom on Al(100) surface (NEB)
- `fcc100()`

### Navigation

- index
- modules |
- Tutorials »