Skip to content
Snippets Groups Projects
Forked from Solid state physics / lectures
2142 commits behind the upstream repository.
from matplotlib import pyplot

import numpy as np
from scipy.optimize import curve_fit
from scipy.integrate import quad

from common import draw_classic_axes, configure_plotting

configure_plotting()

Lecture 1 – Phonons and specific Heat

(based on chapter 2 of the book)
Exercises: 2.3, 2.4, 2.5, 2.6, 2.8

!!! summary "Learning goals"

After this lecture you will be able to:

- Explain quantum mechanical effects on the heat capacity of solids (Einstein model)
- Compute the expected particle number, energy, and heat capacity of a quantum harmonic oscillator (a single boson)
- Write down the total thermal energy of a material

Einstein model

Before solid state physics: heat capacity per atom C=3k_{\rm B} (Dulong-Petit). Each atom is (classical) harmonic oscillator in three directions. Experiments showed that this law breaks down at low temperatures, where C reduces to zero (C\propto T^3).

This can be explained by considering a quantum harmonic oscillator:

\varepsilon_n=\left(n+\frac{1}{2}\right)\hbar\omega

Phonons are bosons \Rightarrow they follow Bose-Einstein statistics.

n(\omega,T)=\frac{1}{ {\rm e}^{\hbar\omega/k_{\rm B}T}-1}\Rightarrow\bar{\varepsilon}=\frac{1}{2}\hbar\omega+\frac{\hbar\omega}{ {\rm e}^{\hbar\omega/k_{\rm B}T}-1}

fig, (ax, ax2) = pyplot.subplots(ncols=2, figsize=(10, 5))
omega = np.linspace(0.1, 2)
ax.plot(omega, 1/(np.exp(omega) - 1))
ax.set_ylim(0, top=3)
ax.set_xlim(left=0)
ax.set_xlabel(r'$\hbar \omega$')
ax.set_xticks([0, 1])
ax.set_xticklabels(['$0$', '$k_B T$'])
ax.set_ylabel('$n$')
ax.set_yticks([1, 2])
ax.set_yticklabels(['$1$', '$2$'])
draw_classic_axes(ax, xlabeloffset=.2)
T = np.linspace(0.01, 2)
ax2.plot(T, 1/2 + 1/(np.exp(1/T)-1))
ax2.set_ylim(bottom=0)
ax2.set_xlabel('$k_B T$')
ax2.set_xticks([0, 1])
ax2.set_xticklabels(['$0$', r'$\hbar \omega$'])
ax2.set_ylabel(r"$\bar\varepsilon$")
ax2.set_yticks([1/2])
ax2.set_yticklabels([r'$\hbar\omega/2$'])
draw_classic_axes(ax2, xlabeloffset=.15)

The term \frac{1}{2}\hbar\omega is the zero point energy, which follows from the uncertainty principle.

In order to calculate the heat capacity per atom C, we need to differentiate \bar{\varepsilon} to T.

\begin{multline} C = \frac{\partial\bar{\varepsilon}}{\partial T} = -\frac{\hbar\omega}{\left({\rm e}^{\hbar\omega/k_{\rm B}T}-1\right)^2}\frac{\partial}{\partial T}\left({\rm e}^{\hbar\omega/k_{\rm B}T}-1\right)\\ = \frac{\hbar^2\omega^2}{k_{\rm B}T^2}\frac{ {\rm e}^{\hbar\omega/k_{\rm B}T}}{\left({\rm e}^{\hbar\omega/k_{\rm B}T}-1\right)^2} =k_{\rm B}\left(\frac{\hbar\omega}{k_{\rm B}T}\right)^2\frac{ {\rm e}^{\hbar\omega/k_{\rm B}T}}{\left({\rm e}^{\hbar\omega/k_{\rm B}T}-1\right)^2} \end{multline}

def c_einstein(T, T_E=1):
    x = T_E / T
    return 3 * x**2 * np.exp(x) / (np.exp(x) - 1)**2

