第4章: トポロジカルフォノン

📖 読了時間: 20-25 minutes 📊 難易度: Beginner 💻 コード例: 0個 📝 演習問題: 0問

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

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

第4章: トポロジカルフォノン

第4章: トポロジカルフォノン

上級 トポロジカル物性 幾何学的位相 バンドトポロジー

学習目標

1. トポロジカルフォノンとは

トポロジカルフォノンは、電子系のトポロジカル絶縁体に類似した概念をフォノン(格子振動)に適用したものです。フォノンバンド構造がトポロジカルに非自明な性質を持つことで、バルク-エッジ対応により保護された表面・エッジ状態や、異常な輸送現象が現れます。

1.1 電子系とフォノン系の類似性

性質電子系フォノン系
量子統計フェルミオンボソン
バンド構造電子バンドフォノンバンド
トポロジカル不変量チャーン数、Z2チャーン数、Z2
ワイル点ワイル半金属ワイルフォノン
エッジ状態スピンホール効果フォノンホール効果
時間反転対称性スピン軌道相互作用で破れる回転系、磁場で破れる

1.2 トポロジカルフォノンの分類

graph TD A[トポロジカルフォノン] —> B[時間反転対称性保存] A —> C[時間反転対称性破れ] B —> D[Z2トポロジカル絶縁体型] B —> E[ディラック/ワイルフォノン] C —> F[チャーン絶縁体型] C —> G[アノマラスホール効果] D —> H[エッジ状態: クラマース対] E —> I[ノードポイント: ワイル点] F —> J[エッジ状態: カイラルモード] G —> K[横熱流: フォノンホール効果]

重要概念:

2. ベリー位相とベリー曲率

2.1 ベリー位相の定義

パラメータ空間(運動量空間)\(\mathbf{k}\)を断熱的に変化させたときに波動関数が獲得する幾何学的位相をベリー位相と呼びます。

[\gamma_n = i \oint_C \langle u_{n\mathbf{k}} | \nabla_{\mathbf{k}} | u_{n\mathbf{k}} \rangle \cdot d\mathbf{k}]

ここで、

2.2 ベリー接続とベリー曲率

ベリー接続 (ベリーポテンシャル):

[\mathcal{A}{n}(\mathbf{k}) = i \langle u{n\mathbf{k}} | \nabla_{\mathbf{k}} | u_{n\mathbf{k}} \rangle]

ベリー曲率 :

[\boldsymbol{\Omega}n(\mathbf{k}) = \nabla{\mathbf{k}} \times \mathcal{A}_n(\mathbf{k})]

成分表示では:

[\Omega_{n,\mu\nu}(\mathbf{k}) = \partial_{k_\mu} \mathcal{A}{n,\nu} - \partial{k_\nu} \mathcal{A}_{n,\mu}]

2.3 フォノンのベリー曲率

フォノンの場合、固有ベクトル\(|\mathbf{e}_{n\mathbf{k}}\rangle\)(偏極ベクトル)を用いて:

[\Omega_{n,xy}(\mathbf{k}) = -2\text{Im}\sum_{m \neq n} \frac{\langle \mathbf{e}{n\mathbf{k}} | \partial{k_x} D(\mathbf{k}) | \mathbf{e}{m\mathbf{k}} \rangle \langle \mathbf{e}{m\mathbf{k}} | \partial_{k_y} D(\mathbf{k}) | \mathbf{e}_{n\mathbf{k}} \rangle}{[\omega_n(\mathbf{k}) - \omega_m(\mathbf{k})]^2}]

ここで、\(D(\mathbf{k})\)は動力学行列です。

物理的解釈: ベリー曲率は運動量空間の「磁場」に対応し、フォノンの異常速度や横方向の熱流(フォノンホール効果)を引き起こします。

2.4 ベリー位相の計算例

Python コピー

import numpy as np
from scipy.linalg import eigh

def compute_berry_curvature(dynamical_matrix_func, kx, ky, band_index, dk=1e-5):
    """
    フォノンのベリー曲率を数値微分で計算

    Parameters:
    -----------
    dynamical_matrix_func : callable
        k点を引数にとり動力学行列を返す関数
    kx, ky : float
        運動量空間の座標
    band_index : int
        対象バンドのインデックス
    dk : float
        数値微分の刻み幅

    Returns:
    --------
    omega_z : float
        z方向のベリー曲率成分
    """
    k_points = [
        [kx + dk, ky],
        [kx - dk, ky],
        [kx, ky + dk],
        [kx, ky - dk]
    ]

    eigenvectors = []
    for kpt in k_points:
        D = dynamical_matrix_func(kpt[0], kpt[1])
        eigenvals, eigvecs = eigh(D)
        eigenvectors.append(eigvecs[:, band_index])

    # 数値微分による接続の計算
    Ax_plus = 1j * np.log(np.vdot(eigenvectors[0], eigenvectors[0]))
    Ax_minus = 1j * np.log(np.vdot(eigenvectors[1], eigenvectors[1]))
    Ay_plus = 1j * np.log(np.vdot(eigenvectors[2], eigenvectors[2]))
    Ay_minus = 1j * np.log(np.vdot(eigenvectors[3], eigenvectors[3]))

    # ベリー曲率の計算
    dAy_dx = (Ay_plus - Ay_minus) / (2 * dk)
    dAx_dy = (Ax_plus - Ax_minus) / (2 * dk)

    omega_z = dAy_dx - dAx_dy

    return np.real(omega_z)

# 使用例: 2Dハニカム格子
def honeycomb_dynamical_matrix(kx, ky):
    """ハニカム格子の簡易動力学行列"""
    a = 1.0  # 格子定数
    K = 1.0  # ばね定数

    # 最近接相互作用のみの簡易モデル
    delta_1 = np.array([0, 0])
    delta_2 = np.array([a*np.sqrt(3)/2, a/2])
    delta_3 = np.array([a*np.sqrt(3)/2, -a/2])

    D = np.zeros((6, 6), dtype=complex)

    # 動力学行列の構築(簡略化)
    phase_1 = np.exp(1j * (kx * delta_1[0] + ky * delta_1[1]))
    phase_2 = np.exp(1j * (kx * delta_2[0] + ky * delta_2[1]))
    phase_3 = np.exp(1j * (kx * delta_3[0] + ky * delta_3[1]))

    # 対角成分
    D[0:3, 0:3] = 3 * K * np.eye(3)
    D[3:6, 3:6] = 3 * K * np.eye(3)

    # 非対角成分(サブラティス間相互作用)
    coupling = K * (phase_1 + phase_2 + phase_3)
    D[0:3, 3:6] = -coupling * np.eye(3)
    D[3:6, 0:3] = -coupling * np.eye(3)

    return D

# K点近傍でのベリー曲率マップ
kx_range = np.linspace(-0.2, 0.2, 20)
ky_range = np.linspace(-0.2, 0.2, 20)

berry_curvature_map = np.zeros((len(kx_range), len(ky_range)))

