I am looking for open-source software that could help me to build Heterostructure models visually, I've been working with BIOVIA Materials Studio before, but I got no valid license now, so I'd like to find some open-source alternative that works like BIOVIA Materials Studio. I tried the VESTA program, but it needs a lot of manual work to build a valid model for DFT calculation.
Any recommendation is welcome.

For example, in Materials studio, when creating a slab, I could set the parameter of HKL and thickness, then I could get the result, but in VESTA, I need to set some kind of transformation matrix and delete some atoms manually.

enter image description here

  • 1
    $\begingroup$ I think it depends a bit on what you mean. Maybe you can include some screenshots or images of what you're trying to build? $\endgroup$ Jan 4, 2022 at 0:44
  • $\begingroup$ Maybe if you could give an idea what BIOVIA was able to do for you, we could supply some assistance. ASE probably does this but not fully in GUI. $\endgroup$ Jan 7, 2022 at 17:08
  • $\begingroup$ @TristanMaxson. I added some explanations about my thoughts. $\endgroup$
    – Jack
    Jan 7, 2022 at 17:14
  • $\begingroup$ Check out the LatticeMixer web-app latticemixer.com Here is a video showing it's demonstration: youtube.com/watch?v=OKRRmAPyX7w $\endgroup$ Jun 29, 2022 at 0:52

1 Answer 1


Not a fully GUI solution but if we can assume you get a primitive cell to work with, Atomic Simulation Environment can generate your surface.

For some extra spice, its common to want to make root surfaces such as $\sqrt{2}$x$\sqrt{2}$, so I included a final step which will do this assuming there is a valid $\sqrt{2}$x$\sqrt{2}$ to make. There is also a root_surface_analysis function if you are working with an unknown cell.

from ase.build import surface, root_surface
from ase.io import read
from ase.visualize import view

filename = "primitive.POSCAR"
layers = 4
miller = (1, 0, 0)
root = 2

atoms = read(filename)
surf = surface(atoms, miller, layers)


root_surf = root_surface(surf, root)


You must log in to answer this question.

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