T = np.linspace(0.01, 1.5, 500)
fig, ax = pyplot.subplots()

ax.plot(T, c_einstein(T)/3)
ax.fill_between(T, c_einstein(T)/3, 1, alpha=0.5)

ax.set_ylim(bottom=0, top=1.2)
ax.set_xlabel('$T$')
ax.set_ylabel(r'$\omega$')
ax.set_xticks([1])
ax.set_xticklabels([r'$\hbar \omega/k_B$'])
ax.set_yticks([1])
ax.set_yticklabels(['$k_B$'])
pyplot.hlines([1], 0, 1.5, linestyles='dashed')
draw_classic_axes(ax)

The dashed line signifies the classical value, k_{\rm B}. Shaded area =\frac{1}{2}\hbar\omega, the zero point energy that cannot be removed through cooling.

This is for just one atom. In order to obtain the heat capacity of a full material, we would have to multiply C (or \bar{\varepsilon}) by 3N, i.e. the number of harmonic oscillators according to Einstein model.

# Data from Einstein's paper
T = [222.4, 262.4, 283.7, 306.4, 331.3, 358.5, 413.0, 479.2, 520.0, 879.7, 1079.7, 1258.0]
c = [0.384, 0.578, 0.683, 0.798, 0.928, 1.069, 1.343, 1.656, 1.833, 2.671, 2.720, 2.781]

fit = curve_fit(c_einstein, T, c, 1000)
T_E = fit[0][0]
delta_T_E = np.sqrt(fit[1][0, 0])

fig, ax = pyplot.subplots()
ax.scatter(T, c)
temps = np.linspace(10, T[-1], 100)
ax.plot(temps, c_einstein(temps, T_E));
ax.set_xlabel('$T[K]$')
ax.set_ylabel('$C/k_B$')
ax.set_ylim((0, 3));

Exercises

Exercise 1: Heat capacity of a classical oscillator.

Let's refresh the connection of this topic to statistical physics. You will need to look up the definition of partition function and how to use it to compute expectation values.

Consider a 1D simple harmonic oscillator with mass m and spring constant k. The Hamiltonian is given in the usual way by: H = \frac{p^2}{2m}+\frac{k}{2}x^2.

  1. Compute the classical partition function using the following expression: Z = \int_{-\infty}^{\infty}dp \int_{-\infty}^{\infty} dx e^{-\beta H(p,x)}.
  2. Using the solution of 1., compute the expectation value of the energy, and the expectation value of .
  3. Compute the heat capacity. Check that you get the law of Dulong-Petit but with a different prefactor.
  4. Explain the difference in the prefactor by considering the number of degrees of freedom.

Exercise 2: Quantum harmonic oscillator

Consider a 1D quantum harmonic oscillator. Its eigenstates are:

E_n = \hbar\omega(n+\frac{1}{2}),

  1. Sketch the wave function of this harmonic oscillator for n=3.
  2. Compute the quantum partition function using the following expression: Z = \sum_j e^{-\beta E_j}.
  3. Using the partition function, compute the expectation value of the energy.
  4. Compute the heat capacity. Check that in the high temperature limit you get the same result as in Exercise 1.1.
  • What temperature can be considered high?
  • What is the expectation value of n?

Exercise 4. Total heat capacity of a diatomic material

Naturally occurring lithium has two stable isotopes: ^6Li (7.5%) and ^7Li (92.5%). Let us extend the Einstein model to take into account the different masses of different isotopes.

  1. Assume that the strength of the returning force k experienced by each atom is the same. What is the difference in the oscillation frequencies of different isotopes of lithium in the lithium crystal?
  2. Write down the total energy of lithium assuming that all ^6Li atoms are in n=2 vibrational state, and all ^7Li atoms are in n=4 vibrational state.
  3. Write down the total energy of lithium at a temperature T by modifying the Einstein model.
  4. Compute the heat capacity of lithium as a function of T.