for i, kx in enumerate(kx_range):
    for j, ky in enumerate(ky_range):
        berry_curvature_map[i, j] = compute_berry_curvature(
            honeycomb_dynamical_matrix, kx, ky, band_index=3
        )

print("ベリー曲率の最大値:", np.max(np.abs(berry_curvature_map)))
print("ベリー曲率の積分 (チャーン数の近似):",
      np.sum(berry_curvature_map) * (kx_range[1] - kx_range[0]) * (ky_range[1] - ky_range[0]) / (2 * np.pi))

3. トポロジカル不変量

3.1 チャーン数

2次元系において、第1ブリルアンゾーンでのベリー曲率の積分がトポロジカル不変量(チャーン数)を与えます:

[C_n = \frac{1}{2\pi} \int_{\text{BZ}} \Omega_{n,xy}(\mathbf{k}) , d^2\mathbf{k}]

チャーン数は整数値をとり、バンドのトポロジカルな性質を特徴づけます。

チャーン数の物理的意味:

3.2 Z2不変量

時間反転対称性がある3次元系では、Z2トポロジカル不変量\(\nu_0; (\nu_1\nu_2\nu_3)\)を定義できます:

[(-1)^{\nu_0} = \prod_{i=1}^{8} \sqrt{\frac{\det[w(\Lambda_i)]}{\text{Pf}[w(\Lambda_i)]}}]

ここで、\(\Lambda_i\)は時間反転不変運動量(TRIM)点、\(w(\Lambda_i)\)はそこでのワイル行列です。

3.3 ワイル点のカイラリティ

ワイル点(ディラック点が分裂したもの)周りのベリー曲率の積分はカイラリティ\(\chi = \pm 1\)を与えます:

[\chi = \frac{1}{2\pi} \oint_S \boldsymbol{\Omega} \cdot d\mathbf{S}]

ここで、\(S\)はワイル点を囲む閉曲面です。

graph LR A[ディラック点] —>|対称性の破れ| B[ワイル点 +] A —>|対称性の破れ| C[ワイル点 -] B —> D[カイラリティ +1] C —> E[カイラリティ -1] D —> F[フェルミアーク] E —> F style B fill:#ffcccc style C fill:#ccccff

3.4 ミラーチャーン数

ミラー対称性がある系では、ミラー平面ごとにチャーン数を定義できます:

[C_{\mathcal{M}} = \frac{1}{2\pi} \int_{\text{BZ}{\mathcal{M}}} \Omega{xy}(\mathbf{k}) , d^2\mathbf{k}]

ここで、積分はミラー不変部分空間に制限されます。

4. ワイル・ディラックフォノン

4.1 ディラックフォノン

ディラック点は、2つの縮退したバンドが線形に交差する点です。ディラック点近傍のハミルトニアンは:

[H(\mathbf{q}) = \hbar v_x q_x \sigma_x + \hbar v_y q_y \sigma_y + \hbar v_z q_z \sigma_z]

ここで、\(\mathbf{q}\)はディラック点からの運動量のずれ、\(\sigma_i\)はパウリ行列、\(v_i\)は速度パラメータです。

4.2 ワイルフォノン

対称性が破れるとディラック点が分裂し、ワイル点が現れます。ワイル点は運動量空間における「モノポール」として振る舞います。

ワイルフォノンの特徴:

4.3 フォノンアーク

ワイルフォノンの表面状態は、異なるカイラリティのワイル点をつなぐ「アーク」状の分散を示します。

graph TD subgraph “表面ブリルアンゾーン” A[ワイル点 +1] —>|フォノンアーク| B[ワイル点 -1] end subgraph “バルク” C[ワイル点対] end A -.投影.- C B -.投影.- C style A fill:#ffcccc style B fill:#ccccff

4.4 実験的検出

ワイル・ディラックフォノンの実験的検出方法:

5. エッジ・表面状態

5.1 バルク-エッジ対応

トポロジカルフォノン系における基本原理:

[N_{\text{edge}} = C_{\text{bulk,L}} - C_{\text{bulk,R}}]

ここで、\(N_{\text{edge}}\)はエッジモードの数、\(C_{\text{bulk,L/R}}\)は左右のバルクのチャーン数です。

5.2 トポロジカル保護

エッジ状態は以下の性質を持ちます:

5.3 カイラルエッジフォノン

時間反転対称性が破れた2次元系(チャーン絶縁体型)では、エッジに一方向伝播するカイラルモードが現れます。

graph LR subgraph “上エッジ” A1[左端] —>|カイラルモード| A2[右端] end subgraph “バルク C=1” B[ギャップ] end subgraph “下エッジ” C1[右端] —>|カイラルモード| C2[左端] end style A1 fill:#ffcccc style C2 fill:#ffcccc

5.4 ヘリカルエッジフォノン

時間反転対称性が保たれたZ2トポロジカル絶縁体型では、スピン偏極した対のエッジモード(クラマース対)が現れます。

Python コピー

import numpy as np
import matplotlib.pyplot as plt
from scipy.linalg import eigh

def compute_edge_states_1d_chain(N_sites, hopping_t, on_site_energy, boundary='open'):
    """
    1次元鎖のエッジ状態を計算(SSH模型の類似)

    Parameters:
    -----------
    N_sites : int
        サイト数
    hopping_t : array-like [t1, t2]
        交互のホッピングパラメータ
    on_site_energy : float
        オンサイトエネルギー
    boundary : str
        'open' または 'periodic'

    Returns:
    --------
    eigenvalues, eigenvectors
    """
    t1, t2 = hopping_t
    H = np.zeros((N_sites, N_sites))

    # オンサイト項
    for i in range(N_sites):
        H[i, i] = on_site_energy

    # ホッピング項(交互)
    for i in range(N_sites - 1):
        if i % 2 == 0:
            H[i, i+1] = H[i+1, i] = t1
        else:
            H[i, i+1] = H[i+1, i] = t2

    # 周期境界条件
    if boundary == 'periodic':
        H[0, N_sites-1] = H[N_sites-1, 0] = t2 if (N_sites-1) % 2 == 1 else t1

    eigenvalues, eigenvectors = eigh(H)
    return eigenvalues, eigenvectors

# トポロジカル相のパラメータ
N = 100
t1, t2 = 1.0, 0.5  # t1 > t2: トポロジカル相
E_onsite = 0.0

eigenvals_open, eigvecs_open = compute_edge_states_1d_chain(
    N, [t1, t2], E_onsite, boundary='open'
)

# エッジ状態の可視化
fig, axes = plt.subplots(2, 1, figsize=(10, 8))

# エネルギースペクトル
axes[0].scatter(range(N), eigenvals_open, s=10)
axes[0].axhline(y=0, color='r', linestyle='--', label='ゼロエネルギー')
axes[0].set_xlabel('状態インデックス')
axes[0].set_ylabel('エネルギー')
axes[0].set_title('エネルギースペクトル(開境界)')
axes[0].legend()
axes[0].grid(True, alpha=0.3)

