IntRoduction to solid state physics
Practice Course
Sheng Yun Wu
Practice Course
Sheng Yun Wu
Week 9: Lattice Dynamics
This example calculates and plots the phonon dispersion relation for a 1D atomic chain, showing the relationship between the phonon frequency and the wave vector.
In a 1D atomic chain, the phonon dispersion relation describes how the frequency of lattice vibrations (phonons) varies with the wave vector. This example calculates and plots the dispersion relation, showing how the frequency increases as the wave vector approaches the boundary of the Brillouin zone.
import numpy as np
import matplotlib.pyplot as plt
def phonon_dispersion_1d(k, k_max, omega_max):
return omega_max * np.sin(np.pi * k / k_max)
# Example: Wave vector k 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("Phonon Dispersion Relation in 1D Lattice")
plt.show()
This example calculates the phonon density of states (DOS) for a 3D solid based on the phonon frequencies.
The phonon density of states (DOS) describes how many vibrational modes (phonons) are available at each frequency in a solid. This example calculates and plots the DOS for a 3D solid, illustrating how the number of states increases with frequency.
def phonon_density_of_states_3d(omega, omega_max):
if omega > omega_max:
return 0
else:
return (omega**2) / (omega_max**3)
# 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_3d(omega, omega_max) for omega in omega_values]
plt.plot(omega_values, DOS)
plt.xlabel("Phonon Frequency (THz)")
plt.ylabel("Density of States")
plt.title("Phonon Density of States in 3D Solid")
plt.show()
This example calculates the Debye frequency, which is the maximum frequency of phonons in a solid.
The Debye frequency is the maximum frequency of phonons in a solid and is closely related to the speed of sound and atomic density. This example calculates the Debye frequency based on the speed of sound, number of atoms, and the volume of the solid.
def debye_frequency(v_s, N, V):
return v_s * ((6 * np.pi**2 * N / V)**(1/3))
# 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³
omega_D = debye_frequency(v_s, N, V)
print(f"Debye Frequency: {omega_D:.2e} Hz")
This example calculates the heat capacity of a solid using the Debye model, which accounts for the contribution of phonons to thermal properties.
The Debye model provides a framework for calculating the heat capacity of solids at low temperatures. It accounts for the quantized nature of lattice vibrations (phonons). This example calculates the heat capacity using the Debye model, showing how phonons contribute to the thermal properties of a solid.
from scipy.integrate import quad
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 = 100 K
T_D = 200 # Kelvin
T = 100 # Kelvin
C_v = heat_capacity_debye(T, T_D)
print(f"Heat Capacity (Debye Model): {C_v:.2e} J/K")
This example calculates the group velocity of phonons, which is the speed at which energy is transmitted through the lattice.
The group velocity of phonons is the rate at which energy is transported through a crystal due to lattice vibrations. This example calculates the group velocity by taking the derivative of the phonon dispersion relation with respect to the wave vector, illustrating how energy transport varies with the phonon frequency.
def group_velocity(omega, k):
return np.gradient(omega, k)
# Example: Phonon frequency ω = sin(k), wave vector k from 0 to 1
k_values = np.linspace(0, 1, 100)
omega_values = np.sin(k_values)
v_g = group_velocity(omega_values, k_values)
plt.plot(k_values, v_g)
plt.xlabel("Wave Vector (k)")
plt.ylabel("Group Velocity (v_g)")
plt.title("Group Velocity of Phonons")
plt.show()
This example calculates the number of vibrational modes in a 1D lattice based on the total number of atoms.
In a 1D lattice, the number of vibrational modes is equal to the number of atoms, since each atom can contribute one vibrational degree of freedom. This example calculates the total number of vibrational modes in a 1D lattice, providing insight into the behavior of phonons.
def vibrational_modes_1d(N):
return N
# Example: Number of atoms N = 1e23
N = 1e23 # atoms
modes = vibrational_modes_1d(N)
print(f"Number of Vibrational Modes in 1D Lattice: {modes:.2e}")
This example calculates the phonon heat capacity of a solid using a simple harmonic oscillator model for lattice vibrations.
The harmonic oscillator model provides an approximation for the heat capacity of solids due to phonons. This example calculates the phonon heat capacity using this model, showing how lattice vibrations contribute to the overall thermal properties of the solid.
def heat_capacity_harmonic(T, omega):
x = h_bar * omega / (k_B * T)
return k_B * (x**2 * np.exp(x)) / (np.exp(x) - 1)**2
# Example: Phonon frequency ω = 1 THz, temperature T = 300 K
omega = 1e12 # Hz
T = 300 # Kelvin
C_v = heat_capacity_harmonic(T, omega)
print(f"Phonon Heat Capacity (Harmonic Oscillator Model): {C_v:.2e} J/K")
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, helping students understand heat transport in solids.
def mean_free_path(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(kappa, C_v, v_s)
print(f"Mean Free Path of Phonons: {lambda_mfp:.2e} meters")
This example calculates the Debye temperature based on the phonon spectrum and the speed of sound in the material.
The Debye temperature represents the temperature above which all phonon modes are excited. This example calculates the Debye temperature using the speed of sound, the number of atoms, and the volume of the material, providing insight into the vibrational behavior of solids.
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 specific heat of a solid at low temperatures using the Debye approximation, which is valid when the temperature is much lower than the Debye temperature.
At low temperatures, the specific heat of solids follows a T^3 dependence according to the Debye approximation. This example calculates the specific heat using this approximation, providing insight into how the specific heat decreases as temperature is reduced below the Debye temperature.
def specific_heat_debye_approx(T, T_D):
return 1944 * (T / T_D)**3
# Example: Debye temperature T_D = 200 K, temperature T = 50 K
T_D = 200 # Kelvin
T = 50 # Kelvin
C_v = specific_heat_debye_approx(T, T_D)
print(f"Specific Heat (Debye Approximation): {C_v:.2f} J/mol·K")
These 10 Python examples cover key topics from Week 9: Lattice Dynamics, such as phonon dispersion relations, density of states, Debye temperature, group velocity, and heat capacity models. By exploring the behavior of phonons and their contribution to thermal and vibrational properties, students gain a deeper understanding of lattice dynamics in solids.