import matplotlib from matplotlib import pyplot import numpy as np from common import draw_classic_axes, configure_plotting configure_plotting() pi = np.pi
Electrons and phonons in 1D¶
(based on chapters 9.1-9.3 & 11.1-11.3 of the book)
Expected prior knowledge
Before the start of this lecture, you should be able to:
- Derive Newton's equations of motion of a triatomic chain (previous lecture).
- Write down the dispersion relation of phonons in the Debye model.
- Express complex exponentials through trigonometric functions and vice versa.
- Apply Taylor expansion trigonometric functions.
- Take derivatives inverse trigonometric functions.
Learning goals
After this lecture you will be able to:
- Formulate the equations of motion of electrons and phonons in 1D.
- Derive the dispersion relation from the equations of motion.
- Derive the group velocity, effective mass, and density of states from the dispersion relation.
Last lecture:
- Vibrational modes of few-atom chains (analyzed using Newton's equations)
- Orbital energies of electrons in few-atom chains (analyzed using LCAOs)
This lecture:
- Phonons and electrons in chains of infinitely many atoms.
- Main idea: use periodicity in space, similar to periodicity in time
To emphasize the similarities and the differences between electrons and phonons, we will deal with both types of particles at once.
Equations of motion¶
Phonons¶
In the Debye model, we assumed that the dispersion relation is strictly linear in
We denote the displacement of atom
We use the periodic boundary conditions just like we did in the Sommerfield model.
The boundary conditions imply that in a system of size
Electrons¶
The following figure shows the interatomic potential with atoms placed at
x = np.linspace(0.001, 3, 200) fig, ax = pyplot.subplots(1, 1) ax.plot(x, 1.2-1/np.abs(np.sin(np.pi * x))**(1/2)) ax.set_ylim(-.7, .5) ax.set_xlabel("$x$") ax.set_ylabel("$U(x)$") ax.set_xticks([-.05, 1, 2]) ax.set_xticklabels(["$0$", "$a$", "$2a$"]) draw_classic_axes(ax)
Similarly to the triatomic system case, we formulate the molecular orbital via the LCAO model:
Again, the periodic boundary conditions imply
We now have the equations of motion of both phonons and electrons. All that remains is to solve them.
Key idea for solving these equations¶
In order to solve the equations of motion, we need to come up with a reasonable guess.
If we take a look at the equations of motion, we see that they are the same for all atoms.
To be specific, the structure of the equations is the same no matter what value of
and the ansatz for electrons is given similarly by
We wrote
We already know that the periodic boundary conditions only allow plane waves with
The above equation defines the allowed values of
We use the quantized values of
The reason why solutions with different values of
x = np.linspace(-.2, 2.8, 500) fig, ax = pyplot.subplots() ax.plot(x, np.cos(pi*(x)), label=r'$k=\pi/a$') ax.plot(x, np.cos(3*pi*(x)), label=r'$k=3\pi/a$') ax.plot(x, np.cos(5*pi*(x)), label=r'$k=5\pi/a$') sites = np.arange(3) ax.scatter(sites, np.cos(pi*(sites)), c='k', s=64, zorder=5) ax.set_xlabel('$x$') ax.set_ylabel('$u_n$') ax.set_xlim((-.1, 3.2)) ax.set_ylim((-1.3, 1.3)) ax.legend(loc='lower right') draw_classic_axes(ax) ax.annotate(s='', xy=(0, -1.1), xytext=(1, -1.1), arrowprops=dict(arrowstyle='<->', shrinkA=0, shrinkB=0)) ax.text(.5, -1.25, '$a$', ha='center');
How many different solutions did we expect to find?
We have a system with
Solving the equations of motion¶
Phonons¶
We substitute the plane wave ansatz into the equations of motion:
Searching for solutions with
Or after a further simplification:
where we substituted
We arrive at the phonon dispersion relation shown below.
k = np.linspace(-2*pi, 6*pi, 500) fig, ax = pyplot.subplots() pyplot.plot(k, np.abs(np.sin(k/2))) ax.set_ylim(bottom=0, top=1.2) ax.set_xlabel('$ka$') ax.set_ylabel(r'$\omega$') pyplot.xticks(list(2*pi*np.arange(-1, 4)) + [-pi, pi], [r'$-2\pi$', '$0$', r'$2\pi$', r'$4\pi$', r'$6\pi$', r'$-\pi$', r'$\pi$']) pyplot.yticks([1], [r'$2\sqrt{\frac{\kappa}{m}}$']) pyplot.vlines([-pi, pi], 0, 1.1, linestyles='dashed') pyplot.hlines([1], .1*pi, 1.3*pi, linestyles='dashed') draw_classic_axes(ax); # ax.annotate(s='', xy=(-pi, -.15), xytext=(pi, -.15), # arrowprops=dict(arrowstyle='<->', shrinkA=0, shrinkB=0)) # ax.text(0, -.25, '1st Brillouin zone', ha='center') # ax.set_ylim(bottom=-.3);
The periodicity of the dispersion relation is a consequence of what we observed before: since plane waves with
Comparison to the Debye model¶
Sound velocity: At small
Cut-off frequency: The Debye model introduces the cutoff frequency
Electrons¶
Once again we substitute the plane wave ansatz into the equations of motion:
Again, we are not interested in a trivial solution, hence we assume
which gives us the dispersion relation below.
pyplot.figure() k = np.linspace(-pi, pi, 300) pyplot.plot(k, -np.cos(k)) pyplot.xlabel('$ka$'); pyplot.ylabel('$E$') pyplot.xticks([-pi, 0, pi], [r'$-\pi$', 0, r'$\pi$']) pyplot.yticks([-1, 0, 1], ['$E_0-2t$', '$E_0$', '$E_0+2t$']);
We see that the electron dispersion consists of a band of allowed energies
If each atom contains 2 electrons and a single orbital, all the states in the band must be occupied by electrons. Because all the available states are occupied, there is always exactly the same number of electrons moving in the positive direction, as there are in the negative. Hence, no matter what we do, our system is incapable of conducting electrons, and therefore we have derived the existence of insulators!
Let us also compare the electron band structure with the free electron model.
Focusing on the dispersion relation close to the band bottom at
If we compare this to the dispersion relation
Group velocity, effective mass, density of states¶
(here we only discuss electrons; for phonons everything is the same except for replacing
Let us think what happens if we apply an external electric field to the crystal:
x = np.linspace(0.001, 3, 200) fig, ax = pyplot.subplots(1, 1) ax.plot(x, 1.2-1/np.abs(np.sin(np.pi * x))**(1/2) + .2 * (x - 1.5)) ax.plot(x, .2 * (x - 0.25), '--') ax.set_ylim(-.7, .5) ax.set_xlabel("$x$") ax.set_ylabel("$U(x)$") ax.set_xticks([-.05, 1, 2]) ax.set_xticklabels(["$0$", "$a$", "$2a$"]) draw_classic_axes(ax)
The full Hamiltonian of the system is
where
A typical electric field is much smaller than the interatomic potential, and therefore we can start by obtaining the dispersion relation
To derive how particles with an arbitrary dispersion relation move, we recall the Hamilton's equations for particle velocity
Substituting
Comparing this expression with
The group velocity describes how quickly electrons with a certain
By using the dispersion relation we derived earlier, we obtain the effective mass like this:
pyplot.figure(figsize=(8, 5)) k = np.linspace(-pi, pi, 300) meff = 1/np.cos(k) color = list(matplotlib.rcParams['axes.prop_cycle'])[0]['color'] pyplot.plot(k[meff > 0], meff[meff > 0], c=color) pyplot.plot(k[meff < 0], meff[meff < 0], c=color) pyplot.ylim(-5, 5) pyplot.xlabel('$ka$'); pyplot.ylabel('$m^*$') pyplot.xticks([-pi, 0, pi], [r'$-\pi$', 0, r'$\pi$']);
Notice that the effective mass can be negative, which implies the electrons accelerate in the direction opposite to the applied force.
Density of states¶
The DOS is the number of states per unit energy. In 1D we have
The sum goes over all possible values of
Once again, starting from
we get
and
You can get to this result immediately if you remember the derivative of arccosine. Otherwise you need to go the long way: compute
We now add together the contributions of the positive and the negative momenta as well both spin orientations, and arrive to the density of states
A quick check: when the energy is close to the bottom of the band,
The process of calculating the DOS at a given energy
- At a given energy
, determine all of the values of which correspond to that using the dispersion relation. - Compute
. Do this either by writing as a (multi-valued) function of and differentiating, or by computing . - Sum or integrate
over the allowed values of found in 1 and multiply by any degeneracies (spin/polarization). - Multiply by spin degeneracy.
If the Hamiltonian depends on spin, then there is no spin degeneracy and the spin number
Summary¶
- By using plane waves in real space as an Ansatz we found all normal modes and energies for phonons and electrons in 1D
- Computing dispersion relations explains the problems we listed before (need for cutoff, lack of scattering with every single atom, existence of insulators).
- Electrons and phonons have a complicated nonlinear relation between momentum and velocity (group velocity), effective mass, and density of states.
Exercises¶
Warm-up questions¶
- Compare the expression of the effective mass with Newton's second law. Do you observe any similarities?
- Check the units of the group velocity. Is it what you expect?
- Do the same for the effective mass.
- Calculate the effective mass of the free-electron dispersion relation. Is this what was expected?
- Under what condition is the effective mass the same for each electron?
Exercise 1: Lattice vibrations¶
- From the dispersion relation of a 1D monatomic chain given in the lecture notes, calculate the group velocity
. - Using the group veolcity found above, calculate the density of states
. - Sketch them.
- From the 1D dispersion relation
in the picture below, sketch the group velocity and the density of states .
Exercise 2: Vibrational heat capacity of a 1D monatomic chain¶
- Give the total energy
of a 1D monatomic chain as an integral expression. To do so, first derive the density of states from the phonon dispersion relation derived in the lecture notes. - Give an integral expression for the heat capacity
. - Compute the heat capacity numerically, using e.g. Python.
- Do the same for
in the Debye model and compare the two. What differences do you see?
Exercise 3: Next-nearest neighbors chain¶
Consider electrons in a 1D atomic chain again:
x = np.linspace(0.001, 3, 200) fig, ax = pyplot.subplots(1, 1) ax.plot(x, 1.2-1/np.abs(np.sin(np.pi * x))**(1/2)) ax.set_ylim(-.7, .5) ax.set_xlabel("$x$") ax.set_ylabel("$U(x)$") ax.set_xticks([-.05, 1, 2]) ax.set_xticklabels(["$0$", "$a$", "$2a$"]) draw_classic_axes(ax)
Let's expand the one-dimensional chain model by extending the range of the interaction further than the nearest neighbors:
-
Write down the new Schrödinger equation for this system.
hint
There are now two more terms in the equation:
. -
Solve the Schrödinger equation to find the dispersion relation
.hint
Use the same Ansatz as for the nearest neighbors case: $ \phi_n = \phi_0 \exp(ikna) $.
-
Calculate the effective mass
. - Sketch the effective mass as a function of
for the cases , , and .