# ゼロエネルギー近傍の状態の空間分布
zero_energy_states = np.where(np.abs(eigenvals_open) < 0.1)[0]
if len(zero_energy_states) >= 2:
    # 左エッジ状態
    left_edge_state = eigvecs_open[:, zero_energy_states[0]]
    # 右エッジ状態
    right_edge_state = eigvecs_open[:, zero_energy_states[-1]]

    axes[1].plot(np.abs(left_edge_state)**2, 'b-', label='左エッジ状態', linewidth=2)
    axes[1].plot(np.abs(right_edge_state)**2, 'r-', label='右エッジ状態', linewidth=2)
    axes[1].set_xlabel('サイト位置')
    axes[1].set_ylabel('確率密度 |ψ|²')
    axes[1].set_title('エッジ状態の空間分布')
    axes[1].legend()
    axes[1].grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('edge_states_ssh.png', dpi=150, bbox_inches='tight')
print(f"ゼロエネルギー状態数: {len(zero_energy_states)}")
print(f"トポロジカル相: {'Yes' if t1 > t2 else 'No'}")

6. 対称性の破れとトポロジー

6.1 時間反転対称性の破れ

フォノン系における時間反転対称性の破れは以下の方法で実現できます:

[\mathcal{T}: \mathbf{u}(\mathbf{r}, t) \to \mathbf{u}(\mathbf{r}, -t)]

時間反転対称性が破れると、チャーン絶縁体型のトポロジカル相が実現できます。

6.2 空間反転対称性の破れ

空間反転対称性の破れは:

で自然に実現します。空間反転対称性が破れると、ワイルフォノンが現れやすくなります。

6.3 対称性とトポロジカル分類

対称性クラス時間反転空間反転トポロジカル相不変量
A(無対称性)××チャーン絶縁体チャーン数 \(C \in \mathbb{Z}\)
AI(時間反転+空間反転)Z2トポロジカル絶縁体Z2不変量 \(\nu \in \{0,1\}\)
半金属(ノード)○/××ワイル/ディラックカイラリティ \(\chi = \pm 1\)
ミラー対称性部分的ミラーチャーン絶縁体ミラーチャーン数

6.4 対称性指示子(Symmetry Indicator)

空間群の対称性から、高対称点での固有値の組み合わせがトポロジカル相を示唆する場合があります。これを対称性指示子と呼びます。

[\text{SI} = \sum_{i \in \text{TRIM}} n_i \cdot \text{irrep}_i \mod 2]

ここで、\(n_i\)はTRIM点\(i\)での占有バンド数、\(\text{irrep}_i\)は既約表現です。

7. フォノンホール効果

7.1 横熱流と熱ホール効果

温度勾配に垂直な方向に熱流が流れる現象をフォノンホール効果と呼びます。これはベリー曲率が原因で生じます。

[\mathbf{j}Q = -\kappa{xx} \nabla T \hat{x} - \kappa_{xy} \nabla T \hat{y}]

熱ホール伝導率\(\kappa_{xy}\)は:

[\kappa_{xy} = \frac{k_B^2 T}{\hbar} \sum_n \int_{\text{BZ}} \frac{d^2\mathbf{k}}{(2\pi)^2} c_2\left(\frac{\hbar\omega_n}{k_B T}\right) \Omega_{n,xy}(\mathbf{k})]

ここで、\(c_2(x) = (1+x)\left(\frac{x}{e^x-1}\right)^2 - \left(\frac{x}{e^x-1}\right)\)はボソン分布関数から導かれる熱因子です。

7.2 異常速度

フォノンの群速度にベリー曲率由来の異常項が加わります:

[\mathbf{v}n = \nabla{\mathbf{k}} \omega_n(\mathbf{k}) - \dot{\mathbf{k}} \times \boldsymbol{\Omega}_n(\mathbf{k})]

第二項が異常速度で、外力(温度勾配による実効的な力)と垂直な運動を引き起こします。

7.3 実験的観測

フォノンホール効果の測定:

実験例:

7.4 計算例

Python コピー

import numpy as np
from scipy.integrate import simps

def thermal_factor_c2(x):
    """熱ホール効果の熱因子 c2(x)"""
    # x = ℏω / (k_B T)
    exp_x = np.exp(x)
    bose = x / (exp_x - 1)
    c2 = (1 + x) * bose**2 - bose
    return c2

def compute_thermal_hall_conductivity(omega_bands, berry_curvature, temperature, k_mesh):
    """
    熱ホール伝導率の計算

    Parameters:
    -----------
    omega_bands : ndarray, shape (n_bands, nkx, nky)
        フォノン分散 (rad/s)
    berry_curvature : ndarray, shape (n_bands, nkx, nky)
        ベリー曲率 (Ų)
    temperature : float
        温度 (K)
    k_mesh : tuple (kx_array, ky_array)
        運動量メッシュ

    Returns:
    --------
    kappa_xy : float
        熱ホール伝導率 (W/K·m)
    """
    hbar = 1.054571817e-34  # J·s
    kB = 1.380649e-23       # J/K

    kx, ky = k_mesh
    dk = (kx[1] - kx[0]) * (ky[1] - ky[0])  # k空間の面積要素

    kappa_xy = 0.0

    for band_idx in range(omega_bands.shape[0]):
        omega = omega_bands[band_idx]
        Omega = berry_curvature[band_idx]

        # x = ℏω / (k_B T)
        x = hbar * omega / (kB * temperature)

        # 熱因子の計算
        c2_factor = thermal_factor_c2(x)

        # 積分(シンプソン則)
        integrand = c2_factor * Omega
        integral = simps(simps(integrand, ky), kx)

        kappa_xy += integral

    # 係数
    prefactor = (kB**2 * temperature) / (hbar * (2 * np.pi)**2)
    kappa_xy *= prefactor * dk

    return kappa_xy

# 使用例: 2Dハニカム格子
nk = 50
kx = np.linspace(-np.pi, np.pi, nk)
ky = np.linspace(-np.pi, np.pi, nk)
KX, KY = np.meshgrid(kx, ky)

# 簡易的なフォノン分散(2バンド)
v_sound = 5000  # m/s (音速)
hbar = 1.054571817e-34
omega_acoustic = v_sound * np.sqrt(KX**2 + KY**2) / 1e-10  # rad/s

# 簡易的なベリー曲率(ディラック点周りにピーク)
berry_curv = np.zeros_like(KX)
K_point_x, K_point_y = 4*np.pi/3, 0
distance = np.sqrt((KX - K_point_x)**2 + (KY - K_point_y)**2)
berry_curv = 0.5 * np.exp(-distance**2 / 0.1)  # Ų単位

omega_bands = np.array([omega_acoustic])
berry_curvature = np.array([berry_curv])

# 温度依存性
temperatures = np.logspace(0, 2, 20)  # 1K to 100K
kappa_xy_values = []

for T in temperatures:
    kappa_xy = compute_thermal_hall_conductivity(
        omega_bands, berry_curvature, T, (kx, ky)
    )
    kappa_xy_values.append(kappa_xy)

# 結果のプロット
import matplotlib.pyplot as plt

