I am trying to generate a 50-50 Pt-Au fcc(111) bimetallic surface in ASE for DFT calcualtions. However, I am unable to figure out the procedure. Any help regarding the procedure will be great. Thanks

  • $\begingroup$ Even the same 50-50 composition can have different chemical orderings. What ordering do you want? Or you just want a random bimetallic surface structure with 50-50 composition? Whether you want a random ordering or a typical L1$_0$/L1$_2$ ordering, I can write an ASE script for you. $\endgroup$
    – Shaun Han
    Commented Aug 1, 2023 at 6:28

1 Answer 1


First you can generate a pure host metal surface slab using ase.build, for example a 2x2x3 Pt(111) slab. Here you can directly insert the lattice parameter for your target alloy surface, e.g. 3.9 Å:

from ase.build import fcc111

atoms = fcc111('Pt', (2,2,3), a=3.9, vacuum=5.)

Then can change half of the atoms into dopant atoms by visualizing the structure and note down the atom indices that you want to change to the dopant metal. For example, the dopant indices for a typical L1$_0$-ordered surface are

dopant_ids = [1, 3, 5, 7, 8, 10]

You can then change the Pt atoms with those indices to Au by

for i, atom in enumerate(atoms):
    if i in dopant_ids:
        atom.symbol = 'Au'

In the comment you said you want a 10x10x3 slab, you can simply expand the cell by

atoms *= (5, 5, 1)

Now you get the 10x10x3 L1$_0$-ordered Pt$_{0.5}$Au$_{0.5}$(111) surface structure:

from ase.visualize import view


enter image description here

  • $\begingroup$ Hi @Shaun Han, thank you so much for your comment. I would really like to understand a bit deeper about L10 and L12 orderings, what's the difference between them and a random bimetallic surface, and how to identify the dopant ids. I want to have a surface with (10x10) in xy-direction, with 3 layers along z direction $\endgroup$ Commented Aug 1, 2023 at 10:31
  • $\begingroup$ @ARKAPRAVASARKAR For L10 and L12 orderings, the two metals distribute in an ordered way, which forms a very stable structures with 1:1 and 3:1 compositions, respectively. Random ordering means the two metals randomly distribute. If you want to generate a 10x10x3 surface, just do atoms = fcc111('Pt', (10,10,3), vacuum=5.) $\endgroup$
    – Shaun Han
    Commented Aug 1, 2023 at 11:05
  • $\begingroup$ Thank you @Shaun Han. How does the dopant ids change then? Also, it will be great if you can provide some references for L10 and L12 orderings $\endgroup$ Commented Aug 1, 2023 at 11:09
  • 2
    $\begingroup$ Why not use ACAT (Alloy Catalysis Automated Toolkit)?, I've been using it and it is a great package ;) $\endgroup$
    – Okano
    Commented Aug 1, 2023 at 11:15
  • $\begingroup$ @Okano can you please help me with the script to build the surface I want? $\endgroup$ Commented Aug 1, 2023 at 11:30

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .