Create surface by using non-conventional surface vectors

Dear Pymatgen users and developers,

I would like to ask how to create a Pt(111) :math:\sqrt{3}\times\sqrt{3} surface in pymatgen, which parameters is needed?

If you have a slab, just use structure.make_supercell().

e.g.

structure = structure.make_supercell([[2, 1, 0], [1, -1, 0], [0, 0, 1]])
# in this case the surface vector will change, and then you can create surfaces in any shape you want (as long as you know how to write the matrix)

I am not familiar with Pymatgen but I think we just need to change the orientations to [111] [1-10] [11-2] to make an fcc Pt(111) surface.

Hi ddinhta,

Thanks for the reply.

Could you elaborate on which function you use? I usually use SlabGenerator for creating slabs, and to my knowledge it doesn’t have a parameter which you can define the orientations.

Best,
ZDH

Atomsk (atomsk.univ-lille.fr) is my favorite way to play with crystalline structures. In your case, just simply type : “atomsk --create fcc 3.92 Pt orient [111] [1-10] [11-2] -duplicate 10 10 10 Pt.cfg” to get a structure of 4000 atoms, cfg format. You can change number of atoms or output format for your application.

Dear ddinhta,

Thanks! Atomsk looks really nice. I’ll try it out.

Best,
ZDH