plt.figure(figsize=(8, 6))
plt.semilogx(temperatures, kappa_xy_values, 'o-', linewidth=2)
plt.xlabel('温度 (K)', fontsize=12)
plt.ylabel('熱ホール伝導率 κ_xy (W/K·m)', fontsize=12)
plt.title('熱ホール伝導率の温度依存性', fontsize=14)
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('thermal_hall_conductivity.png', dpi=150)

print(f"最大値: {np.max(kappa_xy_values):.2e} W/K·m at {temperatures[np.argmax(kappa_xy_values)]:.1f} K")

8. 2次元材料のトポロジカルフォノン

8.1 グラフェンのディラックフォノン

グラフェンは、K点とK’点にディラックフォノンを持ちます。低エネルギー有効ハミルトニアンは:

[H_{\text{Dirac}} = \hbar v_{\text{ph}} (\tau q_x \sigma_x + q_y \sigma_y)]

ここで、\(\tau = \pm 1\)は谷の指標、\(v_{\text{ph}}\)はフォノンの速度です。

グラフェンのフォノン特性:

8.2 遷移金属ダイカルコゲナイド(TMD)

MoS2、WS2などのTMDは、空間反転対称性が破れており、谷依存的なベリー曲率を持ちます。

8.3 h-BN(六方晶窒化ホウ素)

h-BNは大きなバンドギャップを持つ絶縁体ですが、フォノンバンドにトポロジカルな性質があります。

[C_{\text{phonon}} = +2 \quad (\text{lower optical bands})]

これにより、エッジに一方向伝播するフォノンモードが現れます。

8.4 2D材料のベリー曲率計算

Python コピー

import numpy as np
from scipy.linalg import eigh

def graphene_phonon_hamiltonian(kx, ky, a=1.42e-10, K_spring=100):
    """
    グラフェンの簡易フォノンハミルトニアン

    Parameters:
    -----------
    kx, ky : float
        運動量 (1/m)
    a : float
        炭素間距離 (m)
    K_spring : float
        ばね定数 (N/m)

    Returns:
    --------
    H : ndarray, shape (6, 6)
        動力学行列
    """
    # 最近接ベクトル
    delta1 = np.array([a, 0])
    delta2 = np.array([-a/2, a*np.sqrt(3)/2])
    delta3 = np.array([-a/2, -a*np.sqrt(3)/2])

    # 構造因子
    f_k = (np.exp(1j * (kx * delta1[0] + ky * delta1[1])) +
           np.exp(1j * (kx * delta2[0] + ky * delta2[1])) +
           np.exp(1j * (kx * delta3[0] + ky * delta3[1])))

    mass = 12 * 1.66054e-27  # 炭素の質量 (kg)

    # 動力学行列(簡略版: x-y平面内のみ)
    H = np.zeros((6, 6), dtype=complex)

    # サブラティスA
    H[0:3, 0:3] = (3 * K_spring / mass) * np.eye(3)
    # サブラティスB
    H[3:6, 3:6] = (3 * K_spring / mass) * np.eye(3)

    # サブラティス間相互作用
    coupling = -(K_spring / mass) * f_k
    H[0, 3] = H[3, 0] = coupling
    H[1, 4] = H[4, 1] = coupling
    H[2, 5] = H[5, 2] = coupling

    return H

def compute_berry_curvature_graphene(kx_range, ky_range, band_idx=2):
    """グラフェンK点近傍のベリー曲率マップ"""
    nkx, nky = len(kx_range), len(ky_range)
    berry_map = np.zeros((nkx, nky))

    dk = 1e-5  # 数値微分の刻み

    for i, kx in enumerate(kx_range):
        for j, ky in enumerate(ky_range):
            # 4点での固有ベクトル
            H_plus_x = graphene_phonon_hamiltonian(kx + dk, ky)
            H_minus_x = graphene_phonon_hamiltonian(kx - dk, ky)
            H_plus_y = graphene_phonon_hamiltonian(kx, ky + dk)
            H_minus_y = graphene_phonon_hamiltonian(kx, ky - dk)

            _, v_px = eigh(H_plus_x)
            _, v_mx = eigh(H_minus_x)
            _, v_py = eigh(H_plus_y)
            _, v_my = eigh(H_minus_y)

            # ベリー接続の計算
            vec_px = v_px[:, band_idx]
            vec_mx = v_mx[:, band_idx]
            vec_py = v_py[:, band_idx]
            vec_my = v_my[:, band_idx]

            # 位相の連続性を保つ
            if np.vdot(vec_px, vec_mx) < 0:
                vec_mx = -vec_mx
            if np.vdot(vec_py, vec_my) < 0:
                vec_my = -vec_my

            # ベリー接続(簡易計算)
            Ax = np.imag(np.log(np.vdot(vec_px, vec_mx) + 1e-10))
            Ay = np.imag(np.log(np.vdot(vec_py, vec_my) + 1e-10))

            # ベリー曲率(回転)
            berry_map[i, j] = (Ay - Ax) / (2 * dk)

    return berry_map

# K点近傍での計算
a = 1.42e-10
K_point = 4 * np.pi / (3 * a)
kx_range = np.linspace(K_point - 1e9, K_point + 1e9, 30)
ky_range = np.linspace(-1e9, 1e9, 30)

berry_curv_graphene = compute_berry_curvature_graphene(kx_range, ky_range)

# 可視化
import matplotlib.pyplot as plt

plt.figure(figsize=(8, 6))
plt.contourf(kx_range / 1e9, ky_range / 1e9, berry_curv_graphene.T,
             levels=20, cmap='RdBu_r')
plt.colorbar(label='ベリー曲率 (m²)')
plt.xlabel('kx (×10⁹ m⁻¹)', fontsize=12)
plt.ylabel('ky (×10⁹ m⁻¹)', fontsize=12)
plt.title('グラフェンK点近傍のベリー曲率', fontsize=14)
plt.tight_layout()
plt.savefig('graphene_berry_curvature.png', dpi=150)

print(f"ベリー曲率の積分(チャーン数): {np.sum(berry_curv_graphene) * (kx_range[1]-kx_range[0]) * (ky_range[1]-ky_range[0]) / (2*np.pi):.3f}")

9. フォノニック結晶とメタマテリアル

9.1 フォノニック結晶

周期的な構造により人工的にバンドギャップを作り出した材料です。トポロジカル設計により、頑強なエッジモードを実現できます。

フォノニック結晶の利点:

9.2 量子スピンホール型フォノニック結晶

時間反転対称性を保ちながら、擬スピン自由度によりZ2トポロジカル相を実現:

9.3 フロッケトポロジカルフォノン

時間周期的な駆動(例: 周期的変形、回転)により、実効的なトポロジカル相を誘起できます。

[H_{\text{eff}} = H_0 + \sum_n H_n e^{in\Omega t}]

フロッケ理論により、時間平均された実効ハミルトニアンがトポロジカルな性質を持ちます。

9.4 メカニカルメタマテリアル

負のポアソン比、負の質量密度などの異常な機械的性質を示す人工材料です。トポロジカル設計により:

