🌐 EN | 🇯🇵 JP

Chapter 2: Physics of Superconductivity

Critical Parameters, London Equations, and BCS Theory

⏱️ 25-35 min 💻 5 Code Examples 📊 Beginner~Intermediate

Learning Objectives

2.1 The Three Critical Parameters

Superconductivity is a delicate quantum state that can be destroyed by exceeding any of three critical parameters:

Critical Temperature (Tc)

The critical temperature is the maximum temperature at which a material remains superconducting. Above Tc, the material returns to its normal (resistive) state.

MaterialTypeTc (K)Discovery Year
Mercury (Hg)I4.21911
Lead (Pb)I7.21913
Niobium (Nb)II9.31930
NbTiII101962
Nb₃SnII181954
MgB₂II392001
YBCOII931987
HgBa₂Ca₂Cu₃O₈II1331993

Critical Magnetic Field (Hc)

The critical magnetic field is the maximum magnetic field a superconductor can withstand before losing superconductivity.

Temperature Dependence

The critical field decreases as temperature increases, following approximately:

Hc(T) = Hc(0) × [1 - (T/Tc)²]

where Hc(0) is the critical field at absolute zero.

Critical Current Density (Jc)

The critical current density is the maximum current per unit area that can flow through a superconductor without destroying the superconducting state.

These three parameters are interconnected—increasing any one makes it easier for the others to exceed their limits.

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# Create the critical surface
fig = plt.figure(figsize=(12, 5))

# 2D Phase diagram: H vs T
ax1 = fig.add_subplot(121)
T_norm = np.linspace(0, 1, 100)  # T/Tc
H_c = 1 - T_norm**2  # Normalized critical field

ax1.plot(T_norm, H_c, 'b-', linewidth=2)
ax1.fill_between(T_norm, 0, H_c, alpha=0.3, color='cyan', label='Superconducting')
ax1.fill_between(T_norm, H_c, 1.2, alpha=0.3, color='lightcoral', label='Normal')

ax1.set_xlabel('T / Tc', fontsize=12)
ax1.set_ylabel('H / Hc(0)', fontsize=12)
ax1.set_title('Phase Diagram: H vs T', fontsize=14)
ax1.legend(fontsize=11)
ax1.set_xlim(0, 1.1)
ax1.set_ylim(0, 1.2)
ax1.grid(True, alpha=0.3)

# Critical point annotation
ax1.annotate('Critical Point\n(Tc, 0)', xy=(1, 0), xytext=(0.7, 0.3),
            fontsize=10, arrowprops=dict(arrowstyle='->', color='red'))

# 3D Critical Surface
ax2 = fig.add_subplot(122, projection='3d')

# Create meshgrid for T and J
T = np.linspace(0, 1, 50)
J = np.linspace(0, 1, 50)
T_grid, J_grid = np.meshgrid(T, J)

# Critical surface: H = Hc(0) * (1 - (T/Tc)^2) * (1 - (J/Jc)^2)
H_grid = np.maximum(0, (1 - T_grid**2) * (1 - J_grid**2))

ax2.plot_surface(T_grid, J_grid, H_grid, cmap='coolwarm', alpha=0.8)
ax2.set_xlabel('T / Tc')
ax2.set_ylabel('J / Jc')
ax2.set_zlabel('H / Hc')
ax2.set_title('3D Critical Surface', fontsize=14)

plt.tight_layout()
plt.show()

2.2 London Equations

In 1935, brothers Fritz and Heinz London proposed phenomenological equations to describe the electromagnetic behavior of superconductors.

The First London Equation

∂J/∂t = (nₛe²/m) × E

This describes how the supercurrent accelerates in response to an electric field, without any resistance.

The Second London Equation

∇ × J = -(nₛe²/m) × B

This equation leads directly to the Meissner effect—the expulsion of magnetic fields from superconductors.

London Penetration Depth (λL)

The London equations predict that magnetic fields don't stop abruptly at the surface of a superconductor, but decay exponentially over a characteristic length called the London penetration depth:

λL = √(m / μ₀nₛe²)

Typical values:

import numpy as np
import matplotlib.pyplot as plt

# Magnetic field penetration into superconductor
x = np.linspace(0, 500, 1000)  # Distance in nm

# Different penetration depths
lambda_Al = 50   # nm
lambda_Nb = 40   # nm
lambda_YBCO = 150  # nm

B0 = 1  # External field (normalized)

B_Al = B0 * np.exp(-x / lambda_Al)
B_Nb = B0 * np.exp(-x / lambda_Nb)
B_YBCO = B0 * np.exp(-x / lambda_YBCO)

