第1章: 格子力学の理論

Born-von Kármán境界条件、動的行列、対称性解析

📖 読了時間: 約3時間 📊 難易度: 中級 💻 コード例: 0個 📝 演習問題: 0問

🌐 EN | 🇯🇵 JP | Last sync: 2025-12-20

材料科学道場 > フォノン物理学(中級) > 第1章

第1章: 格子力学の理論

Born-von Kármán境界条件、動的行列、対称性解析

学習目標

導入

入門編では調和近似の下での単純な1次元モデルと分散関係を学びました。本章では、その理論を実際の3次元結晶に適用するための厳密な定式化を展開します。Born-von Kármán境界条件の導入から始め、一般的な多原子基底を持つ結晶の運動方程式を導出し、動的行列の固有値問題としてフォノン問題を定式化します。

特に重要なのは、結晶対称性がフォノンの性質にどのように反映されるかという点です。力定数の対称性、音響和則、点群・空間群操作とフォノン固有モードの関係を詳細に議論します。これらの概念は、第一原理計算によるフォノン計算の理論的基礎となります。

1.1 Born-von Kármán周期境界条件

1.1.1 境界条件の必要性

結晶中のフォノンを記述するには、無限周期系を有限系で近似する境界条件が必要です。Born-von Kármán (BvK) 境界条件は、結晶を \(N_1 \times N_2 \times N_3\) 個の単位格子からなる有限系として扱い、周期境界条件を課すものです。

定義: Born-von Kármán境界条件

格子ベクトル \(\mathbf{R}_n = n_1\mathbf{a}_1 + n_2\mathbf{a}_2 + n_3\mathbf{a}_3\) で指定される格子点での変位 \(\mathbf{u}(\mathbf{R}_n)\) に対して、以下の周期性を課す:

\[ \mathbf{u}(\mathbf{R}_n + N_i\mathbf{a}_i) = \mathbf{u}(\mathbf{R}_n), \quad i = 1, 2, 3 \]

ここで、\(\mathbf{a}_i\) は原始格子ベクトル、\(N_i\) は各方向の繰り返し数です。

1.1.2 許される波数ベクトル

BvK境界条件の下で、平面波解 \(\mathbf{u}(\mathbf{R}_n) \propto e^{i\mathbf{q}\cdot\mathbf{R}_n}\) が境界条件を満たすためには、波数ベクトル \(\mathbf{q}\) は以下の離散的な値のみを取ります:

\[ \mathbf{q} = \frac{m_1}{N_1}\mathbf{b}_1 + \frac{m_2}{N_2}\mathbf{b}_2 + \frac{m_3}{N_3}\mathbf{b}_3 \]

ここで、\(\mathbf{b}_i\) は逆格子ベクトル(\(\mathbf{a}_i \cdot \mathbf{b}j = 2\pi\delta{ij}\))、\(m_i\) は整数です。熱力学的極限 \(N_i \to \infty\) において、\(\mathbf{q}\) は連続的な値を取るようになり、第一ブリルアンゾーン内で密に分布します。

物理的意味

BvK境界条件は、表面効果を無視し、バルク結晶の性質に焦点を当てるための数学的技巧です。\(N_i\) が十分大きければ、境界の影響は無視でき、無限結晶の良い近似となります。第一原理計算では、通常数百から数千原子のスーパーセルにBvK境界条件を適用します。

1.1.3 状態密度

BvK境界条件により、許される \(\mathbf{q}\) 点の密度は:

\[ \rho(\mathbf{q}) = \frac{N_1 N_2 N_3}{(2\pi)^3} V_\text{cell} = \frac{V}{(2\pi)^3} \]

ここで、\(V = N_1 N_2 N_3 V_\text{cell}\) は結晶全体の体積、\(V_\text{cell}\) は単位格子の体積です。熱力学的極限では、\(\mathbf{q}\) 空間での和は積分に置き換えられます:

\[ \sum_\mathbf{q} \to \frac{V}{(2\pi)^3} \int d^3q \]

1.2 3次元結晶の運動方程式

1.2.1 多原子基底結晶の記述

一般的な結晶は、各単位格子内に \(r\) 個の原子(原子基底)を含みます。格子点 \(\mathbf{R}_n\) にある単位格子内の \(\kappa\) 番目の原子の位置は:

\[ \mathbf{r}_{n\kappa} = \mathbf{R}n + \boldsymbol{\tau}\kappa \]