graph TD A[フォノニック結晶/メタマテリアル] —> B[周期構造設計] A —> C[時間変調] B —> D[バンドギャップエンジニアリング] B —> E[トポロジカル相転移] C —> F[フロッケトポロジー] C —> G[動的調整] D —> H[エッジ導波路] E —> I[頑強な伝播] F —> J[非平衡トポロジー] G —> K[適応材料]

10. 実験的兆候と検出方法

10.1 中性子散乱

中性子非弾性散乱は、フォノン分散を直接測定できる最も強力な手法です。

中性子散乱の特徴:

10.2 ラマン散乱

光学フォノンのエネルギーと対称性を調べるのに適しています。

10.3 熱輸送測定

トポロジカルフォノンの間接的な証拠を熱伝導から得られます。

測定量トポロジカルな兆候典型的な温度範囲
熱ホール伝導率 κxyゼロ磁場で非ゼロ1-50 K
熱伝導率 κxx異常な温度依存性0.1-300 K
熱電効果エッジ寄与の増強室温付近
磁場依存性線形または飽和低温

10.4 第一原理計算

密度汎関数摂動論(DFPT)により、実材料のフォノン分散とベリー曲率を計算できます。

Python コピー

# Quantum ESPRESSOでの計算フロー(疑似コード)

"""
1. SCF計算(自己無撞着場)
   pw.x < scf.in > scf.out

2. DFPT計算(動力学行列)
   ph.x < ph.in > ph.out

3. フォノン分散の計算
   q2r.x < q2r.in > q2r.out
   matdyn.x < matdyn.in > matdyn.out

4. ベリー曲率の計算(WannierTools等)
"""

# Pythonでの解析例
import numpy as np
import matplotlib.pyplot as plt

def load_phonon_bands(filename):
    """Quantum ESPRESSOの出力からフォノンバンドを読み込み"""
    data = np.loadtxt(filename)
    k_path = data[:, 0]
    frequencies = data[:, 1:]
    return k_path, frequencies

def identify_weyl_points(k_mesh, frequencies, threshold=0.1):
    """
    バンド交差点(ワイル点候補)を検出

    Parameters:
    -----------
    k_mesh : ndarray
        k点メッシュ
    frequencies : ndarray
        フォノン周波数
    threshold : float
        バンドギャップの閾値 (THz)

    Returns:
    --------
    weyl_candidates : list
        ワイル点候補のk座標
    """
    weyl_candidates = []

    # 隣接バンド間のギャップをチェック
    for i in range(frequencies.shape[1] - 1):
        gap = frequencies[:, i+1] - frequencies[:, i]
        crossing_indices = np.where(gap < threshold)[0]

        for idx in crossing_indices:
            weyl_candidates.append(k_mesh[idx])

    return weyl_candidates

# 使用例
k_path, phonon_freqs = load_phonon_bands('phonon_bands.dat')

# バンド構造のプロット
fig, ax = plt.subplots(figsize=(10, 6))

for band_idx in range(phonon_freqs.shape[1]):
    ax.plot(k_path, phonon_freqs[:, band_idx], 'b-', linewidth=1.5)

ax.axhline(y=0, color='k', linestyle='--', linewidth=0.5)
ax.set_xlabel('波数ベクトル', fontsize=12)
ax.set_ylabel('周波数 (THz)', fontsize=12)
ax.set_title('フォノンバンド構造', fontsize=14)
ax.grid(True, alpha=0.3)

# ワイル点候補をマーク
weyl_points = identify_weyl_points(k_path, phonon_freqs, threshold=0.1)
if weyl_points:
    for wp in weyl_points:
        ax.axvline(x=wp, color='r', linestyle=':', alpha=0.5)
    print(f"ワイル点候補数: {len(weyl_points)}")

plt.tight_layout()
plt.savefig('phonon_bands_with_weyl.png', dpi=150)

10.5 走査トンネル顕微鏡(STM)

表面に敏感な手法で、エッジ状態の空間分布を可視化できます(電子-フォノン結合を介して間接的に)。

11. 熱輸送特性との関連

11.1 ボルツマン輸送方程式

フォノンの熱輸送は、半古典的ボルツマン方程式で記述されます:

[\frac{\partial f}{\partial t} + \mathbf{v} \cdot \nabla_{\mathbf{r}} f + \mathbf{F} \cdot \nabla_{\mathbf{k}} f = \left(\frac{\partial f}{\partial t}\right)_{\text{coll}}]

トポロジカルフォノンでは、ベリー曲率により速度\(\mathbf{v}\)に異常項が加わります。

11.2 熱伝導率テンソル

熱伝導率は、フォノンの寄与の和として:

[\kappa_{\alpha\beta} = \frac{1}{V} \sum_{\mathbf{k},n} C_n(\mathbf{k}) v_{n,\alpha}(\mathbf{k}) v_{n,\beta}(\mathbf{k}) \tau_n(\mathbf{k})]

ここで、

11.3 トポロジカル効果による熱伝導の増強

トポロジカル保護されたエッジ状態は、散乱に強いため高い熱伝導率をもたらす可能性があります。

[\kappa_{\text{edge}} \propto N_{\text{edge}} \times v_{\text{edge}} \times \ell_{\text{edge}}]

ここで、\(N_{\text{edge}}\)はエッジチャネル数、\(\ell_{\text{edge}}\)は平均自由行程(散乱に頑強なため長い)です。

11.4 量子化熱伝導

理想的な1次元エッジチャネルでは、熱伝導率が量子化される可能性があります:

[\kappa_{\text{quantum}} = N_{\text{channel}} \times \frac{\pi^2 k_B^2 T}{3h}]

これは電子系のランダウアー公式の熱版に相当します。

11.5 計算例: 緩和時間近似

Python コピー

import numpy as np
from scipy.constants import hbar, k as kB

def bose_einstein(omega, T):
    """ボース・アインシュタイン分布"""
    x = hbar * omega / (kB * T)
    return 1 / (np.exp(x) - 1)

def heat_capacity_phonon(omega, T):
    """フォノンの比熱"""
    x = hbar * omega / (kB * T)
    n_BE = bose_einstein(omega, T)
    C = kB * x**2 * np.exp(x) / (np.exp(x) - 1)**2
    return C

