00. 化简链总图:从多体薛定谔方程到 QE 输入文件¶
本篇是所有学习笔记的总图。每一篇具体笔记都从这里的某一步出发,把概念落到 12 步化简链的某个位置上。
核心问题¶
给定 N 个电子 + M 个原子核组成的系统,如何在几小时内用一台计算机算出它的基态能量、稳定结构和电子能带?
原始问题无法直接求解:
\[\hat{H} \Psi(\vec{r}_1, s_1, \vec{r}_2, s_2, ..., \vec{r}_N, s_N; \vec{R}_1, ..., \vec{R}_M) = E \Psi\]
- \(\Psi\) 是一个 \((3N + 3M)\) 维的复值函数(每个电子 3 个空间坐标 + 1 个自旋;每个核 3 个坐标)
- \(\hat{H}\) 含动能项、核-电、电-电、核-核相互作用
- 直接求解需要 \(O(\exp(N))\) 资源——无法实现
DFT 的解法是一个12 步化简链,每一步消除一部分复杂度,代价是引入一个物理假设或数值近似。
12 步化简链(完整版)¶
化简 1:Born-Oppenheimer 近似 → 把核"冻住"¶
- 上一步困难:原始问题耦合了电子和核,自由度 \(3(N+M)\)
- 假设:核质量 ≈ 1800 × 电子质量,运动比电子慢得多 → 把核位置 \(\{\vec{R}_I\}\) 当成参数而非变量
- 效果:问题分成两层
- 内层:固定核位置,求 N 电子基态
- 外层:把内层算出的能量当核位置的函数 \(E(\{\vec{R}_I\})\),再优化核位置
- 引入:外势 \(V_{ext}(\vec{r}) = -\sum_I Z_I e^2 / |\vec{r} - \vec{R}_I|\)
- 代价:忽略了核量子效应(如氢原子隧穿、零点运动)
- 详见:
11-born-oppenheimer.md
化简 2:反对称性 + 单电子分解 → 波函数结构化¶
- 上一步困难:N 电子波函数 \(\Psi(\vec{r}_1, ..., \vec{r}_N)\) 是无结构的 3N 维函数
- 假设:\(\Psi\) 可由 N 个单电子波函数构造的 Slater 行列式表示(单参考近似)
- 效果:自动满足泡利不相容(交换变号),把问题缩到 N 个单电子函数
- 引入:单电子轨道 \(\phi_i(\vec{r}, s)\)、费米子反对称性
- 代价:丢失了电子关联(多 Slater 行列式才能描述完整关联)
- 详见:
12-slater-determinant.md
化简 3:Hohenberg-Kohn 定理 → 3N 维降到 3 维¶
- 上一步困难:即便用 Slater 行列式,N 个 3 维单电子轨道仍然相互耦合
- 假设(定理):基态一切物理量都是电子密度 \(\rho(\vec{r})\) 的泛函——只需 3 维函数就能决定一切
- 效果:问题从"找基态波函数"变成"找基态密度"
- 引入:电子密度 \(\rho(\vec{r})\)、能量泛函 \(E[\rho]\)、变分原理 \(\rho_0 = \arg\min_\rho E[\rho]\)
- 代价:HK 只是存在性证明,没给出 \(E[\rho]\) 的精确形式
- 详见:
13-hk-theorem.md
化简 4:Kohn-Sham 映射 → 把相互作用转换成单粒子问题¶
- 上一步困难:\(E[\rho]\) 的动能项无法直接用 \(\rho\) 写出
- 假设:存在一个虚构的"非相互作用电子系统",它的密度正好等于真实系统的密度
- 效果:把一个 N 电子耦合问题变成 N 个单粒子方程(通过有效势 \(V_{eff}\) 耦合)
- 引入:KS 轨道 \(\phi_i^{KS}\)、有效势 \(V_{eff} = V_{ext} + V_H + V_{xc}\)、交换-关联泛函 \(E_{xc}[\rho]\)
- 代价:把所有"未知"集中到 \(E_{xc}[\rho]\) 这一项
- 详见:
14-kohn-sham.md
化简 5:XC 泛函近似 → 把未知用模型替代¶
- 上一步困难:\(E_{xc}[\rho]\) 的精确形式未知
- 假设:用近似泛函族(从简单到复杂)
- LDA:只依赖 \(\rho(\vec{r})\) 局部值
- GGA(PBE/PBEsol):依赖 \(\rho\) 和 \(\nabla\rho\)
- meta-GGA(SCAN):加动能密度
- Hybrid(HSE06):加部分精确交换
- 效果:给出可实际评估的能量表达式
- 代价:每个泛函都有系统性误差(例如 PBE 高估晶格常数 ~1%,LDA 低估)
- 详见:
15-xc-functional.md
化简 6:赝势 → 把核和内层电子打包¶
- 上一步困难:核附近波函数剧烈振荡,需要超高截断能(\(>10^4\) Ry)才能描述
- 假设:化学/物理性质主要由价电子决定;核+内层电子的总效应可用光滑势代替
- 效果:只算价电子(数目少、截断能低)
- 引入:价电子概念、赝势文件(
.upf)、赝势库(PseudoDojo、GRBV、SSSP) - 代价:赝势质量决定精度;转移能力(transferability)不保证
- 详见:
16-pseudopotential.md
化简 7:布洛赫定理 + 周期边界 → 把无穷晶体用 k 点标记¶
- 上一步困难:真实晶体含 \(10^{23}\) 个原子,不可能直接算
- 假设:晶体周期性 → 波函数可写成 Bloch 形式 \(\phi_{n,\vec{k}}(\vec{r}) = e^{i\vec{k}\cdot\vec{r}} u_{n,\vec{k}}(\vec{r})\),其中 \(u\) 是周期的
- 效果:对一个原胞求解即可,用 \(\vec{k}\)(倒格矢空间的点)标记不同能带态
- 引入:倒格矢 \(\vec{G}\)、布里渊区(BZ)、能带指标 \(n\)
- 代价:假设严格周期性(实际表面/缺陷需要超胞)
- 详见:
17-bloch-bz.md
化简 8:平面波基组 + 截断能 → 无穷维到有限维¶
- 上一步困难:\(u_{n,\vec{k}}(\vec{r})\) 仍是连续函数
- 假设:\(u\) 可用有限个平面波展开,截断高频
- 效果:连续 PDE 变成矩阵特征值问题 \(\mathbf{H}\vec{c} = \varepsilon\vec{c}\)
- 引入:平面波系数、
ecutwfc(波函数截断能)、ecutrho(密度截断能) - 代价:截断误差;需要做收敛性测试
- 详见:
18-plane-wave-basis.md
化简 9:k 点采样 → 对 BZ 积分用有限点求和¶
- 上一步困难:对 BZ 连续积分不可行
- 假设:用 Monkhorst-Pack 网格(均匀采样)代替连续积分
- 效果:几个到几十个 k 点就够
- 引入:
K_POINTS automatic网格尺寸(如8 8 8 0 0 0)、gamma-centered / shifted - 代价:采样不足 → 能量不收敛(尤其金属)
- 详见:
19-kpoints.md
化简 10:空间群对称性 → 等价 k 点只算一次¶
- 上一步困难:完整网格 \(k = n^3\) 点计算量大
- 假设(利用):晶体对称性使许多 k 点物理等价
- 效果:只算不可约 k 点(irreducible BZ),计算量降为原来 \(1/\text{Nsym}\)
- 引入:空间群(230 种)、点群、晶系(cubic 等)、对称操作
- 代价:QE 自动处理,几乎无用户侧代价;但输入错误对称性会引发错误
- 详见:
20-symmetry.md
化简 11:SCF 自洽迭代 → 解决 \(V_{eff} \leftrightarrow \rho\) 循环依赖¶
- 上一步困难:KS 方程的 \(V_{eff}\) 依赖 \(\rho\),\(\rho\) 由 KS 解出 → 鸡生蛋
- 假设(解法):固定点迭代——猜 \(\rho_0\),解 KS 得新 \(\rho\),混合旧新,循环到收敛
- 效果:把耦合问题变成迭代线性代数
- 引入:混合 α(Broyden / Anderson)、
conv_thr(电子收敛阈值)、iteration count - 代价:复杂体系可能不收敛(金属、磁性、强关联);需要调整 mixing
- 详见:
21-scf-iteration.md
化简 12:BFGS 结构弛豫 → 外层优化核位置¶
- 上一步困难:内层 SCF 只算单个核位置的电子基态;要找平衡结构需外层优化
- 假设(解法):BFGS 拟牛顿法,用电子算出的力和应力做梯度
- 效果:自动找到使能量最低的晶格和原子位置
- 引入:
forc_conv_thr、press_conv_thr、cell_dofree、ion_dynamics、cell_dynamics - 代价:可能陷入局部极小(初始结构差);计算量 = BFGS 步数 × 每步 SCF
- 详见:
22-bfgs-relax.md
化简链与 QE 输入文件的直接对应¶
一个典型 Si vc-relax 输入文件的每个字段都对应化简链的某一步:
&CONTROL
calculation = 'vc-relax' ! 化简 12 触发
outdir = './'
pseudo_dir = '/.../PBE_standard' ! 化简 6(赝势)
prefix = 'system_0'
/
&SYSTEM
ibrav = 2 ! 化简 7(布拉维格子类型)
celldm(1) = 10.20 ! 化简 7(晶格常数)
nat = 2 ! 原子数(影响化简 4 的 N_e)
ntyp = 1 ! 原子种类数(影响化简 6 的赝势选择)
ecutwfc = 40.0 ! 化简 8(平面波截断)
ecutrho = 320.0 ! 化简 8(密度截断)
/
&ELECTRONS
conv_thr = 1.0e-8 ! 化简 11(SCF 收敛阈值)
mixing_beta = 0.7 ! 化简 11(混合系数)
/
&IONS
ion_dynamics = 'bfgs' ! 化简 12(原子位置优化器)
forc_conv_thr = 1.0e-4 ! 化简 12(力收敛)
/
&CELL
cell_dynamics = 'bfgs' ! 化简 12(晶格优化器)
press_conv_thr = 0.5 ! 化简 12(压强收敛)
/
ATOMIC_SPECIES
Si 28.0855 si.upf ! 化简 6(赝势文件)
ATOMIC_POSITIONS crystal ! 化简 1(核位置,参数)
Si 0.00 0.00 0.00
Si 0.25 0.25 0.25
K_POINTS automatic ! 化简 9(k 点采样)
6 6 6 1 1 1
每运行一次 vc-relax,QE 自动走一遍化简 1–12 的所有环节。理解这张对应表,就理解了 DFT 的工程落地。
化简链与 benchmark 评分字段的对应¶
src/evaluate/compare.py 中的 COMPARISON_RULES 规定了评分字段:
| 字段 | 出处(化简链) | 类型 |
|---|---|---|
a, b, c |
化简 12 弛豫后的晶格长度 | relative error |
alpha, beta, gamma |
化简 12 弛豫后的晶格角度 | relative error |
space_group |
化简 10 对称性分析 | exact |
space_group_number |
化简 10 空间群编号 | exact |
point_group |
化简 10 点群 | exact |
crystal_system |
化简 10 晶系 | exact |
而 questions/*.json 中的 required_ground_truth 还涉及:
- relaxed_structure ← 化简 12 输出
- total_energy_ev_per_fu ← 化简 11 收敛后的最终总能量
学习建议¶
- 先把这张总图看 3 遍,建立"每个概念都有位置"的直觉
- 按顺序读 11 到 22,每篇对应一步化简
- 读到哪一步,就去
tritonDFT-src源码或 QE 输出里找对应字段验证 - 读完后回来对照
00-simplification-chain回忆,标出哪些步骤还含糊不清