学習目標
- 粒子径と凝集傾向の関係を分析する
- 安定性への表面エネルギーの寄与を理解する
- 環境因子(湿度、温度、イオン強度)を評価する
- 粒子形状と表面状態の影響を評価する
- 凝集傾向を低減した粒子を設計する
2.1 粒子径の影響
粒子径は凝集挙動に影響を与える最も重要な因子です。粒子が小さくなるにつれて、表面原子とバルク原子の比率が劇的に増加し、表面エネルギーが高くなり、凝集への駆動力が強くなります。
表面積対体積比
球状粒子の場合:
$$\frac{S}{V} = \frac{4\pi r^2}{\frac{4}{3}\pi r^3} = \frac{3}{r} = \frac{6}{d}$$ここで、\(S\)は表面積、\(V\)は体積、\(d\)は直径です。
臨界粒子径の概念
「臨界径」以下では、粒子は重力や慣性ではなく表面力に支配されます。この臨界径は材料特性に依存しますが、乾燥粉体では通常1-10 μmです。ナノ粒子(100 nm未満)では、表面力が常に支配的となります。
例1: 粒子径依存の凝集傾向
import numpy as np
import matplotlib.pyplot as plt
# ===================================
# 例1: 粒子径依存の凝集解析
# ===================================
def surface_to_volume_ratio(d_nm):
"""球状粒子のS/V比を計算(nm⁻¹単位)"""
return 6 / d_nm
def surface_energy_contribution(d_nm, gamma_J_m2):
"""
粒子あたりの表面エネルギーを計算
パラメータ:
d_nm: 粒子径(nm)
gamma_J_m2: 表面エネルギー(J/m²)
戻り値:
300Kにおける表面エネルギー(kT単位)
"""
d_m = d_nm * 1e-9
S = np.pi * d_m**2
E_surface = gamma_J_m2 * S
kT = 1.38e-23 * 300
return E_surface / kT
def gravitational_energy(d_nm, rho_kg_m3, h_m=1e-9):
"""
高さhに対する重力ポテンシャルエネルギーを計算
パラメータ:
d_nm: 粒子径(nm)
rho_kg_m3: 密度(kg/m³)
h_m: 高さ(デフォルト1nm、接触距離程度)
戻り値:
300Kにおける重力エネルギー(kT単位)
"""
d_m = d_nm * 1e-9
V = (np.pi / 6) * d_m**3
m = rho_kg_m3 * V
E_grav = m * 9.8 * h_m
kT = 1.38e-23 * 300
return E_grav / kT
def thermal_energy():
"""熱エネルギー(kT単位、定義により1)"""
return 1.0
# 材料特性
materials = {
'金': {'gamma': 1.5, 'rho': 19300, 'color': 'gold'},
'シリカ': {'gamma': 0.3, 'rho': 2200, 'color': 'blue'},
'アルミナ': {'gamma': 1.0, 'rho': 3950, 'color': 'green'},
'ポリマー': {'gamma': 0.04, 'rho': 1050, 'color': 'purple'}
}
# 粒子径範囲
d_range = np.logspace(0, 4, 200) # 1 nm から 10 μm
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
# プロット1: 表面積対体積比
ax1 = axes[0, 0]
sv_ratio = surface_to_volume_ratio(d_range)
ax1.loglog(d_range, sv_ratio, 'b-', linewidth=2.5)
ax1.axhline(y=0.1, color='r', linestyle='--', alpha=0.7)
ax1.axhline(y=0.01, color='orange', linestyle='--', alpha=0.7)
ax1.text(5000, 0.12, '高S/V領域', color='r', fontsize=10)
ax1.set_xlabel('粒子径 (nm)', fontsize=11)
ax1.set_ylabel('表面積/体積比 (nm⁻¹)', fontsize=11)
ax1.set_title('表面積対体積比 vs 粒子径', fontsize=12, fontweight='bold')
ax1.grid(True, alpha=0.3, which='both')
ax1.set_xlim(1, 10000)
# プロット2: 粒子あたりの表面エネルギー
ax2 = axes[0, 1]
for name, props in materials.items():
E_surf = [surface_energy_contribution(d, props['gamma']) for d in d_range]
ax2.loglog(d_range, E_surf, linewidth=2, label=name, color=props['color'])
ax2.axhline(y=1, color='gray', linestyle=':', alpha=0.7)
ax2.text(5000, 1.5, 'E = kT', color='gray', fontsize=10)
ax2.set_xlabel('粒子径 (nm)', fontsize=11)
ax2.set_ylabel('表面エネルギー (kT)', fontsize=11)
ax2.set_title('粒子あたりの表面エネルギー', fontsize=12, fontweight='bold')
ax2.legend(loc='lower right')
ax2.grid(True, alpha=0.3, which='both')
ax2.set_xlim(1, 10000)
# プロット3: 表面エネルギー vs 重力エネルギー
ax3 = axes[1, 0]
for name, props in materials.items():
E_surf = [surface_energy_contribution(d, props['gamma']) for d in d_range]
E_grav = [gravitational_energy(d, props['rho']) for d in d_range]
ratio = np.array(E_surf) / np.array(E_grav)
ax3.loglog(d_range, ratio, linewidth=2, label=name, color=props['color'])
ax3.axhline(y=1, color='red', linestyle='--', linewidth=2)
ax3.fill_between(d_range, 1, 1e15, alpha=0.1, color='red')
ax3.text(10, 1e10, '表面力支配', fontsize=10, color='red')
ax3.text(5000, 0.01, '重力支配', fontsize=10, color='blue')
ax3.set_xlabel('粒子径 (nm)', fontsize=11)
ax3.set_ylabel('E_表面 / E_重力', fontsize=11)
ax3.set_title('表面 vs 重力エネルギー', fontsize=12, fontweight='bold')
ax3.legend(loc='upper right')
ax3.grid(True, alpha=0.3, which='both')
ax3.set_xlim(1, 10000)
ax3.set_ylim(1e-3, 1e15)
# プロット4: 凝集傾向指数
ax4 = axes[1, 1]
# 凝集傾向をS/V × γに比例すると定義
for name, props in materials.items():
tendency = [surface_to_volume_ratio(d) * props['gamma'] for d in d_range]
ax4.loglog(d_range, tendency, linewidth=2, label=name, color=props['color'])
ax4.axhspan(0.1, 10, alpha=0.2, color='yellow', label='中程度の傾向')
ax4.axhspan(10, 1000, alpha=0.2, color='red', label='高い傾向')
ax4.set_xlabel('粒子径 (nm)', fontsize=11)
ax4.set_ylabel('凝集傾向指数 (γ × S/V)', fontsize=11)
ax4.set_title('相対的凝集傾向', fontsize=12, fontweight='bold')
ax4.legend(loc='upper right', fontsize=9)
ax4.grid(True, alpha=0.3, which='both')
ax4.set_xlim(1, 10000)
plt.tight_layout()
plt.savefig('size_effects.png', dpi=150, bbox_inches='tight')
plt.show()
# 臨界径の表示
print("\n=== 臨界径解析 ===")
print("表面エネルギーが重力エネルギーと等しくなる粒子径(h=1nm):")
for name, props in materials.items():
# 解: γ×πd² = ρ×(π/6)d³×g×h
# d_critical = 6γ/(ρ×g×h)
d_crit = 6 * props['gamma'] / (props['rho'] * 9.8 * 1e-9)
print(f" {name:10s}: d_臨界 ≈ {d_crit/1000:.1f} μm")
=== 臨界径解析 ===
表面エネルギーが重力エネルギーと等しくなる粒子径(h=1nm):
金 : d_臨界 ≈ 47.6 μm
シリカ : d_臨界 ≈ 83.5 μm
アルミナ : d_臨界 ≈ 154.8 μm
ポリマー : d_臨界 ≈ 23.3 μm
実用的な意味
約50 μm未満の粒子では、表面力が重力を上回ります。ナノ粒子(100 nm未満)では、表面力は重力の10⁶-10¹²倍になります。これが、ナノ粒子粉体が砂のように「流れない」理由です—凝集して表面に付着します。
2.2 表面エネルギー
表面エネルギー(\(\gamma\))は、材料のバルクと比較した表面の過剰エネルギーを表します。表面エネルギーが高い材料は、凝集によって表面積を最小化しようとする傾向が強くなります。
| 材料 | 表面エネルギー (J/m²) | 凝集傾向 |
|---|---|---|
| 金属(Au、Ag、Cu) | 1.0 - 2.5 | 非常に高い |
| 金属酸化物(TiO₂、Al₂O₃) | 0.5 - 1.5 | 高い |
| シリカ(SiO₂) | 0.2 - 0.4 | 中程度 |
| ポリマー | 0.02 - 0.05 | 低い |
| フッ素ポリマー(PTFE) | 0.015 - 0.02 | 非常に低い |
表面エネルギー低減戦略
例2: 表面エネルギー修飾解析
import numpy as np
import matplotlib.pyplot as plt
# ===================================
# 例2: 表面エネルギー修飾戦略
# ===================================
def hamaker_from_surface_energy(gamma, d0=0.165e-9):
"""
表面エネルギーからHamaker定数を推定
A ≈ 24πd₀²γ(Israelachvili近似)
パラメータ:
gamma: 表面エネルギー(J/m²)
d0: 平衡距離(約0.165 nm)
戻り値:
Hamaker定数(J)
"""
return 24 * np.pi * d0**2 * gamma
def vdw_energy_at_contact(R_nm, gamma):
"""
等径球の接触時ファンデルワールスエネルギー
パラメータ:
R_nm: 粒子半径(nm)
gamma: 表面エネルギー(J/m²)
戻り値:
300Kにおけるエネルギー(kT単位)
"""
R = R_nm * 1e-9
A_H = hamaker_from_surface_energy(gamma)
h = 0.3e-9 # 接触距離
V_vdw = -A_H * R / (12 * h)
kT = 1.38e-23 * 300
return abs(V_vdw / kT)
# 修飾前後の表面エネルギー
surface_modifications = {
'未処理TiO₂': {'gamma_before': 0.8, 'gamma_after': 0.8},
'TiO₂ + シラン': {'gamma_before': 0.8, 'gamma_after': 0.03},
'未処理SiO₂': {'gamma_before': 0.3, 'gamma_after': 0.3},
'SiO₂ + PEG': {'gamma_before': 0.3, 'gamma_after': 0.04},
'未処理Au': {'gamma_before': 1.5, 'gamma_after': 1.5},
'Au + チオールSAM': {'gamma_before': 1.5, 'gamma_after': 0.025},
'未処理Fe₃O₄': {'gamma_before': 1.0, 'gamma_after': 1.0},
'Fe₃O₄ + オレイン酸': {'gamma_before': 1.0, 'gamma_after': 0.03}
}
# 20 nm粒子の付着エネルギーを計算
R = 10 # nm(半径)
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# プロット1: 表面エネルギーの比較
ax1 = axes[0]
materials = ['TiO₂', 'SiO₂', 'Au', 'Fe₃O₄']
modifiers = ['シラン', 'PEG', 'チオールSAM', 'オレイン酸']
x = np.arange(len(materials))
width = 0.35
gamma_before = [0.8, 0.3, 1.5, 1.0]
gamma_after = [0.03, 0.04, 0.025, 0.03]
bars1 = ax1.bar(x - width/2, gamma_before, width, label='未処理表面',
color='red', alpha=0.7)
bars2 = ax1.bar(x + width/2, gamma_after, width, label='修飾表面',
color='green', alpha=0.7)
ax1.set_ylabel('表面エネルギー (J/m²)', fontsize=11)
ax1.set_title('表面修飾による表面エネルギー低減', fontsize=12, fontweight='bold')
ax1.set_xticks(x)
ax1.set_xticklabels([f'{m}\n({mod})' for m, mod in zip(materials, modifiers)], fontsize=9)
ax1.legend()
ax1.set_yscale('log')
ax1.set_ylim(0.01, 5)
ax1.grid(True, alpha=0.3, axis='y')
# 低減率を追加
for i, (gb, ga) in enumerate(zip(gamma_before, gamma_after)):
reduction = (1 - ga/gb) * 100
ax1.annotate(f'{reduction:.0f}%↓', xy=(i + width/2, ga),
xytext=(0, 5), textcoords='offset points',
ha='center', fontsize=9, color='green')
# プロット2: 付着エネルギーの比較
ax2 = axes[1]
E_before = [vdw_energy_at_contact(R, g) for g in gamma_before]
E_after = [vdw_energy_at_contact(R, g) for g in gamma_after]
bars1 = ax2.bar(x - width/2, E_before, width, label='未処理表面',
color='red', alpha=0.7)
bars2 = ax2.bar(x + width/2, E_after, width, label='修飾表面',
color='green', alpha=0.7)
ax2.axhline(y=10, color='blue', linestyle='--', alpha=0.7)
ax2.text(3.5, 12, '熱的限界 (~10 kT)', fontsize=9, color='blue')
ax2.set_ylabel('接触時付着エネルギー (kT)', fontsize=11)
ax2.set_title('付着エネルギー: 20 nm粒子', fontsize=12, fontweight='bold')
ax2.set_xticks(x)
ax2.set_xticklabels(materials)
ax2.legend()
ax2.set_yscale('log')
ax2.grid(True, alpha=0.3, axis='y')
plt.tight_layout()
plt.savefig('surface_modification.png', dpi=150, bbox_inches='tight')
plt.show()
# 要約表
print("\n=== 表面修飾の効果 ===")
print(f"{'材料':15s} {'γ_未処理':>10s} {'γ_修飾':>10s} {'低減率':>12s} {'E_未処理 (kT)':>12s} {'E_修飾 (kT)':>12s}")
print("-" * 75)
for m, mod, gb, ga in zip(materials, modifiers, gamma_before, gamma_after):
eb = vdw_energy_at_contact(R, gb)
ea = vdw_energy_at_contact(R, ga)
reduction = (1 - ga/gb) * 100
print(f"{m+' + '+mod:15s} {gb:>10.2f} {ga:>10.3f} {reduction:>11.0f}% {eb:>12.1f} {ea:>12.1f}")
=== 表面修飾の効果 ===
材料 γ_未処理 γ_修飾 低減率 E_未処理 (kT) E_修飾 (kT)
---------------------------------------------------------------------------
TiO₂ + シラン 0.80 0.030 96% 266.9 10.0
SiO₂ + PEG 0.30 0.040 87% 100.1 13.4
Au + チオールSAM 1.50 0.025 98% 500.5 8.3
Fe₃O₄ + オレイン酸 1.00 0.030 97% 333.6 10.0
重要な発見
表面修飾により付着エネルギーを95-98%低減できます!適切な表面処理により、粒子-粒子間相互作用を熱エネルギースケール(約10 kT)まで低下させ、ブラウン運動だけで安定な分散を実現できます。
2.3 環境条件
2.3.1 湿度の影響
相対湿度(RH)は、粒子接触部での毛管凝縮を通じてナノ粒子の凝集に劇的な影響を与えます。
臨界湿度閾値
- RH 30%未満: 毛管効果は最小限;静電力が支配的
- RH 30-60%: 毛管ブリッジが形成開始;中程度の凝集
- RH 60%超: 強い毛管力;深刻な凝集リスク
2.3.2 温度の影響
温度は複数のメカニズムを通じて凝集に影響します:
- 熱エネルギー: 高温はブラウン運動を増加(分散促進)
- 拡散: 高温は焼結を加速(凝集促進)
- 粘度: 高温は溶媒粘度を低下(沈降加速)
例3: 環境影響シミュレーション
import numpy as np
import matplotlib.pyplot as plt
# ===================================
# 例3: 凝集への環境影響
# ===================================
def capillary_force_vs_humidity(R_nm, RH_percent, gamma_water=0.072, theta=30):
"""
湿度の関数として毛管力を推定
毛管凝縮はRH約30%以上で顕著になる
パラメータ:
R_nm: 粒子半径(nm)
RH_percent: 相対湿度(%)
gamma_water: 水の表面張力(N/m)
theta: 接触角(度)
戻り値:
毛管力(N)
"""
if RH_percent < 30:
# 臨界RH以下では毛管効果は最小
return 0
else:
# 毛管力はRHとともに増加
R = R_nm * 1e-9
# Kelvin半径がメニスカスサイズを決定
r_kelvin = -0.54e-9 / np.log(RH_percent / 100) # 25°Cでnm単位
# 最大毛管力をRHでスケール
F_max = 2 * np.pi * R * gamma_water * np.cos(np.radians(theta))
# 凝縮水量でスケール
scale = (RH_percent - 30) / 70 # 30%で0、100%で1
return F_max * min(scale, 1.0)
def thermal_energy_factor(T_K):
"""300Kに対する相対熱エネルギー"""
return T_K / 300
def sintering_rate_factor(T_K, T_m_K, E_a=200e3):
"""
相対焼結速度(アレニウス式)
0.3×T_mでの速度で正規化
"""
R_gas = 8.314
rate = np.exp(-E_a / (R_gas * T_K))
rate_ref = np.exp(-E_a / (R_gas * 0.3 * T_m_K))
return rate / rate_ref
def debye_length_factor(ionic_strength_mM):
"""
純水に対する相対デバイ長
λ_D ∝ 1/√I
"""
I_ref = 1e-4 # 約0.1 mM基準
return np.sqrt(I_ref / (ionic_strength_mM / 1000))
# 包括的な環境解析を作成
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
# プロット1: 湿度の影響
ax1 = axes[0, 0]
RH_range = np.linspace(0, 100, 100)
for R_nm, color in [(10, 'blue'), (50, 'green'), (100, 'red')]:
F_cap = [capillary_force_vs_humidity(R_nm, RH) for RH in RH_range]
F_nN = np.array(F_cap) * 1e9
ax1.plot(RH_range, F_nN, linewidth=2, label=f'd = {2*R_nm} nm', color=color)
ax1.axvline(x=30, color='gray', linestyle='--', alpha=0.7)
ax1.axvline(x=60, color='orange', linestyle='--', alpha=0.7)
ax1.text(32, 0.5, '開始点', fontsize=9, color='gray')
ax1.text(62, 0.5, '臨界点', fontsize=9, color='orange')
ax1.set_xlabel('相対湿度 (%)', fontsize=11)
ax1.set_ylabel('毛管力 (nN)', fontsize=11)
ax1.set_title('湿度が毛管力に与える影響', fontsize=12, fontweight='bold')
ax1.legend()
ax1.grid(True, alpha=0.3)
ax1.set_xlim(0, 100)
# プロット2: 温度の影響
ax2 = axes[0, 1]
T_range = np.linspace(250, 600, 100)
T_m = 1200 # 一般的な金属ナノ粒子
thermal = [thermal_energy_factor(T) for T in T_range]
sintering = [sintering_rate_factor(T, T_m) for T in T_range]
ax2.semilogy(T_range - 273, thermal, 'b-', linewidth=2, label='熱エネルギー(分散促進)')
ax2.semilogy(T_range - 273, sintering, 'r-', linewidth=2, label='焼結速度(凝集促進)')
# 交差点を見つける
crossover_idx = np.argmin(np.abs(np.array(thermal) - np.array(sintering)))
ax2.axvline(x=T_range[crossover_idx] - 273, color='purple', linestyle=':', alpha=0.7)
ax2.scatter([T_range[crossover_idx] - 273], [thermal[crossover_idx]], s=100,
color='purple', zorder=5, label='交差点')
ax2.set_xlabel('温度 (°C)', fontsize=11)
ax2.set_ylabel('相対効果(正規化)', fontsize=11)
ax2.set_title('温度: 競合する効果', fontsize=12, fontweight='bold')
ax2.legend(loc='upper left')
ax2.grid(True, alpha=0.3, which='both')
ax2.set_xlim(-25, 325)
# プロット3: イオン強度の影響
ax3 = axes[1, 0]
I_range = np.logspace(-2, 3, 100) # 0.01 mM から 1000 mM
lambda_D = [debye_length_factor(I) for I in I_range]
lambda_D_nm = 96 * np.array(lambda_D) # 基準: 0.01 mMで96 nm
ax3.loglog(I_range, lambda_D_nm, 'b-', linewidth=2.5)
ax3.axhline(y=10, color='red', linestyle='--', alpha=0.7)
ax3.axhline(y=1, color='orange', linestyle='--', alpha=0.7)
ax3.fill_between(I_range, 1, 10, alpha=0.2, color='yellow')
ax3.text(500, 15, 'λ_D > 10 nm: 良好な安定性', fontsize=9, color='green')
ax3.text(500, 0.7, 'λ_D < 1 nm: 不良な安定性', fontsize=9, color='red')
ax3.set_xlabel('イオン強度 (mM)', fontsize=11)
ax3.set_ylabel('デバイ長 (nm)', fontsize=11)
ax3.set_title('イオン強度が静電反発に与える影響', fontsize=12, fontweight='bold')
ax3.grid(True, alpha=0.3, which='both')
ax3.set_xlim(0.01, 1000)
ax3.set_ylim(0.1, 1000)
# プロット4: 安定性マップ(RH vs イオン強度)
ax4 = axes[1, 1]
RH_grid = np.linspace(0, 100, 50)
I_grid = np.logspace(-1, 3, 50)
RH_mesh, I_mesh = np.meshgrid(RH_grid, I_grid)
# 安定性スコアを定義(0 = 不安定、1 = 安定)
# 低RHかつ低イオン強度 = より安定
def stability_score(RH, I_mM):
# 毛管の寄与(低RH = 良好)
cap_score = 1 - max(0, (RH - 30)) / 70
# 静電の寄与(低I = 良好)
elec_score = 1 / (1 + I_mM / 10)
return 0.5 * cap_score + 0.5 * elec_score
stability = np.zeros_like(RH_mesh)
for i in range(len(I_grid)):
for j in range(len(RH_grid)):
stability[i, j] = stability_score(RH_mesh[i, j], I_mesh[i, j])
contour = ax4.contourf(RH_mesh, I_mesh, stability, levels=20, cmap='RdYlGn')
ax4.set_yscale('log')
plt.colorbar(contour, ax=ax4, label='安定性スコア')
ax4.set_xlabel('相対湿度 (%)', fontsize=11)
ax4.set_ylabel('イオン強度 (mM)', fontsize=11)
ax4.set_title('安定性マップ: 環境最適化', fontsize=12, fontweight='bold')
# 最適領域をマーク
ax4.axhline(y=1, color='white', linestyle='--', alpha=0.7)
ax4.axvline(x=30, color='white', linestyle='--', alpha=0.7)
ax4.text(10, 0.2, '最適\n領域', fontsize=10, color='white', ha='center')
plt.tight_layout()
plt.savefig('environmental_effects.png', dpi=150, bbox_inches='tight')
plt.show()
# 推奨事項の表示
print("\n=== 環境制御の推奨事項 ===")
print("水系ナノ粒子分散液の場合:")
print(" ・イオン強度を10 mM未満に保つ(λ_D > 3 nm)")
print(" ・等電点から離れたpHを使用(|ζ| > 30 mV)")
print(" ・室温で保管(50°C以上の加熱を避ける)")
print("\n乾燥ナノ粒子粉体の場合:")
print(" ・RH 30%未満で保管(乾燥剤使用)")
print(" ・温度サイクルを避ける(結露リスク)")
print(" ・反応性金属には不活性雰囲気を使用")
=== 環境制御の推奨事項 ===
水系ナノ粒子分散液の場合:
・イオン強度を10 mM未満に保つ(λ_D > 3 nm)
・等電点から離れたpHを使用(|ζ| > 30 mV)
・室温で保管(50°C以上の加熱を避ける)
乾燥ナノ粒子粉体の場合:
・RH 30%未満で保管(乾燥剤使用)
・温度サイクルを避ける(結露リスク)
・反応性金属には不活性雰囲気を使用
2.4 粒子形状と表面状態
非球状粒子と表面欠陥は凝集挙動に大きく影響します。有効接触面積と局所表面エネルギーは形態によって変化します。
形状因子
| 形状 | 接触形態 | 相対付着力 | 分散の難易度 |
|---|---|---|---|
| 球状 | 点接触 | 1×(基準) | 最も容易 |
| ロッド/ワイヤー | 線接触 | 5-10× | 中程度 |
| プレート/シート | 面対面 | 10-100× | 困難 |
| 粗面/多孔質 | 複数点接触 | 3-5× | 中程度 |
| 樹枝状 | 絡み合い | 50-200× | 非常に困難 |
例4: 形状効果の解析
import numpy as np
import matplotlib.pyplot as plt
# ===================================
# 例4: 粒子形状が付着に与える影響
# ===================================
def adhesion_sphere_sphere(R_nm, A_H):
"""球-球接触の付着エネルギー"""
R = R_nm * 1e-9
h = 0.3e-9 # 接触距離
return abs(-A_H * R / (12 * h))
def adhesion_sphere_plate(R_nm, A_H):
"""球-平板接触の付着エネルギー(単位あたり)"""
R = R_nm * 1e-9
h = 0.3e-9
return abs(-A_H * R / (6 * h))
def adhesion_plate_plate(area_nm2, A_H):
"""平行板の付着エネルギー(面対面)"""
area = area_nm2 * 1e-18
h = 0.3e-9
return abs(-A_H * area / (12 * np.pi * h**2))
def adhesion_rod_rod(R_nm, L_nm, A_H):
"""平行ロッドの付着エネルギー(線接触)"""
R = R_nm * 1e-9
L = L_nm * 1e-9
h = 0.3e-9
# 交差円柱の近似を配向係数で低減
return abs(-A_H * np.sqrt(R) * L / (12 * h**1.5))
# 異なる形状の付着を計算
# すべての粒子は直径30 nm球と同じ体積を持つ
V_sphere = (4/3) * np.pi * (15e-9)**3
d_sphere = 30 # nm
A_H = 30e-20 # J(水中酸化物の典型値)
kT = 1.38e-23 * 300
# 等価粒子を定義
shapes = {
'球(d=30nm)': {
'adhesion': adhesion_sphere_sphere(15, A_H),
'color': 'blue'
},
'ロッド(d=10nm, L=270nm)': {
'adhesion': adhesion_rod_rod(5, 270, A_H),
'color': 'green'
},
'プレート(50×50×7nm)': {
'adhesion': adhesion_plate_plate(50*50, A_H),
'color': 'red'
},
'球-プレート': {
'adhesion': adhesion_sphere_plate(15, A_H),
'color': 'orange'
}
}
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# プロット1: 付着の比較
ax1 = axes[0]
names = list(shapes.keys())
adhesions = [s['adhesion'] / kT for s in shapes.values()]
colors = [s['color'] for s in shapes.values()]
bars = ax1.bar(names, adhesions, color=colors, alpha=0.7, edgecolor='black')
ax1.axhline(y=10, color='gray', linestyle='--', alpha=0.7)
ax1.text(3.5, 12, '熱的閾値 (10 kT)', fontsize=9, color='gray')
ax1.set_ylabel('付着エネルギー (kT)', fontsize=11)
ax1.set_title('形状が粒子付着に与える影響', fontsize=12, fontweight='bold')
ax1.set_xticklabels(names, rotation=15, ha='right', fontsize=9)
ax1.grid(True, alpha=0.3, axis='y')
# 相対値を追加
ref = adhesions[0]
for bar, val in zip(bars, adhesions):
ax1.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 5,
f'{val/ref:.1f}×', ha='center', fontsize=10, fontweight='bold')
# プロット2: 表面粗さの影響
ax2 = axes[1]
def roughness_adhesion_factor(Ra_nm, R_nm):
"""
表面粗さによる付着低減
粗い表面は原子レベルでの接触点が少ない
パラメータ:
Ra_nm: RMS粗さ(nm)
R_nm: 粒子半径(nm)
戻り値:
付着係数(1 = 滑らか、<1 = 粗い)
"""
if Ra_nm < 0.5:
return 1.0 # 原子レベルで滑らか
# 粗さとともに付着が減少
return 1 / (1 + (Ra_nm / R_nm) * 10)
roughness_range = np.linspace(0, 10, 100)
for R_nm, color in [(10, 'blue'), (25, 'green'), (50, 'red')]:
factors = [roughness_adhesion_factor(Ra, R_nm) for Ra in roughness_range]
ax2.plot(roughness_range, factors, linewidth=2,
label=f'R = {R_nm} nm', color=color)
ax2.axhline(y=0.5, color='gray', linestyle='--', alpha=0.7)
ax2.text(8, 0.55, '50%低減', fontsize=9, color='gray')
ax2.set_xlabel('RMS表面粗さ (nm)', fontsize=11)
ax2.set_ylabel('相対付着係数', fontsize=11)
ax2.set_title('表面粗さが付着に与える影響', fontsize=12, fontweight='bold')
ax2.legend()
ax2.grid(True, alpha=0.3)
ax2.set_xlim(0, 10)
ax2.set_ylim(0, 1.1)
plt.tight_layout()
plt.savefig('shape_effects.png', dpi=150, bbox_inches='tight')
plt.show()
# 要約を表示
print("\n=== 形状と表面効果の要約 ===")
print(f"{'構成':25s} {'付着 (kT)':>15s} {'相対値':>10s}")
print("-" * 55)
for name, props in shapes.items():
E = props['adhesion'] / kT
rel = E / (shapes['球(d=30nm)']['adhesion'] / kT)
print(f"{name:25s} {E:>15.1f} {rel:>10.1f}×")
=== 形状と表面効果の要約 ===
構成 付着 (kT) 相対値
-------------------------------------------------------
球(d=30nm) 50.1 1.0×
ロッド(d=10nm, L=270nm) 163.8 3.3×
プレート(50×50×7nm) 1105.0 22.1×
球-プレート 100.1 2.0×
重要な知見
板状粒子(粘土、グラフェンなど)は、面対面接触により等価な球の20-100倍の付着力を持ちます!これが、層状材料の剥離と分散が難しいことで知られる理由です。
2.5 凝集低減のための設計戦略
例5: 包括的設計戦略
import numpy as np
import matplotlib.pyplot as plt
# ===================================
# 例5: 設計戦略の評価
# ===================================
class NanoparticleDesign:
"""凝集耐性のためのナノ粒子設計を評価"""
def __init__(self, name, d_nm, gamma, shape='sphere', coating=None,
roughness_nm=0, medium='water', ionic_strength_mM=1):
self.name = name
self.d = d_nm
self.R = d_nm / 2
self.gamma = gamma
self.shape = shape
self.coating = coating
self.roughness = roughness_nm
self.medium = medium
self.ionic_strength = ionic_strength_mM
# 有効表面エネルギー(コーティングにより低減)
self.gamma_eff = gamma
if coating:
coating_reduction = {
'silane': 0.04,
'PEG': 0.05,
'surfactant': 0.03,
'polymer': 0.04
}
self.gamma_eff = coating_reduction.get(coating, gamma)
def calculate_vdw_energy(self):
"""接触時ファンデルワールスエネルギー(kT)"""
A_H = 24 * np.pi * (0.165e-9)**2 * self.gamma_eff
R = self.R * 1e-9
h = 0.3e-9
V = abs(-A_H * R / (12 * h))
# 形状因子
shape_factors = {'sphere': 1, 'rod': 3, 'plate': 20}
V *= shape_factors.get(self.shape, 1)
# 粗さによる低減
if self.roughness > 0:
V *= 1 / (1 + (self.roughness / self.R) * 10)
return V / (1.38e-23 * 300)
def calculate_electrostatic_repulsion(self, psi_mV=30):
"""接触時静電反発(kT)"""
if self.medium != 'water':
return 0 # 有機溶媒ではEDLなし
# デバイ長
I = self.ionic_strength / 1000 # mol/L
lambda_D = 0.304 / np.sqrt(I) # 25°C、1:1電解質でnm単位
# 反発エネルギー
psi = psi_mV / 1000 # V
R = self.R * 1e-9
kappa = 1 / (lambda_D * 1e-9)
eps_r = 78.5
eps_0 = 8.854e-12
h = 0.3e-9
V_elec = 2 * np.pi * eps_r * eps_0 * R * psi**2 * np.log(1 + np.exp(-kappa * h))
return V_elec / (1.38e-23 * 300)
def calculate_steric_repulsion(self):
"""コーティングによる立体反発(kT)"""
if not self.coating:
return 0
# 立体障壁の近似
steric_strength = {
'silane': 5,
'PEG': 20,
'surfactant': 10,
'polymer': 30
}
return steric_strength.get(self.coating, 0)
def stability_score(self, psi_mV=30):
"""総合安定性スコアを計算(0-100)"""
V_vdw = self.calculate_vdw_energy()
V_elec = self.calculate_electrostatic_repulsion(psi_mV)
V_steric = self.calculate_steric_repulsion()
# 正味引力(安定性には障壁 > 15 kTが必要)
net_attraction = V_vdw - V_elec - V_steric
barrier = V_elec + V_steric
if barrier > 25:
return 100
elif barrier > 15:
return 80 - (25 - barrier) * 4
elif barrier > 5:
return 60 - (15 - barrier) * 4
else:
return max(0, 20 - net_attraction)
def summary(self, psi_mV=30):
"""設計要約を表示"""
V_vdw = self.calculate_vdw_energy()
V_elec = self.calculate_electrostatic_repulsion(psi_mV)
V_steric = self.calculate_steric_repulsion()
score = self.stability_score(psi_mV)
print(f"\n=== {self.name} ===")
print(f" サイズ: {self.d} nm({self.shape})")
print(f" コーティング: {self.coating if self.coating else 'なし'}")
print(f" γ_有効: {self.gamma_eff:.3f} J/m²")
print(f" vdW引力: {V_vdw:.1f} kT")
print(f" 静電反発: {V_elec:.1f} kT")
print(f" 立体反発: {V_steric:.1f} kT")
print(f" → 安定性スコア: {score:.0f}/100")
return score
# テスト設計を定義
designs = [
NanoparticleDesign("未処理SiO₂", 30, 0.3, 'sphere', None,
0, 'water', 10),
NanoparticleDesign("SiO₂ + シラン", 30, 0.3, 'sphere', 'silane',
0, 'water', 10),
NanoparticleDesign("SiO₂ + PEG", 30, 0.3, 'sphere', 'PEG',
0, 'water', 10),
NanoparticleDesign("未処理TiO₂", 30, 0.8, 'sphere', None,
0, 'water', 10),
NanoparticleDesign("TiO₂ + 界面活性剤", 30, 0.8, 'sphere', 'surfactant',
0, 'water', 10),
NanoparticleDesign("TiO₂低イオン強度", 30, 0.8, 'sphere', 'surfactant',
0, 'water', 1),
NanoparticleDesign("Au + チオール + PEG", 10, 1.5, 'sphere', 'PEG',
0, 'water', 1),
NanoparticleDesign("グラフェン(プレート)", 100, 0.1, 'plate', 'surfactant',
0, 'water', 1)
]
# すべての設計を評価
scores = []
for design in designs:
score = design.summary(psi_mV=30)
scores.append(score)
# 可視化
fig, ax = plt.subplots(figsize=(12, 6))
names = [d.name for d in designs]
colors = plt.cm.RdYlGn(np.array(scores) / 100)
bars = ax.barh(names, scores, color=colors, edgecolor='black')
# スコアラベルを追加
for bar, score in zip(bars, scores):
ax.text(bar.get_width() + 1, bar.get_y() + bar.get_height()/2,
f'{score:.0f}', va='center', fontsize=10, fontweight='bold')
ax.axvline(x=80, color='green', linestyle='--', alpha=0.7)
ax.axvline(x=50, color='orange', linestyle='--', alpha=0.7)
ax.axvline(x=30, color='red', linestyle='--', alpha=0.7)
ax.text(82, -0.5, '優秀', fontsize=9, color='green')
ax.text(52, -0.5, '良好', fontsize=9, color='orange')
ax.text(32, -0.5, '不良', fontsize=9, color='red')
ax.set_xlabel('安定性スコア', fontsize=11)
ax.set_title('分散安定性のためのナノ粒子設計評価',
fontsize=12, fontweight='bold')
ax.set_xlim(0, 110)
ax.grid(True, alpha=0.3, axis='x')
plt.tight_layout()
plt.savefig('design_evaluation.png', dpi=150, bbox_inches='tight')
plt.show()
設計ガイドラインの要約
- 表面修飾は必須 - 引力を90-98%低減
- 立体安定化(PEG、ポリマー) - 追加の反発障壁を提供
- 低イオン強度 - 静電反発を維持
- 球状が好ましい - 接触面積を最小化
- 複合戦略が最も効果的 - 表面 + 立体 + 静電
章のまとめ
重要なポイント
- サイズが重要: S/V比は1/dに比例して増加;ナノ粒子(100 nm未満)は常に表面支配。
- 表面エネルギーが凝集を駆動: 金属 > 酸化物 > ポリマー;修飾によりγを95%低減可能。
- 環境は重要: 湿度(30%未満)、イオン強度(10 mM未満)、温度(0.3×T_m未満)を制御。
- 形状は接触に影響: プレートは等価な球の20-100倍の付着力を持つ。
- 複合戦略が最も効果的: 表面修飾 + 立体 + 静電安定化。
演習問題
演習1: サイズ最適化
触媒活性(表面積に比例)を最大化しながら分散性を維持する必要があります。金触媒(γ = 1.5 J/m²、ρ = 19.3 g/cm³)について:
- 直径5 nm、20 nm、50 nmでの比表面積を計算してください。
- 各サイズでのファンデルワールス付着エネルギーを推定してください。
- 活性と分散性の両方を考慮した最適サイズは何ですか?
演習2: コーティング選択
Fe₃O₄ナノ粒子(γ = 1.0 J/m²、d = 15 nm)が水系製剤中で凝集しています。以下を比較してください:
- クエン酸コーティング(γ_eff ≈ 0.05 J/m²、ζ = -40 mV)
- PEGコーティング(γ_eff ≈ 0.04 J/m²、立体障壁 ≈ 20 kT)
- 50 mM NaCl溶液中でより良い安定性を提供するのはどちらですか?
演習3: 環境最適化
シリカナノ粒子分散液(d = 50 nm、ζ = -35 mV)は純水中では安定ですが、以下の条件で凝集します:
- RH 60%で乾燥 - メカニズムを説明
- 100 mM NaClと混合 - デバイ長の変化を計算
- 80°Cに加熱 - どのような追加効果が生じますか?
各ケースで安定性を維持するための修正を提案してください。
演習4: 形状設計
ドラッグデリバリー用途で、ナノ粒子を以下のいずれかとして合成できます:
- 球(d = 100 nm)
- ロッド(d = 30 nm、L = 300 nm)
- プレート(100 × 100 × 10 nm)
すべて同等の体積を持ちます。分散の容易さでランク付けし、安定性と薬物担持能力の両方を考慮して最適な選択を提案してください。
次のステップ
第2章では、凝集に影響する因子を学びました。第3章では、凝集体を解砕し安定な分散を達成するための実践的な技術を探求します。
次章の予告(第3章)
- 機械的分散法(超音波処理、ミリング)
- 化学的分散(界面活性剤、表面修飾)
- 物理化学的アプローチ(pH制御、溶媒選択)
- 機械学習を用いたプロセス最適化