def thermal_conductivity_RTA(omega_bands, group_velocity, relaxation_time,
                               k_mesh, temperature, volume):
    """
    緩和時間近似(RTA)での熱伝導率計算

    Parameters:
    -----------
    omega_bands : ndarray, shape (n_bands, n_k)
        フォノン角周波数 (rad/s)
    group_velocity : ndarray, shape (n_bands, n_k, 3)
        群速度 (m/s)
    relaxation_time : ndarray, shape (n_bands, n_k)
        緩和時間 (s)
    k_mesh : ndarray, shape (n_k, 3)
        k点メッシュ
    temperature : float
        温度 (K)
    volume : float
        単位胞体積 (m³)

    Returns:
    --------
    kappa : ndarray, shape (3, 3)
        熱伝導率テンソル (W/m·K)
    """
    n_bands, n_k = omega_bands.shape
    dk = (2 * np.pi)**3 / (volume * n_k)  # k空間の体積要素

    kappa = np.zeros((3, 3))

    for band_idx in range(n_bands):
        for k_idx in range(n_k):
            omega = omega_bands[band_idx, k_idx]
            v = group_velocity[band_idx, k_idx]
            tau = relaxation_time[band_idx, k_idx]

            if omega < 1e-6:  # 音響ブランチのゼロ点を除外
                continue

            # 比熱
            C = heat_capacity_phonon(omega, temperature)

            # 熱伝導率テンソルへの寄与
            for alpha in range(3):
                for beta in range(3):
                    kappa[alpha, beta] += C * v[alpha] * v[beta] * tau * dk / volume

    return kappa

# 使用例: 簡単な等方的モデル
n_k = 1000
n_bands = 3

# 簡易的なフォノン分散(デバイモデル)
k_magnitude = np.linspace(0, np.pi / 3e-10, n_k)
omega_debye = 3e13  # rad/s
omega_bands_1d = np.zeros((n_bands, n_k))

# 音響モード
omega_bands_1d[0] = omega_debye * k_magnitude / k_magnitude[-1] * 0.3
omega_bands_1d[1] = omega_debye * k_magnitude / k_magnitude[-1] * 0.5
# 光学モード
omega_bands_1d[2] = omega_debye * 0.8 * np.ones(n_k)

# 群速度(簡易: 分散の微分)
group_vel_1d = np.zeros((n_bands, n_k, 3))
dk_spacing = k_magnitude[1] - k_magnitude[0]
for band in range(n_bands):
    dw_dk = np.gradient(omega_bands_1d[band], dk_spacing)
    group_vel_1d[band, :, 0] = dw_dk  # x方向のみ

# 緩和時間(簡易: ウムクラッププロセス)
T_ref = 300  # K
tau_0 = 1e-11  # s
relaxation_time_1d = tau_0 * (T_ref / 100)**2 * np.ones((n_bands, n_k))

# 温度依存性の計算
temperatures = np.linspace(10, 400, 40)
kappa_values = []

volume = (3e-10)**3  # 典型的な単位胞体積

for T in temperatures:
    kappa_tensor = thermal_conductivity_RTA(
        omega_bands_1d, group_vel_1d, relaxation_time_1d,
        k_magnitude, T, volume
    )
    kappa_values.append(kappa_tensor[0, 0])

# プロット
import matplotlib.pyplot as plt

plt.figure(figsize=(8, 6))
plt.plot(temperatures, kappa_values, 'o-', linewidth=2)
plt.xlabel('温度 (K)', fontsize=12)
plt.ylabel('熱伝導率 (W/m·K)', fontsize=12)
plt.title('熱伝導率の温度依存性(RTA)', fontsize=14)
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('thermal_conductivity_RTA.png', dpi=150)

print(f"室温(300K)での熱伝導率: {kappa_values[np.argmin(np.abs(temperatures - 300))]:.2f} W/m·K")

12. 計算手法とPython実装

12.1 動力学行列の対角化

フォノンバンド構造を計算するには、各k点で動力学行列を対角化します:

[D_{\alpha\beta}^{ij}(\mathbf{k}) = \frac{1}{\sqrt{M_i M_j}} \sum_{\mathbf{R}} \Phi_{\alpha\beta}^{ij}(0, \mathbf{R}) e^{i\mathbf{k} \cdot \mathbf{R}}]

ここで、\(\Phi\)は力定数行列、\(M_i\)は原子\(i\)の質量です。

12.2 ウィルソンループ法

Z2不変量やチャーン数を数値的に計算する方法です。ブリルアンゾーン上の閉路でのベリー接続の積分を計算します。

Python コピー

import numpy as np
from scipy.linalg import eigh, det

def wilson_loop_1d(dynamical_matrix_func, k_loop, occupied_bands):
    """
    1次元ウィルソンループの計算

    Parameters:
    -----------
    dynamical_matrix_func : callable
        k点を引数にとり動力学行列を返す関数
    k_loop : ndarray, shape (n_k, 2)
        ブリルアンゾーン上の閉路
    occupied_bands : list
        占有バンドのインデックスリスト

    Returns:
    --------
    wilson_eigenvalues : ndarray
        ウィルソンループの固有値(位相)
    """
    n_k = len(k_loop)
    n_occ = len(occupied_bands)

    # 初期化
    F = np.eye(n_occ, dtype=complex)

    # 閉路に沿って積分
    for i in range(n_k):
        k_current = k_loop[i]
        k_next = k_loop[(i + 1) % n_k]

        # 現在と次のk点での固有ベクトル
        D_current = dynamical_matrix_func(k_current[0], k_current[1])
        D_next = dynamical_matrix_func(k_next[0], k_next[1])

        _, v_current = eigh(D_current)
        _, v_next = eigh(D_next)

        # 占有バンドの部分空間
        U_current = v_current[:, occupied_bands]
        U_next = v_next[:, occupied_bands]

        # 重なり行列
        overlap = U_next.conj().T @ U_current

        # ウィルソンループ行列の更新
        F = overlap @ F

    # 固有値(位相)を計算
    wilson_eigenvalues = np.linalg.eigvals(F)
    wilson_phases = np.angle(wilson_eigenvalues)

    return wilson_phases

def compute_chern_number_wilson(dynamical_matrix_func, k_mesh_2d, occupied_bands):
    """
    2次元系のチャーン数をウィルソンループ法で計算

    Parameters:
    -----------
    dynamical_matrix_func : callable
        動力学行列を返す関数
    k_mesh_2d : tuple (kx_array, ky_array)
        2次元k点メッシュ
    occupied_bands : list
        占有バンドのインデックス

    Returns:
    --------
    chern_number : float
        チャーン数
    """
    kx_array, ky_array = k_mesh_2d
    n_kx = len(kx_array)
    n_ky = len(ky_array)

    # ky方向のウィルソンループ固有値を計算
    wilson_phases = np.zeros((n_kx, len(occupied_bands)))

    for i, kx in enumerate(kx_array):
        # kyループを構築
        k_loop = np.array([[kx, ky] for ky in ky_array])
        # ウィルソンループ計算
        phases = wilson_loop_1d(dynamical_matrix_func, k_loop, occupied_bands)
        wilson_phases[i] = phases

    # kx方向でウィルソンループ固有値の巻き数を計算
    total_winding = 0
    for band_idx in range(len(occupied_bands)):
        phase_evolution = wilson_phases[:, band_idx]
        # 位相の変化を追跡(アンラップ)
        phase_unwrapped = np.unwrap(phase_evolution)
        winding = (phase_unwrapped[-1] - phase_unwrapped[0]) / (2 * np.pi)
        total_winding += winding

    chern_number = np.round(total_winding)
    return chern_number