ここで、\(\boldsymbol{\tau}\kappa\) は単位格子内での原子 \(\kappa\) の平衡位置です。この原子の変位を \(\mathbf{u}{n\kappa}(t)\) とし、質量を \(M_\kappa\) とします。

例: ダイヤモンド構造

ダイヤモンド構造(Si, Geなど)は、面心立方格子に2原子基底を持ちます:

\[ \boldsymbol{\tau}_1 = (0, 0, 0), \quad \boldsymbol{\tau}_2 = \frac{a}{4}(1, 1, 1) \]

ここで、\(a\) は格子定数です。したがって、単位格子あたり6つの自由度(2原子×3方向)があり、6本のフォノンブランチ(3本の音響モード + 3本の光学モード)が存在します。

1.2.2 調和近似とポテンシャルエネルギー

調和近似において、結晶のポテンシャルエネルギー \(\Phi\) は原子変位の2次まで展開されます:

\[ \Phi = \Phi_0 + \sum_{n\kappa\alpha} \frac{\partial \Phi}{\partial u_{n\kappa\alpha}} u_{n\kappa\alpha} + \frac{1}{2}\sum_{\substack{n\kappa\alpha \ n’\kappa’\alpha’}} \frac{\partial^2 \Phi}{\partial u_{n\kappa\alpha} \partial u_{n’\kappa’\alpha’}} u_{n\kappa\alpha} u_{n’\kappa’\alpha’} \]

ここで、\(\alpha, \alpha’\) はデカルト座標成分(\(x, y, z\))を表します。平衡位置では第1項(線形項)はゼロであり、第2項(2次項)のみが残ります。

1.2.3 力定数行列

定義: 力定数

2次の力定数を以下のように定義します:

\[ \Phi_{\alpha\alpha’}(n\kappa, n’\kappa’) = \frac{\partial^2 \Phi}{\partial u_{n\kappa\alpha} \partial u_{n’\kappa’\alpha’}} \]

これは、格子点 \(n\) の原子 \(\kappa\) の \(\alpha\) 方向変位と、格子点 \(n’\) の原子 \(\kappa’\) の \(\alpha’\) 方向変位に対するポテンシャルの2階微分です。

並進対称性により、力定数は格子点の差 \(\mathbf{R}_{nn’} = \mathbf{R}n - \mathbf{R}{n’}\) のみに依存します:

\[ \Phi_{\alpha\alpha’}(n\kappa, n’\kappa’) = \Phi_{\alpha\alpha’}(\mathbf{R}_{nn’}, \kappa, \kappa’) \]

1.2.4 運動方程式

ニュートンの運動方程式は以下のようになります:

\[ M_\kappa \frac{\partial^2 u_{n\kappa\alpha}}{\partial t^2} = -\sum_{n’\kappa’\alpha’} \Phi_{\alpha\alpha’}(n\kappa, n’\kappa’) u_{n’\kappa’\alpha’} \]

これは \(3r \times N\) 個の連立微分方程式系(\(r\) は基底原子数、\(N = N_1 N_2 N_3\) は単位格子数)です。

1.2.5 平面波解

BvK境界条件の下で、平面波形式の解を仮定します:

\[ u_{n\kappa\alpha}(t) = \frac{1}{\sqrt{M_\kappa}} e_{\kappa\alpha}(\mathbf{q}, j) e^{i(\mathbf{q}\cdot\mathbf{R}_n - \omega_j(\mathbf{q})t)} \]

ここで、\(e_{\kappa\alpha}(\mathbf{q}, j)\) は偏極ベクトル(固有ベクトル)、\(\omega_j(\mathbf{q})\) は角振動数(固有値)、\(j\) はブランチインデックス(\(j = 1, 2, \ldots, 3r\))です。質量因子 \(1/\sqrt{M_\kappa}\) は後の計算を簡略化します。

1.3 動的行列の定式化

1.3.1 動的行列の導出

平面波解を運動方程式に代入すると、以下の固有値問題が得られます:

\[ \omega^2 e_{\kappa\alpha}(\mathbf{q}, j) = \sum_{\kappa’\alpha’} D_{\kappa\alpha, \kappa’\alpha’}(\mathbf{q}) e_{\kappa’\alpha’}(\mathbf{q}, j) \]

定義: 動的行列

動的行列 \(D(\mathbf{q})\) は \(3r \times 3r\) エルミート行列で、以下のように定義されます:

