Supercell Tight Binding: Understanding and Troubleshooting

  • Context: Graduate 
  • Thread starter Thread starter StangeLoop
  • Start date Start date
  • Tags Tags
    Tight binding
Click For Summary
SUMMARY

The discussion centers on troubleshooting a tight binding model for silicon using an spds* orbital basis set in MATLAB. The user encounters issues with their supercell Hamiltonian, specifically an 8-atom cubic cell, while their bulk Hamiltonian functions correctly. Key points include the need for correct implementation of the lattice Fourier transform and the inclusion of wave vector dependence in the Hamiltonian. The conversation highlights the importance of benchmarking against established Hamiltonians to identify errors in code.

PREREQUISITES
  • Understanding of tight binding models in solid-state physics
  • Familiarity with MATLAB programming for computational physics
  • Knowledge of lattice Fourier transforms and their application in Hamiltonians
  • Experience with supercell constructions and periodic boundary conditions
NEXT STEPS
  • Research "Lattice Fourier Transform in Tight Binding Models" for theoretical foundations
  • Explore "MATLAB for Solid-State Physics" to enhance coding skills specific to physics applications
  • Study "Supercell Hamiltonians in Computational Physics" for practical examples and benchmarks
  • Investigate "Wave Vector Dependence in Tight Binding Models" to understand its implications in Hamiltonians
USEFUL FOR

Physicists, computational chemists, and materials scientists involved in modeling electronic properties of materials, particularly those using tight binding methods and MATLAB for simulations.

StangeLoop
Messages
3
Reaction score
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:

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):

<br /> \[<br /> H =<br /> \left[ {\begin{array}{cccccccc}<br /> D &amp; T(u) &amp; 0 &amp; T(x) &amp; 0 &amp; T(v) &amp; 0 &amp; T(w) \\<br /> T(-u) &amp; D &amp; T(-x) &amp; 0 &amp; T(-v) &amp; 0 &amp; T(-w) &amp; 0 \\<br /> 0 &amp; T(x) &amp; D &amp; T(u) &amp; 0 &amp; T(w) &amp; 0 &amp; T(v) \\<br /> T(-x) &amp; 0 &amp; T(-u) &amp; D &amp; T(-w) &amp; 0 &amp; T(-v) &amp; 0 \\<br /> 0 &amp; T(v) &amp; 0 &amp; T(w) &amp; D &amp; T(u) &amp; 0 &amp; T(x) \\<br /> T(-v) &amp; 0 &amp; T(-w) &amp; 0 &amp; T(-u) &amp; D &amp; T(-x) &amp; 0 \\<br /> 0 &amp; T(w) &amp; 0 &amp; T(v) &amp; 0 &amp; T(x) &amp; D &amp; T(u) \\<br /> T(-w) &amp; 0 &amp; T(-v) &amp; 0 &amp; T(-x) &amp; 0 &amp; T(-u) &amp; D \\<br /> \end{array} } \right]<br /> \]<br />
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.
 
Physics news on Phys.org
StangeLoop said:
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
<br /> H=(\vec c^\dagger_{\vec k})\cdot{\bf h}(k)\cdot{\vec c_{\vec k}}\;,<br />
where
<br /> \vec c^\dagger_{\vec k}=(c^\dagger_{\vec k,1},c^\dagger_{\vec k,2},\ldots,c^\dagger_{\vec k,8})<br />
and where
<br /> \[<br /> {\bf h}(k) =<br /> \left[ {\begin{array}{cccccccc}<br /> 0 &amp; 0 &amp; 0 &amp; 0 &amp; 1 &amp; t_k(-\hat y-\hat z) &amp; t_k(-\hat x-\hat z) &amp; t_k(-\hat x-\hat y) \\<br /> 0 &amp; 0 &amp; 0 &amp; 0 &amp; 1 &amp; 1 &amp; t_k(-\hat x) &amp; t_k(-\hat x) \\<br /> 0 &amp; 0 &amp; 0 &amp; 0 &amp; 1 &amp; t_k(-\hat y) &amp; 1 &amp; t_k(-\hat y) \\<br /> 0 &amp; 0 &amp; 0 &amp; 0 &amp; 1 &amp; t_k(-\hat z) &amp; t_k(-\hat z) &amp; 1 \\<br /> 1 &amp; 1 &amp; 1 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 \\<br /> t_k(+\hat y+\hat z) &amp; 1 &amp; t_k(\hat y) &amp; t_k(\hat z) &amp; 0 &amp; 0 &amp; 0 &amp; 0 \\<br /> t_k(\hat x+\hat z) &amp; t_k(\hat x) &amp; 1 &amp; t_k(\hat z) &amp; 0 &amp; 0 &amp; 0 &amp; 0 \\<br /> t_k(\hat x+\hat y) &amp; t_k(\hat x) &amp; t_k(\hat y) &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 \\<br /> \end{array} } \right]<br /> \]<br />
where
<br /> t_k(\vec v)=e^{ia{\vec k}\cdot\vec v}\;.<br />
 
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
<br /> \vec c_{\vec k,n}= e^{i \vec k \cdot \vec R_n}<br />
Where \vec R_n is a vector pointing from some origin to the atom labeled n?

Lastly, is the product
<br /> H=(\vec c^\dagger_{\vec k})\cdot{\bf h}(k)\cdot{\vec c_{\vec k}}<br />
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.
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
Replies
0
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 0 ·
Replies
0
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 7 ·
Replies
7
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 7 ·
Replies
7
Views
3K