🌐 JP | 🇬🇧 EN Last sync: 2025-11-16

第1章: 固相合成法

粉末冶金とセラミックスプロセッシング

1.1 固相反応の基礎

固相合成は、高温下で固体反応物同士を直接反応させる手法です。主要なメカニズムは、相境界を横切る固相拡散です。

📐 拡散律速の速度論: $$x^2 = kt$$ ここで $x$ は反応層の厚さ、$k$ は速度定数、$t$ は時間です(放物線成長則)。

💻 コード例1: 固相反応の速度論

# 必要環境:
# - 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):
    """固相反応の厚さをモデル化する"""
    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 粉末冶金プロセス

粉末冶金は、金属粉末を圧縮成形と焼結を経て部品にする手法です。

💻 コード例2: 焼結による緻密化

def sintering_densification(time, T, rho_0=0.60, Q=300000):
    """焼結中の密度上昇をモデル化する"""
    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 メカノケミカル合成

高エネルギーボールミリングは、機械的エネルギーを通じて化学反応を誘起します。

💻 コード例3: ボールミリングのシミュレーション

def ball_milling_model(time, energy_input=100):
    """粒径の減少と反応をモデル化する"""
    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 セラミックスプロセッシング

酸化物粉末から仮焼と焼結を経てセラミックスを合成します。

💻 コード例4: 相形成温度

def phase_formation_temperature(composition, heating_rate=5):
    """相形成温度を予測する"""
    # 簡略化モデル
    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 反応雰囲気の制御

雰囲気の組成は、酸化・還元の制御において決定的に重要です。

💻 コード例5: 酸素分圧

def oxygen_partial_pressure(T, composition='air'):
    """酸素分圧を計算する"""
    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 結晶粒成長の制御

結晶粒径の制御は、機械的特性にとって決定的に重要です。

💻 コード例6: 結晶粒成長モデル

def grain_growth(time, T, D_0=1, Q=400000, n=2):
    """焼結中の結晶粒成長をモデル化する"""
    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 応用

固相合成は、構造用セラミックス、磁性材料、超伝導体に応用されます。

💻 コード例7: プロセス最適化

def optimize_sintering(target_density=0.95):
    """目標密度に対する温度と時間を最適化する"""
    temps = np.linspace(1200, 1600, 50)
    times = []

    for T in temps:
        # 目標密度に到達する時間を求める
        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()

📝 演習問題

✏️ 演習問題
  1. D=1e-12 m²/s のとき、1200°Cで5時間後の反応層の厚さを計算してください。
  2. 1300°Cで90%密度に到達する焼結時間を予測してください。
  3. 10時間のボールミリング後の粒径をモデル化してください。
  4. 1000°Cの還元雰囲気における酸素分圧を求めてください。
  5. 結晶粒成長を最小に抑えつつ95%密度を得る焼結プロファイルを最適化してください。

まとめ

免責事項