IntRoduction to solid state physics
Practice Course
Sheng Yun Wu
Practice Course
Sheng Yun Wu
Week 12: Metals and Fermi Surfaces
This example calculates the Fermi energy EF for a metal using the free electron model:
The Fermi energy represents the highest energy level occupied by electrons at absolute zero. This example calculates the Fermi energy of a metal based on the electron density, providing insight into the behavior of conduction electrons.
import numpy as np
h_bar = 1.0545718e-34 # Reduced Planck's constant (J·s)
m_e = 9.11e-31 # Electron mass (kg)
def fermi_energy(n):
return (h_bar**2 / (2 * m_e)) * (3 * np.pi**2 * n)**(2/3)
# Example: Electron density n = 8.5e28 electrons/m³
n = 8.5e28 # m⁻³
E_F = fermi_energy(n)
print(f"Fermi Energy: {E_F:.2e} Joules")
This example plots the Fermi-Dirac distribution function, which describes the probability that an electron state is occupied at a given energy and temperature.
The Fermi-Dirac distribution function describes the likelihood that an electron state at energy EEE is occupied at a given temperature. This example plots the distribution for a range of energy levels, illustrating how the probability changes with temperature and Fermi energy.
import matplotlib.pyplot as plt
k_B = 8.617333262145e-5 # Boltzmann constant (eV/K)
def fermi_dirac(E, E_F, T):
return 1 / (1 + np.exp((E - E_F) / (k_B * T)))
# Example: Fermi energy E_F = 5 eV, temperature T = 300 K
E = np.linspace(0, 10, 1000) # Energy levels from 0 to 10 eV
E_F = 5 # eV
T = 300 # K
f_E = fermi_dirac(E, E_F, T)
plt.plot(E, f_E)
plt.xlabel("Energy (eV)")
plt.ylabel("Occupation Probability f(E)")
plt.title("Fermi-Dirac Distribution at 300K")
plt.grid(True)
plt.show()
This example calculates the density of states D(E) in a 3D metal using the equation:
The density of states (DOS) describes the number of available electron states per unit energy at a given energy level. This example calculates and plots the DOS for a 3D metal, helping students understand how the number of available states changes with energy.
def density_of_states_3d(E, n, E_F):
return (3 * n / (2 * E_F)) * (E / E_F)**(1/2)
# Example: Electron density n = 8.5e28 m⁻³, Fermi energy E_F = 5 eV, energy E = 1 to 10 eV
E = np.linspace(1, 10, 1000) # eV
E_F = 5 # eV
n = 8.5e28 # m⁻³
DOS = density_of_states_3d(E, n, E_F)
plt.plot(E, DOS)
plt.xlabel("Energy (eV)")
plt.ylabel("Density of States (states/eV)")
plt.title("Density of States in 3D Metal")
plt.grid(True)
plt.show()
This example calculates the total number of conduction electrons in a metal, which can be found by integrating the density of states up to the Fermi energy.
The total number of electrons in a metal can be found by integrating the density of states up to the Fermi energy. This example performs the integration and calculates the total number of conduction electrons in a metal.
from scipy.integrate import quad
def total_number_of_electrons(n, E_F):
return (3 * n / (2 * E_F)) * quad(lambda E: (E / E_F)**(1/2), 0, E_F)[0]
# Example: Electron density n = 8.5e28 m⁻³, Fermi energy E_F = 5 eV
n = 8.5e28 # m⁻³
E_F = 5 # eV
N = total_number_of_electrons(n, E_F)
print(f"Total Number of Electrons: {N:.2e}")
This example generates a 3D plot of the Fermi surface for a free electron gas in a cubic lattice.
The Fermi surface represents the boundary in momentum space between occupied and unoccupied electron states at absolute zero. This example plots the Fermi surface for a free electron gas in 3D, illustrating the spherical nature of the surface.
from mpl_toolkits.mplot3d import Axes3D
def plot_fermi_surface(E_F, m_e):
k_F = np.sqrt(2 * m_e * E_F) / h_bar
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = k_F * np.outer(np.cos(u), np.sin(v))
y = k_F * np.outer(np.sin(u), np.sin(v))
z = k_F * np.outer(np.ones(np.size(u)), np.cos(v))
ax.plot_surface(x, y, z, color='b', alpha=0.7)
ax.set_xlabel('kx')
ax.set_ylabel('ky')
ax.set_zlabel('kz')
plt.title("Fermi Surface of Free Electron Gas")
plt.show()
# Example: Fermi energy E_F = 5 eV, electron mass m_e = 9.11e-31 kg
E_F = 5 * 1.6e-19 # Convert eV to J
plot_fermi_surface(E_F, m_e)
This example calculates the electrical conductivity of a metal using the Drude model:
The Drude model relates the electrical conductivity of a metal to the number of free electrons, their charge, relaxation time, and mass. This example calculates the conductivity of a metal using the Drude model.
def electrical_conductivity(n, e, tau, m):
return (n * e**2 * tau) / m
# Example: Electron density n = 8.5e28 m⁻³, relaxation time τ = 1e-14 s, electron mass m = 9.11e-31 kg, charge e = 1.6e-19 C
n = 8.5e28 # m⁻³
tau = 1e-14 # s
m = 9.11e-31 # kg
e = 1.6e-19 # C
sigma = electrical_conductivity(n, e, tau, m)
print(f"Electrical Conductivity: {sigma:.2e} S/m")
This example calculates the mean free path of electrons in a metal using:
The mean free path represents the average distance an electron travels between collisions. This example calculates the mean free path based on the Fermi velocity and relaxation time.
def mean_free_path(v_F, tau):
return v_F * tau
# Example: Fermi velocity v_F = 1e6 m/s, relaxation time τ = 1e-14 s
v_F = 1e6 # m/s
tau = 1e-14 # s
lambda_mfp = mean_free_path(v_F, tau)
print(f"Mean Free Path: {lambda_mfp:.2e} meters")
This example calculates the Fermi temperature TF using the equation:
The Fermi temperature is a measure of the energy scale associated with the Fermi energy, representing the temperature at which thermal effects become comparable to the quantum effects of electrons. This example calculates the Fermi temperature based on the Fermi energy.
def mean_free_path(v_F, tau):
return v_F * tau
# Example: Fermi velocity v_F = 1e6 m/s, relaxation time τ = 1e-14 s
v_F = 1e6 # m/s
tau = 1e-14 # s
lambda_mfp = mean_free_path(v_F, tau)
print(f"Mean Free Path: {lambda_mfp:.2e} meters")
This example calculates the electron contribution to the heat capacity using the Sommerfeld model:
At low temperatures, the heat capacity of a metal is primarily due to the electrons near the Fermi surface. This example calculates the electron heat capacity using the Sommerfeld model, which is proportional to temperature.
def electron_heat_capacity(n, E_F, T):
gamma = (np.pi**2 / 2) * (k_B**2 * n) / E_F
return gamma * T
# Example: Electron density n = 8.5e28 m⁻³, Fermi energy E_F = 5 eV, temperature T = 300 K
n = 8.5e28 # m⁻³
E_F = 5 * 1.6e-19 # eV to J
T = 300 # Kelvin
C_e = electron_heat_capacity(n, E_F, T)
print(f"Electron Heat Capacity: {C_e:.2e} J/K")
This example generates a plot comparing the density of states in 1D, 2D, and 3D metals.
The density of states (DOS) varies depending on the dimensionality of the system. This example calculates and plots the DOS for 1D, 2D, and 3D metals, illustrating the differences in how the number of available states scales with energy.
def dos_1d(E, E_F):
return 1 / np.sqrt(E - E_F) if E > E_F else 0
def dos_2d(E, E_F):
return 1 if E > E_F else 0
def dos_3d(E, E_F):
return (E / E_F)**0.5 if E > E_F else 0
E = np.linspace(0.5, 10, 1000)
E_F = 5 # eV
DOS_1D = np.array([dos_1d(e, E_F) for e in E])
DOS_2D = np.array([dos_2d(e, E_F) for e in E])
DOS_3D = np.array([dos_3d(e, E_F) for e in E])
plt.plot(E, DOS_1D, label="1D")
plt.plot(E, DOS_2D, label="2D")
plt.plot(E, DOS_3D, label="3D")
plt.xlabel("Energy (eV)")
plt.ylabel("Density of States")
plt.legend()
plt.title("Density of States in 1D, 2D, and 3D Metals")
plt.grid(True)
plt.show()
These 10 Python examples cover key topics from Week 12: Metals and Fermi Surfaces, including Fermi energy, density of states, electrical conductivity, Fermi temperature, and the 3D Fermi surface. These examples provide insights into the electronic properties of metals and help students understand the behavior of conduction electrons in metallic systems.