# 使用例
def example_haldane_phonon(kx, ky, t1=1.0, t2=0.3, phi=np.pi/2):
    """Haldane模型風のトポロジカルフォノン"""
    # 簡略化されたハルデン型モデル
    H = np.zeros((6, 6), dtype=complex)

    # 最近接ホッピング
    delta_1 = [1, 0]
    delta_2 = [-0.5, np.sqrt(3)/2]
    delta_3 = [-0.5, -np.sqrt(3)/2]

    phase_1 = np.exp(1j * (kx * delta_1[0] + ky * delta_1[1]))
    phase_2 = np.exp(1j * (kx * delta_2[0] + ky * delta_2[1]))
    phase_3 = np.exp(1j * (kx * delta_3[0] + ky * delta_3[1]))

    # オンサイト
    H[0:3, 0:3] = 3 * t1 * np.eye(3)
    H[3:6, 3:6] = 3 * t1 * np.eye(3)

    # サブラティス間
    coupling = t1 * (phase_1 + phase_2 + phase_3)
    H[0:3, 3:6] = -coupling * np.eye(3)
    H[3:6, 0:3] = -np.conj(coupling) * np.eye(3)

    # 次近接ホッピング(時間反転対称性を破る)
    nnn_phase = np.exp(1j * phi)
    H[0:3, 0:3] += t2 * nnn_phase * np.eye(3)
    H[3:6, 3:6] += t2 * np.conj(nnn_phase) * np.eye(3)

    return H

# チャーン数の計算
kx_mesh = np.linspace(-np.pi, np.pi, 20)
ky_mesh = np.linspace(-np.pi, np.pi, 20)

chern_num = compute_chern_number_wilson(
    example_haldane_phonon,
    (kx_mesh, ky_mesh),
    occupied_bands=[0, 1, 2]
)

print(f"計算されたチャーン数: {chern_num:.0f}")

12.3 WannierToolsの利用

WannierToolsは、トポロジカル物性の計算に特化したツールです。第一原理計算の結果からベリー曲率、チャーン数、表面状態を計算できます。

WannierToolsの主な機能:

13. 実例: α-石英とNa3Bi

13.1 α-石英(α-SiO2)

α-石英は、最初に発見されたトポロジカルフォノンを持つ材料の一つです。

構造的特徴

トポロジカル性質

実験的証拠:

13.2 Na3Bi

Na3Biは、ディラック半金属として知られていますが、フォノンもトポロジカルな性質を示します。

構造的特徴

トポロジカル性質

graph TD A[Na3Bi] —> B[電子系] A —> C[フォノン系] B —> D[ディラック半金属] B —> E[表面フェルミアーク] C —> F[ディラックフォノン] C —> G[Z2トポロジカル] D -.電子-フォノン結合.- F E -.表面状態相互作用.- G style D fill:#ffe6e6 style F fill:#e6f3ff

13.3 その他の実例

材料空間群トポロジカル特徴実験的検証
α-SiO2P3121ワイル点、フォノンアーク中性子散乱(2018)
Na3BiP63/mmcディラック点、Z2 = 1第一原理計算(2019)
FeSiP213多重ワイル点中性子散乱(2020)
ScZnPm-3mノードライン、ドラムヘッド表面状態理論予測(2021)
Bi2Se3R-3mZ2トポロジカル絶縁体ラマン散乱(2020)

13.4 計算例: α-石英のワイル点解析

Python コピー

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

def analyze_weyl_point_structure(k_weyl, omega_func, berry_curv_func,
                                   delta_k=0.05, n_points=20):
    """
    ワイル点近傍の構造解析

    Parameters:
    -----------
    k_weyl : array-like
        ワイル点のk座標 [kx, ky, kz]
    omega_func : callable
        フォノン周波数を返す関数
    berry_curv_func : callable
        ベリー曲率を返す関数
    delta_k : float
        ワイル点からの距離範囲
    n_points : int
        各方向のサンプル点数

    Returns:
    --------
    analysis : dict
        解析結果(線形分散、カイラリティ等)
    """
    kx_w, ky_w, kz_w = k_weyl

    # ワイル点周りのメッシュ
    kx_range = np.linspace(kx_w - delta_k, kx_w + delta_k, n_points)
    ky_range = np.linspace(ky_w - delta_k, ky_w + delta_k, n_points)

    # 線形分散の検証(kz固定、kx-ky平面)
    omega_map = np.zeros((n_points, n_points))
    berry_flux = 0

    for i, kx in enumerate(kx_range):
        for j, ky in enumerate(ky_range):
            omega_map[i, j] = omega_func(kx, ky, kz_w)

            # ベリー曲率の積分(カイラリティ)
            if i > 0 and j > 0:
                dkx = kx_range[1] - kx_range[0]
                dky = ky_range[1] - ky_range[0]
                berry_curv = berry_curv_func(kx, ky, kz_w)
                berry_flux += berry_curv * dkx * dky

    # カイラリティの計算
    chirality = np.round(berry_flux / (2 * np.pi))

    # 線形フィット(ワイル点からの距離 vs エネルギー)
    distances = []
    energies = []

    for i, kx in enumerate(kx_range):
        for j, ky in enumerate(ky_range):
            dist = np.sqrt((kx - kx_w)**2 + (ky - ky_w)**2)
            energy = omega_map[i, j]
            if dist > 0:
                distances.append(dist)
                energies.append(energy)

    # 線形フィット
    coeffs = np.polyfit(distances, energies, 1)
    velocity = coeffs[0]  # フォノン速度

    analysis = {
        'chirality': chirality,
        'velocity': velocity,
        'omega_map': omega_map,
        'k_mesh': (kx_range, ky_range)
    }

    return analysis

# α-石英の簡易モデル(実際のDFPT結果の近似)
def quartz_omega_near_weyl(kx, ky, kz):
    """ワイル点近傍のフォノン周波数(THz)"""
    # H点近傍のワイル点: k_weyl ≈ (1/3, 1/3, 1/2) in reduced coordinates
    k_weyl = np.array([2*np.pi/(3*4.916e-10), 2*np.pi/(3*4.916e-10), np.pi/5.405e-10])

    delta_k = np.array([kx, ky, kz]) - k_weyl

    # 線形分散(簡易)
    v_ph = 5000  # m/s
    omega = v_ph * np.linalg.norm(delta_k) / (2 * np.pi)  # Hz
    omega_THz = omega / 1e12

    return omega_THz + 12.5  # 12.5 THz付近にワイル点

def quartz_berry_curvature(kx, ky, kz):
    """ベリー曲率のモデル(簡易)"""
    k_weyl = np.array([2*np.pi/(3*4.916e-10), 2*np.pi/(3*4.916e-10), np.pi/5.405e-10])
    delta_k = np.array([kx, ky, kz]) - k_weyl

    # ワイル点周りの1/r²依存性
    r = np.linalg.norm(delta_k[:2])  # kx-ky平面内
    if r < 1e8:
        return 0

    # モノポール構造
    Omega = 1e-18 / r**2  # 簡易的な形
    return Omega

# ワイル点解析
k_weyl_quartz = [2*np.pi/(3*4.916e-10), 2*np.pi/(3*4.916e-10), np.pi/5.405e-10]