\[ D_{\kappa\alpha, \kappa’\alpha’}(\mathbf{q}) = \frac{1}{\sqrt{M_\kappa M_{\kappa’}}} \sum_{n’} \Phi_{\alpha\alpha’}(0\kappa, n’\kappa’) e^{i\mathbf{q}\cdot\mathbf{R}_{n’}} \]

ここで、和は単位格子 \(n’\) にわたって行われ、\(\Phi_{\alpha\alpha’}(0\kappa, n’\kappa’)\) は原点の単位格子(\(n=0\))内の原子 \(\kappa\) と、格子点 \(n’\) の原子 \(\kappa’\) 間の力定数です。

1.3.2 動的行列の性質

定理: 動的行列の性質

  1. エルミート性: \(D_{\kappa\alpha, \kappa’\alpha’}(\mathbf{q}) = D^*_{\kappa’\alpha’, \kappa\alpha}(\mathbf{q})\)
  2. 実数固有値: エルミート行列なので、\(\omega^2\) は実数
  3. 正定値性: 安定な結晶では \(\omega^2 \geq 0\)(すべての固有値は非負)
  4. 時間反転対称性: \(D(\mathbf{q}) = D^*(-\mathbf{q})\)、したがって \(\omega_j(\mathbf{q}) = \omega_j(-\mathbf{q})\)

証明(エルミート性):

力定数の対称性 \(\Phi_{\alpha\alpha’}(0\kappa, n’\kappa’) = \Phi_{\alpha’\alpha}(n’\kappa’, 0\kappa)\) と、並進対称性 \(\Phi_{\alpha’\alpha}(n’\kappa’, 0\kappa) = \Phi_{\alpha’\alpha}(0\kappa’, -n’\kappa)\) を用いると:

\[ \begin{align} D^*{\kappa’\alpha’, \kappa\alpha}(\mathbf{q}) &= \frac{1}{\sqrt{M\kappa M_{\kappa’}}} \sum_{n’} \Phi_{\alpha’\alpha}(0\kappa’, n’\kappa) e^{-i\mathbf{q}\cdot\mathbf{R}{n’}} \\ &= \frac{1}{\sqrt{M\kappa M_{\kappa’}}} \sum_{n”} \Phi_{\alpha\alpha’}(0\kappa, n”\kappa’) e^{i\mathbf{q}\cdot\mathbf{R}{n”}} \\ &= D{\kappa\alpha, \kappa’\alpha’}(\mathbf{q}) \end{align} \]

1.3.3 固有値問題の行列形式

動的行列 \(D(\mathbf{q})\) の固有値問題は以下のように書けます:

\[ D(\mathbf{q}) \mathbf{e}(\mathbf{q}, j) = \omega_j^2(\mathbf{q}) \mathbf{e}(\mathbf{q}, j) \]

または、行列式形式で:

\[ \det|D(\mathbf{q}) - \omega^2 I| = 0 \]

この方程式は \(\omega^2\) に関する \(3r\) 次の代数方程式であり、\(3r\) 個の固有値 \(\omega_j^2(\mathbf{q})\) (\(j = 1, 2, \ldots, 3r\))を与えます。これらがフォノンの \(3r\) 本のブランチに対応します。

例: 1次元単原子鎖(復習)

入門編で学んだ1次元単原子鎖の場合、動的行列は \(1 \times 1\) 行列(スカラー)です:

\[ D(q) = \frac{1}{M} \sum_{n’} \Phi(0, n’) e^{iqn’a} \]

最近接相互作用のみを考慮すると(\(\Phi(0, \pm1) = C\)、\(\Phi(0, 0) = -2C\)):

\[ D(q) = \frac{2C}{M}(1 - \cos qa) \]

これより \(\omega^2(q) = D(q) = \frac{2C}{M}(1 - \cos qa)\)、すなわち \(\omega(q) = 2\sqrt{C/M} |\sin(qa/2)|\) が得られます。

1.4 力定数とその性質

1.4.1 力定数の対称性

