Graphene
-
Upload
marco-santia -
Category
Documents
-
view
531 -
download
0
Transcript of Graphene
Electronic StructureExploration 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) = cA
I (~k)ΨAkI (~r) + cB
I (~k)ΨBkI (~r)
=1√N
∑j
ei~k·~Rj [cAI (~k)φ(~r− ~RA
j ) + cBI (~k)φ(~r− ~RB
j )], (2)
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:
E(k) = ±γ{
1 + 4 cos (√
3kxa2 ) cos ( kya
2 ) + 4 cos2 (kya2 )
} 12
(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 A however, for simplicity, I generated values of aky and akx 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 thelattice2. Notice the six dirac points forming a hexagonal like shape just as the carbon structure for grapheneis anticipated to.
FIG. 2: Density of States plotted over energy. Multiple singularities are found, this is a large area of studyin 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 ∑i,j
c†i cj + ∑
iεini
3
Where εi 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 c†i cj 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 |1〉, 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 = 〈ψi | H | ψj〉 (5)
The 3x3 lattice example is shown below:
εi 1 0 1 0 0 1 0 1
1 εi 1 0 1 0 0 1 0
0 1 εi 1 0 1 0 0 1
1 0 1 εi 1 0 1 0 0
0 1 0 1 εi 1 0 1 0
0 0 1 0 1 εi 1 0 1
1 0 0 1 0 1 εi 1 0
0 1 0 0 1 0 1 εi 1
1 0 1 0 0 1 0 1 εi
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 histogramplotted 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 widthW. The higher the disorder width, the lower the IPR, meaning the higher the disorder, the smaller the lengthof 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 noneinteger, allocatable, dimension(:,:) :: neighbors1, latticereal*8, allocatable, dimension(:,:) :: hamiltonian, eigenvectors, tempinteger, allocatable, dimension(:) ::latticerow, latticecolreal*8, allocatable, dimension(:) :: eigenvalues, ivpainteger n, L, x, j,m,i, n1(4),rreal*8 ran, W, IPR, IPRaopen(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 matrixcall DOS()call export()call IVP()write(30,*) W, IPRaW=W+.5
end docontainssubroutine setup()
hamiltonian(:,:) = 0.0do i=1, L
do j=1, 4hamiltonian(i, neighbors1(i,j)) = 1.0
end docall random_number(ran)hamiltonian(i,i) = (ran*W)-(W/2)
end dotemp(:,:) = hamiltonian(:,:)
end subroutine setup subroutine initialize()
print*, "Size of Lattice: "read*, nL = n**2W = .5d0allocate(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 = 1do j=1, n
do m=1, nlattice(j,m) = xlatticecol(x) = mlatticerow(x) = jx = x + 1
end doend docall 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,Lwrite(37,*) eigenvalues(i)write(40,*) int(hamiltonian(i,:)),','
!end do!write(37,*)
end doend subroutine export subroutine neighbors() !finds nearest neighbors for each point with the provided boundary conditions
integer nleft,nright,nup,ndown, splice(n), col, rown1(:) = 0do i=1, (L)
n1(1)=MODULO(i,L) + 1 !nrightn1(2)=(i+((-1*(MODULO(1,i)-1))*(L)))-1 !nleftcol = latticecol(i)row = latticerow(i)splice = lattice(:,col)n1(3) = lattice((MODULO(row,n) + 1),col) !ndownn1(4) = lattice(((row+((-1*(MODULO(1,row)-1))*(n)))-1),col) !nupneighbors1(i,:) = n1(:)
end doend subroutine neighbors subroutine DOS()
integer :: bins=20integer t, frequency(21)real*8 binwidth, emin, emax, e, avgfemax = eigenvalues(L)emin = eigenvalues(1)frequency(:) = 0binwidth = abs((emax-emin)/Dfloat(bins))do i=1, L
e = eigenvalues(i) + abs(emin)t = nint((e/(emax+abs(emin)))*Dfloat(bins)) + 1frequency(t) = frequency(t) + 1
end dodo i=1, (bins+1)
write(23,*) ((Dfloat(i)*binwidth)-binwidth-abs(emin)), frequency(i)end doavgf = sum(frequency)/21write(34,*) w, avgf
end subroutine DOS subroutine IVP()
real*8 sum1,sum2do j=1,L
sum1 = 0.d0sum2 = 0.d0do i=1,L
sum1 = sum1 + temp(j,i)**2sum2 = sum2 + temp(j,i)**4
end dosum1 = sum1**2IPR = sum1/(Dfloat(L)*sum2)ivpa(j) = IPR
end doIPRa = sum(ivpa)/Dfloat(L)
end subroutine IVPend program subroutine diasym(a,eig,n)
implicit noneinteger n,l,infreal*8, dimension(n,n) :: areal*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 eigenvaluesend subroutine diasym
File: /home/marco/Desktop/project3/Graphene/DOS.f90 Page 1 of 1
program DOSimplicit nonereal*8, dimension(50000001) :: energies, kinteger i,j,lreal*8 akx,aky,a,piopen(unit=50, file="DOSgraph.dat")l=1a = .002461pi = 3.14159265d0akx = -2500do i=1,5000
aky = -2500do j=1,5000energies(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 + 1l = l+2
end doakx = akx + 1
end docall Density()
containssubroutine Density()
integer :: bins=1000integer t, frequency(2001)real*8 binwidth, emin, emax, eemax = MAXVAL(energies)emin = MINVAL(energies)frequency(:) = 0binwidth = abs((emax-emin)/Dfloat(bins))do i=1, L
e = energies(i) + abs(emin)t = nint((e/(emax+abs(emin)))*Dfloat(bins)) + 1frequency(t) = frequency(t) + 1
end dodo 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