跳转至

17. 化简 7:布洛赫定理 + 布里渊区

用晶体的周期性,把"1 cm³ 里 10²³ 个原子"压缩成"一个原胞 + 一组 k 点标签"。

本篇位置:化简链第 7 步。上承化简 6(赝势)——我们现在只需要处理价电子;下启化简 8(平面波基组)和化简 9(k 点采样)——Bloch 定理的两个维度(原胞内周期函数、k 点标签)分别被后两步离散化。


1. 化简位置

  • 第几步:12 步化简链的第 7 步
  • 上一步:化简 6(赝势),已经把问题压缩到价电子 + 光滑外势
  • 下一步:化简 8(平面波基组)把 \(u_{n,\vec{k}}(\vec{r})\) 离散化;化简 9(k 点采样)把连续 BZ 积分离散化;化简 10(对称性)再把 BZ 压到不可约子集

概述:晶体有平移对称性 → 根据 Bloch 定理,所有本征态可用 \((\vec{k}, n)\) 双重标签枚举,且每个 \(\vec{k}\) 下只需在一个原胞体积内求解。整个"无穷晶体"就降到了原胞尺度的问题。


2. 上一步的困难

假设要算一块 1 cm³ 的硅晶体。每 cm³ 约 \(5 \times 10^{22}\) 个 Si 原子,每个 Si 有 4 个价电子 → \(2 \times 10^{23}\) 个价电子。

就算用了化简 6 只算价电子,要解

\[\hat{H}_{KS} \phi_i(\vec{r}) = \varepsilon_i \phi_i(\vec{r}), \quad i = 1, 2, \ldots, 10^{23}\]

依然不可能。没有任何机器能对 \(10^{23}\) 维矩阵对角化。

但——这块晶体有结构:它是同一个原胞在三个方向上平移复制出来的结果。这个平移对称性就是 Bloch 定理的起点。

一个简短直觉:如果哈密顿量 \(\hat{H}\) 和所有晶格平移算符 \(\hat{T}_{\vec{R}}\) 对易,那么 \(\hat{H}\) 的本征态可以同时是 \(\hat{T}_{\vec{R}}\) 的本征态。而平移算符(幺正、阿贝尔)的本征值必然是相位 \(e^{i\vec{k}\cdot\vec{R}}\)。这就给波函数"加了一个标签 \(\vec{k}\)"。


3. 引入的假设/近似

核心假设:晶体具有严格的平移对称性(周期边界条件)

  • 真实晶体当然不是无穷大;我们隐式采用Born-von Kármán 边界条件:在一个包含 \(N_1 \times N_2 \times N_3\) 个原胞的超大盒子里加周期边界,然后 \(N_i \to \infty\)
  • 这让 \(\vec{k}\) 成为一个连续变量,取值范围就是第一布里渊区
  • 对表面、缺陷、非晶必须放弃严格周期性:用超胞(supercell)模拟,但它只是"近似周期" 代价:

  • 严格周期性意味着晶体里每一个原胞都一模一样——缺陷、杂质、表面都要用足够大的超胞稀释

  • 实验样品往往有热涨落、点缺陷,DFT 默认算的是"理想无限完美晶体 at T=0"
  • 超胞尺寸不够 → 周期像被过度激活 → 得到虚假的带隙或磁序

4. 引入的新概念

4.1 晶格(Bravais lattice)

晶体 = 原胞 + 一组平移向量。平移向量 \(\vec{R} = n_1 \vec{a}_1 + n_2 \vec{a}_2 + n_3 \vec{a}_3\)\(n_i \in \mathbb{Z}\))把原胞复制到全空间。

三维空间中只有 14 种 Bravais 晶格(按对称性分类),对应 QE 的 ibrav

ibrav 类型 说明
0 free 自定义,CELL_PARAMETERS 给三个向量
1 cubic P (sc) 简立方
2 cubic F (fcc) 面心立方
3 cubic I (bcc) 体心立方
4 hexagonal 六角
5 trigonal R 菱方(三方)
6 tetragonal P 简单四方
7 tetragonal I 体心四方
8 orthorhombic P 简单正交
9-11 orthorhombic 各类 底心 / 面心 / 体心正交
12-13 monoclinic 单斜
14 triclinic 三斜