plt.figure(figsize=(10, 6))
plt.plot(x, B_Al, 'b-', linewidth=2, label=f'Al (λ = {lambda_Al} nm)')
plt.plot(x, B_Nb, 'r-', linewidth=2, label=f'Nb (λ = {lambda_Nb} nm)')
plt.plot(x, B_YBCO, 'g-', linewidth=2, label=f'YBCO (λ = {lambda_YBCO} nm)')

plt.axhline(y=0.37, color='gray', linestyle='--', alpha=0.5)
plt.text(350, 0.4, 'B/B₀ = 1/e ≈ 0.37', fontsize=10, color='gray')

# Add superconductor region
plt.axvspan(0, 500, alpha=0.1, color='cyan')
plt.axvline(x=0, color='black', linewidth=2)
plt.text(250, 0.9, 'Inside Superconductor', fontsize=12, ha='center')

plt.xlabel('Distance from Surface (nm)', fontsize=12)
plt.ylabel('Magnetic Field B/B₀', fontsize=12)
plt.title('Magnetic Field Penetration: B(x) = B₀ exp(-x/λ)', fontsize=14)
plt.legend(fontsize=11)
plt.grid(True, alpha=0.3)
plt.xlim(0, 500)
plt.ylim(0, 1.1)
plt.tight_layout()
plt.show()

2.3 BCS Theory: The Microscopic Picture

In 1957, John Bardeen, Leon Cooper, and John Robert Schrieffer developed the BCS theory, which explains superconductivity at the quantum mechanical level. They received the Nobel Prize in 1972 for this work.

The Cooper Pair Concept

The key insight of BCS theory is that electrons in a superconductor form pairs called Cooper pairs:

How Cooper Pairs Form

  1. An electron moves through the lattice and attracts nearby positive ions
  2. This creates a region of slightly increased positive charge density
  3. A second electron is attracted to this positive region
  4. The two electrons become weakly bound through this phonon-mediated interaction
graph LR subgraph "Cooper Pair Formation" E1[Electron 1] --> |"Attracts"| L[Lattice ions] L --> |"Creates +"| P[Positive region] P --> |"Attracts"| E2[Electron 2] E1 -.-> |"Phonon-mediated
coupling"| E2 end

Properties of Cooper Pairs

The Energy Gap

BCS theory predicts an energy gap Δ in the electronic density of states. This gap represents the minimum energy needed to break a Cooper pair:

2Δ(0) = 3.52 × kB × Tc

The gap decreases with temperature and vanishes at Tc:

import numpy as np
import matplotlib.pyplot as plt

# BCS gap temperature dependence (approximate)
def bcs_gap(T, Tc, Delta0):
    """
    Approximate BCS gap vs temperature.
    Near Tc: Delta ~ Delta0 * sqrt(1 - T/Tc)
    """
    t = T / Tc
    # Use approximate formula
    if isinstance(t, np.ndarray):
        gap = np.zeros_like(t)
        mask = t < 1
        gap[mask] = Delta0 * np.tanh(1.74 * np.sqrt((1 - t[mask]) / t[mask]))
        return gap
    else:
        if t >= 1:
            return 0
        return Delta0 * np.tanh(1.74 * np.sqrt((1 - t) / t))

# Parameters
Tc = 9.3  # K (Niobium)
kB = 8.617e-5  # eV/K
Delta0 = 1.76 * kB * Tc  # BCS prediction

T = np.linspace(0.1, Tc * 1.1, 200)
Delta = np.array([bcs_gap(t, Tc, Delta0) for t in T])

plt.figure(figsize=(10, 6))
plt.plot(T / Tc, Delta / Delta0, 'b-', linewidth=2, label='BCS prediction')

# Add experimental data points (schematic)
T_exp = np.array([0.2, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95]) * Tc
Delta_exp = np.array([bcs_gap(t, Tc, Delta0) for t in T_exp])
plt.scatter(T_exp / Tc, Delta_exp / Delta0, color='red', s=80, zorder=5,
           label='Typical experimental data')

plt.xlabel('T / Tc', fontsize=12)
plt.ylabel('Δ(T) / Δ(0)', fontsize=12)
plt.title('BCS Energy Gap vs Temperature', fontsize=14)
plt.axhline(y=0, color='black', linewidth=0.5)
plt.axvline(x=1, color='gray', linestyle='--', alpha=0.5, label='Tc')
plt.legend(fontsize=11)
plt.grid(True, alpha=0.3)
plt.xlim(0, 1.1)
plt.ylim(0, 1.1)

# Add annotations
plt.annotate('Gap closes at Tc', xy=(1, 0), xytext=(0.7, 0.2),
            fontsize=10, arrowprops=dict(arrowstyle='->', color='gray'))

plt.tight_layout()
plt.show()

print(f"For Niobium (Tc = {Tc} K):")
print(f"  BCS gap at T=0: Δ(0) = {Delta0*1000:.3f} meV")
print(f"  2Δ(0)/kB*Tc = {2*Delta0/(kB*Tc):.2f} (BCS: 3.52)")

