- #1
StangeLoop
- 3
- 0
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:
[tex]E(k) = \sum_{R, \tau} E(r) e^{i k \cdot R} e^{i k \cdot \tau}[/tex]
where [tex]\tau[/tex] 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):
[tex]
\[
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]
\]
[/tex]
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 [tex]\exp(i \cdot X)[/tex], 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.
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:
[tex]E(k) = \sum_{R, \tau} E(r) e^{i k \cdot R} e^{i k \cdot \tau}[/tex]
where [tex]\tau[/tex] 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):
[tex]
\[
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]
\]
[/tex]
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 [tex]\exp(i \cdot X)[/tex], 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.