SlabEntry - surface energy formula

I am calculating the surface energy of different number of layers of a Fe2O3 slab. When I used
e0_fe2o3_9 = Vasprun('9_layers_1x1_Fe/vasprun.xml').final_energy
is the final energy from VASP, I got Energy = -109.2659
When I used hand-calculation to compare the result,
e_surface = (e0_fe2o3_9-6*e0_fe2o3_bulk)/(2*data_9layer.surface_area)
I got 25.847531526010
I checked the total final energy from VASP, E0= -.10926592E+03 , it was the same with the surface energy from SlabEntry.
I checked the source of the surface_energy code and found the formula used for surface energy is
gamma = (Symbol("E_surf") - Symbol("Ebulk")) / (2 * Symbol("A"))
I am not sure where SlabEntry will get the Ebulk energy from and do we need to account for the number of atoms/molecules in the bulk.
Another question is, what is the unit for surface energy and surface area from SlabEntry? I would assume eV and A, respectively.
Thank you for your time!

Hi Ngan,
I’d guess your 9-layer slab might be non-stoichiometric (not the same stoichiometry as the bulk reference) and that’s where the difference comes from. Surface energies of non-stoichiometric films are quite a bit more complicated (requires some thermodynamic considerations and a reservoir) than for stoichiometric films.
Also, I think you can specify the reference bulk structure in the function .surface_energy(bulk_structure) as well as reference elements for a reservoir.

1 Like