11 [5-6]

advertisement
Energy Bands and Gaps in Periodic Solids
The Kronig Penney Model
The Kronig-Penney model is a simple one-dimensional model that illustrates the formation of energy bands
and gaps.
Lattice periodicity
Consider a simple one-dimensional model of a crystal. N heavy nuclei at fixed at lattice sites with lattice
spacing a. The much lighter atomic electrons move in a potential V (x) due to the fixed lattice of ions.
x=0
x=a
x = Na
V(x)
Figure 1: Simple model of the potential seen by a conduction electron in a one-dimensional crystal.
Fig.1 shows a crude approximation to the Coulomb forces: a periodic finite square well potential that is
attractive near the nuclei.
To make the problem well-defined, we need to specify what happens at the boundaries x = 0 and x = N a
of the lattice. Periodic boundary conditions best approximate an macroscopically large (infinite) crystal.
We suppose that all functions of x are periodic, i.e., f (x + N a) = f (x).
Reciprocal space
It is useful to be able to work in momentum (or wave-number) space and expand functions of x in a
Fourier series
X
f (x) =
eikx fk ,
(1)
k
where fk are Fourier coefficients. Periodic boundary conditions restrict the possible values of k:
eik(x+N a) = eikx
⇒
k=
2πn
, where n = 0, ±1, ±2, . . .
Na
(2)
The crystal lattice can be generated by taking a lattice point and translating it by a vector
R = na , where a = ax̂ , and n = 0, ±1, ±2, . . . ,
(3)
where x̂ is a unit vector in the +x direction. The vector a is a basis vector of the lattice, and it defines a
unit cell. The reciprocal lattice is similarly defined by a basis vector b which satisfies
a · b = 2π
that is
b = (2π/a)x̂ .
(4)
The reciprocal lattice points are given by the wave vectors
K = nb , where n = 0, ±1, ±2, . . .
1
(5)
The wavenumbers k that are smaller in magnitude than 21 b =
k = 0, ±
π
a
constitute the first Brillouin zone:
2π
4π
6π
(N − 1)π π
,±
,±
,... ±
, .
Na Na Na
Na
a
(6)
A general wave number q can be decomposed into a wave number k in the first Brillouin zone, and a wave
number of the reciprocal lattice
q =k+K .
(7)
Bloch’s theorem
Since the lattice potential V (x) is periodic, it can be expanded in a Fourier series
X
V (x) =
eiKx VK ,
(8)
K
over the reciprocal lattice vectors K. The wave function of an electron in an energy eigenstate obeys
−
h̄2 d2 ψ
+ V (x)ψ(x) = Eψ(x) .
2m dx2
(9)
Expand ψ in a Fourier series
ψ(x) =
X
eiqx Cq =
q
X
ei(k+K)x Ck+K ,
(10)
K,k
and plug into Schrödinger’s equation using units in which h̄2 /m = 1
X
X 1
X
0
2
i(k+K)x
(k + K) − E e
Ck+K +
VK 0
ei(k+K+K )x Ck+K = 0 .
2
0
K
K,k
(11)
K,k
Since K and K 0 are both reciprocal lattice vectors, we can make a change of summation variable
K + K 0 → K:
)
(
X
X
1
(k + K)2 − E Ck+K +
VK−K 0 Ck+K 0 = 0 .
ei(k+K)x
2
0
(12)
K
K,k
Since the Fourier functions eiqx = ei(k+K)x are linearly independent,
X
1
(k + K)2 − E Ck+K +
VK−K 0 Ck+K 0 = 0 .
2
0
(13)
K
This is very interesting: it shows that modes Ck+K with different wave numbers k in the first Brillouin
zone decouple from one another! Another way of stating this is to note that the eigenstates of the system
are of the form
X
ψk (x) = eikx
eiKx Ck+K = eikx uk (x) ,
(14)
K
where
uk (x + na) = uk (x) ,
is a periodic function of x with the lattice periodicity. This important result is called Bloch’s Theorem.
2
(15)
Band structure
The eigenvalue equation
X
1
(k + K)2 − E Ck+K +
VK−K 0 Ck+K 0 = 0 .
2
0
(16)
K
for a given first Brillouin zone wave vector k can be solved as a matrix eigenvalue equation given the
Fourier coefficients VK of the periodic potential. The matrix involved is actually infinite dimensional, so
approximations may have to be made to solve it in practice. There will be a discrete spectrum of states for
each value of k. Consider any one of this spectrum of states as a function of k as it varies over the first
Brillouin zone: this set of states is called a band. Thus the spectrum of the system consists of an infinite
number of bands.
The reciprocal space equation above allows one approach to finding the band structure of a crystalline solid.
Another approach is to use the Bloch theorem decompostion
ψk (x) = eikx uk (x) ,
(17)
and solve Schrödinger’s equation in position space by direct integration of the differential equation in a
single unit cell of the lattice, say in the interval 0 ≤ x < a. This is sufficient since uk (x) is periodic! To
solve Schrödinger’s differential equation we need of course to apply boundary conditions. These are also
determined by Bloch’s theorem
uk (a) = e−ika uk (0) .
(18)
Band structure in the Kronig-Penney Model
Suppose the potential in a single unit cell of the periodic lattice in Fig. 1 be given by


for − a2 < x < − ∆
0
2
∆
,
V (x) = V0 for − ∆
<
x
<
2
2


∆
a
0
for 2 < x < 2
(19)
where a is the lattice spacing, and ∆ is width of the potential barrier of height V0 in the regions between
the positive ions. Negative V0 corresponds to a potential well.
Between barriers (or wells) the wave function is of the form
ψ(x) = An eiq(x−na) + Bn e−iq(x−na) ,
where q =
√
2E and n is an integer labeling the cell. Inside the barriers (or wells),
ψ(x) = Cn eiκ(x−na) + Dn e−iκ(x−na) ,
where κ =
(20)
p
(21)
2(E − V0 ).
The coefficients An , Bn , Cn , Dn are determined by matching ψ and dψ/dx at the edges of the barriers (or
wells). Successive coefficients are related by
An+1
An
= T(E)
,
(22)
Bn+1
Bn
where T(E) is a 2 × 2 transfer matrix.
3
It is straightforward to compute the tranfer matrix elements:
∗
T11 = T22
∗
T12 = T21
eiq(a−∆) iκ∆
e (q + κ)2 − e−iκ∆ (q − κ)2 ,
4qκ
ieiq(a−∆) 2
= −
(q − κ2 ) sin(κ∆) .
2qκ
(23)
=
(24)
From Bloch’s theorem, the eigenvalues of the transfer matrix must be of the form eika where k is a reduced
wave number in the first Brillouin zone. A 2 × 2 matrix is easy to diagonalize: set
det T − eika 1 = 0 .
(25)
This yields a quadratic equation which has two solutions for k(E) equal in magnitude and opposite in sign.
C++ Program to Solve the Kronig-Penney Model
The following program solves for the 2 × 2 matrix eigenvalue problem. Fig. 2 shows a plot of the resulting
band structure.
30
a=1, V0=-5, Delta=0.2
a=1, V0=0, Delta=
25
Energy E
20
15
10
5
0
-4
-3
-2
-1
0
1
Reduced wave number k
2
3
4
Figure 2: band structure of the Kronig-Penney model for a√= 1, V0 = −5 and barrier width ∆ = 0.2. The
figure also shows the free-particle (parabolic) bands q(E) = 2E folded back into the first Brillouin zone.
Program 1:
http://www.physics.buffalo.edu/phy410-505/topic5/kronig-penney.cpp
#include <cmath>
#include <complex>
#include <fstream>
4
#include <iostream>
using namespace std;
double a = 1;
double V_0 = -5;
double Delta = 0.2;
// size of unit cell - lattice spacing
// height of potential barrier
// width of potential barrier
void solve (
const double E,
complex<double> k[]
) {
// to solve 2x2 eigenvalue problem
// desired energy E
// two possible solutions
double q = sqrt(2*E);
double kappa = sqrt(2*(E-V_0));
complex<double> i(0,1), T11, T12, T21, T22;
T11 = exp(i * q * (a - Delta)) / (4 * q * kappa)
* (exp(i * kappa * Delta) * (q + kappa) * (q + kappa)
- exp(- i * kappa * Delta) * (q - kappa) * (q - kappa));
T22 = conj(T11);
T12 = - i * exp(i * q * (a - Delta)) / (2 * q * kappa)
* (q * q - kappa * kappa) * sin(kappa * Delta);
T21 = conj(T12);
// solve quadratic determinatal equation
complex<double> b = - (T11 + T22);
complex<double> c = (T11 * T22 - T12 * T21);
k[0] = (- b + sqrt(b * b - 4.0 * c)) / 2.0;
k[1] = (- b - sqrt(b * b - 4.0 * c)) / 2.0;
for (int j = 0; j < 2; j++)
k[j] = log(k[j]) / (i * a);
}
int main ( ) {
const double pi = 4 * atan(1.0);
double dE = 0.01;
double E = dE;
ofstream file("band.data");
for (int i = 0; i < 3000; i++) {
complex<double> q[2];
solve(E, q);
double rq = real(q[0]);
if (rq > 0 && rq < pi/a) {
file << rq << ’\t’ << E << ’\n’;
file << -rq << ’\t’ << E << ’\n’;
}
rq = real(q[1]);
if (rq > 0 && rq < pi/a) {
file << rq << ’\t’ << E << ’\n’;
5
file << -rq << ’\t’ << E << ’\n’;
}
E += dE;
}
file.close();
file.open("band0.data");
V_0 = 0;
E = dE;
for (int i = 0; i < 3000; i++) {
complex<double> q[2];
solve(E, q);
double rq = real(q[0]);
if (rq > 0 && rq < pi/a) {
file << rq << ’\t’ << E << ’\n’;
file << -rq << ’\t’ << E << ’\n’;
}
rq = real(q[1]);
if (rq > 0 && rq < pi/a) {
file << rq << ’\t’ << E << ’\n’;
file << -rq << ’\t’ << E << ’\n’;
}
E += dE;
}
file.close();
}
Band Structure for a General Periodic Potential
The computation of band structure for the Kronig-Penney model with a square potential barrier in each
unit cell relied on using exact solutions in each region of constant potential. Linear combinations of two
independent solutions were matched at each potential step, and this led to a 2 × 2 eigenvalue problem to
determine the Bloch wavenumber k as a function of the energy E.
A similar 2 × 2 matrix diagonalization can be used for an arbitrary potential V (x) in the unit cell. Given a
value of the energy E, any two independent solutions of the Schrödinger equation in the cell can be found
numerically if they are not available analytically, and Bloch wavefunctions can be constructed as linear
combinations with appropriately chosen coefficients.
The Wronskian of any two solutions φ(x), ψ(x) of the Schrödinger equation is
W (φ, ψ) ≡
φ(x) ψ(x)
= φ(x)ψ 0 (x) − φ0 (x)ψ(x) ,
φ0 (x) ψ 0 (x)
(26)
where a prime denotes the derivative with respect to x. The derivative of the Wronskian of two solutions
with different energies is
2m
dW (ψ1 , ψ2 )
= ψ1 ψ200 − ψ100 ψ2 = 2 (E1 − E2 )ψ1 ψ2 ,
dx
h̄
6
(27)
which shows that the Wronskian of any two solutions with the same energy is constant and independent of
x. It can be shown that two solutions two solutions are linearly independent if the Wronskian is non-zero
at some point x.
Now consider the two Bloch functions
ψE,±k (x) = e±kx u±k (x) ,
u±k (x) = u±k (x + a) ,
(28)
with energy E and momentum k in the first Brillouin zone, where a is the lattice spacing and size of the
unit cell.
To find the dispersion relation E(k) and the Bloch functions u±k (x) numerically, we will generate two
linearly independent solutions with energy E
φ1 (x) = A1 ψE,+k (x) + B1 ψE,−k (x) ,
0
0
φ01 (x) = A1 ψE,+k
(x) + B1 ψE,−k
(x) ,
(29)
φ2 (x) = A2 ψE,+k (x) + B2 ψE,−k (x) ,
0
0
φ02 (x) = A2 ψE,+k
(x) + B2 ψE,−k
(x) .
(30)
It is easy to solve for the coefficients using Wronskians:
Ai =
W (φi , ψ− )
,
W (ψ+ , ψ− )
Bi = −
W (φi , ψ+ )
,
W (ψ+ , ψ− )
(31)
where ψ± ≡ ψE,±k .
A simple choice of initial conditions at x = 0 that yields linearly independent solutions is
φ1 (0) = 1 ,
φ2 (0) = 0 ,
φ01 (0) = 0 ,
1
φ01 (0) = ,
a
⇒
⇒
0
W (φ1 , ψ± ) = ψ±
(0) ,
1
W (φ2 , ψ± ) = − ψ± (0) .
a
(32)
(33)
With these initial conditions, φ1.2 (x) can be integrated numerically across a unit cell and evaluated at
x = a using the periodicity of the Bloch wavefunctions:
0
0
eika ψ+ (0)ψ−
(0) − e−ika ψ+
(0)ψ− (0)
W (ψ+ , ψ− )
0
0
(0)ψ− (0)
(0) + ψ+
ψ+ (0)ψ−
,
= cos(ka) + i sin(ka)
W (ψ+ , ψ− )
0
0
(0)ψ− (0) + e−ika ψ−
(0)ψ+ (0)
−eika ψ+
0
0
φ02 (a) = A2 ψ+
(a) + B2 ψ−
(a) =
aW (ψ+ , ψ− )
0
0
ψ+ (0)ψ−
(0) + ψ+
(0)ψ− (0)
1
=
cos(ka) − i sin(ka)
.
a
W (ψ+ , ψ− )
φ1 (a) = A1 ψ+ (a) + B1 ψ− (a)
=
(34)
(35)
Thus the Bloch momentum k can be determined numerically from the dispersion relation
2 cos(ka) = φ1 (a) + aφ02 (a) ,
which can be solved for
k(E) = cos−1
φ1 (a) + aφ02 (a)
≡ cos−1 [f (E)] .
2a
(36)
(37)
Note that integration of the Schrödinger equation with real initial values at x = 0 will yield a real value for
f (E). If |f (E)| ≤ 1, there will be two solutions for k with opposite signs corresponding to two independent
7
Bloch states in a conduction band. Otherwise, there are no normalizable Bloch states and the energy E lies
in a band gap.
The periodic Bloch wavefunctions ψ±k (x) can be expressed as linear superpositions of the numerical
solutions
W (φ2 , ψ± )
W (φ1 , ψ± )
ψ±k (x) =
φ1 (x) +
φ2 (x) .
W (φ2 , φ1 )
W (φ1 , φ2 )
(38)
The Wronskian coefficients in the superpostions are independent of x and can be simplified for the
particular boundary conditions by evaluating them at the two boundaries of the unit cell.
W (φ1 , φ2 ) = φ1 (0)φ02 (0) − φ01 (0)φ2 (0) =
1
= φ1 (a)φ02 (a) − φ01 (a)φ2 (a) .
a
0
0
W (φi , ψ± ) = φi (0)ψ±
(0) − φ0i (0)ψ± (0) = φi (a)ψ±
(a) − φ0i (a)ψ± (a) .
(39)
(40)
Using the periodicity of the Bloch functions
The Bloch wavefunctions are thus determined by the numerical solutions up to a multiplicative constant:
±ika
e
− φ1 (a)
φ2 (x) .
(41)
ψ±k (x) = ψ±k (0) φ1 (x) +
φ2 (a)
These solutions evidently satisfy the Bloch boundary conditions at the left and right ends of the unit cell.
C++ Program for Bloch States
Program 2:
http://www.physics.buffalo.edu/phy410-505/topic5/bloch.cpp
#include <cmath>
#include <complex>
#include <cstdlib>
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
#include "linalg.hpp"
#include "odeint.hpp"
using namespace cpl;
const double pi = 4 * atan(1.0);
double a = 1;
// size of unit cell
// potential functions
double V_0 = -5;
double Delta = 0.2;
// height of potential barrier
// width of potential barrier
const int
cutoff_coulomb = 0,
sine_step = 1,
// coulomb with cutoff at ion core radius
// sine in first half, step in second
8
kronig_penney = 2,
free_particle = 3;
int potential_type;
// as in kronig-penney.cpp
// defaults to 0 = cutoff_coulomb;
const string potential_name[] = {
"Cutoff Coulomb",
"Sine Step",
"Kronig-Penney",
"Free Particle"
};
double V(
const double x
) {
double dx = x - a / 2;
// displacement from center of cell
if (potential_type == cutoff_coulomb) {
dx = abs(dx);
if (dx < Delta / 2)
return V_0;
else
return V_0 *
(Delta / 2) / dx;
// symmetric about center of cell
// inside ion core
// potential is constant
// value at core radius
// Coulomb 1/r outside ion core
} else if (potential_type == sine_step) {
if (dx < a / 2) {
return V_0 *
sin(2 * pi * dx / a);
} else {
if (abs(dx - a / 4)
< Delta / 2)
return V_0;
return 0;
}
} else if (potential_type ==
dx = abs(dx);
if (dx < Delta / 2)
return V_0;
return 0;
//
//
//
//
//
//
//
//
left half of cell
height of barrier
inverted (dx < 0) half sine wave
right half of cell
distance from center of barrier
less than 1/2 barrier width
inside barrier
outside barrier
kronig_penney) {
//
//
//
//
symmetric about center of cell
inside step
barrier height
outside barrier
}
return 0;
// default to free particle
}
double E;
// current value of energy
9
// flow function for Runge-Kutta integration across unit cell
vector<double> flow(
const vector<double> &y
) {
double x = y[0], phi = y[1], d_phi_dx = y[2];
vector<double> f(3);
f[0] = 1;
f[1] = d_phi_dx;
f[2] = 2 * (V(x) - E) * phi;
return f;
}
void find_bloch_momentum(
const double E,
bool &in_band,
double &k
) {
// desired energy level - input
// set true if in band, false if in gap - output
// value of Bloch momentum if in band - output
// set global value of energy from input argument
::E = E;
// first fundamental solution
vector<double> y_1(3);
double x = 0, psi = 1, psi_prime = 0;
y_1[0] = x;
y_1[1] = psi;
y_1[2] = psi_prime;
RK4 rk4;
rk4.integrate(flow, y_1, a);
// second fundamental solution
vector<double> y_2(3);
x = 0, psi = 0, psi_prime = 1/a;
y_2[0] = x;
y_2[1] = psi;
y_2[2] = psi_prime;
rk4.integrate(flow, y_2, a);
// find k from dispersion relation
double f = (y_1[1] + a * y_2[2]) / (2 * a);
if (abs(f) <= 1) {
in_band = true;
k = acos(f);
} else {
in_band = false;
}
}
int main() {
10
cout << " Band Structure in 1-D For General Potential\n"
<< " -------------------------------------------\n"
<< " Enter potential type 0, 1, 2, or 3: ";
cin >> potential_type;
cout << " Potential type = " << potential_name[potential_type] << endl;
cout << " Enter E_min, E_max, and number of levels: ";
double E_min, E_max;
int n_levels;
cin >> E_min >> E_max >> n_levels;
string file_name("bloch.data");
ofstream file("bloch.data");
bool new_band = false;
for (int n = 0; n < n_levels; n++) {
double E = E_min + n * (E_max - E_min) / double(n_levels - 1);
double k;
bool in_band;
find_bloch_momentum(E, in_band, k);
if (in_band && !new_band) {
file << ’\n’;
// separate band values with blank line
new_band = true;
}
if (in_band)
file << k << ’\t’ << E << ’\n’;
else
new_band = false;
}
file.close();
cout << " Levels in file " << file_name << endl;
}
Homework Problem
Study the dependence of the Kronig-Penney model band structure on the width and height of the potential
step, and describe any systematic trends you notice.
Invent two different potential functions that you think might have interesting band structure. Modify the
potential function in bloch.cpp to study these potentials and describe the most interesting results you
observe.
References
[1] Examples of Java applet simulations of the Kronig-Pennery model:
http://fermi.la.asu.edu/ccli/applets/kp/, http://www.falstad.com/qm1dcrystal/.
[2] Solid State Simulations, http://pages.physics.cornell.edu/sss/.
11
Download