# Supercell Tight Binding Help

Hello all,

I have been having trouble getting my tight binding code to work. For those interested, I am using an spds* orbital basis set on silicon and coding in matlab.

My largest problem is that I simply cannot find out what is wrong with my code so I am inclined to think that I have some conceptual misunderstanding about getting band structures/DOS from supercell hamiltonians. I say this because my bulk silicon hamiltonian works beautifully, yet my supercell hamiltonian is absolute trash. Unfortunately, while there are tons of papers using the supercell approach, there are no example hamiltonians I can bench mark my own to.

The basic supercell I am using is an 8-atom cell that is tiled in a simple cubic fashion. As I understand it, the lattice fourier transform of a many-atom cell looks something like:

$$E(k) = \sum_{R, \tau} E(r) e^{i k \cdot R} e^{i k \cdot \tau}$$
where $$\tau$$ is the distance between atoms and a sum over all atoms in the cell is implied, of course R being the lattice vectors. So then, assuming only nearest-neighbour interactions my Hamiltonian ought to look something like this (the following being in block form, with each index being an atomic site):

$$$H = \left[ {\begin{array}{cccccccc} D & T(u) & 0 & T(x) & 0 & T(v) & 0 & T(w) \\ T(-u) & D & T(-x) & 0 & T(-v) & 0 & T(-w) & 0 \\ 0 & T(x) & D & T(u) & 0 & T(w) & 0 & T(v) \\ T(-x) & 0 & T(-u) & D & T(-w) & 0 & T(-v) & 0 \\ 0 & T(v) & 0 & T(w) & D & T(u) & 0 & T(x) \\ T(-v) & 0 & T(-w) & 0 & T(-u) & D & T(-x) & 0 \\ 0 & T(w) & 0 & T(v) & 0 & T(x) & D & T(u) \\ T(-w) & 0 & T(-v) & 0 & T(-x) & 0 & T(-u) & D \\ \end{array} } \right]$$$
Where D is a diagonal, on-site term and T(X) are the inter-atom hopping terms in some bond direction [u = (1, 1, 1), v = (-1, 1, -1), w = (-1, -1, 1), x = (1, -1, -1)]. In my code this vector is used to determine the coefficients for the orbital interactions via the Slater-Koster relations and also to multiply the term by $$\exp(i \cdot X)$$, where X is again one of those vectors. So according to me, for the periodic boundary conditions to be satisfied all that is required is that I 'pretend' that the crystal is translated and just use the appropriate bond vector to connect i. e. an atom on the left edge to an atom on the right edge. However, doesn't this imply that my lattice fourier transform and real space Hamiltonian are the same? Is this my error or is it the case that the lattice fourier transforms of SC lattices are themselves?

For clarity, here are the indices of my atoms:
----4------8
3------7----
----2----- 6
1------5----

If someone could provide me with an example of a supercell hamiltonian that is correct, I think that would be most helpful because then I could spot the error on my own without debugging via proxy. Sorry if I have failed to explain myself enough I will be happy to clarify.

olgranpappy
Homework Helper
If someone could provide me with an example of a supercell hamiltonian that is correct, I think that would be most helpful because then I could spot the error on my own without debugging via proxy. Sorry if I have failed to explain myself enough I will be happy to clarify.

Hi,

I just tried to work this out, but I chose a different basis labeling... but perhaps this will be useful to you all the same.

Also, in the Hamiltonian you wrote down there seems to be no "k" (wave vector) dependence... was this just a typo? I.e., did you mean e^(ik.X) for T(X)?

Anyways, with reference to the cubic cell of side 'a' I chose the basis atom locations:
1) (0,0,0); 2) (0,a/2,a/2); 3) (a/2,0,a/2); 4) (a/2,a/2,0);
5) (a/4,a/4,a/4); 6) (a/4,3a/4,3a/4); 7) (3a/4,a/4,3a/4); 8) (3a/4, 3a/4,a/4).

Then after Fourier transforming with respect to the cubic lattice the hopping part of the Hamiltonian (i.e., leaving off the diagonal bit) is given by
$$H=(\vec c^\dagger_{\vec k})\cdot{\bf h}(k)\cdot{\vec c_{\vec k}}\;,$$
where
$$\vec c^\dagger_{\vec k}=(c^\dagger_{\vec k,1},c^\dagger_{\vec k,2},\ldots,c^\dagger_{\vec k,8})$$
and where
$$${\bf h}(k) = \left[ {\begin{array}{cccccccc} 0 & 0 & 0 & 0 & 1 & t_k(-\hat y-\hat z) & t_k(-\hat x-\hat z) & t_k(-\hat x-\hat y) \\ 0 & 0 & 0 & 0 & 1 & 1 & t_k(-\hat x) & t_k(-\hat x) \\ 0 & 0 & 0 & 0 & 1 & t_k(-\hat y) & 1 & t_k(-\hat y) \\ 0 & 0 & 0 & 0 & 1 & t_k(-\hat z) & t_k(-\hat z) & 1 \\ 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\ t_k(+\hat y+\hat z) & 1 & t_k(\hat y) & t_k(\hat z) & 0 & 0 & 0 & 0 \\ t_k(\hat x+\hat z) & t_k(\hat x) & 1 & t_k(\hat z) & 0 & 0 & 0 & 0 \\ t_k(\hat x+\hat y) & t_k(\hat x) & t_k(\hat y) & 1 & 0 & 0 & 0 & 0 \\ \end{array} } \right]$$$
where
$$t_k(\vec v)=e^{ia{\vec k}\cdot\vec v}\;.$$

Yes, that was a typo. Regardless, thanks for the excellent reply it helped greatly.

EDIT: Just one quick question to make sure I'm assuming right, does
$$\vec c_{\vec k,n}= e^{i \vec k \cdot \vec R_n}$$
Where $$\vec R_n$$ is a vector pointing from some origin to the atom labeled n?

Lastly, is the product
$$H=(\vec c^\dagger_{\vec k})\cdot{\bf h}(k)\cdot{\vec c_{\vec k}}$$
carried out component-wise? Because (Row Vector) * (Matrix) * (Column Vector) = (Scalar) so is it correct that row 1 of the matrix is multiplied by row 1 of the column vector etc.?

EDITEDIT:
Ignore the above. Is $$c_{\vec k,n}$$ a creation/annihilation operator? If so, should there be a phase factor between sites? I believe that otherwise my implementation is correct but I will look into it further. I don't think that $$c^\dagger_{\vec k,1}c_{\vec k,5}$$ introduces a phase factor in addition to the hopping term, but I've been wrong before. In fact, as I have it written the only time phase factors or wave vectors come into play is due to the translation vectors, or the h matrix as you have written it. This is incorrect?

Last edited:
For those interested this seems to have worked. Apparently there is something wrong with the way I generate supercells, but when I typed it out by hand it worked. Thanks.