固体材料の性質を理解するうえで、原子の配列を記述する結晶構造(crystal structure)は最も基本的な概念です。金属の強度、半導体のバンド構造、セラミクスの誘電特性など、材料の物性は結晶構造に密接に関わっています。
本記事の内容
- 結晶と非晶質の違い
- 格子・基底・単位胞の定義
- ブラベー格子(14種)の分類
- ミラー指数の求め方
- 代表的な結晶構造(FCC、BCC、HCP)
- 充填率(APF)の計算
- Pythonでの可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
結晶とは
結晶と非晶質
結晶(crystal)とは、原子・イオン・分子が3次元空間で周期的に配列した固体です。鉄、シリコン、食塩(NaCl)などが典型例です。
一方、ガラスやアモルファスシリコンのように、短距離秩序はあるが長距離周期性を持たない固体を非晶質(amorphous)と呼びます。
結晶の周期構造を数学的に記述するために、格子(lattice)と基底(basis)という概念を導入します。
格子と単位胞
格子(ラティス)
格子とは、空間的に周期的に配置された点の集合です。3次元の格子点は、3本の基本並進ベクトル $\bm{a}_1, \bm{a}_2, \bm{a}_3$ を用いて:
$$ \boxed{\bm{R} = n_1 \bm{a}_1 + n_2 \bm{a}_2 + n_3 \bm{a}_3 \quad (n_1, n_2, n_3 \in \mathbb{Z})} $$
と表されます。格子自体は原子の種類を含まない幾何学的な枠組みです。
基底(ベーシス)
基底とは、各格子点に付属する原子(群)の配置です。結晶構造は以下のように表されます:
$$ \text{結晶構造} = \text{格子} + \text{基底} $$
たとえば NaCl 結晶は、FCC格子に Na と Cl の2原子基底を組み合わせた構造です。
単位胞(ユニットセル)
単位胞とは、空間を隙間なく埋め尽くす最小の平行六面体です。
プリミティブ単位胞:格子点を1つだけ含む最小の単位胞。体積は:
$$ V = \bm{a}_1 \cdot (\bm{a}_2 \times \bm{a}_3) $$
慣用単位胞(conventional unit cell):対称性を分かりやすく表すために、複数の格子点を含む単位胞を使うことがあります。たとえば FCC の慣用単位胞は4つの格子点を含みます。
ブラベー格子(14種)
7つの晶系
3次元空間で可能な格子の対称性を分類すると、7つの晶系(crystal system)に分けられます。各晶系は格子定数 $a, b, c$ と格子角 $\alpha, \beta, \gamma$ の拘束条件で定義されます。
| 晶系 | 格子定数の条件 | 格子角の条件 |
|---|---|---|
| 立方(cubic) | $a = b = c$ | $\alpha = \beta = \gamma = 90°$ |
| 正方(tetragonal) | $a = b \neq c$ | $\alpha = \beta = \gamma = 90°$ |
| 斜方(orthorhombic) | $a \neq b \neq c$ | $\alpha = \beta = \gamma = 90°$ |
| 六方(hexagonal) | $a = b \neq c$ | $\alpha = \beta = 90°, \gamma = 120°$ |
| 三方(trigonal) | $a = b = c$ | $\alpha = \beta = \gamma \neq 90°$ |
| 単斜(monoclinic) | $a \neq b \neq c$ | $\alpha = \gamma = 90°, \beta \neq 90°$ |
| 三斜(triclinic) | $a \neq b \neq c$ | $\alpha \neq \beta \neq \gamma$ |
14種のブラベー格子
各晶系に対して、格子点の配置(単純P、体心I、面心F、底心C)を組み合わせると、対称性から独立なものが全部で 14種になります。これをブラベー格子(Bravais lattice)と呼びます。
| 晶系 | ブラベー格子 |
|---|---|
| 立方 | 単純立方(SC)、体心立方(BCC)、面心立方(FCC) |
| 正方 | 単純正方、体心正方 |
| 斜方 | 単純斜方、体心斜方、面心斜方、底心斜方 |
| 六方 | 六方 |
| 三方 | 三方 |
| 単斜 | 単純単斜、底心単斜 |
| 三斜 | 三斜 |
合計:$3 + 2 + 4 + 1 + 1 + 2 + 1 = 14$ 種類
ミラー指数
ミラー指数の定義
ミラー指数は結晶面を表す記法です。結晶面が $\bm{a}_1, \bm{a}_2, \bm{a}_3$ 軸と交わる点の逆数の整数比で表されます。
ミラー指数の求め方
- 結晶面が3つの結晶軸と交わる切片を格子定数単位で求める:$(p, q, r)$
- 逆数を取る:$(1/p, 1/q, 1/r)$
- 最小公倍数を掛けて整数にする:$(h, k, l)$
- 丸括弧で囲む:$(hkl)$
例:$\bm{a}_1$ 軸と $a$ で、$\bm{a}_2$ 軸と $\infty$(平行)で、$\bm{a}_3$ 軸と $c$ で交わる面
$$ \text{切片}: (1, \infty, 1) \to \text{逆数}: (1, 0, 1) \to \text{ミラー指数}: (101) $$
記法の規則
| 記法 | 意味 |
|---|---|
| $(hkl)$ | 特定の結晶面 |
| $\{hkl\}$ | 対称操作で等価な面の族 |
| $[hkl]$ | 特定の方向 |
| $\langle hkl \rangle$ | 対称操作で等価な方向の族 |
| $\bar{h}$ | 負の指数($h$ の上にバーを付ける) |
面間隔
立方晶系における面間隔 $d_{hkl}$ は:
$$ \boxed{d_{hkl} = \frac{a}{\sqrt{h^2 + k^2 + l^2}}} $$
ここで $a$ は格子定数です。この公式はX線回折(ブラッグの法則)と組み合わせて結晶構造の解析に使われます。
代表的な結晶構造
体心立方構造(BCC: Body-Centered Cubic)
立方体の各頂点と中心に原子があります。
慣用単位胞内の原子数:
$$ n = \frac{1}{8} \times 8 + 1 = 2 $$
頂点の原子は8つの単位胞で共有されるため $1/8$、中心原子は完全に単位胞内に含まれます。
配位数(最近接原子数):8
最近接原子間距離:体対角線の半分
$$ d = \frac{\sqrt{3}}{2}a $$
例:Fe($\alpha$鉄)、Cr、W、Mo、Na
面心立方構造(FCC: Face-Centered Cubic)
立方体の各頂点と各面の中心に原子があります。
慣用単位胞内の原子数:
$$ n = \frac{1}{8} \times 8 + \frac{1}{2} \times 6 = 4 $$
面の中心の原子は2つの単位胞で共有されるため $1/2$ です。
配位数:12
最近接原子間距離:面対角線の半分
$$ d = \frac{a}{\sqrt{2}} $$
例:Al、Cu、Au、Ag、Ni、Pt
六方最密充填構造(HCP: Hexagonal Close-Packed)
六角柱の上下面の頂点と中心、および中間層の3原子から構成されます。
単位胞内の原子数:
$$ n = \frac{1}{6}\times 12 + \frac{1}{2}\times 2 + 3 = 6 $$
ただしプリミティブ単位胞では2個です。
配位数:12(FCC と同じ)
$c/a$ 比の理想値:
上下層と中間層の原子が正四面体を形成する条件から求めます。正四面体の高さは一辺 $a$ に対して $\sqrt{2/3}\,a$ です。$c = 2\sqrt{2/3}\,a$ なので:
$$ \boxed{\frac{c}{a} = \sqrt{\frac{8}{3}} \approx 1.633} $$
例:Ti、Zn、Mg、Co
充填率(APF)の計算
原子充填率(Atomic Packing Factor, APF)は、単位胞中で原子が占める体積の割合です:
$$ \boxed{\mathrm{APF} = \frac{n \times \frac{4}{3}\pi r^3}{V_{\text{cell}}}} $$
ここで $n$ は単位胞内の原子数、$r$ は原子半径、$V_{\text{cell}}$ は単位胞の体積です。
SC(単純立方)の充填率
原子が辺に沿って接するので $a = 2r$ です。
$$ \mathrm{APF}_{\mathrm{SC}} = \frac{1 \times \frac{4}{3}\pi r^3}{(2r)^3} = \frac{\frac{4}{3}\pi r^3}{8r^3} = \frac{\pi}{6} \approx 0.524 $$
BCC の充填率
体対角線上で原子が接するので $\sqrt{3}a = 4r$、すなわち $a = \frac{4r}{\sqrt{3}}$ です。
$$ V_{\text{cell}} = a^3 = \left(\frac{4r}{\sqrt{3}}\right)^3 = \frac{64r^3}{3\sqrt{3}} $$
$$ \mathrm{APF}_{\mathrm{BCC}} = \frac{2 \times \frac{4}{3}\pi r^3}{\frac{64r^3}{3\sqrt{3}}} = \frac{\frac{8\pi r^3}{3}}{\frac{64r^3}{3\sqrt{3}}} = \frac{8\pi}{3} \times \frac{3\sqrt{3}}{64} = \frac{\pi\sqrt{3}}{8} \approx 0.680 $$
FCC の充填率
面対角線上で原子が接するので $\sqrt{2}a = 4r$、すなわち $a = 2\sqrt{2}r$ です。
$$ V_{\text{cell}} = a^3 = (2\sqrt{2}r)^3 = 16\sqrt{2}r^3 $$
$$ \mathrm{APF}_{\mathrm{FCC}} = \frac{4 \times \frac{4}{3}\pi r^3}{16\sqrt{2}r^3} = \frac{\frac{16\pi}{3}}{16\sqrt{2}} = \frac{\pi}{3\sqrt{2}} = \frac{\pi\sqrt{2}}{6} \approx 0.740 $$
HCP の充填率
HCPの充填率はFCCと同じ値になります。これはFCCとHCPがどちらも最密充填構造(close-packed structure)であり、積層順序(FCC: ABCABC…, HCP: ABABAB…)が異なるだけだからです。
$$ \boxed{\mathrm{APF}_{\mathrm{HCP}} = \mathrm{APF}_{\mathrm{FCC}} = \frac{\pi\sqrt{2}}{6} \approx 0.740} $$
Pythonでの可視化
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(16, 10))
# --- (1) SC 構造 ---
ax1 = fig.add_subplot(2, 2, 1, projection='3d')
# 頂点原子
corners = np.array([[i, j, k] for i in [0, 1] for j in [0, 1] for k in [0, 1]], dtype=float)
ax1.scatter(corners[:, 0], corners[:, 1], corners[:, 2], s=300, c='steelblue', alpha=0.8)
# 辺を描画
for i in range(8):
for j in range(i+1, 8):
diff = np.abs(corners[i] - corners[j])
if np.sum(diff) == 1:
ax1.plot(*zip(corners[i], corners[j]), 'k-', alpha=0.3)
ax1.set_title('SC (APF=0.524)', fontsize=13)
ax1.set_xlim(-0.3, 1.3); ax1.set_ylim(-0.3, 1.3); ax1.set_zlim(-0.3, 1.3)
# --- (2) BCC 構造 ---
ax2 = fig.add_subplot(2, 2, 2, projection='3d')
ax2.scatter(corners[:, 0], corners[:, 1], corners[:, 2], s=300, c='steelblue', alpha=0.8)
ax2.scatter([0.5], [0.5], [0.5], s=400, c='tomato', alpha=0.9)
for i in range(8):
for j in range(i+1, 8):
diff = np.abs(corners[i] - corners[j])
if np.sum(diff) == 1:
ax2.plot(*zip(corners[i], corners[j]), 'k-', alpha=0.3)
ax2.set_title('BCC (APF=0.680)', fontsize=13)
ax2.set_xlim(-0.3, 1.3); ax2.set_ylim(-0.3, 1.3); ax2.set_zlim(-0.3, 1.3)
# --- (3) FCC 構造 ---
ax3 = fig.add_subplot(2, 2, 3, projection='3d')
ax3.scatter(corners[:, 0], corners[:, 1], corners[:, 2], s=300, c='steelblue', alpha=0.8)
face_centers = np.array([
[0.5, 0.5, 0], [0.5, 0.5, 1],
[0.5, 0, 0.5], [0.5, 1, 0.5],
[0, 0.5, 0.5], [1, 0.5, 0.5]
], dtype=float)
ax3.scatter(face_centers[:, 0], face_centers[:, 1], face_centers[:, 2],
s=400, c='tomato', alpha=0.9)
for i in range(8):
for j in range(i+1, 8):
diff = np.abs(corners[i] - corners[j])
if np.sum(diff) == 1:
ax3.plot(*zip(corners[i], corners[j]), 'k-', alpha=0.3)
ax3.set_title('FCC (APF=0.740)', fontsize=13)
ax3.set_xlim(-0.3, 1.3); ax3.set_ylim(-0.3, 1.3); ax3.set_zlim(-0.3, 1.3)
# --- (4) 充填率の比較 ---
ax4 = fig.add_subplot(2, 2, 4)
structures = ['SC', 'BCC', 'Diamond', 'FCC/HCP']
apf_values = [np.pi/6, np.pi*np.sqrt(3)/8, np.pi*np.sqrt(3)/16, np.pi*np.sqrt(2)/6]
colors = ['#4e79a7', '#f28e2b', '#76b7b2', '#e15759']
bars = ax4.bar(structures, apf_values, color=colors, edgecolor='black', alpha=0.85)
for bar, val in zip(bars, apf_values):
ax4.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.01,
f'{val:.3f}', ha='center', fontsize=12, fontweight='bold')
ax4.set_ylabel('Atomic Packing Factor')
ax4.set_title('APF comparison', fontsize=13)
ax4.set_ylim(0, 0.85)
ax4.grid(axis='y', alpha=0.3)
plt.tight_layout()
plt.show()
3D図ではSC、BCC、FCCの各単位胞における原子配置を視覚的に確認できます。右下の棒グラフでは、最密充填構造(FCC/HCP)が最も高い充填率を持つことが分かります。
まとめ
本記事では、結晶構造の基礎概念を解説しました。
- 結晶構造 = 格子 + 基底: 格子は周期性の枠組み、基底は各格子点に付随する原子配置
- ブラベー格子: 7晶系 $\times$ 格子型で14種に分類
- ミラー指数 $(hkl)$: 結晶面の逆数表記、面間隔 $d = a/\sqrt{h^2+k^2+l^2}$
- 充填率: SC ($0.524$) < BCC ($0.680$) < FCC/HCP ($0.740$)
- FCC と HCP: 積層順序が異なるが、どちらも最密充填
次のステップとして、以下の記事も参考にしてください。