力定数に課される対称性条件

  1. 並進対称性: \[ \Phi_{\alpha\alpha’}(n\kappa, n’\kappa’) = \Phi_{\alpha\alpha’}(\mathbf{R}_{nn’}, \kappa, \kappa’) \]

  2. 逆空間対称性: \[ \Phi_{\alpha\alpha’}(n\kappa, n’\kappa’) = \Phi_{\alpha’\alpha}(n’\kappa’, n\kappa) \]

  3. 点群対称性: 点群操作 \(R\) に対して \[ \Phi_{\alpha\alpha’}(R\mathbf{r}, R\kappa, R\mathbf{r}’, R\kappa’) = R_{\alpha\beta} R_{\alpha’\beta’} \Phi_{\beta\beta’}(\mathbf{r}, \kappa, \mathbf{r}’, \kappa’) \] ここで \(R_{\alpha\beta}\) は回転行列の成分です。

1.4.2 並進不変性と音響和則

並進不変性の原理

結晶全体を剛体として一様に移動させても、ポテンシャルエネルギーは変化しません。これは以下の条件を課します:

\[ \sum_{n’\kappa’} \Phi_{\alpha\alpha’}(n\kappa, n’\kappa’) = 0 \]

これを音響和則(acoustic sum rule)または原子サイト和則と呼びます。

証明:

すべての原子が同じ変位 \(\mathbf{u}0\) を持つ場合(\(u{n\kappa\alpha} = u_{0\alpha}\) for all \(n, \kappa\))、ポテンシャルエネルギーの変化はゼロでなければなりません:

\[ \Delta\Phi = \frac{1}{2}\sum_{\substack{n\kappa\alpha \ n’\kappa’\alpha’}} \Phi_{\alpha\alpha’}(n\kappa, n’\kappa’) u_{0\alpha} u_{0\alpha’} = 0 \]

これがすべての \(u_{0\alpha}\) に対して成り立つには、各 \(n, \kappa, \alpha\) について \(\sum_{n’\kappa’\alpha’} \Phi_{\alpha\alpha’}(n\kappa, n’\kappa’) u_{0\alpha’} = 0\) が必要であり、さらにこれがすべての \(u_{0\alpha’}\) に対して成り立つには音響和則が満たされなければなりません。

音響和則の帰結

音響和則は、\(\mathbf{q} = 0\) で少なくとも3つのゼロ固有値(音響モード)が存在することを保証します:

\[ \omega_j(\mathbf{q} \to 0) \to 0, \quad j = 1, 2, 3 \]

これらは結晶全体の剛体並進運動に対応します。

証明:

\(\mathbf{q} = 0\) での動的行列は:

\[ D_{\kappa\alpha, \kappa’\alpha’}(0) = \frac{1}{\sqrt{M_\kappa M_{\kappa’}}} \sum_{n’} \Phi_{\alpha\alpha’}(0\kappa, n’\kappa’) \]

音響和則により、\(\mathbf{e}_\alpha = (0, \ldots, 0, 1, 0, \ldots, 0)\) (\(\kappa\alpha\) 成分のみ1で他はゼロ)に対して:

\[ \sum_{\kappa’\alpha’} D_{\kappa\alpha, \kappa’\alpha’}(0) e_{\kappa’\alpha} = 0 \]

したがって、一様な変位パターン \(e_{\kappa\alpha} = \delta_{\alpha,x}\), \(\delta_{\alpha,y}\), \(\delta_{\alpha,z}\) (すべての原子が同じ方向に変位)は、\(\omega^2 = 0\) の固有ベクトルです。

1.4.3 力定数の実空間カットオフ

実際の材料では、力定数 \(\Phi_{\alpha\alpha’}(0\kappa, n’\kappa’)\) は原子間距離が大きくなると急速に減衰します。典型的には:

第一原理計算では、有限範囲の力定数を計算し、それを用いて動的行列をフーリエ変換します。

1.5 点群対称性とフォノン

1.5.1 結晶点群とその表現

結晶の点群 \(G\) は、原点を固定して結晶を不変に保つ回転・鏡映操作の集合です。各点群操作 \(R \in G\) は、動的行列に以下の変換を施します:

\[ D(R\mathbf{q}) = T(R) D(\mathbf{q}) T^\dagger(R) \]

ここで、\(T(R)\) は点群操作に対応する \(3r \times 3r\) ユニタリ行列です。

1.5.2 対称性の高い点とモード分類

高対称点(\(\Gamma, X, L, K\) など)では、その点を不変に保つ対称操作(点の安定化群または小群)が存在します。この小群の既約表現によって、フォノンモードは分類されます。

例: 立方晶の \(\Gamma\) 点(\(\mathbf{q} = 0\))

