跳转至

00-simplification-chain 问答笔记

源文件:00-simplification-chain.md


Q1:基态能量的物理意义 + 电子能带是什么,能举几个简单例子吗

原文:"算出它的基态能量、稳定结构和电子能带"

基态能量

基态(ground state)= 系统的最低能量本征态;基态能量是这个态对应的能量。

不是"打散系统所需能量"——那叫结合能 / 离解能。关系是:

\[E_{\text{结合能}} = E_{\text{参考态(电子+核无限分离)}} - E_{\text{基态}}\]

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, 石墨

几个简单能带的样子

  1. 自由电子气(最简单):\(\varepsilon(\vec{k}) = \hbar^2 k^2 / 2m\),开口向上的抛物面
  2. 一维紧束缚链\(\varepsilon(k) = -2t \cos(ka)\),余弦曲线
  3. Si(间接带隙半导体):价带顶在 Γ 点 (0,0,0),导带底在 X 点附近 → 光跃迁需要声子辅助
  4. GaAs(直接带隙半导体):VBM 和 CBM 都在 Γ 点 → 光吸收/发射效率高(LED 材料)
  5. 金属 Al:费米能级穿过多条能带,每个方向都有自由载流子

后续在 17-bloch-bz.md30-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 类比(残差学习)

总能量 E
= [能精确算的部分 T_s + V_ext + J]            ← 主干(显式可得)
+ [不好算的部分 E_xc]                         ← 残差(近似)

就像 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 ────────────→ 远离
 ▲          ▲           ▲
内层 1s   过渡层       价电子
(高频)   (中频)       (低频,平滑)
  • 核附近(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 的做法

  1. 你只输入原子位置 + 晶胞向量(ATOMIC_POSITIONS + CELL_PARAMETERS
  2. QE 用对称性算法扫描——尝试所有对称操作看能否把晶胞映射回自身
  3. 检测到的对称操作用来压缩 k 点、简化应力/力计算

事先知道 vs 自动检测的对比

场景 做法
研究已知材料(大多数情况) 从 Materials Project / ICSD 查空间群,输入已知对称的结构;QE 自动检测结果与预期一致
新结构搜索 / 弛豫后 只输结构,QE 自动检测;弛豫后对称性可能变化(如铁电相变)

追问:输入到 QE 中的晶胞向量是由 LLM 来提出的吗?

是的——TritonDFT agent 框架中,初始晶胞参数和原子位置都需要由 LLM 推断。这正是 benchmark 考查 LLM 的核心能力之一。

具体流程(以你之前跑过的 Si vc-relax 为例)

  1. Prompt 输入 LLM

    For formula=Si structure=diamond atoms_per_primitive_cell=2 
    space_group=Fd-3m, perform a variable-cell relaxation...
    
    Prompt 只给了化学式、晶体原型、空间群、原胞原子数——没有具体晶胞向量。

  2. LLM 需要推断

  3. 从 "diamond + Fd-3m" 推断出 FCC 晶格 → ibrav=2
  4. 从"Si 的典型晶格常数"(5.43 Å = 10.26 bohr)推断 celldm(1) = 10.20
  5. 从 "diamond 原型" 推断两个原子位置:Si @ (0,0,0)Si @ (0.25,0.25,0.25)(分数坐标)
  6. 选合适的 ecutwfc, k-point mesh, conv_thr
  7. 选择赝势文件 si.upf

  8. 生成 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/*.jsoninfo.space_group预先标注的参考值(查数据库)
  • agent 跑完弛豫后由 pymatgen 的 SpacegroupAnalyzer 重新算一次,与参考值对比
  • src/evaluate/compare.pyspace_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 的训练/采样可能互相启发。

详见 21-scf-iteration.md


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 点做对角化。

详见 21-scf-iteration.md


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 RyE₁ = -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