Sei sulla pagina 1di 12

Electronic Structure

Exploration of the Tight Binding model for Graphene and the Anderson Model

By Marco Santia

Introduction
Electronic Band structures describe the allowed energy ranges that an electron may have in a
solid. To demonstrate Band Structure and how exactly it can be provide useful information to
Solid-State physics, I will show a few well known models. The Tight Binding model is a well
known model used to calculate band structures using sets of superpositioned wave functions for
isolated atoms at each site in a lattice. As its name suggests, its a quantum mechanical model
describing the properties of tightly bound electrons. To formulate the Tight Binding calculations,
we must exploit the method of LCAO (Linear Combination of Atomic Orbitals) which will give us
approximate solutions to the time-independent Schrodinger equations. However, the periodicity
of the lattice tells us that the wave function can only change by a phase factor, therefore the LCAO
approximation can be represented by the familiar Bloch wave.

ψ(r + R` ) = eik· R` ψ(r ) (1)

The Bloch wave function is essentially where all of tight binding comes from, this will be shown
in the first example of tight binding: Graphene. We will also demonstrate the tight binding model
in the Anderson Model.
Graphene
Graphene is a very interesting case of tight binding to study, this is due to its abstract shape.
Graphene is actually a material which just recently has collected a lot of attention, as it has de-
fied previously thought laws of thermodynamics. We will be demonstrating with a honeycomb
hexagonal shaped lattice of carbon atoms which means there will be two atoms per unit cell. This
of course changes the approximation made from LCAO and thus the Bloch wave formulation.
Generalized for two atoms per unit cell, Graphene’s wave function can be modeled as follows:

ΨkI (~r ) = c A ~ Ak B ~
I ( k ) Ψ I (~r ) + c I ( k ) Ψ I (~r )
Bk

1
= √ ∑ ei k · R j [ c A
~ ~ ~ B ~
~A ~B
I ( k ) φ (~r − R j ) + c I ( k ) φ (~r − R j )], (2)
N j

1
here N is the number of elementary cells, and the functions φ(~r ) are the wave-functions of the pz
orbitals of the carbon atoms. Pz orbitals stay seperated from the rest of the orbitals in this struc-
ture and are responsible for the π and π ∗ bands which will be shown in the band structure plots.
The remaining orbitals will form a hybridization sp2 responsible for the σ-bonds3 . These are the
bonds that keep nearest neighbors together in the lattice. Now to calculate band structure, we of
course wish to find all the possible energies. For this we must derive a dispersion relation. To do
so we must solve for a hamiltonian using the bloch wave functions shown previously. The Hamil-
tonian for this will already be in k-space due to the properties of the Bloch wave. It has already
accounted for the fourier transformation of the wave function. This means the construction of the
Hamiltonian (all hopping parameters t will be set to 1) will be all that is needed, this and of course
to diagonalize the matrix and find the dispersion relations based on the energy eigenvalues of the
Hamiltonian. This is found to be1 :

n √ o 12
E(k ) = ±γ 1 + 4 cos ( 3k2 x a ) cos ( k2y a ) + 4 cos2 ( k2y a ) (3)

Where γ represents a parameter of the system, in my calculations I used a γ value of -2.7 eV.
Using this dispersion relation, we can now plot the band structure using mathematica and analyze
the physical relevance. This was done and the plots found are shown in FIG. 1. The lattice constant
a was 2.461 Å however, for simplicity, I generated values of ak y and ak x individually over the range
[-4,4].
Analyzing this band structure, we see the honeycomb lattice as expected and we see the two
bands. The upper band being the conduction band while the lower band is the valence band. The
valence band consists of the energies for electrons that are bound to their cell while the conduction
electrons can roam throughout the lattice structure. Notice the six points in which the bands
are closest. These points are called dirac points, these points are when the electrons behave like
relativistic particles described by the Dirac equation. Density of States was now calculated and
graphed as well. This is an important parameter to graph as physical data is derived from the
density of states for a structure. This can be seen on figure 2.
The density of states here is very abstract, we notice two singularities, formally known as Van
Hove signularities. The wavevectors at which Van Hove singularities occur are often referred to
as critical points of the Brillouin zone.

2
FIG. 1: Energy Bands for Graphene dispersion with γ set to be 1 eV for simplicity. The upper band repre-
sents the π ∗ and the lower π. These determine the conduction and valence bands of the electrons in the
lattice2 . Notice the six dirac points forming a hexagonal like shape just as the carbon structure for graphene
is anticipated to.

FIG. 2: Density of States plotted over energy. Multiple singularities are found, this is a large area of study
in Solid-State Physics known as Van Hove singularities.

Anderson Model
We now evaluate a more simplistic case of Tight Binding. The case of a 2 dimensional square
lattice where only nearest neighbor effects are needed. This is modeled by what is known as the
Anderson Model4

H = t ∑ ci† c j + ∑ ei ni
i,j i

3
Where ei the ramdomly generate site energy. Previously, we never considered a possible disorder
energy at the site of the electron. Now we generate a random energy on the scale [-W/2,W/2]
where W is equal to the disorder width. We will set this in the Fortran90 program I have written
and alter it as needed for data analysis. The ci† c j represent the creation and annhilation operators,
just as in the quantum harmonic oscillator, these are ladder operators. Ci represents annhilation,
for example say we have a state |1i, when the annhilation operator acts on such a state, it becomes
a vacuum state. The same concept applies on a vacuum states in reverse when applying the
creation operator. The number operator is represented by ni and it is the product of the creation
and annhilation operators. Its value is one for our case. For this 2-D example, we will need to
consider periodic boundary conditions. In its simplest form we can state the hamiltonian to be as
follows:

Hij = hψi | H | ψj i (5)

The 3x3 lattice example is shown below:


 
 ei 1 0 1 0 0 1 0 1 
 
1 e 1 0 1 0 0 1 0
 i 
 
0 1 ei 1 0 1 0 0 1 
 
 
1 0 1 ei 1 0 1 0 0 
 
 
0 1 0 1 ei 1 0 1 0
 
 
 
0 0 1 0 1 ei 1 0 1
 
 
1 0 0 1 0 1 ei 1 0
 
 
0 1 0 0 1 0 1 ei 1
 
 
1 0 1 0 0 1 0 1 ei

With this we can generate an entire matrix and then simply add the random energies along the
diagonal. After diagonalization of this matrix, the energy eigenvalues will be output. The hamil-
tonian will have a 1 at every ij index that represents a nearest neighbor with the given periodic

4
FIG. 3: Density of states for Anderson model of a 40x40 lattice for different W compared with a histogram
plotted in mathematica.

conditions. This was all done in fortran90, refer to the subroutine ”neighbors” on the attached
code for the algorithm used. For efficiency, it was done without the use of any logical operators.
The Hamiltonian was formulated and for a 3x3 lattice for example would be as shown above. We
can see this matrix is symmetric, and in the case of our calculation, it will be sparse as well. Using
a freely distributed algorithm from LAPACK (linear algebra library for fortran 77/90). This library
contained subroutines that were able to output the eigenvalues and the eigenvectors of the input
matrix. This was specifically designed for sparse, symmetric matrices which was the case for our
hamiltonian. After finding the energy eigenvalues, we now find the density of states for multiple
disorder widths W. This is shown below4 .
We see a high level of consistency between the fortran code and the mathematica. The
histogram produced was only for the original disorder width of W = .5. The mathematica
and fortran codes are both included for reference. The last quantity calculated was the in-
verse partiticipation ratio. This is a ratio given by the sum of the squares of all the wave
functions squared over the sum of the wave functions to the fourth. Thus the inverse participa-
tion ratio is related to the localization length4 . It is shown in the figure on the top of the next page.

Conclusion
Throughout all the calculations there was a high level of consistensy between fortran and
mathematica. The band structures physical properties all corresponded to the ouput accurately.

5
FIG. 4: Inverse Participation Ratio averaged over all of the eigenvectors as a function of the disorder width
W. The higher the disorder width, the lower the IPR, meaning the higher the disorder, the smaller the length
of the localization is. Less will be localized as W increases.

To further investigate this subject one could read more into the quantum hall effect and how it
effects tight binding, Landau levels and the IPR and how exactly it effects the localization.

1 Pierre Delhas. Graphite and precursors. CRC Press, USA, 2000.


2 Charles Kittel. Introduction to Solid-State Physics. Wiley-Interscience, USA, 2004.
3 J. Maultzsch S. Reich and C. Thomsen. Tight-binding description of graphene. PHYSICAL REVIEW B, 6,
2002.
4 D Weaire and C Hodges. Anderson localisation and the recursion method. J. Phys. C: Solid State Phys,
11(2), 1978.

6
File: /home/marco/Desktop/project3/Anderson/bind.f90 Page 1 of 3

!Marco Santia
!PHY480 Project 3 -- Tight Binding Model

program tightbinding
implicit none
integer, allocatable, dimension(:,:) :: neighbors1, lattice
real*8, allocatable, dimension(:,:) :: hamiltonian, eigenvectors, temp
integer, allocatable, dimension(:) ::latticerow, latticecol
real*8, allocatable, dimension(:) :: eigenvalues, ivpa
integer n, L, x, j,m,i, n1(4),r
real*8 ran, W, IPR, IPRa
open(unit=37, status = 'replace', file="eigenvalues.dat")
open(unit=40, status = 'replace', file="hamiltonian.csv")
open(unit=23, file="DOS2.dat")
open(unit=30, file="IVP1.dat")
open(unit=34, file="DOSW.dat")
call initialize()
call random()
do r=1,10
call setup()
call diasym(temp,eigenvalues,L) !finds the eigenvalues of the matrix
call DOS()
call export()
call IVP()
write(30,*) W, IPRa
W=W+.5
end do
contains
subroutine setup()
hamiltonian(:,:) = 0.0
do i=1, L
do j=1, 4
hamiltonian(i, neighbors1(i,j)) = 1.0
end do
call random_number(ran)
hamiltonian(i,i) = (ran*W)-(W/2)
end do
temp(:,:) = hamiltonian(:,:)
end subroutine setup

subroutine initialize()
print*, "Size of Lattice: "
read*, n
L = n**2
W = .5d0
allocate(lattice(n,n))
allocate(latticerow(L))
allocate(latticecol(L))
allocate(ivpa(L))
allocate(eigenvalues(L))
allocate(neighbors1(L,4))
allocate(hamiltonian(L,L))
allocate(temp(L,L))
allocate(eigenvectors(L,L))
x = 1
do j=1, n
do m=1, n
lattice(j,m) = x
latticecol(x) = m
latticerow(x) = j
x = x + 1
end do
end do
call neighbors()
!call export()
end subroutine initialize
File: /home/marco/Desktop/project3/Anderson/bind.f90 Page 2 of 3

subroutine export()
do i=1, (L)
!do j=1,L
write(37,*) eigenvalues(i)
write(40,*) int(hamiltonian(i,:)),','
!end do
!write(37,*)
end do
end subroutine export

subroutine neighbors() !finds nearest neighbors for each point with the provided boundary conditions
integer nleft,nright,nup,ndown, splice(n), col, row
n1(:) = 0
do i=1, (L)
n1(1)=MODULO(i,L) + 1 !nright
n1(2)=(i+((-1*(MODULO(1,i)-1))*(L)))-1 !nleft
col = latticecol(i)
row = latticerow(i)
splice = lattice(:,col)
n1(3) = lattice((MODULO(row,n) + 1),col) !ndown
n1(4) = lattice(((row+((-1*(MODULO(1,row)-1))*(n)))-1),col) !nup
neighbors1(i,:) = n1(:)
end do
end subroutine neighbors

subroutine DOS()
integer :: bins=20
integer t, frequency(21)
real*8 binwidth, emin, emax, e, avgf
emax = eigenvalues(L)
emin = eigenvalues(1)
frequency(:) = 0
binwidth = abs((emax-emin)/Dfloat(bins))
do i=1, L
e = eigenvalues(i) + abs(emin)
t = nint((e/(emax+abs(emin)))*Dfloat(bins)) + 1
frequency(t) = frequency(t) + 1
end do
do i=1, (bins+1)
write(23,*) ((Dfloat(i)*binwidth)-binwidth-abs(emin)), frequency(i)
end do
avgf = sum(frequency)/21
write(34,*) w, avgf
end subroutine DOS

subroutine IVP()
real*8 sum1,sum2
do j=1,L
sum1 = 0.d0
sum2 = 0.d0
do i=1,L
sum1 = sum1 + temp(j,i)**2
sum2 = sum2 + temp(j,i)**4
end do
sum1 = sum1**2
IPR = sum1/(Dfloat(L)*sum2)
ivpa(j) = IPR
end do
IPRa = sum(ivpa)/Dfloat(L)
end subroutine IVP
end program

subroutine diasym(a,eig,n)
implicit none
integer n,l,inf
real*8, dimension(n,n) :: a
real*8 eig(n),work(n*(3+n/2))
File: /home/marco/Desktop/project3/Anderson/bind.f90 Page 3 of 3

l=n*(3+n/2)
call dsyev('V','U',n,a,n,eig,work,l,inf) !call to LAPACK external linear algebra library, returns
sorted eigenvalues
end subroutine diasym
File: /home/marco/Desktop/project3/Graphene/DOS.f90 Page 1 of 1

program DOS
implicit none
real*8, dimension(50000001) :: energies, k
integer i,j,l
real*8 akx,aky,a,pi
open(unit=50, file="DOSgraph.dat")
l=1
a = .002461
pi = 3.14159265d0
akx = -2500
do i=1,5000
aky = -2500
do j=1,5000
energies(l) = sqrt(1+4.d0*cos(sqrt(3.d0)*(aky)*.5)*cos((akx)*.5)+ 4.d0*cos((akx)*.5)**2)
energies(l+1) = -sqrt(1+4.d0*cos(sqrt(3.d0)*(aky)*.5)*cos((akx)*.5)+ 4.d0*cos((akx)*.5)
**2)
aky = aky + 1
l = l+2
end do
akx = akx + 1
end do
call Density()

contains
subroutine Density()
integer :: bins=1000
integer t, frequency(2001)
real*8 binwidth, emin, emax, e
emax = MAXVAL(energies)
emin = MINVAL(energies)
frequency(:) = 0
binwidth = abs((emax-emin)/Dfloat(bins))
do i=1, L
e = energies(i) + abs(emin)
t = nint((e/(emax+abs(emin)))*Dfloat(bins)) + 1
frequency(t) = frequency(t) + 1
end do
do i=1, (bins+1)
write(50,*) ((Dfloat(i)*binwidth)-binwidth-abs(emin)), frequency(i)
end do
end subroutine Density

end program DOS


vbands = J- SqrtB1 + 4 * CosB 3 * aky * .5F * Cos@akx * .5D + 4 * Cos@akx * .5D ^ 2FN;

cbands = JSqrtB1 + 4 * CosB 3 * aky * .5F * Cos@akx * .5D + 4 * Cos@akx * .5D ^ 2FN;

Plot3D@8cbands, vbands<, 8akx, - 5, 5<, 8aky, - 5, 5<, PlotPoints ® 50, Mesh ® NoneD
2 Energy Dispersion.nb

Potrebbero piacerti anche