EN | JP

Chapter 2: Types of Catalysts

Metal Catalysts, Zeolites, MOFs, SACs, and Beyond

Reading time: 35-40 minutes Difficulty: Intermediate Code examples: 8

Learning Objectives

By completing this chapter, you will be able to:

2.1 Metal Catalysts

Noble Metals vs. Base Metals

Metal catalysts are the workhorses of industrial chemistry. They are broadly classified into:

Category Metals Characteristics Typical Applications
Noble Metals Pt, Pd, Rh, Ru, Ir, Au High activity, corrosion resistant, expensive Automotive catalysts, hydrogenation, fuel cells
Base Metals Ni, Fe, Co, Cu, Zn, Mo Lower cost, abundant, may require harsher conditions Haber-Bosch, Fischer-Tropsch, methanol synthesis

The d-Band Theory

Catalytic activity of transition metals is related to their d-band center position. The Sabatier principle states that optimal catalysis requires intermediate binding strength:

graph LR A[Weak Binding
Au, Ag] --> B[Optimal
Pt, Pd, Rh] B --> C[Strong Binding
W, Mo, Fe] style A fill:#ffebee,stroke:#f44336 style B fill:#e8f5e9,stroke:#4caf50,stroke-width:3px style C fill:#ffebee,stroke:#f44336

Code Example 1: Volcano Plot for Hydrogen Evolution

"""
Create a volcano plot showing the Sabatier principle
Demonstrates the optimal binding energy for catalysis
"""
import numpy as np
import matplotlib.pyplot as plt

# Metal data: (name, d-band center relative to Fermi level, log exchange current density)
# Approximate values for HER
metals = {
    'Pt': (-2.25, -3.0),
    'Pd': (-1.83, -4.0),
    'Rh': (-1.73, -4.2),
    'Ir': (-2.11, -3.5),
    'Ru': (-1.41, -5.0),
    'Ni': (-1.29, -5.5),
    'Co': (-1.17, -6.0),
    'Fe': (-0.92, -6.5),
    'Cu': (-2.67, -7.0),
    'Au': (-3.56, -6.0),
    'Ag': (-4.30, -7.5),
    'W': (0.77, -8.0),
    'Mo': (0.35, -7.0),
}

# Theoretical volcano curve
d_band = np.linspace(-5, 1, 100)
# Simplified volcano model
activity = -0.5 * (d_band + 2)**2 - 3

# Plot
fig, ax = plt.subplots(figsize=(10, 7))

# Volcano curve
ax.plot(d_band, activity, 'k--', linewidth=2, alpha=0.5, label='Volcano trend')

# Scatter plot of metals
colors = plt.cm.viridis(np.linspace(0, 1, len(metals)))
for (name, (d, log_i)), color in zip(metals.items(), colors):
    ax.scatter(d, log_i, s=150, c=[color], edgecolors='black', linewidth=1.5, zorder=5)
    ax.annotate(name, (d, log_i), xytext=(5, 5), textcoords='offset points',
                fontsize=10, fontweight='bold')

# Formatting
ax.set_xlabel('d-band Center (eV relative to Fermi level)', fontsize=12)
ax.set_ylabel('log(Exchange Current Density / A cm⁻²)', fontsize=12)
ax.set_title('Volcano Plot: Hydrogen Evolution Reaction', fontsize=14, fontweight='bold')
ax.set_xlim(-5, 1.5)
ax.set_ylim(-9, -2)
ax.grid(alpha=0.3)

# Add annotations
ax.annotate('Optimal\nBinding', xy=(-2.2, -3.2), fontsize=11, ha='center',
            bbox=dict(boxstyle='round', facecolor='lightgreen', alpha=0.7))
ax.annotate('Too Weak', xy=(-4, -7), fontsize=10, color='red')
ax.annotate('Too Strong', xy=(0.5, -7.5), fontsize=10, color='red')

plt.tight_layout()
plt.show()

print("\nKey Insight: Pt sits near the volcano peak because it has")
print("optimal hydrogen binding energy - not too strong, not too weak.")

2.2 Metal Oxide Catalysts

Common Metal Oxides