単純立方格子(点群 \(O_h\))の \(\Gamma\) 点では、すべての点群操作が波数ベクトル \(\mathbf{q} = 0\) を不変に保ちます。\(O_h\) 群の既約表現は:

音響モードは \(T_{1u}\) 表現(3重縮退の並進)に属します。

1.5.3 縮退の解除

一般的な \(\mathbf{q}\) 点では、対称性が低下し、高対称点で縮退していたモードが分裂します。例えば、\(\Gamma\) 点での \(T_{2g}\) 3重縮退モードは、\(X\) 点に向かう \(\Delta\) 線上では安定化群が \(D_{4h}\) に低下し、\(E_g\) (2重) + \(A_{2u}\) (1重) に分裂する可能性があります。

1.5.4 選択則への応用

対称性分析は、光学測定における選択則を予測するために重要です:

1.6 空間群操作とフォノン対称性

1.6.1 空間群と非シンモルフィック操作

空間群は、並進と点群操作の組み合わせです。非シンモルフィック空間群では、らせん軸や滑り鏡面のように、回転・鏡映と並進が結合した操作が存在します。

空間群操作の一般形

空間群操作 \({R|\mathbf{t}}\) は以下のように作用します:

\[ {R|\mathbf{t}}\mathbf{r} = R\mathbf{r} + \mathbf{t} \]

ここで、\(R\) は点群操作(回転行列)、\(\mathbf{t}\) は並進ベクトルです。シンモルフィック空間群では \(\mathbf{t}\) は格子ベクトルのみですが、非シンモルフィックでは分数並進が含まれます。

1.6.2 動的行列への影響

空間群操作 \({R|\mathbf{t}}\) は、動的行列に以下の変換を施します:

\[ D(R\mathbf{q}) = e^{-i(R\mathbf{q})\cdot\mathbf{t}} T(R) D(\mathbf{q}) T^\dagger(R) \]

位相因子 \(e^{-i(R\mathbf{q})\cdot\mathbf{t}}\) が非シンモルフィック操作に由来します。

1.6.3 ブロッホの定理とフォノン

結晶の並進対称性により、フォノンの波動関数は以下のブロッホ形式を取ります:

\[ u_{n\kappa\alpha}(\mathbf{q}, j) = e^{i\mathbf{q}\cdot\mathbf{R}n} e{\kappa\alpha}(\mathbf{q}, j) \]

ここで、\(e_{\kappa\alpha}(\mathbf{q}, j)\) は単位格子内で周期的な偏極ベクトルです。これは電子のブロッホ波動関数と同じ構造を持ちます。

1.6.4 既約表現とモードの指標

各 \(\mathbf{q}\) 点での動的行列の固有モードは、その点の小群(star of \(\mathbf{q}\))の既約表現によって分類されます。Bilbao Crystallographic Server などのツールを使って、特定の空間群と \(\mathbf{q}\) 点に対する既約表現と互換性条件を調べることができます。

実用上の重要性

第一原理フォノン計算ソフトウェア(PHONOPY, Quantum ESPRESSO など)は、空間群対称性を自動的に考慮します。しかし、結果を解釈する際には、対称性分析の理解が不可欠です。特に、相転移点やトポロジカル性質を調べる際に重要です。

1.7 Pythonによる動的行列の構築と対角化

1.7.1 1次元2原子鎖の実装

理論を実践するため、1次元2原子鎖(異なる質量 \(M_1, M_2\))のフォノン分散を計算してみましょう。

import numpy as np
import matplotlib.pyplot as plt

def dynamical_matrix_1d_diatomic(q, M1, M2, C):
    """
    1次元2原子鎖の動的行列を構築する

    Parameters:
    -----------
    q : float
        波数(単位: 1/a、aは格子定数)
    M1, M2 : float
        原子1, 2の質量
    C : float
        バネ定数

    Returns:
    --------
    D : ndarray (2x2)
        動的行列
    """
    # 動的行列の成分(より正確な表式)
    D11 = C / M1
    D22 = C / M2
    D12 = -C / np.sqrt(M1 * M2) * np.exp(-1j * q)
    D21 = -C / np.sqrt(M1 * M2) * np.exp(1j * q)

    D = np.array([[D11, D12],
                  [D21, D22]])

    return D

