00-simplification-chain 问答笔记¶
源文件:00-simplification-chain.md
Q1:基态能量的物理意义 + 电子能带是什么,能举几个简单例子吗¶
原文:"算出它的基态能量、稳定结构和电子能带"
基态能量¶
基态(ground state)= 系统的最低能量本征态;基态能量是这个态对应的能量。
不是"打散系统所需能量"——那叫结合能 / 离解能。关系是:
DFT 输出的基态能量绝对值大且是负数(如 Si 原胞 ~ -230 eV),单看数值没意义;比较基态能量差才有物理含义: - 不同晶体结构哪个稳定 → 比较基态能量 - 化学反应放热多少 → 反应物基态能量 vs 产物基态能量 - 形成能 → 化合物基态能量 − Σ 单质基态能量
ML 类比:基态能量 ≈ 训练完的 loss 最小值。绝对值依赖实现细节(base loss / 归一化选择),但不同模型的 loss 差可以比较。
电子能带(electronic band structure)¶
周期晶体中电子允许的能级 \(\varepsilon_n(\vec{k})\),是 k(倒空间位置)和 n(能带指标)的函数。每个 k 点有多条能带。
材料分类就看能带填充:
| 类型 | 特征 | 例子 |
|---|---|---|
| 金属 | 最高占据带未填满,费米能级在带内 | Cu, Al, Na |
| 半导体 | 价带满、导带空,带隙较小(< 3 eV) | Si (1.17 eV), GaAs (1.42 eV), Ge (0.67 eV) |
| 绝缘体 | 同上但带隙大(> 3 eV) | NaCl (8.5 eV), MgO (7.8 eV), SiO₂ (9 eV) |
| 半金属 | 价带导带恰好接触 | Bi, 石墨 |
几个简单能带的样子¶
- 自由电子气(最简单):\(\varepsilon(\vec{k}) = \hbar^2 k^2 / 2m\),开口向上的抛物面
- 一维紧束缚链:\(\varepsilon(k) = -2t \cos(ka)\),余弦曲线
- Si(间接带隙半导体):价带顶在 Γ 点 (0,0,0),导带底在 X 点附近 → 光跃迁需要声子辅助
- GaAs(直接带隙半导体):VBM 和 CBM 都在 Γ 点 → 光吸收/发射效率高(LED 材料)
- 金属 Al:费米能级穿过多条能带,每个方向都有自由载流子
后续在 17-bloch-bz.md 和 30-observables.md 组 2 会详细讲。
Q2:Born-Oppenheimer 忽略的核量子效应量级有多大¶
原文:"代价:忽略了核量子效应(如氢原子隧穿、零点运动)"
量级对比(粗略):
| 物理量 | 典型能量尺度 |
|---|---|
| 电子结合能(化学键) | 1–10 eV |
| 电子动能 | 1–100 eV |
| 核振动能(声子) | 1–100 meV |
| 核零点振动能 | 5–50 meV/原子 |
| 非绝热修正 | ~ 0.1–1 meV/原子 |
对重原子(C, N, O, Si, Fe, Cu...):BO 误差 < 1 meV/原子,相对化学键能 10⁴ 倍小,可以忽略。
对轻原子(H, D):例外,零点能可达 100 meV+。比如: - 冰中氢键强度,必须加零点修正才准 - 氢原子在催化剂表面的扩散,纯 BO 算不准(隧穿效应)
TritonDFT benchmark 里的影响:几乎不用担心,因为 benchmark 材料大多不是富氢体系。唯一需要留意的是 LaH₁₀(超导氢化物),核量子效应对 T_c 预测有影响,但基本结构性质还是 BO 够。
Q3:单个 Slater 行列式是简化吗?化简 2 是不是降低搜索复杂度¶
原文:"丢失了电子关联(多 Slater 行列式才能描述完整关联)"
完全正确。
真实基态波函数:\(\Psi_0 = \sum_I c_I \Psi_I^{\text{Slater}}\),一般需要多个 Slater 行列式线性组合(Configuration Interaction, CI)才能描述完整电子关联。
化简 2 的作用:把搜索空间从"所有反对称 3N 维函数"限制到"单 Slater 行列式形式"——确实是降低搜索复杂度。
- 完整波函数空间:无穷维函数空间
- 单 Slater 子空间:由 N 个 3D 轨道参数化(维度大幅降低)
不同方法的层级(计算量递增,精度递增):
| 方法 | 波函数形式 | 备注 |
|---|---|---|
| Hartree-Fock (HF) | 单 Slater | 忽略电子关联 |
| KS-DFT | 单 Slater(虚构)+ \(E_{xc}\) | 通过 \(E_{xc}\) 近似捕获关联效应 |
| CI / CISD | 多 Slater 线性组合 | 昂贵,用于小分子 |
| CCSD(T) | 参数化多 Slater | 化学"黄金标准" |
| FCI | 完整 CI | 精确解,仅 ~10 电子 |
追问:我们最终一般使用的是 KS-DFT 吗?
是的,KS-DFT 是绝大多数材料/凝聚态/化学应用的事实标准,原因是精度-成本 trade-off 最好:
| 领域 | 主流方法 |
|---|---|
| 固体物理、材料科学 | KS-DFT(PBE/PBEsol/SCAN) |
| 大规模材料扫描(如 Materials Project、本 benchmark) | KS-DFT + GGA |
| 催化、电池 | KS-DFT(常加 DFT+U) |
| 小分子化学、药物设计 | KS-DFT(常用 Hybrid 如 B3LYP/ωB97X-V),或 CCSD(T)(高精度参考) |
| 强关联体系(超导、重费米子) | DFT+U / DFT+DMFT(超越 KS) |
| 精确参考(少量原子) | FCI, CCSD(T) |
TritonDFT / Quantum ESPRESSO / 本 benchmark 全部是 KS-DFT。
ML 类比: - 单 Slater = 强 inductive bias 的线性模型 - 多 Slater = 更灵活的非线性模型 - KS-DFT 的妙处:用单 Slater 的"形式"(便宜)+ \(E_{xc}\) 的"修正"(假装捕获关联)→ 精度近似多 Slater,成本接近单 Slater
Q4:HK 只是存在性证明——具体形式不清楚,需要假设吗¶
原文:"代价:HK 只是存在性证明,没给出 E[ρ] 的精确形式"
完全正确。
HK 定理保证:存在一个 \(E[\rho]\) 使得基态密度对应全局最小。但没告诉你 \(E[\rho]\) 长什么样。
这就像万能逼近定理——告诉你"有一个 NN 能逼近任意函数",但不告诉你架构、层数、激活函数。实际用时还是要人为设计/假设。
DFT 的做法:把 \(E[\rho]\) 分成几部分 $\(E[\rho] = \underbrace{T[\rho]}_{\text{未知}} + \underbrace{V_{ext}[\rho]}_{\text{已知}} + \underbrace{J[\rho]}_{\text{已知}} + \underbrace{E_{xc}[\rho]}_{\text{未知}}\)$
- \(V_{ext}\)(电-核):显式泛函
- \(J\)(经典电-电库仑):显式泛函(双重积分)
- \(T\)(动能):纯密度形式不好写,Kohn-Sham 换用虚构轨道算(化简 4)
- \(E_{xc}\)(交换-关联):本质未知,必须近似(化简 5:LDA/PBE/...)
追问 1:\(E_{xc}\) 的具体物理含义是什么?
它是两个独立物理效应的总和:
- 交换能(Exchange, X):费米子反对称性导致的效应。两个同自旋电子天然"互相回避"(泡利不相容的体现),这降低了它们之间的平均库仑排斥能。在 HF 方法中这一项有精确表达式(费米子反对称自动给出)。
-
物理直觉:同自旋电子 → 空间分布不同 → 静电能比经典估计低
-
关联能(Correlation, C):电子之间因库仑斥力产生的动态躲避(correlation hole)。任何两个电子(不管自旋)都倾向于远离彼此。HF 方法完全忽略这一项;真实多体效应从这里出。
- 物理直觉:电子不是独立运动的,它们"感知"彼此并实时躲避
所以 \(E_{xc} = E_x + E_c\),前者是"反对称性红利",后者是"真实多体舞蹈"。
追问 2:T 的动能是谁的动能?
DFT 中有两种动能,要区分:
| 符号 | 含义 | 怎么算 |
|---|---|---|
| \(T[\rho]\) | 真实相互作用电子系统的总动能 | 难直接用 \(\rho\) 写 |
| \(T_s[\{\phi_i\}]\) | 虚构非相互作用系统的总动能(KS 假想系统) | 可以用 KS 轨道显式算:\(T_s = \sum_i \int \phi_i^*(-\frac{1}{2}\nabla^2)\phi_i\) |
KS 方法用 \(T_s\) 替代 \(T\),差值 \(T - T_s\)(极小)并入 \(E_{xc}\)。这就是下一轮问题(Q5)里讲的精髓。
所以"需要我们假设"的是 \(E_{xc}\) 的具体形式。不同泛函 = 不同假设。
Q5:化简 4 是动能写不出但势能能写吗?为什么引入 KS 新内容¶
原文:"假设:存在一个虚构的非相互作用电子系统..."
澄清:不是"动能不能写、势能能写",而是"动能作为密度 ρ 的显式泛函不好写"——但通过轨道可以算!KS 用引入虚构轨道换取可算的动能。
具体情况¶
\(E[\rho]\) 的四项:
| 项 | 作为 ρ 的显式泛函? | 备注 |
|---|---|---|
| \(T[\rho]\)(动能) | ❌ 不好写 | 早期 Thomas-Fermi 用 \(T_{TF} \propto \int \rho^{5/3}\),精度差到不能用 |
| \(V_{ext}[\rho] = \int V_{ext}(\vec{r}) \rho(\vec{r}) d^3r\) | ✅ 简单积分 | 纯泛函 |
| $J[\rho] = \frac{1}{2}\iint \frac{\rho \rho'}{ | \vec{r}-\vec{r}' | }$ |
| \(E_{xc}[\rho]\) | ❌ 未知 | 必须近似 |
动能的难点:\(T[\rho]\) 对密度变化极其敏感,纯 ρ 的多项式泛函(Thomas-Fermi)误差可达 10% 化学键能——完全不能用。
Kohn-Sham 的妙招¶
引入 N 个虚构的非相互作用电子(KS 轨道 \(\phi_i^{KS}\)),让它们的密度等于真实系统: $\(\rho(\vec{r}) = \sum_i |\phi_i^{KS}(\vec{r})|^2\)$
这些虚构电子的动能可以显式用轨道算: $\(T_s[\{\phi_i\}] = \sum_i \int \phi_i^* \left(-\frac{1}{2}\nabla^2\right) \phi_i \, d^3r\)$
真实动能 \(T[\rho] \neq T_s[\{\phi_i\}]\)(因为真实系统电子相互作用),差值 \(T - T_s\) 并入 \(E_{xc}\)。
所以 KS 的引入动机: - 想用虚构的"单粒子问题"(可解)代替真实的"N 体问题"(不可解) - 付出的代价:所有"真实-虚构"的差异都塞进 \(E_{xc}\)——使得 \(E_{xc}\) 不再只是交换-关联,还包含"动能修正"
追问:既然真实不好算,真实与虚构的差异不也同样不好算吗?
完全正确,这正是 DFT 的"秘密"所在——所以 \(E_{xc}[\rho]\) 必须近似。
但巧妙之处在于误差的量级:
| 能量项 | 典型量级(每原子) | 计算状态 |
|---|---|---|
| 总能量 \(E\) | ~ 100–1000 eV | 最终结果 |
| \(T_s\)(虚构动能) | ~ 大部分 | ✅ 显式算 |
| \(V_{ext}\)(电-核) | ~ 大部分 | ✅ 显式算 |
| \(J\)(经典电-电库仑) | ~ 几 eV | ✅ 显式算 |
| \(E_{xc}\)(未知部分) | ~ 1–10 eV | ❌ 近似 |
所以:我们把一个大而不可解的问题,拆成"大部分可解 + 小部分难解",对难解部分做近似。即使 \(E_{xc}\) 的近似误差 ~ 10%(~0.1 eV/原子),相对总能量已经很小。
ML 类比(残差学习):
就像 ResNet 的 \(F(x) = x + \Delta(x)\):主通道学容易的,残差分支学难的小修正。XC 泛函(LDA/PBE/SCAN/Hybrid)就是在不断改进这个"残差模型"的架构。
为什么这招有效(物理直觉): - \(E_{xc}\) 主要由电子密度的局部性质决定(交换-关联洞的大小只有几 Å) - 对均匀电子气可以精确算出 \(E_{xc}\)(LDA 的起源) - 真实体系的密度局部近似均匀 → LDA 已经不错;加梯度修正(GGA)更好
如果你不接受这招:走 CI / CCSD(T) / QMC 的路子——不引入虚构系统,直接算多体波函数。但计算量暴涨 \(O(N^5)\) 到 \(O(N^7)\),只能做小分子。
后面在 14-kohn-sham.md 会详细推导。
Q6:LDA/GGA/meta-GGA 是不是 0~2 阶近似?Hybrid 是不是混合了 HF 的内容¶
原文:"LDA、GGA(PBE/PBEsol)、meta-GGA(SCAN)、Hybrid(HSE06)"
方向对,但不是严格的泰勒展开阶数,而是"依赖的信息量级"。
Jacob's ladder(Perdew 的五阶梯子)¶
| 阶 | 名称 | 依赖 | 代表 |
|---|---|---|---|
| 1 | LDA | \(\rho(\vec{r})\) | PZ, VWN |
| 2 | GGA | \(\rho\), \(\nabla\rho\) | PBE, PBEsol, BLYP |
| 3 | meta-GGA | \(\rho\), \(\nabla\rho\), \(\nabla^2\rho\), \(\tau\)(动能密度) | SCAN, TPSS, r²SCAN |
| 4 | Hybrid | 上面 + 部分精确交换 | HSE06, B3LYP, PBE0 |
| 5 | RPA / double-hybrid | 上面 + 精确关联 | RPA@PBE, B2PLYP |
每阶都增加依赖信息,精度↑,计算量↑。
Hybrid 与 HF 的关系——完全正确的理解¶
HF(Hartree-Fock)方法用精确交换(exchange integrals over all orbital pairs),非局域、\(O(N^4)\)。
Hybrid 泛函 = 混入 HF 的一部分精确交换。例如 HSE06: - 25% 精确 HF 交换(近程,避免远程 \(1/r\) 导致的发散) - 75% PBE 交换 - 100% PBE 关联
好处:部分修正 DFT 的 self-interaction error → 带隙显著改善 代价:HF 交换贵 10-100×
benchmark 中的使用¶
TritonDFT benchmark 用的是 GGA (PBE/PBEsol) 和 LDA,没用到 Hybrid——Hybrid 虽然准但在 benchmark 这种大规模材料扫描场景太贵。详见 15-xc-functional.md。
Q7:为什么需要关注核附近的波函数?需要关注的电子范围是什么,选择理由¶
原文:"核附近波函数剧烈振荡,需要超高截断能..."
澄清:不是"想关注核附近",而是"计算方法不得不处理核附近,这是个麻烦"。然后赝势帮我们绕开它。
为什么核附近是麻烦¶
电子波函数的径向分布:
- 核附近(r < ~0.5 Å):内层电子(1s, 2s 等)波函数剧烈振荡,对空间频率要求极高(\(10^4\) Ry 截断能才能收敛)
- 远离核:价电子平滑,低频足以描述
我们真正关心的范围:价电子¶
物理观察:化学键、电子能带、光吸收、导电性等所有 DFT 关心的物性,都由价电子决定:
| 元素 | 总电子数 | 价电子 | 赝势忽略 |
|---|---|---|---|
| Li | 3 | 1(2s) | 1s² |
| Si | 14 | 4(3s²3p²) | 1s²2s²2p⁶ |
| Fe | 26 | 8(3d⁶4s²) | [Ar] |
| Au | 79 | 11(5d¹⁰6s¹) | [Xe]4f¹⁴ |
价电子选择理由: - 参与化学键(外层轨道重叠) - 决定费米能级附近的能带 - 对光、电、磁响应的主要载体
内层电子 = 除了屏蔽核电荷之外不起作用的"惰性芯"(core)。赝势就是把这些打包成一个等效势场。
边缘情形:semi-core 电子¶
有些元素的"次外层"电子介于芯和价之间,必须显式算(称为 semi-core): - Ge 的 3d:参与部分杂化,需要保留 - 稀土的 4f:强局域但影响磁性
这正是 TritonDFT baseline 中 Ge 算错的根因——赝势没处理好 3d semi-core,ecutwfc 40 Ry 不够。详见 16-pseudopotential.md。
Q8:这里的光滑势是赝势的一种吗?赝势就是用虚假简易的势替代真实的意思¶
原文:"核+内层电子的总效应可用光滑势代替"
完全正确。
赝势 (pseudopotential) = 用虚构的光滑势场代替"真实核 + 内层电子"的总效应。
关键特性: - 截断半径 \(r_c\):选一个球面半径(典型 1–2 bohr) - 在 \(r_c\) 外:赝势 = 真实有效势(所以化学行为一致) - 在 \(r_c\) 内:赝势被人工光滑化,但精心设计使得价电子波函数在 \(r_c\) 外与真实一致
"光滑势" 就是赝势在 \(r_c\) 内的样子——它比真实的 \(-Z/r\) 奇点 + 内层贡献要光滑得多。
直观类比(ML 风格): - 真实系统 = 一个超大的预训练模型,所有参数都细节精确 - 赝势 = 把模型的"早期层"(内层电子)冻结并打包成一个固定的 feature extractor - 你只训练/求解"后期层"(价电子)
不同赝势方法(norm-conserving / USPP / PAW)对应不同的"打包方式",详见 16-pseudopotential.md。
Q9:为什么这里突然引入截断能这个概念¶
原文:"核附近波函数剧烈振荡,需要超高截断能(> 10⁴ Ry)才能描述"
原因:截断能 ecutwfc 是平面波基组(化简 8)的参数,但化简 6(赝势)的动机就是为了让截断能变小。
所以作者在讲赝势时提前引了"截断能"这个概念来说明动机: - 没有赝势:基组(平面波)描述核附近的剧烈振荡需要 \(E_{cut} > 10^4\) Ry → 不可行 - 有了赝势:基组只需描述光滑的价电子赝波函数,\(E_{cut} \sim 30–80\) Ry → 可行
概念顺序说明(为什么看起来"突然"): 1. 化简 6:引入赝势,但动机要用到"截断能" 2. 化简 8:正式定义截断能(平面波基组参数)
这两个概念是搭档——赝势和平面波基组一起才构成了 DFT 能跑的基础。先在化简 6 提前点一下"截断能"是为了说清楚赝势的价值。
详细定义在 18-plane-wave-basis.md。
Q10:倒格矢、布里渊区、能带指标不理解含义¶
原文:"引入:倒格矢 G、布里渊区(BZ)、能带指标 n"
倒格矢(reciprocal lattice vector)\(\vec{G}\)¶
定义:实空间晶格基向量 \(\vec{a}_1, \vec{a}_2, \vec{a}_3\) 对应的倒空间基向量 \(\vec{b}_1, \vec{b}_2, \vec{b}_3\) 满足 \(\vec{a}_i \cdot \vec{b}_j = 2\pi \delta_{ij}\)。
名字来源:单位是 1/长度(波矢),是实空间的"倒数"。
作用:任何周期晶格函数 \(f(\vec{r} + \vec{R}) = f(\vec{r})\) 可以傅里叶展开为 \(\vec{G}\) 的系数: $\(f(\vec{r}) = \sum_{\vec{G}} f_{\vec{G}} e^{i\vec{G}\cdot\vec{r}}\)$
直觉:倒格矢 ≈ 傅里叶变换中的"允许频率"。实空间周期 = 倒空间离散。
布里渊区(Brillouin zone, BZ)¶
定义:倒空间的 Wigner-Seitz 原胞,以 \(\vec{G}=0\)(Γ 点)为中心,边界由最近邻 \(\vec{G}\) 垂直平分面围成。
名字来源:法国物理学家 Léon Brillouin(1889-1969)。
为什么重要: - 周期系统的所有不等价 k 点都在第一 BZ 内 - \(\vec{k}\) 和 \(\vec{k} + \vec{G}\) 物理等价(Bloch 定理) - 所以只需要在 BZ 内采样 k 即可
形状: - 简立方 → 立方 BZ - FCC → 截角八面体 BZ(Si/GaAs) - BCC → 菱形十二面体 BZ - 六方 → 六角棱柱 BZ
能带指标(band index)\(n\)¶
定义:对每个 k 点求解 KS 方程,得到一系列本征值 \(\varepsilon_1(\vec{k}) \leq \varepsilon_2(\vec{k}) \leq ...\)。\(n\) 是这些能级的编号(第 \(n\) 条能带)。
例子: - 自由电子 1D:只有 1 条能带(\(\varepsilon \propto k^2\)) - Si 原胞(2 原子, 8 价电子):4 条占据带(两两自旋简并)+ 导带 - 金属 Cu:多条能带,费米能级穿过某几条
整体类比¶
- 倒格矢 \(\vec{G}\) ≈ FFT 的离散频率
- BZ ≈ 奈奎斯特区
- 能带 \(n\) ≈ 同一频率下的不同"模态"
追问 1:奈奎斯特区是什么?
信号处理里的概念。假设以采样率 \(f_s\) 对连续信号采样: - 奈奎斯特频率 = \(f_s / 2\) - 能正确恢复的最高频率 = 奈奎斯特频率 - 超过这个频率的信号会被混叠(aliasing)成低频"假信号" - 奈奎斯特区:频域中 \([-f_s/2, +f_s/2]\) 这个区间——所有独立信息都在这里,外面的只是内部的周期性重复
类比到晶体: - 实空间晶格周期 \(a\) ↔ 倒空间周期 \(2\pi/a\)(这是基本倒格矢长度) - BZ = 以 Γ 点 \((0,0,0)\) 为中心、大小为一个倒空间原胞的区域(Wigner-Seitz 原胞) - \(\vec{k}\) 和 \(\vec{k} + \vec{G}\) 物理等价(\(\vec{G}\) 是任何整数倒格矢) - 所有不等价的电子态都能用 BZ 内的 \(\vec{k}\) 标记——就像奈奎斯特区包含所有独立频率
可以说:BZ 就是晶体电子问题的"奈奎斯特区"。
追问 2:同一频率下的不同模态是什么意思?
固定一个 \(\vec{k}\) 点,解 KS 方程会得到一系列本征值:\(\varepsilon_1(\vec{k}) < \varepsilon_2(\vec{k}) < \varepsilon_3(\vec{k}) < \ldots\)。这些不同的本征值对应能带指标 n = 1, 2, 3, ...(第 1 条、第 2 条、第 3 条能带)。
类似的熟悉例子:
| 系统 | 固定什么 | 得到多个"模态" |
|---|---|---|
| 1D 无限深量子阱 | 盒子大小 | 一系列能级 \(E_n = n^2 E_1\),波函数节点数递增 |
| 氢原子 | 核位置 | \(1s, 2s, 2p, 3s, \ldots\) 不同轨道能量和对称性 |
| 矩阵 \(A\) | 矩阵本身 | 多个本征值和本征向量(\(Av = \lambda v\) 有多解) |
| 晶体某 \(\vec{k}\) | 该 \(\vec{k}\) | 多条能带 \(\varepsilon_n(\vec{k})\),每条对应不同节点结构的 Bloch 函数 |
"模态"(mode)不如改成"本征态"更贴切。同一 \(\vec{k}\) 下不同能带的 KS 轨道 \(\phi_{n,\vec{k}}(\vec{r})\) 对称性、节点数、轨道组成都不同(类似原子里 2s 和 2p 的关系)。
对 Si 具体一点: - Si 原胞有 2 个原子 × 4 价电子 = 8 价电子 - 每个 \(\vec{k}\) 点至少要算 4 条占据带(每条双占据,考虑自旋简并) - 通常还多算几条空带看导带
类比 PCA:对同一数据矩阵做 PCA,得到多个主成分(同样输入,不同模式)。这里"同样输入" = 某个 \(\vec{k}\),"不同模式" = 不同能带。
详细展开在 17-bloch-bz.md。
Q11:为什么要对 BZ 进行积分¶
原文:"假设:用 Monkhorst-Pack 网格(均匀采样)代替连续积分"
所有物理量都是 BZ 上的积分(而不是单点值)。
具体什么要积分¶
电子密度: $\(\rho(\vec{r}) = \frac{1}{(2\pi)^3} \int_{BZ} \sum_n f_{n,\vec{k}} |\phi_{n,\vec{k}}(\vec{r})|^2 \, d^3k\)$
总能量: $\(E = \frac{1}{(2\pi)^3} \int_{BZ} \sum_n f_{n,\vec{k}} \varepsilon_{n,\vec{k}} \, d^3k + \text{other terms}\)$
态密度(DOS): $\(g(E) = \frac{1}{(2\pi)^3} \int_{BZ} \sum_n \delta(E - \varepsilon_{n,\vec{k}}) \, d^3k\)$
物理理解¶
Bloch 定理说波函数在 k 点分解,每个 k 点贡献一部分到总物理量。无限大晶体的 k 是连续的(BZ 内无穷多个),物理量是对所有这些态的求和/积分。
离散化:把 BZ 积分近似为有限 k 点加权求和——这就是 k 点采样(Monkhorst-Pack)。
采样密度的物理意义: - 绝缘体:能带变化平滑,稀疏 k 够(如 6×6×6) - 金属:费米面尖锐,需密 k(如 16×16×16)+ smearing
追问:BZ 和前面几步的联系是什么?k 点分解到底在做什么?
这是关键问题,让我把整条逻辑串起来:
从"无限原子问题"到"有限矩阵问题"的完整链路¶
问题起点:
1 cm³ 晶体含 ~10²³ 个原子和电子
想直接解 KS 方程?需要 10²³ × 10²³ 的巨大矩阵——不可能
│ 化简 7: 布洛赫定理(利用晶体的平移对称性)
▼
关键洞察:
周期晶体中,任何 KS 轨道可以写成 Bloch 形式:
φ_{n,k}(r) = e^{i k·r} u_{n,k}(r)
其中 u_{n,k}(r) 是周期的(只在一个原胞内变化)
⇒ 不需要解 10²³ 原子的矩阵,
只需要对每个 k 点解"一个原胞"大小的矩阵
不同 k 之间完全独立(对角化可分块)
│ 化简 8: 平面波基组
▼
每个原胞内的 u_{n,k}(r) 用平面波展开
⇒ 每个 k 对应一个 N_b × N_b 的矩阵(N_b ~ 10²–10⁴)
这是可对角化的规模
│ 化简 9: k 点采样(当前这一步)
▼
但 BZ 内有无穷多 k 点,不能全算
⇒ Monkhorst-Pack 网格离散采样(如 8×8×8 = 512 个 k 点)
对 BZ 积分(求总能量、密度等)用这些 k 点加权求和近似
│ 化简 10: 对称性
▼
等价 k 点(对称操作联系的)只算一次
⇒ 512 个 → ~29 个不可约 k 点
所以"k 点分解"的真正目的¶
把一个无限大原子的问题拆成几十个原胞大小的独立子问题:
| 不用 Bloch | 用 Bloch + k 采样 |
|---|---|
| 一个 \(10^{23} \times 10^{23}\) 矩阵 | ~30 个(每个 \(10^3 \times 10^3\))矩阵 |
| 不可能对角化 | 每个几毫秒就对角化完 |
| 存不下 | 内存足够 |
类比:傅里叶分解¶
周期函数可以分解为不同频率分量的叠加,每个频率可以独立处理。晶体的 Bloch 分解本质就是对波函数做"晶格平移方向"的傅里叶分解: - 不同 \(\vec{k}\) = 不同"频率" = 独立子问题 - 每个 \(\vec{k}\) 内部再用平面波基组做细节展开 - k 点采样 = 在频率域里取有限样本做积分
为什么每个 k 独立?¶
因为晶体哈密顿量 \(\hat{H}\) 和平移算符 \(\hat{T}\) 对易(\([\hat{H}, \hat{T}] = 0\)),它们有共同本征态。平移算符的本征值就是 \(e^{i\vec{k}\cdot\vec{R}}\)(\(\vec{k}\) 标记)。所以 KS 方程可以"按 \(\vec{k}\) 对角化"——不同 \(\vec{k}\) 的态互相正交,各自成一个子空间。
与前面化简的依赖关系¶
- 依赖化简 1(BO 近似):核固定 → 外势周期 → 电子问题周期
- 依赖化简 4(KS 方程):要解的是 KS 这种单粒子方程(否则多体波函数不是 Bloch 形式)
- 配合化简 8(平面波基组):每个 \(\vec{k}\) 内部的离散化
- 配合化简 10(对称性):进一步压缩 k 点数
详见 19-kpoints.md。
Q12:这一步(对称性)要求事先知道空间群吗¶
原文:"假设(利用):晶体对称性使许多 k 点物理等价"
不需要——QE 会自动检测。
QE 的做法¶
- 你只输入原子位置 + 晶胞向量(
ATOMIC_POSITIONS+CELL_PARAMETERS) - QE 用对称性算法扫描——尝试所有对称操作看能否把晶胞映射回自身
- 检测到的对称操作用来压缩 k 点、简化应力/力计算
事先知道 vs 自动检测的对比¶
| 场景 | 做法 |
|---|---|
| 研究已知材料(大多数情况) | 从 Materials Project / ICSD 查空间群,输入已知对称的结构;QE 自动检测结果与预期一致 |
| 新结构搜索 / 弛豫后 | 只输结构,QE 自动检测;弛豫后对称性可能变化(如铁电相变) |
追问:输入到 QE 中的晶胞向量是由 LLM 来提出的吗?
是的——TritonDFT agent 框架中,初始晶胞参数和原子位置都需要由 LLM 推断。这正是 benchmark 考查 LLM 的核心能力之一。
具体流程(以你之前跑过的 Si vc-relax 为例)¶
-
Prompt 输入 LLM:
Prompt 只给了化学式、晶体原型、空间群、原胞原子数——没有具体晶胞向量。 -
LLM 需要推断:
- 从 "diamond + Fd-3m" 推断出 FCC 晶格 →
ibrav=2 - 从"Si 的典型晶格常数"(5.43 Å = 10.26 bohr)推断
celldm(1) = 10.20 - 从 "diamond 原型" 推断两个原子位置:
Si @ (0,0,0)和Si @ (0.25,0.25,0.25)(分数坐标) - 选合适的
ecutwfc, k-point mesh, conv_thr -
选择赝势文件
si.upf -
生成 QE 输入文件 → 执行 → 解析输出 → 评分
LLM 可以通过几种方式"获取"晶胞信息¶
| 方式 | 触发 |
|---|---|
| 自己推理 | 根据化学/晶体学常识生成(默认) |
| 调用 Materials Project API | 加 --need-query-info 开启,LLM 会生成调用 mpr.materials.search(...) 的代码,拿到真实晶胞和空间群 |
benchmark 里的关键挑战¶
LLM 失败的常见原因:
- 把常规晶胞(conventional cell)和原胞(primitive cell)搞混(Si diamond 常规是 8 原子,原胞是 2 原子)
- 猜错 ibrav 对应的 celldm 含义(不同 ibrav 下 celldm 的解释不同)
- ecutwfc 不够(如 Ge 给 40 Ry)——我们遇到过
所以"LLM 提出晶胞向量"不是小事,是 benchmark 的重要考察点。正确的结构推断 + 参数推断,才能让 QE 收敛到物理正确的弛豫结构。
注意点¶
- 输入结构有数值噪声(比如 0.00001 Å 偏差)可能让 QE 检测不到对称性 → 用
symm_tol调宽容忍度 - 磁性体系对称性更复杂(要考虑自旋反演)——通常需要手动控制
benchmark 的做法¶
materials/*.json的info.space_group是预先标注的参考值(查数据库)- agent 跑完弛豫后由 pymatgen 的
SpacegroupAnalyzer重新算一次,与参考值对比 src/evaluate/compare.py的space_group字段用于 exact match 评分
详见 20-symmetry.md。
Q13:SCF 和 diffusion / consistency models 类比¶
原文:"固定点迭代——猜 ρ₀,解 KS 得新 ρ,混合旧新,循环到收敛"
非常准的类比! 三者都是固定点方程的数值迭代。
对比表¶
| 方面 | SCF | Diffusion model | Consistency model |
|---|---|---|---|
| 目标 | 找 \(\rho\) 满足 \(\rho = \text{KS}(V_{eff}(\rho))\) | 找数据分布 \(p(x_0)\) 通过反向去噪 | 一步映射到目标分布 |
| 迭代形式 | \(\rho_{n+1} = \text{mix}(\rho_n, \text{KS}(\rho_n))\) | \(x_{t-1} = f_\theta(x_t, t)\)(多步) | \(x_0 \approx f_\theta(x_T, T)\)(单步逼近) |
| 收敛判据 | \(\|\rho_{n+1} - \rho_n\| < \text{conv\_thr}\) | 时间步 \(t \to 0\) | 训练目标最小化 |
| 稳定化 | Broyden / Anderson mixing | DDIM step, noise schedule | 蒸馏训练 |
细节对应¶
- SCF mixing = 动量 / 残差预测:Broyden 用历史的密度-残差对估计 Jacobian,类似 L-BFGS;Anderson mixing 等价于 GMRES;DIIS 也是类似思想
- SCF 的"不收敛" ≈ 训练发散:DIIS/L-BFGS 震荡需要降低学习率
- 初始猜测的重要性:SCF 初始 ρ 好(原子密度叠加)→ 收敛快;diffusion 初始噪声 \(x_T\) 选择影响生成质量
差异¶
| 方面 | SCF | Diffusion |
|---|---|---|
| \(f\) 的来源 | 物理推导(KS 方程) | 学习得到(NN) |
| 迭代步数 | 10–100(固定收敛判据) | 几十到上千(预定义 schedule) |
| 可证明收敛? | 有条件可以(凸泛函) | 实证为主 |
启示¶
DFT 社区和 ML 社区各自积累了很多加速固定点迭代的技巧(DIIS, Anderson, Broyden, L-BFGS, momentum, Adam),它们底层思想高度相关。研究 DFT 的 SCF 优化器和 consistency model 的训练/采样可能互相启发。
Q14:SCF 与前面几步的关系是什么¶
原文:"化简 11:SCF 自洽迭代——解决 \(V_{eff} \leftrightarrow \rho\) 循环依赖"
SCF 是把所有前面化简整合起来执行的"主循环"。
SCF 的位置¶
- 化简 1–5:理论框架(BO、Slater、HK、KS、XC)
- 化简 6:赝势(准备输入)
- 化简 7:Bloch 分解(按 k 分块)
- 化简 8:平面波基组(连续 → 有限维)
- 化简 9–10:k 点采样 + 对称性压缩(离散化)
- 化简 11:SCF 是把上面所有放一起跑的循环
- 化简 12:BFGS 外层(调原子位置)
SCF 伪代码¶
def scf(structure, pseudo, xc, kpoints, ecutwfc, conv_thr):
# 初始化
ρ = initial_guess(structure) # 原子密度叠加
for iter in range(max_iter):
V_eff = V_ext[ATOM_POS] # 化简 1, 6(赝势)
+ V_Hartree[ρ] # 化简 4
+ V_xc[ρ, xc] # 化简 5
ρ_new = 0
for k in kpoints.irreducible: # 化简 10 压缩
H_k = build_hamiltonian( # 化简 4, 8
V_eff, k,
plane_waves(ecutwfc) # 化简 8
)
ε, φ = diagonalize(H_k) # 矩阵对角化
ρ_new += weight[k] * Σ |φ_n,k|² # 化简 9(k 积分)
if ||ρ_new - ρ|| < conv_thr: # 化简 11 的 conv_thr
return ρ_new, ε, φ
ρ = mix(ρ, ρ_new, α) # 化简 11 的 mixing
raise NotConverged
直觉¶
- 化简 1–10:理论 + 数值离散化,定义了 KS 方程变成矩阵问题
- 化简 11(SCF):实际"跑"这个矩阵问题,通过自洽迭代找到 \(\rho\) 满足 KS 方程
- 化简 12(BFGS):在每次 SCF 收敛后,根据力/应力调整核位置,再跑一次 SCF
一次 pw.x calculation='vc-relax' 会执行:外层 BFGS × 每步内层 SCF × 每次 SCF 迭代对 N_k 个 k 点做对角化。
Q15:SCF 求的是单原子的电子态吗?多原子系统的流程是怎么样的¶
原文:"化简 12 结构弛豫:外层优化核位置"
不是——SCF 从头到尾都是多原子整体求解。没有"单原子分别 SCF"这种事。
完整流程¶
输入:整个晶胞(如 2 Si 原子)+ 晶格参数 + k 点采样
↓
【外层 BFGS 迭代】
for bfgs_step in 1..20:
【内层 SCF】(对整个晶胞一次性求解)
- 所有 N 个电子整体的 KS 方程
- 在所有 k 点上对角化
- 得到全局电子密度 ρ(r)、能量、力、应力
计算力 F_I 和应力 σ
if max|F_I| < forc_conv_thr and |σ| < press_conv_thr:
break
更新原子位置 R_I(BFGS 梯度步)
更新晶胞(vc-relax 时)
↓
输出:弛豫结构 + 能量 + KS 轨道
关键澄清¶
- 不是"原子 1 的 SCF → 原子 2 的 SCF"——那样会忽略电子间相互作用,是自由原子近似,不是 DFT
- SCF 内部:整个晶胞所有原子/电子一次性求解。电子在原子之间离域(共享)
- 外层 BFGS 内部:每一步改动结构后,需要重新跑一次完整的 SCF
以你之前跑的 Si vc-relax 为例¶
输入:Si 原胞,2 个 Si 原子,8 价电子
Si1 @ (0, 0, 0)
Si2 @ (0.25, 0.25, 0.25)
初始 celldm(1) = 10.20 bohr
外层 BFGS:
Step 0: 调到初始位置
内层 SCF: 跑 10 次迭代,得到 ρ₀ 和 E₀ = -16.923 Ry
算力 F_I 和应力 σ
|F| > forc_thr 或 |σ| > press_thr → 继续
Step 1: 根据梯度调整原子位置 + 晶胞
内层 SCF: 再跑一次完整 SCF,得到 E₁ = -16.9249 Ry
...
Step 3: 收敛
最终结构:celldm(1) = 10.3344 bohr
最终能量:E = -16.9252 Ry
整个过程你看到的 QE 日志里 convergence has been achieved in N iterations 就是每次内层 SCF 的收敛;BFGS step N 是外层。
追问:例子里所有输入和输出的量都代表什么?
逐项展开:
输入部分¶
Si 原胞,2 个 Si 原子
- Si(硅)元素,原子序数 14,电子组态 \([Ne]3s^2 3p^2\)
- "原胞"(primitive cell)= 最小晶胞,通过平移可以堆满整个晶体
- diamond 结构中 Si 原胞是 FCC 晶格 + 每个格点 2 个原子的基元,原胞含 2 个 Si(注意与 conventional cell 的 8 个 Si 区分)
8 价电子
- 每个 Si 有 4 个价电子(\(3s^2 3p^2\))
- 2 个 Si × 4 = 8 价电子/原胞
- 内层电子(\(1s^2 2s^2 2p^6\) 共 10 个)由赝势打包,不显式算
Si1 @ (0, 0, 0) 和 Si2 @ (0.25, 0.25, 0.25)
- 分数坐标(crystal coordinates):位置 = 坐标 × 晶格向量的线性组合
- diamond 结构特征:两个原子在原胞里偏移 \((1/4, 1/4, 1/4)\)(这是 diamond 与 FCC 的区别)
- 对应 QE 输入文件里的 ATOMIC_POSITIONS crystal 块
初始 celldm(1) = 10.20 bohr
- celldm(1) 是晶格常数 \(a\),对 FCC ibrav=2 表示常规晶胞边长
- 单位 bohr(玻尔半径,1 bohr ≈ 0.529 Å)
- 10.20 bohr ≈ 5.40 Å,接近 Si 实验值 5.43 Å
- 这是 LLM/用户猜的起点,不需要精确——vc-relax 会把它优化到正确值
外层 BFGS 迭代¶
外层 BFGS: Step 0/1/.../3
- BFGS = Broyden-Fletcher-Goldfarb-Shanno,拟牛顿优化算法
- 每一"步"调整核位置(ATOMIC_POSITIONS)和晶胞向量(CELL_PARAMETERS)以最小化能量
- Si 比较"好弛豫"——通常 3–5 步就收敛
内层 SCF: 跑 10 次迭代
- 每一次 SCF 迭代:构造 \(V_{eff}[\rho]\) → 对角化 KS 矩阵得到 \(\{\phi_i\}\) → 算新 \(\rho_{new}\) → 混合
- "10 次迭代"指 \(\rho\) 的收敛迭代数(由 conv_thr 控制)
- Si 是半导体且结构简单,SCF 收敛快
算力 F_I 和应力 σ
- 力 \(\vec{F}_I\):作用在第 I 个原子上的合力(来自电子密度 + 原子核排斥)
- 单位 Ry/bohr(或换算成 eV/Å)
- Hellmann-Feynman 定理:\(\vec{F}_I = -\partial E/\partial \vec{R}_I\)
- 应力张量 \(\sigma\):3×3 矩阵,描述晶胞在各方向受到的内压
- 单位 kbar(千巴);大气压 ≈ 1 bar
- 平均压强 \(P = \frac{1}{3}\text{Tr}(\sigma)\)
- 弛豫目标:\(P \to 0\)(材料"自由"处于平衡态)
|F| > forc_thr 或 |σ| > press_thr → 继续
- 收敛判据:所有原子力都小于 forc_conv_thr(默认 1e-3 Ry/bohr)且平均压强小于 press_conv_thr(默认 0.5 kbar)
- 任一条件不满足就继续 BFGS 优化
Step 1: 根据梯度调整原子位置 + 晶胞
- BFGS 根据当前的 \(F_I\) 和 \(\sigma\),估计 Hessian 矩阵的逆
- 然后走一步:\(R_{new} = R_{old} + \Delta R\),其中 \(\Delta R\) 由 Hessian 逆 × 梯度决定(类比 L-BFGS 在 NN 训练中的用法)
- 晶胞也会更新(vc-relax 模式;relax 模式只改原子位置不改晶胞)
E₀ = -16.923 Ry 和 E₁ = -16.9249 Ry
- 每步的总能量(含电子 + 核相互作用)
- 单位 Ry(里德伯):1 Ry ≈ 13.606 eV
- 注意绝对值没有物理意义(相对某个参考),但能量差有意义:
- \(E_1 - E_0 = -0.0019\) Ry ≈ -25.8 meV → BFGS 每步能量下降
- 最终 E = -16.9252 Ry 对应原胞(2 原子)总能量;每原子 ~ -115 eV
输出部分¶
最终结构:celldm(1) = 10.3344 bohr
- 弛豫后的平衡晶格常数
- 10.3344 bohr × 0.529 = 5.468 Å,与 Materials Project PBE 参考 5.466 Å 只差 0.05%(见你之前手动验证的结果)
最终能量:E = -16.9252 Ry
- 原胞(2 Si 原子)的平衡总能量
- 拉来做 benchmark 评分时换算成 eV/formula unit:E/1 f.u. = -230.3 eV(Si 的 f.u. = Si,每 f.u. 1 个原子 × 2 原子 / 原胞 / 2 / 1 = 1)
- 对比不同晶格常数的 \(E\) 可以做 E-V 曲线,拟合体模量
整个过程的 QE 日志对应:
| 日志行 | 含义 |
|---|---|
total energy = -16.923 Ry |
某次 SCF 迭代的当前总能量 |
estimated scf accuracy < 1e-9 Ry |
当前 SCF 收敛精度 |
convergence has been achieved in 10 iterations |
本次 SCF 收敛,用了 10 次迭代 |
! total energy = -16.9249 Ry |
感叹号开头的是收敛后的最终能量(用 grep '^!' 提取) |
Forces acting on atoms (Ry/au) |
输出每个原子受的力 |
total stress (kbar) ... P = 0.12 |
输出应力张量和平均压强 |
BFGS: bfgs converged in N steps |
外层 BFGS 收敛 |
Final enthalpy = -16.9252 Ry |
vc-relax 最终焓(基本等于总能量,除非设非零压强) |
ML 类比¶
- SCF ≈ 一次 forward + backward(训练一个 NN 到收敛)
- BFGS ≈ 超参搜索 / HPO
- 不是"每个原子独立训练"——原子在电子海里紧耦合
详见 22-bfgs-relax.md。
总结¶
| 编号 | 问题主题 | 延伸阅读 |
|---|---|---|
| Q1 | 基态能量 + 电子能带定义与例子 | 17, 30 |
| Q2 | BO 忽略的核量子效应量级 | 11 |
| Q3 | 单 vs 多 Slater,搜索空间限制 | 12 |
| Q4 | HK 是存在性证明,\(E_{xc}\) 需假设 | 13, 15 |
| Q5 | KS 动机:虚构轨道让动能可算 | 14 |
| Q6 | Jacob's ladder 和 Hybrid 含 HF | 15 |
| Q7 | 价电子是真正关心的,核附近是麻烦 | 16 |
| Q8 | 光滑势 = 赝势的内部形态 | 16 |
| Q9 | 截断能提前出现是为了说明赝势价值 | 18 |
| Q10 | 倒格矢 / BZ / 能带指标定义 | 17 |
| Q11 | BZ 积分求物理量 | 19 |
| Q12 | QE 自动检测对称性,不需预先给 | 20 |
| Q13 | SCF ↔ diffusion 固定点迭代类比 | 21 |
| Q14 | SCF 是整合所有前面化简的主循环 | 21 |
| Q15 | SCF 是多原子整体求解,不是单原子分开算 | 22 |