Oxide Formula Properties Applications
Titanium Dioxide TiO₂ Photocatalyst, support, semiconductor Photocatalysis, self-cleaning surfaces
Alumina Al₂O₃ High surface area, thermal stability Catalyst support, dehydration
Zinc Oxide ZnO Basic oxide, semiconductor Methanol synthesis, rubber vulcanization
Ceria CeO₂ Oxygen storage, redox active Three-way catalysts, fuel cells
Vanadium Pentoxide V₂O₅ Strong oxidizer, acid sites Selective oxidation, SCR DeNOx

Code Example 2: Comparing Oxide Surface Areas

"""
Compare surface areas and catalytic properties of metal oxides
"""
import numpy as np
import matplotlib.pyplot as plt

# Metal oxide data
oxides = {
    'γ-Al₂O₃': {'surface_area': 200, 'pore_size': 8, 'thermal_stability': 1000},
    'TiO₂ (anatase)': {'surface_area': 50, 'pore_size': 10, 'thermal_stability': 600},
    'SiO₂': {'surface_area': 300, 'pore_size': 6, 'thermal_stability': 1200},
    'CeO₂': {'surface_area': 100, 'pore_size': 5, 'thermal_stability': 800},
    'ZrO₂': {'surface_area': 80, 'pore_size': 4, 'thermal_stability': 1100},
    'ZnO': {'surface_area': 30, 'pore_size': 20, 'thermal_stability': 500},
}

names = list(oxides.keys())
surface_areas = [v['surface_area'] for v in oxides.values()]
thermal_stabilities = [v['thermal_stability'] for v in oxides.values()]

# Create figure with two subplots
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))

# Surface area comparison
colors = plt.cm.Purples(np.linspace(0.4, 0.9, len(names)))
bars1 = ax1.barh(names, surface_areas, color=colors, edgecolor='black')
ax1.set_xlabel('BET Surface Area (m²/g)', fontsize=12)
ax1.set_title('Surface Area Comparison', fontsize=13, fontweight='bold')
ax1.grid(axis='x', alpha=0.3)

# Add values on bars
for bar, val in zip(bars1, surface_areas):
    ax1.text(val + 5, bar.get_y() + bar.get_height()/2,
             f'{val}', va='center', fontsize=10)

# Thermal stability comparison
colors2 = plt.cm.Oranges(np.linspace(0.4, 0.9, len(names)))
bars2 = ax2.barh(names, thermal_stabilities, color=colors2, edgecolor='black')
ax2.set_xlabel('Thermal Stability (°C)', fontsize=12)
ax2.set_title('Thermal Stability Comparison', fontsize=13, fontweight='bold')
ax2.grid(axis='x', alpha=0.3)

for bar, val in zip(bars2, thermal_stabilities):
    ax2.text(val + 20, bar.get_y() + bar.get_height()/2,
             f'{val}°C', va='center', fontsize=10)

plt.tight_layout()
plt.show()

print("\nKey Points:")
print("• SiO₂ and γ-Al₂O₃ have highest surface areas - excellent supports")
print("• SiO₂ and ZrO₂ have best thermal stability")
print("• Trade-off: high surface area oxides often less thermally stable")

2.3 Zeolites: Molecular Sieves

Structure and Properties

Zeolites are crystalline aluminosilicates with ordered microporous structures. Their key features:

Common Zeolite Frameworks

Framework Pore Size (Å) Ring Size Applications
ZSM-5 (MFI) 5.1-5.6 10-membered FCC, methanol-to-gasoline, xylene isomerization
Zeolite Y (FAU) 7.4 12-membered Fluid catalytic cracking (FCC)
Mordenite (MOR) 6.5-7.0 12-membered Hydroisomerization, dewaxing
Beta (BEA) 6.6-7.7 12-membered Alkylation, acylation

FCC: The World's Largest Catalytic Process

Fluid Catalytic Cracking (FCC) using zeolite catalysts processes over 14 million barrels of oil per day worldwide. Zeolite Y is the heart of FCC catalysts, converting heavy oil fractions into gasoline and other valuable products.

Code Example 3: Zeolite Shape Selectivity