def compute_phonon_dispersion(M1, M2, C, npoints=100):
    """
    フォノン分散関係を計算する

    Parameters:
    -----------
    M1, M2 : float
        質量
    C : float
        バネ定数
    npoints : int
        q点の数

    Returns:
    --------
    q_values : ndarray
        波数配列
    omega_acoustic : ndarray
        音響ブランチの振動数
    omega_optical : ndarray
        光学ブランチの振動数
    """
    # 第一ブリルアンゾーン: -π < q ≤ π
    q_values = np.linspace(-np.pi, np.pi, npoints)
    omega_acoustic = np.zeros(npoints)
    omega_optical = np.zeros(npoints)

    for i, q in enumerate(q_values):
        D = dynamical_matrix_1d_diatomic(q, M1, M2, C)
        eigenvalues = np.linalg.eigvalsh(D)  # エルミート行列の固有値

        # ω² が固有値なので、ω = sqrt(eigenvalues)
        omega_sq = eigenvalues
        omega = np.sqrt(np.abs(omega_sq))  # 数値誤差で負になる場合に対応

        # 昇順にソート(音響 < 光学)
        omega_acoustic[i] = omega[0]
        omega_optical[i] = omega[1]

    return q_values, omega_acoustic, omega_optical

# パラメータ設定
M1 = 1.0   # 軽い原子の質量(任意単位)
M2 = 2.0   # 重い原子の質量
C = 1.0    # バネ定数(任意単位)

# 計算実行
q, omega_ac, omega_op = compute_phonon_dispersion(M1, M2, C)

# プロット
plt.figure(figsize=(10, 6))
plt.plot(q, omega_ac, 'b-', linewidth=2, label='Acoustic branch')
plt.plot(q, omega_op, 'r-', linewidth=2, label='Optical branch')
plt.xlabel(r'Wave vector $q$ (units of $\pi/a$)', fontsize=12)
plt.ylabel(r'Frequency $\omega$ (arb. units)', fontsize=12)
plt.title('Phonon Dispersion: 1D Diatomic Chain', fontsize=14)
plt.grid(True, alpha=0.3)
plt.legend(fontsize=11)
plt.xlim(-np.pi, np.pi)
plt.axhline(y=0, color='k', linestyle='--', linewidth=0.5)
plt.axvline(x=0, color='k', linestyle='--', linewidth=0.5)
plt.tight_layout()
plt.savefig('phonon_dispersion_1d_diatomic.png', dpi=150)
plt.show()

# q=0での振動数を確認(音響和則のチェック)
print(f"ω_acoustic(q=0) = {omega_ac[npoints//2]:.6f}")  # should be ~0
print(f"ω_optical(q=0) = {omega_op[npoints//2]:.6f}")

# q=πでの振動数を確認(ゾーン境界)
print(f"ω_acoustic(q=π) = {omega_ac[-1]:.6f}")
print(f"ω_optical(q=π) = {omega_op[-1]:.6f}")

1.7.2 3次元結晶への拡張

3次元結晶では、力定数テンソルを読み込み、各 \(\mathbf{q}\) 点で \(3r \times 3r\) 行列を構築します。以下は簡略化した実装例です:

import numpy as np

class DynamicalMatrix3D:
    """3次元結晶の動的行列を扱うクラス"""

    def __init__(self, force_constants, masses, lattice_vectors):
        """
        Parameters:
        -----------
        force_constants : dict
            キー: (n, kappa, alpha, n', kappa', alpha')
            値: Φ_αα'(nκ, n'κ')
        masses : array
            各原子種の質量 [M_1, M_2, ..., M_r]
        lattice_vectors : ndarray (3, 3)
            原始格子ベクトル [a1, a2, a3]
        """
        self.fc = force_constants
        self.masses = np.array(masses)
        self.lattice = np.array(lattice_vectors)
        self.n_atoms = len(masses)

    def construct_D(self, q):
        """
        波数ベクトル q での動的行列を構築

        Parameters:
        -----------
        q : array-like (3,)
            波数ベクトル(逆格子単位)

        Returns:
        --------
        D : ndarray (3*n_atoms, 3*n_atoms)
            動的行列(エルミート)
        """
        size = 3 * self.n_atoms
        D = np.zeros((size, size), dtype=complex)

        q_cart = self.reciprocal_lattice @ q  # デカルト座標へ変換

        for key, phi in self.fc.items():
            n, kappa, alpha, n_p, kappa_p, alpha_p = key

            # 格子ベクトル R_n'
            R_n_p = n_p[0]*self.lattice[0] + \
                    n_p[1]*self.lattice[1] + \
                    n_p[2]*self.lattice[2]

            # 位相因子
            phase = np.exp(1j * np.dot(q_cart, R_n_p))

            # 動的行列の成分
            i = 3*kappa + alpha
            j = 3*kappa_p + alpha_p

            D[i, j] += phi / np.sqrt(self.masses[kappa] *
                                     self.masses[kappa_p]) * phase

        return D

    @property
    def reciprocal_lattice(self):
        """逆格子ベクトルを計算"""
        V = np.dot(self.lattice[0],
                   np.cross(self.lattice[1], self.lattice[2]))
        b1 = 2*np.pi * np.cross(self.lattice[1], self.lattice[2]) / V
        b2 = 2*np.pi * np.cross(self.lattice[2], self.lattice[0]) / V
        b3 = 2*np.pi * np.cross(self.lattice[0], self.lattice[1]) / V
        return np.array([b1, b2, b3])

    def solve(self, q):
        """
        固有値問題を解く

        Returns:
        --------
        omega : ndarray
            角振動数 ω (昇順)
        eigvecs : ndarray
            固有ベクトル(偏極ベクトル)
        """
        D = self.construct_D(q)
        eigenvalues, eigenvectors = np.linalg.eigh(D)

        # ω = sqrt(ω²)
        omega = np.sqrt(np.abs(eigenvalues))

        return omega, eigenvectors

