IntRoduction to solid state physics
Practice Course
Sheng Yun Wu
Practice Course
Sheng Yun Wu
Week 7: Thermal Properties of Solids
This example calculates the heat capacity of a solid at low temperatures using the Debye model, which considers phonons and their contribution to heat capacity.
The Debye model provides a good approximation for the heat capacity of solids at low temperatures, where lattice vibrations (phonons) play a significant role. This example calculates the heat capacity using the Debye integral and temperature ratio, showing how heat capacity increases with temperature.
import numpy as np
from scipy.integrate import quad
k_B = 1.38e-23 # Boltzmann constant (J/K)
h_bar = 1.0545718e-34 # Reduced Planck's constant (J·s)
def debye_integral(x):
return (x**4 * np.exp(x)) / (np.exp(x) - 1)**2
def heat_capacity_debye(T, T_D):
integral_value, _ = quad(debye_integral, 0, T_D / T)
return 9 * k_B * (T / T_D)**3 * integral_value
# Example: Debye temperature T_D = 200 K, temperature T = 50 K
T_D = 200 # Kelvin
T = 50 # Kelvin
C_v = heat_capacity_debye(T, T_D)
print(f"Heat Capacity (Debye Model): {C_v:.2e} J/K")
This example calculates thermal conductivity using the phonon gas model, where κ=Cvvsλ/3, with Cv being the specific heat, vs the sound velocity, and λ the mean free path.
Thermal conductivity in solids is largely determined by phonons at non-metallic temperatures. This example uses the phonon gas model to estimate thermal conductivity, providing insights into how heat flows through a solid due to phonon transport.
def thermal_conductivity(C_v, v_s, lambda_mfp):
return (1/3) * C_v * v_s * lambda_mfp
# Example: Heat capacity C_v = 1e3 J/m³·K, sound velocity v_s = 5000 m/s, mean free path λ = 10 nm
C_v = 1e3 # J/m³·K
v_s = 5000 # m/s
lambda_mfp = 10e-9 # meters
kappa = thermal_conductivity(C_v, v_s, lambda_mfp)
print(f"Thermal Conductivity: {kappa:.2f} W/m·K")
This example calculates the heat capacity of a solid using the Einstein model, which treats atoms as quantum harmonic oscillators.
The Einstein model provides an alternative to the Debye model for estimating heat capacity in solids. In this example, atoms in the solid are treated as quantum harmonic oscillators, and their heat capacity is calculated using the Einstein temperature, helping students understand quantum effects on thermal properties.
def heat_capacity_einstein(T, T_E):
x = T_E / T
return 3 * k_B * (x**2 * np.exp(x)) / (np.exp(x) - 1)**2
# Example: Einstein temperature T_E = 300 K, temperature T = 100 K
T_E = 300 # Kelvin
T = 100 # Kelvin
C_e = heat_capacity_einstein(T, T_E)
print(f"Heat Capacity (Einstein Model): {C_e:.2e} J/K")
This example calculates and plots the phonon density of states (DOS) for a 1D lattice, which describes the number of vibrational states available for phonons at each frequency.
The phonon density of states (DOS) describes how many vibrational modes are available to phonons at different frequencies. In this example, the phonon DOS for a 1D lattice is calculated and plotted, showing the distribution of vibrational states.
import matplotlib.pyplot as plt
def phonon_density_of_states_1d(omega, omega_max):
return 1 / np.sqrt(omega_max**2 - omega**2) if omega < omega_max else 0
# Example: Phonon frequencies from 0 to 10 THz, maximum frequency ω_max = 10 THz
omega_max = 10 # THz
omega_values = np.linspace(0, omega_max, 100)
DOS = [phonon_density_of_states_1d(omega, omega_max) for omega in omega_values]
plt.plot(omega_values, DOS)
plt.xlabel("Phonon Frequency (THz)")
plt.ylabel("Density of States (states/THz)")
plt.title("Phonon Density of States in 1D Lattice")
plt.show()
This example calculates the Debye temperature TD, which characterizes the maximum phonon frequency in a solid.
The Debye temperature provides an estimate of the highest frequency (and energy) of phonons in a solid. This example calculates the Debye temperature based on the speed of sound and the number of atoms in a given volume.
def debye_temperature(v_s, N, V):
return (h_bar / k_B) * ((6 * np.pi**2 * N / V)**(1/3)) * v_s
# Example: Speed of sound v_s = 5000 m/s, number of atoms N = 1e28, volume V = 1e-6 m³
v_s = 5000 # m/s
N = 1e28 # atoms
V = 1e-6 # m³
T_D = debye_temperature(v_s, N, V)
print(f"Debye Temperature: {T_D:.2f} K")
This example calculates the thermal expansion coefficient using the Grüneisen parameter.
The thermal expansion coefficient describes how the size of a solid changes with temperature. This example calculates the thermal expansion coefficient using the Grüneisen parameter, which relates to how phonons contribute to thermal expansion.
def thermal_expansion_coefficient(gamma, C_v, V, K):
return gamma * C_v / (V * K)
# Example: Grüneisen parameter γ = 2, heat capacity C_v = 1e3 J/m³·K, volume V = 1e-6 m³, bulk modulus K = 1e11 Pa
gamma = 2
C_v = 1e3 # J/m³·K
V = 1e-6 # m³
K = 1e11 # Pa
alpha = thermal_expansion_coefficient(gamma, C_v, V, K)
print(f"Thermal Expansion Coefficient: {alpha:.2e} 1/K")
This example plots the lattice vibration spectrum (dispersion relation) for a 1D atomic chain, showing how phonon frequency varies with wave vector.
The dispersion relation describes how the frequency of lattice vibrations (phonons) depends on the wave vector in a 1D atomic chain. This example generates a plot showing the relationship between the wave vector and phonon frequency, helping students understand phonon dispersion.
def phonon_dispersion_1d(k, k_max, omega_max):
return omega_max * np.sin(np.pi * k / k_max)
# Example: Wave vectors from 0 to 1, maximum wave vector k_max = 1, maximum frequency ω_max = 10 THz
k_max = 1
omega_max = 10 # THz
k_values = np.linspace(0, k_max, 100)
omega_values = phonon_dispersion_1d(k_values, k_max, omega_max)
plt.plot(k_values, omega_values)
plt.xlabel("Wave Vector k")
plt.ylabel("Phonon Frequency (THz)")
plt.title("Lattice Vibration Spectrum in 1D Chain")
plt.show()
This example calculates the mean free path of phonons in a solid, which is the average distance a phonon travels before scattering.
The mean free path is the average distance a phonon travels before interacting with other phonons or defects. This example calculates the mean free path based on thermal conductivity, heat capacity, and sound velocity, which is important for understanding heat transport in solids.
def mean_free_path_thermal_conductivity(kappa, C_v, v_s):
return (3 * kappa) / (C_v * v_s)
# Example: Thermal conductivity κ = 200 W/m·K, heat capacity C_v = 1e3 J/m³·K, sound velocity v_s = 5000 m/s
kappa = 200 # W/m·K
C_v = 1e3 # J/m³·K
v_s = 5000 # m/s
lambda_mfp = mean_free_path_thermal_conductivity(kappa, C_v, v_s)
print(f"Mean Free Path of Phonons: {lambda_mfp:.2e} meters")
This example calculates the heat flux through a solid using Fourier's Law q=−κ∇T, where κ is the thermal conductivity and ∇T is the temperature gradient.
Heat flux describes the amount of heat flowing through a solid per unit area. This example calculates the heat flux using Fourier’s law, which relates the heat flux to the temperature gradient and thermal conductivity, key concepts in thermal transport.
def heat_flux(kappa, temperature_gradient):
return -kappa * temperature_gradient
# Example: Thermal conductivity κ = 200 W/m·K, temperature gradient ∇T = 50 K/m
kappa = 200 # W/m·K
temperature_gradient = 50 # K/m
q = heat_flux(kappa, temperature_gradient)
print(f"Heat Flux: {q:.2f} W/m²")
This example calculates the specific heat of a solid using the Dulong-Petit law, which approximates the molar heat capacity of solids at high temperatures.
The Dulong-Petit law gives an estimate for the molar heat capacity of many solids at high temperatures. This example calculates the molar specific heat based on this law, demonstrating that at high temperatures, solids tend to have a specific heat of approximately 3R.
R = 8.314 # Universal gas constant (J/mol·K)
def specific_heat_dulong_petit():
return 3 * R
# Example: Molar specific heat using Dulong-Petit law
C_molar = specific_heat_dulong_petit()
print(f"Molar Specific Heat (Dulong-Petit): {C_molar:.2f} J/mol·K")
These 10 Python examples explore Week 7: Thermal Properties of Solids, covering phonon-related phenomena, thermal conductivity, heat capacity, thermal expansion, and heat transport. By applying models such as Debye, Einstein, and the phonon gas model, these examples help students understand how thermal properties are determined by the behavior of lattice vibrations (phonons) and temperature.