"""
Demonstrate zeolite shape selectivity through molecular size filtering
"""
import numpy as np
import matplotlib.pyplot as plt

# Molecular kinetic diameters (Å) and zeolite pore sizes
molecules = {
    'H₂': 2.89,
    'N₂': 3.64,
    'O₂': 3.46,
    'CO₂': 3.30,
    'CH₄': 3.80,
    'C₂H₆': 4.44,
    'n-Hexane': 4.30,
    'Benzene': 5.85,
    'Cyclohexane': 6.00,
    'p-Xylene': 5.85,
    'o-Xylene': 6.80,
    'm-Xylene': 6.80,
}

zeolites = {
    'Zeolite A (LTA)': 4.1,
    'ZSM-5 (MFI)': 5.5,
    'Zeolite Y (FAU)': 7.4,
    'Zeolite Beta (BEA)': 7.0,
}

# Create visualization
fig, ax = plt.subplots(figsize=(12, 8))

# Plot molecular sizes as horizontal bars
y_pos = np.arange(len(molecules))
mol_names = list(molecules.keys())
mol_sizes = list(molecules.values())

colors = ['#4CAF50' if s < 5.5 else '#FF9800' if s < 7.0 else '#f44336'
          for s in mol_sizes]
bars = ax.barh(y_pos, mol_sizes, color=colors, alpha=0.7, edgecolor='black')

# Add zeolite pore size lines
for zeolite, pore_size in zeolites.items():
    ax.axvline(x=pore_size, linestyle='--', linewidth=2, alpha=0.8,
               label=f'{zeolite}: {pore_size} Å')

ax.set_yticks(y_pos)
ax.set_yticklabels(mol_names, fontsize=10)
ax.set_xlabel('Kinetic Diameter (Å)', fontsize=12)
ax.set_title('Zeolite Shape Selectivity: Molecular Sieve Effect', fontsize=14, fontweight='bold')
ax.legend(loc='upper right', fontsize=9)
ax.set_xlim(0, 9)
ax.grid(axis='x', alpha=0.3)

# Add annotations
ax.text(2.5, 11.5, '✓ Can enter ZSM-5', color='green', fontsize=10)
ax.text(6.5, 11.5, '✗ Cannot enter ZSM-5', color='red', fontsize=10)

plt.tight_layout()
plt.show()

# Explain selectivity
print("\nXylene Isomer Separation with ZSM-5:")
print("• p-Xylene (5.85 Å): Can diffuse through ZSM-5 pores (5.5 Å)")
print("• o-Xylene (6.80 Å): Too large, blocked at pore entrance")
print("• m-Xylene (6.80 Å): Too large, blocked at pore entrance")
print("\nThis enables selective production of p-xylene (polymer feedstock)!")

2.4 Metal-Organic Frameworks (MOFs) - 2025 Nobel Prize

2025 Nobel Prize in Chemistry

The 2025 Nobel Prize in Chemistry was awarded to Omar Yaghi, Susumu Kitagawa, and Gérard Férey for their pioneering work on Metal-Organic Frameworks (MOFs). These materials have surface areas up to 7,000 m²/g - far exceeding any other known material.

MOF Structure

MOFs are crystalline materials composed of:

graph TD A[Metal Nodes
Zn, Cu, Zr] --> C[MOF Crystal] B[Organic Linkers
BDC, BTC] --> C C --> D[Ultra-high Surface Area
up to 7,000 m²/g] C --> E[Tunable Pore Size
5-50 Å] C --> F[Designable Functionality
Catalysis, Storage, Separation] style C fill:#f093fb,stroke:#f5576c,stroke-width:2px,color:#fff style D fill:#e8f5e9,stroke:#4caf50 style E fill:#e8f5e9,stroke:#4caf50 style F fill:#e8f5e9,stroke:#4caf50

Representative MOFs

MOF Metal Linker Surface Area (m²/g) Applications
MOF-5 Zn BDC 3,800 Gas storage, proof of concept
HKUST-1 Cu BTC 1,500 Gas separation, catalysis
UiO-66 Zr BDC 1,200 Highly stable, water tolerant
ZIF-8 Zn 2-mIm 1,600 CO₂ capture, membrane separation
NU-110 Cu Extended linker 7,140 Record surface area (2012)

