# How to transform the k coordinate into the k path used in the band structure?

When drawing the band structure, I need to transform the coordinate of k-points into a k-path, but I am not sure what the formula is.

I checked the result of siesta, Here is the coordinates of some k-points

siesta: Band k vectors (Bohr**-1):
ik            k
1    -0.158058    -0.000000     0.000000
2    -0.152790    -0.000000     0.000000
3    -0.147521    -0.000000     0.000000
4    -0.142253    -0.000000     0.000000
5    -0.136984    -0.000000     0.000000
6    -0.131715    -0.000000     0.000000
7    -0.126447    -0.000000     0.000000
8    -0.121178    -0.000000     0.000000
9    -0.115910    -0.000000     0.000000


Here is the range of the k-path

# k_min, k_max      =     0.0000    0.3722


My question is:
What is the formula I should use to transform k-points coordinates into k-path?

• It would be helpful if you provide more information. For example: (i) k-points have three components (in 3D), so what are k_min and k_max, that only appear to have one component? Do you provide an initial and final point for the path segment? Do you provide the number of points along a path segment? In what format are the points given, fractional or absolute coordinates? Jun 15, 2022 at 9:30

In SIESTA, what I used to do is:

• Select the high symmetry points
• Define de number of k points between them
• Wrote the k path

For example, take a look at the Brillouin zone bellow:

In the recommended path, lets take only the first four points $$\Gamma$$-X-M-$$\Gamma$$. The corresponding coordinates for $$\Gamma$$, X and M are:

Gamma: 0 0 0
X: 0 1/2 0
M: 1/2 1/2 0


So, in SIESTA, you add lines like:

1  0.0  0.0  0.0  \Gamma
4  0.0  0.5  0.0  X
4  0.5  0.5  0.0  M
4  0.0  0.0  0.0  \Gamma


This means that the bands will be calculated with only 4 points between (0,0,0) and (0,0.5,0) (for the first segment $$\Gamma$$-X), 4 points between (0,0.5,0) and (0.5,0.5,0), etc. The points for the first segment will be:

0.0 0.0 0.0
0.0 0.1 0.0
0.0 0.2 0.0
0.0 0.3 0.0
0.0 0.4 0.0
0.0 0.5 0.0


Of course that using only 4 points is an example here to play with the numbers. Using 4 points will give you a segmented band structures, so you need to use more (I usually use 200 and got a smooth curve)

• After the process in your answer, I need to draw the band line, so I have to transform the K vector into a scalar, what formula should I use?
– Jack
Jun 15, 2022 at 13:46
• You don't need to draw the band lines by hand. SIESTA will return a data file (SystemLabel.bands) with all the results from the band calculation. After that, you can use GNUBANDS (distributed with SIESTA) that will process that file, and then will produce a data file suitable for plotting with GNUPLOT, for example (simple data file with three columns: k, bands for spin up, bands for spin down).
– Camps
Jun 15, 2022 at 13:59
• The scalar values are simply the distances between the k-points in reciprocal space. So nothing special here. Jun 15, 2022 at 18:10
• @Camps shouldn't the high symmetry point $X$ be $0, 1/2, 0$ instead of $0, 1/2, 1/2$? And if the $\Gamma$-point is the origin in the BZ, why coordinates of the high symmetry points are 1/2 instead of unit scales. I mean why the $M$ point, for example, is not $(1, 1, 0)$ instead of $(1/2, 1/2, 0)$?
– Sha
Sep 6, 2022 at 10:56
• Yes, you are right, sorry for my mistake. I will fix the answer, but the idea remains valid, ok?
– Camps
Sep 6, 2022 at 18:23