🌐 EN | 日本語 (準備中) Last sync: 2025-11-16

Chapter 1: Solid-State Synthesis Methods

Powder Metallurgy and Ceramic Processing

1.1 Solid-State Reaction Fundamentals

Solid-state synthesis involves direct reaction between solid reactants at elevated temperatures. Key mechanism is solid-state diffusion across phase boundaries.

📐 Diffusion-Controlled Kinetics: $$x^2 = kt$$ where $x$ is reaction layer thickness, $k$ is rate constant, $t$ is time (parabolic growth law).

💻 Code Example 1: Solid-State Reaction Kinetics

# Requirements:
# - Python 3.9+
# - matplotlib>=3.7.0
# - numpy>=1.24.0, <2.0.0

import numpy as np
import matplotlib.pyplot as plt

def solidstate_reaction(time, D, T, Q=200000):
    """Model solid-state reaction thickness"""
    R = 8.314
    k = D * np.exp(-Q/(R*T))
    thickness = np.sqrt(k * time)
    return thickness

time = np.linspace(0, 10, 100)
temps = [1000, 1200, 1400]

plt.figure(figsize=(10, 6))
for T in temps:
    x = solidstate_reaction(time, D=1e-10, T=T+273)
    plt.plot(time, x*1e6, linewidth=2, label=f'{T}°C')
plt.xlabel('Time (hours)')
plt.ylabel('Reaction Layer Thickness (μm)')
plt.title('Solid-State Reaction Kinetics')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

1.2 Powder Metallurgy Process

Powder metallurgy produces components from metal powders through compaction and sintering.

💻 Code Example 2: Sintering Densification

def sintering_densification(time, T, rho_0=0.60, Q=300000):
    """Model density increase during sintering"""
    R, A = 8.314, 1e8
    k = A * np.exp(-Q/(R*T))
    rho = rho_0 + (1 - rho_0) * (1 - np.exp(-k*time))
    return rho

time = np.linspace(0, 5, 100)
rho = sintering_densification(time, T=1400+273)

plt.figure(figsize=(10, 6))
plt.plot(time, rho*100, 'b-', linewidth=2)
plt.xlabel('Sintering Time (hours)')
plt.ylabel('Relative Density (%)')
plt.title('Densification During Sintering')
plt.grid(True, alpha=0.3)
plt.show()

1.3 Mechanochemical Synthesis

High-energy ball milling induces chemical reactions through mechanical energy.

💻 Code Example 3: Ball Milling Simulation

def ball_milling_model(time, energy_input=100):
    """Model particle size reduction and reaction"""
    particle_size = 10 * np.exp(-0.1 * time * energy_input/100)
    conversion = 1 - np.exp(-0.05 * time * energy_input/100)
    return particle_size, conversion

time = np.linspace(0, 20, 100)
size, conv = ball_milling_model(time)

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))
ax1.plot(time, size, 'b-', linewidth=2)
ax1.set_xlabel('Milling Time (hours)')
ax1.set_ylabel('Particle Size (μm)')
ax2.plot(time, conv*100, 'r-', linewidth=2)
ax2.set_xlabel('Milling Time (hours)')
ax2.set_ylabel('Conversion (%)')
plt.show()

1.4 Ceramic Processing

Ceramics synthesis from oxide powders through calcination and sintering.

💻 Code Example 4: Phase Formation Temperature

def phase_formation_temperature(composition, heating_rate=5):
    """Predict phase formation temperature"""
    # Simplified model
    T_form = 800 + 200 * composition + 50 * heating_rate
    return T_form

compositions = np.linspace(0, 1, 50)
T = [phase_formation_temperature(x) for x in compositions]

plt.figure(figsize=(10, 6))
plt.plot(compositions, T, 'b-', linewidth=2)
plt.xlabel('Composition (x in A_xB_{1-x}O)')
plt.ylabel('Formation Temperature (°C)')
plt.grid(True, alpha=0.3)
plt.show()

1.5 Reaction Atmosphere Control

Atmosphere composition critical for oxidation/reduction control.

💻 Code Example 5: Oxygen Partial Pressure

def oxygen_partial_pressure(T, composition='air'):
    """Calculate oxygen partial pressure"""
    if composition == 'air':
        pO2 = 0.21
    elif composition == 'reducing':
        pO2 = 1e-15 * np.exp(-100000/(8.314*T))
    return pO2

temps = np.linspace(800, 1400, 100)
pO2_air = [oxygen_partial_pressure(T+273, 'air') for T in temps]
pO2_red = [oxygen_partial_pressure(T+273, 'reducing') for T in temps]

plt.figure(figsize=(10, 6))
plt.semilogy(temps, pO2_air, label='Air')
plt.semilogy(temps, pO2_red, label='Reducing')
plt.xlabel('Temperature (°C)')
plt.ylabel('Oxygen Partial Pressure (atm)')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

1.6 Grain Growth Control

Grain size control critical for mechanical properties.

💻 Code Example 6: Grain Growth Model

def grain_growth(time, T, D_0=1, Q=400000, n=2):
    """Model grain growth during sintering"""
    R = 8.314
    k = D_0 * np.exp(-Q/(R*T))
    D = (D_0**n + k*time)**(1/n)
    return D

time = np.linspace(0, 10, 100)
D = grain_growth(time, T=1500+273)

plt.figure(figsize=(10, 6))
plt.plot(time, D, 'b-', linewidth=2)
plt.xlabel('Time (hours)')
plt.ylabel('Grain Size (μm)')
plt.title('Grain Growth During Sintering')
plt.grid(True, alpha=0.3)
plt.show()

1.7 Applications

Solid-state synthesis for structural ceramics, magnetic materials, superconductors.

💻 Code Example 7: Process Optimization

def optimize_sintering(target_density=0.95):
    """Optimize temperature and time for target density"""
    temps = np.linspace(1200, 1600, 50)
    times = []
    
    for T in temps:
        # Find time to reach target density
        t = np.linspace(0, 20, 1000)
        rho = sintering_densification(t, T+273)
        idx = np.argmin(np.abs(rho - target_density))
        times.append(t[idx])
    
    return temps, times

temps, times = optimize_sintering()
plt.figure(figsize=(10, 6))
plt.plot(temps, times, 'b-', linewidth=2)
plt.xlabel('Temperature (°C)')
plt.ylabel('Time to 95% Density (hours)')
plt.grid(True, alpha=0.3)
plt.show()

📝 Exercises

✏️ Exercises
  1. Calculate reaction layer thickness after 5 hours at 1200°C with D=1e-12 m²/s.
  2. Predict sintering time to reach 90% density at 1300°C.
  3. Model particle size after 10 hours ball milling.
  4. Determine oxygen partial pressure in reducing atmosphere at 1000°C.
  5. Optimize sintering profile for 95% density with minimum grain growth.

Summary

Disclaimer