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
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, slab.cell))
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)?