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 只算价电子,要解
依然不可能。没有任何机器能对 \(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 | 三斜 |
每种 ibrav 对 celldm(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{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})\),哈密顿量的本征态可写为
- \(\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 | — |
常见坑¶
- 把常规晶胞参数当原胞填:最高频错误。
ibrav=2的celldm(1)是原胞边长(≈ 常规 × \(1/\sqrt{2}\)),但很多人抄 ICSD 数据拿到的是常规值 celldm单位是 bohr:不是 Å。用 Å 请写A = 5.43(注意A和a是不同字段)ibrav选错:Fe 是 bcc →ibrav=3,选成ibrav=1(sc)会多一倍原子数而且对称性全错nat和atoms_per_primitive_cell不一致:忘了"原胞"这个词,填成常规晶胞的原子数 → 体积 × N 倍ATOMIC_POSITIONS单位忘写:默认alat,但很多人习惯性写分数坐标——要么显式写crystal,要么踩坑CELL_PARAMETERS单位:CELL_PARAMETERS angstromvsCELL_PARAMETERS alatvsCELL_PARAMETERS bohr;漏写 → 默认alat- band path 走不等价高对称点:fcc 的 K 和 U 有时等价有时不(取决于 BZ 面),QE 不报错,但画出来不对
- vc-relax 后晶系变了:比如让 cubic 变成微微 tetragonal(因为应力收敛阈值太松);
cell_dofree='all'最宽松,对高对称相建议用cell_dofree='ibrav'锁定 - 低对称晶格(monoclinic/triclinic)下
ibrav约束太强:常直接用ibrav=0+CELL_PARAMETERS - 误以为 \(\vec{k}\) 有物理动量含义:它是 crystal momentum(晶体动量),只在模 \(\vec{G}\) 意义下守恒;真实动量是 \(\hbar \vec{k} + \hbar \vec{G}\)(原胞平均后只剩 \(\vec{k}\) 那部分,但电子-光子相互作用等涉及选择定则时要小心)
快速自查¶
每次写好输入,执行前问自己:
ibrav对不对?(在 INPUT_PW.html 找对应行,核对celldm含义)nat和atoms_per_primitive_cell是否一致?ATOMIC_POSITIONS单位是什么?- 晶格参数是原胞还是常规?
- 跑出来后检查
K_POINTS (tpiba) generate ...的 BZ 采样数,对比不可约 k 数是否合理
下一步阅读¶
18-plane-wave-basis.md— 化简 8:平面波基组 + ecutwfc。Bloch 定理告诉我们波函数长什么样;平面波基组给它一个可计算的有限维表示。