2.4 Coherence Length

The coherence length ξ is the characteristic size of a Cooper pair—the distance over which the superconducting wave function maintains its phase coherence.

BCS Coherence Length

ξ₀ = ℏvF / (π × Δ)

where vF is the Fermi velocity.

Ginzburg-Landau Parameter κ

The ratio of penetration depth to coherence length determines whether a superconductor is Type I or Type II:

κ = λ / ξ
ParameterType IType II
κ valueκ < 1/√2 ≈ 0.71κ > 1/√2 ≈ 0.71
ξ vs λξ > λ (large pairs)ξ < λ (small pairs)
ExamplesAl, Pb, HgNbTi, YBCO
import numpy as np
import matplotlib.pyplot as plt

# Compare Type I and Type II characteristics
materials = {
    'Al': {'lambda': 50, 'xi': 1600, 'type': 'I'},
    'Pb': {'lambda': 39, 'xi': 83, 'type': 'I'},
    'Nb': {'lambda': 40, 'xi': 38, 'type': 'II'},
    'NbTi': {'lambda': 300, 'xi': 4, 'type': 'II'},
    'YBCO': {'lambda': 150, 'xi': 1.5, 'type': 'II'}
}

# Calculate kappa
for mat, props in materials.items():
    props['kappa'] = props['lambda'] / props['xi']

# Visualization
fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# Bar plot of kappa values
names = list(materials.keys())
kappas = [materials[m]['kappa'] for m in names]
colors = ['blue' if materials[m]['type'] == 'I' else 'red' for m in names]

ax1 = axes[0]
bars = ax1.bar(names, kappas, color=colors, alpha=0.7)
ax1.axhline(y=1/np.sqrt(2), color='green', linestyle='--', linewidth=2,
           label=f'κ = 1/√2 ≈ {1/np.sqrt(2):.2f}')
ax1.set_ylabel('κ = λ/ξ', fontsize=12)
ax1.set_title('Ginzburg-Landau Parameter κ', fontsize=14)
ax1.legend(fontsize=11)
ax1.set_yscale('log')

# Add Type labels
for bar, name in zip(bars, names):
    type_label = materials[name]['type']
    ax1.text(bar.get_x() + bar.get_width()/2, bar.get_height() * 1.2,
            f'Type {type_label}', ha='center', fontsize=10)

# Scatter plot: lambda vs xi
ax2 = axes[1]
for mat, props in materials.items():
    marker = 'o' if props['type'] == 'I' else 's'
    color = 'blue' if props['type'] == 'I' else 'red'
    ax2.scatter(props['xi'], props['lambda'], s=150, marker=marker,
               color=color, label=f"{mat} (Type {props['type']})", alpha=0.7)

# Add κ = 1/√2 line
xi_range = np.logspace(-0.5, 4, 100)
lambda_boundary = xi_range / np.sqrt(2)
ax2.plot(xi_range, lambda_boundary, 'g--', linewidth=2, label='κ = 1/√2')
ax2.fill_between(xi_range, lambda_boundary, 10000, alpha=0.1, color='red')
ax2.fill_between(xi_range, 0.1, lambda_boundary, alpha=0.1, color='blue')

ax2.set_xlabel('Coherence Length ξ (nm)', fontsize=12)
ax2.set_ylabel('Penetration Depth λ (nm)', fontsize=12)
ax2.set_title('Type I vs Type II: λ-ξ Diagram', fontsize=14)
ax2.set_xscale('log')
ax2.set_yscale('log')
ax2.legend(fontsize=10, loc='upper left')
ax2.text(100, 5, 'Type I', fontsize=14, color='blue')
ax2.text(3, 200, 'Type II', fontsize=14, color='red')

plt.tight_layout()
plt.show()

2.5 The Isotope Effect

A key piece of evidence for BCS theory is the isotope effect: the critical temperature depends on the atomic mass M of the superconductor:

Tc ∝ M^(-α), where α ≈ 0.5 for conventional superconductors

This shows that lattice vibrations (phonons) play a crucial role in superconductivity, as predicted by BCS theory.

Physical Interpretation

Heavier isotopes have lower phonon frequencies, which weakens the electron-phonon interaction that forms Cooper pairs. This reduces Tc.

Summary

Key Takeaways

Practice Problems

Problem 1

Calculate the BCS energy gap at T=0 for lead (Tc = 7.2 K). Express your answer in meV and compare it to thermal energy at 4.2 K.

Problem 2

A superconductor has λ = 200 nm and ξ = 5 nm. (a) Calculate κ. (b) Is this Type I or Type II? (c) What does this tell you about the vortex state?

Problem 3

Using the approximate formula Hc(T) = Hc(0)[1 - (T/Tc)²], calculate what fraction of Hc(0) remains when a superconductor is cooled to half its critical temperature.