# 使用例(仮想的な単純立方格子、単原子)
lattice = np.eye(3) * 5.0  # 5 Åの立方格子
masses = [28.0]  # Si原子(amu)

# 力定数の例(実際はDFTから計算)
force_constants = {
    # (n, κ, α, n', κ', α'): Φ値
    # 簡略化のため省略
}

# dm = DynamicalMatrix3D(force_constants, masses, lattice)
# omega, evecs = dm.solve(q=[0.5, 0.5, 0.0])  # X点

1.7.3 音響和則の確認

実装が正しいかを検証するため、\(\mathbf{q} = 0\) で音響モードの振動数がゼロになることを確認します:

def verify_acoustic_sum_rule(dynamical_matrix, tolerance=1e-6):
    """
    音響和則を検証する

    Parameters:
    -----------
    dynamical_matrix : DynamicalMatrix3D
        動的行列オブジェクト
    tolerance : float
        許容誤差

    Returns:
    --------
    bool : 音響和則が満たされているか
    """
    q_gamma = np.array([0.0, 0.0, 0.0])
    omega, _ = dynamical_matrix.solve(q_gamma)

    # 最小の3つの固有値(音響モード)を確認
    acoustic_freqs = omega[:3]

    print("Frequencies at Γ point (q=0):")
    for i, freq in enumerate(omega):
        print(f"  Mode {i+1}: ω = {freq:.8f}")

    # 音響モードがゼロに近いか
    if np.all(acoustic_freqs < tolerance):
        print(f"\n✓ Acoustic sum rule satisfied (max ω = {acoustic_freqs.max():.2e})")
        return True
    else:
        print(f"\n✗ Acoustic sum rule violated (max ω = {acoustic_freqs.max():.2e})")
        return False

# verify_acoustic_sum_rule(dm)

1.8 第一原理計算との関連

1.8.1 密度汎関数摂動論(DFPT)

実際の材料のフォノンを計算するには、第一原理計算から力定数を得る必要があります。密度汎関数摂動論(Density Functional Perturbation Theory, DFPT)は、原子変位に対する電子系の応答を自己無撞着に計算し、力定数を直接求める手法です。

[結晶構造] → [DFT基底状態計算] → [DFPT: 動的行列計算] → [各q点でD_q計算]
→ [固有値問題を解く] → [ω_jq, e_jq] → [フォノン分散/状態密度/熱力学量]

1.8.2 凍結フォノン法

別のアプローチとして、**凍結フォノン法(frozen phonon method)**があります。これは、原子を有限変位させたスーパーセルでDFT計算を行い、力の変化から力定数を数値的に求める方法です:

\[ \Phi_{\alpha\alpha’}(0\kappa, n’\kappa’) \approx \frac{F_\alpha(0\kappa; u_{n’\kappa’\alpha’}) - F_\alpha(0\kappa; 0)}{u_{n’\kappa’\alpha’}} \]

ここで、\(F_\alpha(0\kappa; u)\) は変位 \(u\) があるときの原子 \(0\kappa\) に働く力の \(\alpha\) 成分です。

1.8.3 実用的なワークフロー