Code Example 4: MOF Surface Area Comparison

"""
Compare surface areas of MOFs, zeolites, and other materials
Demonstrates the extraordinary porosity of MOFs
"""
import numpy as np
import matplotlib.pyplot as plt

# Material data: (name, surface_area in m²/g, material_class)
materials = [
    ('Activated Carbon', 1000, 'Traditional'),
    ('Silica Gel', 500, 'Traditional'),
    ('Zeolite Y', 700, 'Zeolite'),
    ('ZSM-5', 400, 'Zeolite'),
    ('HKUST-1', 1500, 'MOF'),
    ('UiO-66', 1200, 'MOF'),
    ('MOF-5', 3800, 'MOF'),
    ('NU-110', 7140, 'MOF'),
]

# Separate by class
classes = {'Traditional': [], 'Zeolite': [], 'MOF': []}
for name, sa, cls in materials:
    classes[cls].append((name, sa))

# Colors
class_colors = {'Traditional': '#78909c', 'Zeolite': '#42a5f5', 'MOF': '#ab47bc'}

# Create figure
fig, ax = plt.subplots(figsize=(12, 6))

# Plot bars
x_pos = 0
x_ticks = []
x_labels = []
bar_width = 0.8

for cls, data in classes.items():
    for name, sa in data:
        color = class_colors[cls]
        bar = ax.bar(x_pos, sa, bar_width, color=color, edgecolor='black', alpha=0.8)
        x_ticks.append(x_pos)
        x_labels.append(name)
        x_pos += 1

    x_pos += 0.5  # Gap between classes

# Formatting
ax.set_xticks(x_ticks)
ax.set_xticklabels(x_labels, rotation=45, ha='right', fontsize=10)
ax.set_ylabel('BET Surface Area (m²/g)', fontsize=12)
ax.set_title('Surface Area Comparison: MOFs vs Traditional Materials', fontsize=14, fontweight='bold')
ax.grid(axis='y', alpha=0.3)

# Add legend
from matplotlib.patches import Patch
legend_elements = [Patch(facecolor=c, edgecolor='black', label=cls, alpha=0.8)
                   for cls, c in class_colors.items()]
ax.legend(handles=legend_elements, loc='upper left', fontsize=10)

# Add reference lines
ax.axhline(y=1000, color='gray', linestyle='--', alpha=0.5)
ax.text(7.5, 1100, 'Activated Carbon baseline', fontsize=9, color='gray')

# Annotate record
ax.annotate('World Record!\n7,140 m²/g', xy=(7, 7140), xytext=(5.5, 6500),
            fontsize=10, fontweight='bold', color='purple',
            arrowprops=dict(arrowstyle='->', color='purple'))

plt.tight_layout()
plt.show()

# Calculate comparison
print("\nMOF Surface Area Perspective:")
print(f"• NU-110: 7,140 m²/g = 0.714 hectares per gram!")
print(f"• 1 gram of NU-110 has the surface area of a tennis court")
print(f"• MOFs have 5-10x more surface area than activated carbon")

2.5 Single-Atom Catalysts (SACs)

2025-2026: The SAC Revolution

Single-Atom Catalysts represent the ultimate miniaturization of metal catalysts. With 100% atomic efficiency, every metal atom is accessible for catalysis. Recent advances enable:

SAC Advantages

Code Example 5: SAC Efficiency Calculation

"""
Calculate and compare atom efficiency of different catalyst types
Demonstrates the advantage of single-atom catalysts
"""
import numpy as np
import matplotlib.pyplot as plt

def calculate_surface_atoms(particle_size_nm, atom_diameter_nm=0.28):
    """
    Estimate fraction of surface atoms for a spherical nanoparticle

    For spherical particles, surface atoms ≈ 6 * (atom_diameter / particle_diameter)
    """
    if particle_size_nm <= atom_diameter_nm:
        return 1.0  # Single atom
    return min(1.0, 6 * atom_diameter_nm / particle_size_nm)

