結晶構造と格子の基礎 ― ブラベー格子・ミラー指数・充填率を理解する

固体材料の性質を理解するうえで、原子の配列を記述する結晶構造(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$ 軸と交わる点の逆数の整数比で表されます。

ミラー指数の求め方

  1. 結晶面が3つの結晶軸と交わる切片を格子定数単位で求める:$(p, q, r)$
  2. 逆数を取る:$(1/p, 1/q, 1/r)$
  3. 最小公倍数を掛けて整数にする:$(h, k, l)$
  4. 丸括弧で囲む:$(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: 積層順序が異なるが、どちらも最密充填

次のステップとして、以下の記事も参考にしてください。