代表的な第一原理フォノン計算の流れ:

  1. 構造最適化: DFT計算で平衡格子構造を決定
  2. 力定数計算: DFPTまたは凍結フォノン法で \(\Phi\) を計算
  3. フォノン分散: PHONOPYなどのツールで動的行列を構築し、高対称線に沿ってプロット
  4. 状態密度: ブリルアンゾーン全体で密な \(\mathbf{q}\) メッシュを使って積分
  5. 熱力学量: フォノン状態密度から比熱、自由エネルギーなどを計算

推奨ソフトウェア

まとめ

本章では、格子力学の理論的基礎を以下の観点から学びました:

この理論的枠組みは、次章以降で学ぶフォノン相互作用、熱伝導、電子-フォノン結合の基盤となります。また、第一原理計算ソフトウェアを使った実際の研究においても、結果を正しく解釈するために不可欠な知識です。

演習問題

問題1: 音響和則の検証(基礎)

1次元2原子鎖において、力定数が音響和則 \(\sum_{n’\kappa’} \Phi(0\kappa, n’\kappa’) = 0\) を満たすことを、最近接相互作用のみの場合について確認せよ。

問題2: 動的行列の計算(中級)

単純立方格子(格子定数 \(a\))で、最近接相互作用のみを考慮する。力定数を \(C\) として、\(\mathbf{q} = (\pi/a, 0, 0)\) (X点)での動的行列を構築し、3つの固有振動数を求めよ。対称性から縮退が予想されるか考察せよ。

問題3: 光学モードと音響モードの区別(中級)

NaCl構造(岩塩型)は、2原子基底(Na, Cl)を持つ面心立方格子です。\(\mathbf{q} \to 0\) の極限で、光学モード(TO, LO)と音響モードはどのように振る舞うか、原子変位の様子を図示して説明せよ。特にイオン結晶特有の長距離クーロン相互作用の影響を考察せよ。

問題4: 対称性と縮退(発展)

面心立方格子の \(L\) 点 \(\mathbf{q} = (\pi/a)(1/2, 1/2, 1/2)\) において、点群 \(D_{3d}\) の既約表現を調べ、単原子系のフォノンモードがどのように分類されるかを示せ。3つの音響モードの縮退構造を議論せよ。

問題5: Pythonプログラミング(実践)

1次元2原子鎖のコードを改良し、以下を追加実装せよ:

  1. 偏極ベクトル \(e_{\kappa}(\mathbf{q}, j)\) のプロット(各ブランチについて、振幅と位相を図示)
  2. 群速度 \(v_g = \partial\omega/\partial q\) の計算とプロット
  3. フォノン状態密度 \(g(\omega) = \sum_j \delta(\omega - \omega_j(q))\) の数値計算(ヒストグラム法)

問題6: 第一原理計算との接続(発展)

PHONOPYのドキュメントを読み、以下を調べよ:

  1. VASPで計算した力定数ファイル(FORCE_CONSTANTS)の形式
  2. BORN ファイルの役割(イオン結晶の長距離相互作用補正)
  3. phonopy-load コマンドを使ったフォノン分散の可視化方法

参考文献

  1. M. Born and K. Huang, Dynamical Theory of Crystal Lattices, Oxford University Press (1954) — 格子力学の古典的名著
  2. G. Leibfried and W. Ludwig, “Theory of Anharmonic Effects in Crystals”, Solid State Physics 12, 275 (1961)
  3. S. Baroni, S. de Gironcoli, A. Dal Corso, and P. Giannozzi, “Phonons and related crystal properties from density-functional perturbation theory”, Rev. Mod. Phys. 73, 515 (2001) — DFPTの標準的レビュー
  4. A. Togo and I. Tanaka, “First principles phonon calculations in materials science”, Scr. Mater. 108, 1 (2015) — PHONOPYの理論的背景
  5. C. Kittel, Introduction to Solid State Physics, 8th ed., Wiley (2005) — 入門的な説明(第4章、第5章)
  6. N. W. Ashcroft and N. D. Mermin, Solid State Physics, Saunders (1976) — より詳細な理論的導出(第22章、第23章)

ナビゲーション:


免責事項

この教育コンテンツは、橋本研究室のナレッジベース用にAIの支援を受けて作成されました。正確性を期していますが、重要な情報については一次資料や教科書で確認することをお勧めします。


© 2025 東北大学 橋本研究室. All rights reserved.