# Particle sizes to analyze
sizes = np.logspace(-0.5, 2, 100)  # 0.3 nm to 100 nm

# Calculate surface atom fractions
surface_fractions = [calculate_surface_atoms(s) for s in sizes]

# Create figure
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))

# Left: Surface atom fraction vs size
ax1.plot(sizes, np.array(surface_fractions) * 100, 'b-', linewidth=2)
ax1.axhline(y=100, color='green', linestyle='--', label='Single Atom (100%)')
ax1.axhline(y=50, color='orange', linestyle='--', alpha=0.5)
ax1.axhline(y=10, color='red', linestyle='--', alpha=0.5)

ax1.set_xscale('log')
ax1.set_xlabel('Particle Size (nm)', fontsize=12)
ax1.set_ylabel('Surface Atoms (%)', fontsize=12)
ax1.set_title('Atom Utilization vs Particle Size', fontsize=13, fontweight='bold')
ax1.grid(alpha=0.3)
ax1.set_ylim(0, 110)

# Add annotations
ax1.annotate('Single Atom\nCatalyst', xy=(0.5, 100), fontsize=10, color='green',
             fontweight='bold', ha='center')
ax1.annotate('Nanoclusters\n(1-2 nm)', xy=(1.5, 70), fontsize=9)
ax1.annotate('Nanoparticles\n(5-50 nm)', xy=(20, 25), fontsize=9)
ax1.annotate('Bulk\n(>100 nm)', xy=(70, 8), fontsize=9, color='red')

# Right: Cost comparison
categories = ['Bulk Pt\n(wasteful)', 'Pt Nanoparticles\n(5 nm)', 'Pt Nanoclusters\n(1 nm)', 'Pt SAC']
efficiency = [3, 30, 60, 100]
relative_cost = [100, 33, 17, 10]  # Relative to bulk for same activity

x = np.arange(len(categories))
width = 0.35

bars1 = ax2.bar(x - width/2, efficiency, width, label='Atom Efficiency (%)',
                color='#4CAF50', alpha=0.8)
bars2 = ax2.bar(x + width/2, relative_cost, width, label='Relative Cost (%)',
                color='#f44336', alpha=0.8)

ax2.set_ylabel('Percentage', fontsize=12)
ax2.set_title('SAC Economic Advantage', fontsize=13, fontweight='bold')
ax2.set_xticks(x)
ax2.set_xticklabels(categories, fontsize=9)
ax2.legend(fontsize=10)
ax2.grid(axis='y', alpha=0.3)

plt.tight_layout()
plt.show()

print("\nSAC Economic Impact:")
print("• 100% atom efficiency vs 3% for bulk Pt")
print("• 10x cost reduction for equivalent catalytic activity")
print("• Critical for precious metal sustainability")

2.6 Photocatalysts and Electrocatalysts

Photocatalysis

Photocatalysts use light energy to drive chemical reactions. The most famous example is TiO₂ for water splitting and pollution degradation.

Mechanism:

  1. Light absorption: Photon energy > bandgap → electron-hole pair
  2. Charge separation: Electrons to conduction band, holes in valence band
  3. Surface reactions: Electrons reduce, holes oxidize adsorbates

Electrocatalysis

Electrocatalysts facilitate electrochemical reactions at electrode surfaces. Critical for:

Code Example 6: Water Splitting Catalyst Comparison

"""
Compare electrocatalysts for water splitting (HER and OER)
Shows overpotential requirements for different materials
"""
import numpy as np
import matplotlib.pyplot as plt

# Catalyst data: overpotential at 10 mA/cm² (mV)
her_catalysts = {
    'Pt/C': 20,
    'MoS₂': 150,
    'Ni-Mo': 80,
    'CoP': 90,
    'WC': 120,
    'Fe₃P': 160,
}

oer_catalysts = {
    'IrO₂': 250,
    'RuO₂': 280,
    'NiFe-LDH': 230,
    'CoFe₂O₄': 350,
    'Ni₃S₂': 300,
    'Co₃O₄': 380,
}

# Create figure
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))

# HER catalysts
colors_her = ['#4CAF50' if v < 50 else '#FFC107' if v < 100 else '#FF5722'
              for v in her_catalysts.values()]