analysis = analyze_weyl_point_structure(
    k_weyl_quartz,
    quartz_omega_near_weyl,
    quartz_berry_curvature,
    delta_k=5e8,  # 1/m
    n_points=30
)

print(f"カイラリティ: {analysis['chirality']:.0f}")
print(f"フォノン速度: {analysis['velocity']:.2e} m/s")

# 分散の可視化
kx_mesh, ky_mesh = analysis['k_mesh']
omega_map = analysis['omega_map']

fig = plt.figure(figsize=(12, 5))

# 2Dマップ
ax1 = fig.add_subplot(121)
contour = ax1.contourf(kx_mesh / 1e9, ky_mesh / 1e9, omega_map.T,
                        levels=20, cmap='viridis')
ax1.plot([k_weyl_quartz[0] / 1e9], [k_weyl_quartz[1] / 1e9],
         'r*', markersize=15, label='ワイル点')
ax1.set_xlabel('kx (×10⁹ m⁻¹)')
ax1.set_ylabel('ky (×10⁹ m⁻¹)')
ax1.set_title('ワイル点近傍のフォノン分散')
plt.colorbar(contour, ax=ax1, label='周波数 (THz)')
ax1.legend()

# 3D表示
ax2 = fig.add_subplot(122, projection='3d')
KX, KY = np.meshgrid(kx_mesh / 1e9, ky_mesh / 1e9)
surf = ax2.plot_surface(KX, KY, omega_map.T, cmap='viridis', alpha=0.8)
ax2.set_xlabel('kx (×10⁹ m⁻¹)')
ax2.set_ylabel('ky (×10⁹ m⁻¹)')
ax2.set_zlabel('周波数 (THz)')
ax2.set_title('3D分散(ワイル錐)')

plt.tight_layout()
plt.savefig('quartz_weyl_phonon.png', dpi=150)
print("分散図を保存しました: quartz_weyl_phonon.png")

14. まとめ

本章では、トポロジカルフォノンの理論と応用について学びました。

重要なポイント

理論的基礎

トポロジカル相の種類

物理現象

実材料と応用

計算手法

今後の展望

関連分野とのつながり

graph LR A[トポロジカルフォノン] —> B[トポロジカル絶縁体] A —> C[熱電材料] A —> D[フォノニック結晶] A —> E[スピントロニクス] B —> F[バンドトポロジー理論] C —> G[熱輸送制御] D —> H[メタマテリアル設計] E —> I[スピン-格子結合] F —> J[材料探索] G —> J H —> J I —> J style A fill:#e6f3ff style J fill:#ffe6e6

演習問題

演習 4.1: ベリー曲率の計算

問題: 2バンド系のハミルトニアン \(H(\mathbf{k}) = d_x(\mathbf{k})\sigma_x + d_y(\mathbf{k})\sigma_y + d_z(\mathbf{k})\sigma_z\) に対して、下側バンドのベリー曲率を導出せよ。ただし、\(\mathbf{d}(\mathbf{k}) = (d_x, d_y, d_z)\)とする。

ヒント

ベリー曲率は \(\Omega_{xy} = \mathbf{d} \cdot (\partial_{k_x}\mathbf{d} \times \partial_{k_y}\mathbf{d}) / (2|\mathbf{d}|^3)\) で与えられます。

演習 4.2: チャーン数の計算

問題: 提供されたPythonコードを用いて、ハルデン模型のパラメータ\(\phi\)を0から\(2\pi\)まで変化させたときのチャーン数の変化を計算し、プロットせよ。位相図を描け。

演習 4.3: エッジ状態の可視化

問題: SSH模型(1次元鎖)において、ホッピングパラメータの比\(t_1/t_2\)をパラメータとして、エッジ状態の数とエネルギーの関係を調べよ。どの値でトポロジカル相転移が起こるか?

演習 4.4: 熱ホール伝導率の温度依存性

問題: 熱因子\(c_2(x)\)の関数形から、熱ホール伝導率\(\kappa_{xy}\)が低温でどのような温度依存性を示すか理論的に導出せよ。高温極限についても議論せよ。

ヒント

低温(\(T \to 0\))では\(x = \hbar\omega/(k_B T) \to \infty\)となり、\(c_2(x) \sim x^2 e^{-x}\)と振る舞います。高温では\(x \to 0\)、\(c_2(x) \sim 1\)となります。

演習 4.5: ワイル点の探索

問題: グラフェンのフォノンバンド構造において、K点とK’点近傍でディラック点を探索するPythonコードを作成せよ。線形分散を確認し、フォノン速度を計算せよ。

演習 4.6: フォノニック結晶の設計

問題: 1次元フォノニック結晶(質量\(m_1, m_2\)とばね定数\(K_1, K_2\)が交互に配列)のバンド構造を計算せよ。バンドギャップが開く条件を導出し、トポロジカル相が現れるパラメータ領域を同定せよ。

演習 4.7: Z2不変量の理解

問題: 3次元系において、8つのTRIM点での偏極\(P_i\)から\(Z_2\)不変量\(\nu_0; (\nu_1\nu_2\nu_3)\)を計算する手順を説明せよ。各不変量の物理的意味を述べよ。

演習 4.8: 実験データ解析

問題: α-石英の中性子散乱データ(仮想データ)からワイル点の位置を同定し、そのカイラリティを推定する解析プログラムを作成せよ。

参考文献

  1. Zhang, T., et al. “Double-Weyl Phonons in Transition-Metal Monosilicides.” Physical Review Letters 120, 016401 (2018).
  2. Li, J., et al. “Computation and data driven discovery of topological phononic materials.” Nature Communications 12, 1204 (2021).
  3. Liu, Y., et al. “Floquet topological phases with high Chern numbers in periodically driven systems.” Physical Review B 101, 174301 (2020).
  4. Murakami, S., et al. “Phonon Hall Effect.” Physical Review Letters 101, 035301 (2008).
  5. Xia, B. W., et al. “Observation of chiral phonons.” Science 359, 579-582 (2018).
  6. Süsstrunk, R., and Huber, S. D. “Observation of phononic helical edge states in a mechanical topological insulator.” Science 349, 47-50 (2015).
  7. Chen, H., et al. “Topological phononic insulator with robust pseudospin-dependent transport.” Physical Review B 96, 020202(R) (2017).
  8. Strohm, C., et al. “Phonon Hall viscosity from gauge invariance.” Physical Review B 95, 024302 (2017).
  9. Qian, K., et al. “Observation of phonon Hall effect.” Science Bulletin 68, 783-787 (2023).
  10. Armitage, N. P., et al. “Weyl and Dirac semimetals in three-dimensional solids.” Reviews of Modern Physics 90, 015001 (2018).

推奨テキスト

オンラインリソース


ナビゲーション

← 第3章 | 目次 | 第5章 →


免責事項

このコンテンツはAIの支援を受けて作成されており、正確性を保証するものではありません。重要な情報については一次資料や査読済み文献で確認することをお勧めします。