🌐 EN | 日本語 (準備中) Last sync: 2025-11-16
MS Dojo > Synthesis Processes > Ch1
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
Disclaimer
- This content is provided solely for educational, research, and informational purposes and does not constitute professional advice (legal, accounting, technical warranty, etc.).
- This content and accompanying code examples are provided “AS IS” without any warranty, express or implied, including but not limited to merchantability, fitness for a particular purpose, non-infringement, accuracy, completeness, operation, or safety.
- The author and Tohoku University assume no responsibility for the content, availability, or safety of external links, third-party data, tools, libraries, etc.
- To the maximum extent permitted by applicable law, the author and Tohoku University shall not be liable for any direct, indirect, incidental, special, consequential, or punitive damages arising from the use, execution, or interpretation of this content.
- The content may be changed, updated, or discontinued without notice.
- The copyright and license of this content are subject to the stated conditions (e.g., CC BY 4.0). Such licenses typically include no-warranty clauses.