bars1 = ax1.barh(list(her_catalysts.keys()), list(her_catalysts.values()),
                  color=colors_her, edgecolor='black')
ax1.set_xlabel('Overpotential at 10 mA/cm² (mV)', fontsize=11)
ax1.set_title('Hydrogen Evolution (HER) Catalysts', fontsize=13, fontweight='bold')
ax1.axvline(x=50, color='green', linestyle='--', alpha=0.5, label='Excellent (<50 mV)')
ax1.axvline(x=100, color='orange', linestyle='--', alpha=0.5, label='Good (<100 mV)')
ax1.legend(fontsize=9)
ax1.grid(axis='x', alpha=0.3)
ax1.set_xlim(0, 200)

# OER catalysts
colors_oer = ['#4CAF50' if v < 250 else '#FFC107' if v < 300 else '#FF5722'
              for v in oer_catalysts.values()]
bars2 = ax2.barh(list(oer_catalysts.keys()), list(oer_catalysts.values()),
                  color=colors_oer, edgecolor='black')
ax2.set_xlabel('Overpotential at 10 mA/cm² (mV)', fontsize=11)
ax2.set_title('Oxygen Evolution (OER) Catalysts', fontsize=13, fontweight='bold')
ax2.axvline(x=250, color='green', linestyle='--', alpha=0.5, label='Excellent (<250 mV)')
ax2.axvline(x=300, color='orange', linestyle='--', alpha=0.5, label='Good (<300 mV)')
ax2.legend(fontsize=9)
ax2.grid(axis='x', alpha=0.3)
ax2.set_xlim(0, 450)

plt.tight_layout()
plt.show()

print("\nWater Splitting Efficiency:")
print("Theoretical: E = 1.23 V")
print(f"With Pt/C + IrO₂: E = 1.23 + 0.02 + 0.25 = 1.50 V")
print(f"Efficiency = 1.23/1.50 = {1.23/1.50*100:.1f}%")
print("\nNon-precious metal alternatives (NiFe-LDH + Ni-Mo):")
print(f"E = 1.23 + 0.08 + 0.23 = 1.54 V, Efficiency = {1.23/1.54*100:.1f}%")

2.7 Organometallic Catalysts

Homogeneous Transition Metal Catalysis

Organometallic catalysts contain metal-carbon bonds and operate in the same phase as reactants. Key examples:

Catalyst Metal Reaction Nobel Prize
Wilkinson's Catalyst Rh Hydrogenation -
Grubbs Catalyst Ru Olefin metathesis 2005
Pd(PPh₃)₄ Pd Suzuki coupling 2010
Ziegler-Natta Ti Polymerization 1963

2.8 Chapter Summary

Key Takeaways

  1. Metal catalysts follow the Sabatier principle: optimal binding gives highest activity
  2. Metal oxides provide support, active sites, and unique functionalities
  3. Zeolites enable shape-selective catalysis through molecular sieve effects
  4. MOFs (2025 Nobel) have record surface areas up to 7,000 m²/g
  5. Single-atom catalysts achieve 100% atomic efficiency
  6. Photocatalysts and electrocatalysts enable renewable energy conversion

Exercises

Exercise 1: Volcano Plot Analysis

Using the d-band theory, explain why Pt-Ni alloys can be more active than pure Pt for some reactions.

Exercise 2: MOF Design

Design a hypothetical MOF for CO₂ capture. What metal and linker would you choose? Justify your answer.

Exercise 3: SAC Calculation

Calculate the surface atom fraction for Pt nanoparticles of sizes 1, 5, 10, and 50 nm. At what size does the fraction drop below 10%?

Exercise 4: Electrocatalyst Selection

For a cost-effective water electrolyzer, which non-precious metal catalysts would you combine for HER and OER? Calculate the total overpotential.

Next Chapter

In Chapter 3: Key Catalytic Reactions, we will explore major industrial catalytic processes including the Haber-Bosch process, Fischer-Tropsch synthesis, catalytic cracking, hydrogenation, and cross-coupling reactions that have transformed modern chemistry.

Disclaimer