每种 ibravcelldm(1..6)解释不同。QE 手册 INPUT_PW.html 是唯一权威。

4.2 原胞 vs 常规晶胞(primitive vs conventional)

  • 原胞(primitive cell):体积最小的重复单元,每个 Bravais 晶格有唯一的原胞
  • 常规晶胞(conventional cell):为了显示对称性而选的更大的晶胞(立方对称更直观)
结构 原胞原子数 常规晶胞原子数
bcc Fe 1 2
fcc Al 1 4
diamond Si 2 8
zinc-blende GaAs 2 8
rocksalt NaCl 2 8
wurtzite ZnO 4 4

ibrav 对应的是原胞(除了 ibrav=0 自由模式),这也是最常见的坑:用户把常规晶胞参数填进去 → 体积错一个因子 → 算出来的晶格常数飞了。

diamond Si 的原胞 \(a_{primitive} = a_{conv} / \sqrt{2} \approx 5.43/\sqrt{2} \approx 3.84\) Å——这是入门必踩的坑。

4.3 倒格矢(reciprocal lattice vector)

定义:\(\vec{b}_i\) 满足 \(\vec{a}_i \cdot \vec{b}_j = 2\pi \delta_{ij}\),由下式给出:

\[\vec{b}_1 = 2\pi \frac{\vec{a}_2 \times \vec{a}_3}{\vec{a}_1 \cdot (\vec{a}_2 \times \vec{a}_3)}, \quad \vec{b}_2 = 2\pi \frac{\vec{a}_3 \times \vec{a}_1}{V}, \quad \vec{b}_3 = 2\pi \frac{\vec{a}_1 \times \vec{a}_2}{V}\]

倒空间平移向量 \(\vec{G} = m_1 \vec{b}_1 + m_2 \vec{b}_2 + m_3 \vec{b}_3\)\(m_i \in \mathbb{Z}\))就是倒格矢。

有用性质: - 晶体中周期函数 \(f(\vec{r} + \vec{R}) = f(\vec{r})\) 可展开成 \(f(\vec{r}) = \sum_{\vec{G}} f_{\vec{G}} e^{i\vec{G}\cdot\vec{r}}\)——傅里叶级数只在倒格点上取值 - 平面波基组(化简 8)的截断 \(|\vec{G}|^2 / 2 < E_{cut}\) 就发生在这个倒空间

4.4 布里渊区(Brillouin zone, BZ)

第一 BZ = 倒空间的 Wigner-Seitz 原胞(以某个倒格点为中心,到所有最近邻倒格点的中垂面围成的区域)。

  • 所有物理上不等价的 \(\vec{k}\) 都在第一 BZ 内
  • BZ 的形状取决于晶格类型:fcc → 截角八面体;bcc → 菱形十二面体;hexagonal → 六棱柱;...
  • 高对称点(记号全局通用):
  • Γ:(0, 0, 0) BZ 中心
  • X, L, K, W, U:面心或棱中点(不同晶格类型对应不同点)
  • 例:fcc 的 Γ-X-W-L-Γ-K 是典型能带路径

4.5 Bloch 定理

对于晶格周期势 \(V(\vec{r} + \vec{R}) = V(\vec{r})\),哈密顿量的本征态可写为

