How do I reconstruct the surface with known Miller indices?

I'm trying to reconstruct the surface $$(1\bar{1}01)$$ in an hexagonal material and the reconstruction is described by the matrix $$\begin{pmatrix} \hspace{3mm}3 \hspace{2mm}1 \\-1 \hspace{2mm}2 \end{pmatrix}$$ .

The surface looks a lot like the picture on the right

But how do I proceed on reconstructing the surface? How do I apply this matrix to 4 Miller-indices?

I've looked for the concept of reconstruction in the books "Introduction to Crystallography" by Dr. Hoffmann, "Crystallography An Introduction" by Dr. Borchardt-Ott but none of these books seem to demonstrate how this is done.

• You can use ASE.
– Jack
Dec 1 '20 at 1:07
• But is there a way to do it without the need to use programming? Simply so I understand how the matrix transformation is used on the surface, as I don't think it can be as simple as a matrix multiplication as one of the matrices is a 2x2 and the other is 1x4 Dec 1 '20 at 8:19
• @Jack As this question has gone 3 months without an answer, and I'm trying to help shorten the unanswered queue, I wonder if it would be too cumbersome for you to try to write an answer using ASE? I understand that the user has replied saying that they want a way to do it "without programming", but the way the question is asked, it seems that an answer using ASE would still be useful for other users that stumble upon this question. Feb 28 at 5:24
• @NikeDattani Hi, I have posted an answer. Hope it helps.
– Jack
Feb 28 at 10:34

Cut a surface with ASE:

  from ase.io import read,write
from ase.build import surface

A=read('Input_Your_Strcuture.cif',format='cif')  ### format can be vasp.
B=surface(A,(-1,0,1),1,vacuum=15)
write('Output_Your_Surface.vasp',ou_struct,format='vasp')


Note that you need only to fill in $$P_{11}，P_{12}，P_{21}, P_{22}$$ (I assume the vacuum is along $$z$$ direction) because you are considering the surface reconstruction.