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
- Calculate reaction layer thickness after 5 hours at 1200°C with D=1e-12 m²/s.
- Predict sintering time to reach 90% density at 1300°C.
- Model particle size after 10 hours ball milling.
- Determine oxygen partial pressure in reducing atmosphere at 1000°C.
- Optimize sintering profile for 95% density with minimum grain growth.
Summary
- Solid-state synthesis via diffusion-controlled reactions at high temperature
- Powder metallurgy: compaction and sintering of metal powders
- Mechanochemical synthesis: reactions induced by mechanical energy
- Ceramic processing: calcination and sintering of oxide powders
- Atmosphere control critical for oxidation state
- Grain growth must be controlled for optimal properties
- Applications: ceramics, magnets, superconductors