\[\phi_{n,\vec{k}}(\vec{r}) = e^{i\vec{k}\cdot\vec{r}} u_{n,\vec{k}}(\vec{r}), \quad u_{n,\vec{k}}(\vec{r} + \vec{R}) = u_{n,\vec{k}}(\vec{r})\]
  • \(\vec{k}\) 在第一 BZ 内取值(crystal momentum)
  • \(n = 1, 2, \ldots\)能带指标(band index);每个 \(\vec{k}\) 下有一系列离散能级
  • 本征能量 \(\varepsilon_n(\vec{k})\)\(\vec{k}\) 的连续函数,画出来就是能带结构
  • 两个等价 \(\vec{k}\) 差一个倒格矢 \(\vec{G}\)\(\phi_{n,\vec{k}+\vec{G}} = \phi_{n,\vec{k}}\)(up to 重新标记 \(n\)

直觉:Bloch 波 = 平面波 × 周期函数。平面波部分装了"晶体动量",周期部分装了"原胞内细节"。

4.6 能带结构与 band path

  • \(\varepsilon_n(\vec{k})\) 是在 3D BZ 内的一张张曲面
  • 实际画图时沿高对称点连线扫描:band path
  • 例:Si (diamond, fcc-like) 的经典路径 L–Γ–X–U, K–Γ
  • 价带顶(VBM)和导带底(CBM)可能在不同 \(\vec{k}\)直接带隙(VBM 和 CBM 同 k,如 GaAs)vs 间接带隙(不同 k,如 Si)

5. 对应 QE 字段

&SYSTEM
  ibrav = 2                   ! fcc(原胞)
  celldm(1) = 10.263          ! 原胞晶格参数 a(单位 bohr)
  nat = 2                     ! 原胞内原子数
  ntyp = 1
  ecutwfc = 40.0
/

ATOMIC_POSITIONS crystal      ! 分数坐标(相对原胞基矢)
  Si 0.00 0.00 0.00
  Si 0.25 0.25 0.25

K_POINTS automatic            ! 化简 9 采 BZ
  8 8 8 1 1 1

几个最容易混的关键点:

  • ibrav=0 + CELL_PARAMETERS:自定义晶格向量(笛卡尔 bohr 或 angstrom,由 CELL_PARAMETERS 后面的单位决定)。适合任意低对称结构
  • celldm(1) 单位是 bohr(≈ 0.529 Å)。若想用 Å,改用 A=…B=…C=… 形式
  • ATOMIC_POSITIONS 的单位关键词
  • alat:以 celldm(1) 为单位的笛卡尔坐标
  • bohr / angstrom:对应单位的笛卡尔坐标
  • crystal:分数坐标(相对原胞三个基矢)——大多数情况最方便
  • crystal_sg:按空间群位点坐标
  • calculation='bands' + K_POINTS crystal_b':沿自定义路径算能带;需先跑 SCF 收敛密度,再 NSCF 或 bands
  • 能带输出outdir/prefix.save/ 下;用 bands.x 后处理生成 bands.dat

6. 对应 benchmark 条目

DFTBench materials JSON 中跟化简 7 直接相关的字段:

字段 含义 化简 7 对应
info.structure 晶体原型(diamond, zinc blende, wurtzite, rocksalt, perovskite, CsCl, NaCl, ...) 决定 Bravais 晶格 + 原子位置模板
info.space_group 空间群符号(如 Fd-3m 决定 ibrav 和对称化规则
info.space_group_number 空间群编号(1-230) 同上
info.atoms_per_primitive_cell 原胞原子数 决定 nat,必须 match
info.elements 元素列表 决定 ntyp 和赝势

评分字段(evaluate/compare.py::COMPARISON_RULES):

  • a, b, c:弛豫后的晶格长度 (原胞 or 常规取决于 ground_truth 定义)
  • alpha, beta, gamma:弛豫后的晶格角度
  • space_group, space_group_number, point_group, crystal_system:exact match

潜在陷阱:ground_truth 的 a, b, c 是原胞还是常规晶胞?不同来源(Materials Project, ICSD)习惯不同。TritonDFT 走 MP API 时 SpacegroupAnalyzer.get_conventional_standard_structure() 返回常规晶胞;如果 agent 输出的是原胞 → 全错。这是制作自有 benchmark 时必须统一的约定。


7. ML 类比

物理概念 ML 对应
晶格平移对称性 translation equivariance(如 CNN 共享卷积核)
Bloch 定理 把群对称性作为 inductive bias 嵌入模型架构(group-equivariant NN)
k 点是守恒量子数 符合"等变表示按群的不可约表示分解"(Peter-Weyl 定理)
按 k 点分块求解 block-diagonal 结构;每个 k 是独立的子问题(类似 MoE 的专家分块,但分块是确定性的)
能带指标 n(每个 k 下无穷能级) 每个 block 内部的 eigenvalues;可以用 top-K 策略只保留低能部分
第一 BZ 按群商得到的 fundamental domain(去掉冗余对称)
倒格矢 G(傅里叶) 卷积定理的频域表示;"卷积 = 频域乘法"恰是周期性在倒空间简化为对角算符
周期边界 + Born-von Kármán batch 维度的"循环填充";或者 PDE 数值解里的 spectral method
超胞(supercell)逼近缺陷 用有限感受野近似无限系统,CNN 风格

一个值得反复玩味的类比:"解 Bloch 问题 = 把平移群作用诊断出来的 block-diagonal 结构显式利用"。这和 GNN/transformer 里"等变架构"的思想完全一致——给神经网络硬塞入已知对称性,减少参数、加速训练。DFT 的 Bloch 定理就是给数值 PDE 塞入了平移对称性,换来了 \(10^{23} \to\) 原胞尺寸 的计算量下降。


8. 典型取值与常见坑

典型值

物理量 典型值 备注
fcc 原胞 vs 常规比值 \(1/\sqrt{2}\) diamond Si: \(3.84 / 5.43\)
bcc 原胞 vs 常规比值 \(\sqrt{3}/2\) Fe bcc: \(a_p = a_c \sqrt{3}/2\)
典型 celldm(1)(fcc Si) 10.263 bohr ≈ 5.43 Å PBE 默认
band path 密度 20-100 k per segment bands 计算
BZ 积分用 MP 网格 \(\Gamma\)-centered,见化简 9

常见坑

  1. 把常规晶胞参数当原胞填:最高频错误。ibrav=2celldm(1)原胞边长(≈ 常规 × \(1/\sqrt{2}\)),但很多人抄 ICSD 数据拿到的是常规值
  2. celldm 单位是 bohr:不是 Å。用 Å 请写 A = 5.43(注意 Aa 是不同字段)
  3. ibrav 选错:Fe 是 bcc → ibrav=3,选成 ibrav=1(sc)会多一倍原子数而且对称性全错
  4. natatoms_per_primitive_cell 不一致:忘了"原胞"这个词,填成常规晶胞的原子数 → 体积 × N 倍
  5. ATOMIC_POSITIONS 单位忘写:默认 alat,但很多人习惯性写分数坐标——要么显式写 crystal,要么踩坑
  6. CELL_PARAMETERS 单位CELL_PARAMETERS angstrom vs CELL_PARAMETERS alat vs CELL_PARAMETERS bohr;漏写 → 默认 alat
  7. band path 走不等价高对称点:fcc 的 K 和 U 有时等价有时不(取决于 BZ 面),QE 不报错,但画出来不对
  8. vc-relax 后晶系变了:比如让 cubic 变成微微 tetragonal(因为应力收敛阈值太松);cell_dofree='all' 最宽松,对高对称相建议用 cell_dofree='ibrav' 锁定
  9. 低对称晶格(monoclinic/triclinic)下 ibrav 约束太强:常直接用 ibrav=0 + CELL_PARAMETERS
  10. 误以为 \(\vec{k}\) 有物理动量含义:它是 crystal momentum(晶体动量),只在模 \(\vec{G}\) 意义下守恒;真实动量是 \(\hbar \vec{k} + \hbar \vec{G}\)(原胞平均后只剩 \(\vec{k}\) 那部分,但电子-光子相互作用等涉及选择定则时要小心)

快速自查

每次写好输入,执行前问自己:

  1. ibrav 对不对?(在 INPUT_PW.html 找对应行,核对 celldm 含义)
  2. natatoms_per_primitive_cell 是否一致?
  3. ATOMIC_POSITIONS 单位是什么?
  4. 晶格参数是原胞还是常规?
  5. 跑出来后检查 K_POINTS (tpiba) generate ... 的 BZ 采样数,对比不可约 k 数是否合理

下一步阅读

  • 18-plane-wave-basis.md — 化简 8:平面波基组 + ecutwfc。Bloch 定理告诉我们波函数长什么样;平面波基组给它一个可计算的有限维表示。