I am computing the workfunction of (111), (011), and (001) surfaces of transition metals using an approach developed by M. Verstraete (PR B70, 205427 (2004) and in a tutorial in the ABINIT tree structure). In the tutorial, Verstraete says that "to get the planar averaged potential (generated by prt1dm command), you would need to do a little geometry and extract the real cartesian projection". I need help to understand what geometry Verstraete is referring.

Secondly, I do not know how to construct xred or rprim for a 6 atom (111) fcc unit cell structure, and more importantly how to construct xred and rprim in general. Any help or references would be greatly appreciated. Verstraete provided the xred coordinates for a 3 atom (111) fcc unit cell structure.

Lastly, I do not know how to generate the shiftk values for the structures I am investigating. Up to now I have been using shiftk 0 0 0, but a better representation would give me greater accuracy.

I have tried to understand these questions by using the parameter definitions on the website to no avail.

I hope this inquiry is sufficient.

## Determining xred, rprim, and shiftk

**Moderator:** amadon

### Re: Determining xred, rprim, and shiftk

Hello Erichmond,

prt1dm simply does a sum over grid points along 2 directions, divides by the number of points per plane, and prints the result. If your lattice vectors are not orthogonal this is probably not the projection you would expect, but still useful to get an idea. If they are orthogonal to the direction you care about (let's say c) there is still a factor missing if the a and b are not orthogonal: you need to multiply by the area of the (a,b) parallelipiped to get the proper integrated potential over the unit cell slice. It depends what you want to get out: the average potential, the integrated potential, the potential per m^2, etc...

For the positions in an FCC supercell oriented along 111, you can simply extend those in the tutorial, adding successive layers with the 3 in-plane positions given, and increment the fractional z for each new layer (need to make sure the interlayer distance remains constant and you have enough vacuum in the total cell - the easiest is to make it a multiple of the interlayer, and renormalize z_red following the total length of c). This should be in most solid state or crystallography textbooks. You should work it out for yourself starting from the conventional cubic lattice, to see where things come from.

For slabs there is no point in shifting along c, and in plane you need to see which symmetry is left (trigonal/hexagonal in your case). You can set kptrlen to see what abinit suggests (removing cases with nkz > 1) and in any event if you add shifts which break the symmetry abinit will stop. I would just stick with 0 0 0

prt1dm simply does a sum over grid points along 2 directions, divides by the number of points per plane, and prints the result. If your lattice vectors are not orthogonal this is probably not the projection you would expect, but still useful to get an idea. If they are orthogonal to the direction you care about (let's say c) there is still a factor missing if the a and b are not orthogonal: you need to multiply by the area of the (a,b) parallelipiped to get the proper integrated potential over the unit cell slice. It depends what you want to get out: the average potential, the integrated potential, the potential per m^2, etc...

For the positions in an FCC supercell oriented along 111, you can simply extend those in the tutorial, adding successive layers with the 3 in-plane positions given, and increment the fractional z for each new layer (need to make sure the interlayer distance remains constant and you have enough vacuum in the total cell - the easiest is to make it a multiple of the interlayer, and renormalize z_red following the total length of c). This should be in most solid state or crystallography textbooks. You should work it out for yourself starting from the conventional cubic lattice, to see where things come from.

For slabs there is no point in shifting along c, and in plane you need to see which symmetry is left (trigonal/hexagonal in your case). You can set kptrlen to see what abinit suggests (removing cases with nkz > 1) and in any event if you add shifts which break the symmetry abinit will stop. I would just stick with 0 0 0

Matthieu Verstraete

University of Liege, Belgium

University of Liege, Belgium

### Re: Determining xred, rprim, and shiftk

Thank you for your reply. If I have further questions i will post them on the forum