I am trying to calculate the surface energies of Ni fcc (111) and (311) surfaces, therefore I need to calculate the surface areas. I use periodic slabs to model these surfaces. For a flat fcc (111) surface as shown below

enter image description here

the surface area is simply given by the norm of the cross product of the two lattice vectors of the unit cell. In Python code:

from ase.build import fcc111
import numpy as np
slab = fcc111('Ni', (4, 4, 4), vacuum=5.)
A_surf = np.linalg.norm(np.cross(slab.cell[0], slab.cell[1]))

However, for the stepped fcc (311) surface, the slab looks like below (top and side views): enter image description here enter image description here

How should I calculate the surface area for a stepped surface (assuming I already know the Cartesian coordinates of all atoms and the lattice vectors of the unit cell)?

  • 1
    $\begingroup$ The OVITO package had a construct surface mesh feature which used to map the surface of the structure, and returned the properties such as surface area and volume. However I am not exactly sure about the accuracy or the reliability of the method. $\endgroup$
    – PBH
    Feb 13, 2022 at 13:45
  • 2
    $\begingroup$ Before adding vacuum, Check first whether your rotated system <311> is still fcc. use common neighbor analysis in ovito. once it is FCC cross product of two in plane vector of simulation box is your area (whether step is there or not). It must be periodic and represent same fcc system $\endgroup$ Feb 13, 2022 at 14:05
  • 1
    $\begingroup$ If this question is about how to deal with steps, it may be worth pointing out that, for a corrugated surface, the effective surface area depends on the size of your probe (e.g. a molecule that tries to adsorb, ...). A small probe may be able to resolve corrugation while a larger one may not. $\endgroup$ Feb 19, 2022 at 10:47
  • $\begingroup$ Shaun, have the comments been helpful? Have you figured out this question over the last 6.5 months? Please update us! $\endgroup$ Sep 2, 2022 at 21:51
  • 1
    $\begingroup$ Nice! Do you think you can write a self-answer to this question then? It will be helpful to future users, and will also help clear our unanswered queue which is now more than 300 questions long! $\endgroup$ Sep 3, 2022 at 23:38