跳转至

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_thrpress_conv_thrcell_dofreeion_dynamicscell_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 收敛后的最终总能量


学习建议

  1. 先把这张总图看 3 遍,建立"每个概念都有位置"的直觉
  2. 按顺序读 11 到 22,每篇对应一步化简
  3. 读到哪一步,就去 tritonDFT-src 源码或 QE 输出里找对应字段验证
  4. 读完后回来对照 00-simplification-chain 回忆,标出哪些步骤还含糊不清