-
T. van der Sar authoredT. van der Sar authored
from matplotlib import pyplot
import numpy as np
from common import draw_classic_axes, configure_plotting
configure_plotting()
(based on chapter 4 of the book)
!!! summary "Learning goals"
After this lecture you will be able to:
- calculate the electron density of states in 1D, 2D, and 3D using the Sommerfeld free-electron model.
- express the number and energy of electrons in a system in terms of integrals over k-space.
- use the Fermi distribution to extend the previous learning goal to finite T.
- calculate the electron contribution to the specific heat of a solid.
- describe central terms such as the Fermi energy, Fermi temperature, and Fermi wavevector.
Sommerfeld theory (free electron model)
Atoms in a metal provide conduction electrons from their outer shells (often s-shells). These can be described as waves in the crystal, analogous to phonons. Hamiltonian of a free electron:
Take periodic boundary conditions:
kf = 3;
extrapol = 1.1;
ks = np.arange(-kf, kf+1);
kcont = np.linspace(-extrapol*kf, extrapol*kf, 200);
Edis = ks**2;
Econt = kcont**2;
fig = pyplot.figure();
ax = fig.add_subplot(111);
ax.plot(kcont, Econt);
ax.plot(ks, Edis, 'k.', markersize=10);
for i in range(2*kf + 1):
ax.plot([ks[i], ks[i]], [0.0, Edis[i]], 'k:');
ax.set_xlim(-3.75, 3.75);
ax.set_ylim(0.0, 11);
ax.set_xlabel(r"$k \enspace \left[ \frac{2 \pi}{L} \right]$");
ax.set_ylabel(r"$\varepsilon$");
ax.set_xticklabels([""] + ks.tolist() + [""]);
ax.set_yticks([]);
draw_classic_axes(ax, xlabeloffset=.6);
Comparable to phonons, but: electrons are fermions.
- Only 2 (due to spin) allowed per -value
- Fill up from the lowest energy until you run out of electrons
In order to compute the density of states, we need to perform an integration of k-space. Assuming three dimensions and spherical symmetry (the dispersion in the free electron model is isotropic) we find for the total number of states:
where the factor 2 represents spin degeneracy. Using
So we find for the density of states:
E = np.linspace(0, 2, 500)
fig, ax = pyplot.subplots()
ax.plot(E, np.sqrt(E))
ax.set_ylabel(r"$g(\varepsilon)$")
ax.set_xlabel(r"$\varepsilon$")
draw_classic_axes(ax, xlabeloffset=.2)
Similarly,
- For 1D:
- For 2D:
Total number of electrons:
with
The quantity
For copper, the Fermi energy is ~7 eV. It would take a temperature of
The total number of electrons can be expressed as
kf = 3.0;
extrapol = 4.0/3.0;
kfilled = np.linspace(-kf, kf, 500);
kstates = np.linspace(-extrapol*kf, extrapol*kf, 500);
Efilled = kfilled**2;
Estates = kstates**2;
fig = pyplot.figure();
ax = fig.add_subplot(111);
ax.fill_between(kfilled, Efilled, kf*kf, alpha=0.5);
ax.plot([kf, kf], [0.0, kf*kf], 'k:');
ax.plot(kstates, Estates, 'k--');
ax.plot(kfilled, Efilled, linewidth=4);
ax.axhline(kf*kf, linestyle="dotted", color='k');
ax.set_xticks([kf]);
ax.set_yticks([kf*kf + 0.4]);
ax.set_xticklabels([r"$k_F$"]);
ax.set_yticklabels([r"$\varepsilon_F$"]);
ax.set_xlabel(r"$k$");
ax.set_ylabel(r"$\varepsilon$");
ax.set_xlim(-kf*extrapol, kf*extrapol);
ax.set_ylim(0.0, kf*kf*extrapol);
draw_classic_axes(ax, xlabeloffset=.6);
The bold line represents all filled states at
Now: Finite temperature
Fermi-Dirac distribution:
fig = pyplot.figure()
ax = fig.add_subplot(1,1,1)
xvals = np.linspace(0, 2, 200)
mu = .75
beta = 20
ax.plot(xvals, xvals < mu, ls='dashed', label='$T=0$')
ax.plot(xvals, 1/(np.exp(beta * (xvals-mu)) + 1),
ls='solid', label='$T>0$')
ax.set_xlabel(r'$\varepsilon$')
ax.set_ylabel(r'$f(\varepsilon, T)$')
ax.set_yticks([0, 1])
ax.set_yticklabels(['$0$', '$1$'])
ax.set_xticks([mu])
ax.set_xticklabels([r'$\mu$'])
ax.set_ylim(-.1, 1.1)
ax.legend()
draw_classic_axes(ax)
pyplot.tight_layout()
Chemical potential
At finite temperature, the total number of electrons
We can use this to calculate the electronic contribution to the heat capacity.
E = np.linspace(0, 2, 500)
fig, ax = pyplot.subplots()
ax.plot(E, np.sqrt(E), linestyle='dashed')
ax.text(1.7, 1.4, r'$g(\varepsilon)\propto \sqrt{\varepsilon}$', ha='center')
ax.fill_between(E, np.sqrt(E) * (E < 1), alpha=.3)
n = np.sqrt(E) / (1 + np.exp(20*(E-1)))
ax.plot(E, n)
ax.fill_between(E, n, alpha=.5)
w = .17
ax.annotate(s='', xy=(1, 1), xytext=(1-w, 1),
arrowprops=dict(arrowstyle='<->', shrinkA=0, shrinkB=0))
ax.text(1-w/2, 1.1, r'$\sim k_BT$', ha='center')
ax.plot([1-w, 1+w], [1, 0], c='k', linestyle='dashed')
ax.annotate(s='', xy=(1, 0), xytext=(1, 1),
arrowprops=dict(arrowstyle='<->', shrinkA=0, shrinkB=0))
ax.text(1.2, .7, r'$g(\varepsilon_F)$', ha='center')
ax.set_xticks([1])
ax.set_xticklabels([r'$\varepsilon_F$'])
ax.set_ylabel(r"$g(\varepsilon)$")
ax.set_xlabel(r"$\varepsilon$")
draw_classic_axes(ax, xlabeloffset=.2)
Electrons in the top triangle are being excited to the bottom triangle due to temperature increase. Number of excited electrons
How does
- At room temperature, C_{V,p}=3Nk_{\rm B}\gg C_{V,e}
- Near T=0,C_{V,p}\propto T^3andC_{V,e}\propto T\rightarrowcompetition.
New concept: Fermi surface = all points in k-space with
The orange circle represents the Fermi surface at finite current
C_V
Useful trick: scaling of Behavior of
Particles with energy E \leq kT are thermally excited, and each carries extra energy kT.
Example 1: electrons
g(E_F) roughly constant ⇒ total energy in the thermal state is T \times [T\times g(E_F)] ⇒ C_V \propto T.
E_F=0 (midterm 2018)
Example 2: graphene withg(E) \propto E ⇒ total energy is T \times T^2 ⇒ C_V \propto T^2.
Example 3: phonons in 3D at low temperatures.
g(E) \propto E^2 ⇒ total energy is T \times T^3 ⇒ C_V \propto T^3.