跳转至

11. 化简 1:Born-Oppenheimer 近似

第一步化简。我们要把一个耦合了电子和原子核的 \(3(N+M)\) 维问题,拆成"电子子问题 + 核子问题"两层。这一步做完,剩下的 11 步化简(化简 2–12)都只处理电子子问题。


1. 化简位置

  • 12 步化简链中的第 1 步
  • 上一步输出:化简 0(QM 基础)——完整的多体薛定谔方程 $\(\hat{H} \Psi(\{\vec{r}_i, s_i\}, \{\vec{R}_I\}) = E \Psi\)$ 其中 \(\Psi\)\(3N + 3M\) 维复值函数(N 个电子、M 个核),\(\hat{H}\) 含下列 5 项: $\(\hat{H} = \hat{T}_e + \hat{T}_N + \hat{V}_{eN} + \hat{V}_{ee} + \hat{V}_{NN}\)$ 分别是:电子动能、核动能、核-电吸引、电-电排斥、核-核排斥。
  • 本步输出:一个只关于电子的哈密顿量 \(\hat{H}_e\),核位置 \(\{\vec{R}_I\}\) 被当作参数而非变量;以及一个外层核运动问题 \(\hat{H}_N\)

2. 上一步的困难

三件事同时很糟:

  1. 维度灾难\(\Psi\)\(3(N+M)\) 维。哪怕 N=M=10,就是 60 维复值函数,任何直接离散化都爆炸
  2. 核-电耦合\(\hat{V}_{eN}(\vec{r}_i, \vec{R}_I)\) 把电子坐标和核坐标缠在一起,不能简单做 tensor product
  3. 时间尺度差异:电子在 \(10^{-16}\) s 量级运动,核在 \(10^{-13}\) s 量级。两者放一起数值积分极低效(刚性问题,stiff problem)

ML 类比: - 这就像你有一个两层优化问题(bilevel optimization),外层(慢变量)和内层(快变量)混在一个 loss 里一起梯度下降。如果慢/快比 ~1800,数值上几乎不可能——必须分层处理


3. 引入的假设 / 近似

Born-Oppenheimer 近似(BO approximation):假设电子波函数瞬时跟随核位置。

数学上做一个波函数分离(ansatz): $\(\Psi(\{\vec{r}_i\}, \{\vec{R}_I\}) \approx \psi_e(\{\vec{r}_i\}; \{\vec{R}_I\}) \cdot \chi(\{\vec{R}_I\})\)$

  • \(\psi_e\)电子波函数,核位置 \(\{\vec{R}_I\}\)参数(分号后)身份出现
  • \(\chi\)核波函数

分步求解

内层(electronic problem):固定核位置,求电子基态 $\(\hat{H}_e(\{\vec{R}_I\}) \psi_e = E_e(\{\vec{R}_I\}) \psi_e\)$ $\(\hat{H}_e = \hat{T}_e + \hat{V}_{ee} + \hat{V}_{ext}(\{\vec{R}_I\})\)$

其中外势(external potential) $\(V_{ext}(\vec{r}) = -\sum_{I=1}^M \frac{Z_I \, e^2}{|\vec{r} - \vec{R}_I|}\)$

每个核对电子的库仑吸引,对电子问题来说就是个外部势场。这就是"外势"这个词的来源——核是外部

外层(nuclear problem):把 \(E_e(\{\vec{R}_I\}) + V_{NN}\) 当做核的势能面(potential energy surface, PES), $\(\hat{H}_N \chi = E \chi, \quad \hat{H}_N = \hat{T}_N + E_e(\{\vec{R}_I\}) + V_{NN}(\{\vec{R}_I\})\)$

对 DFT 而言外层基本上退化为经典力学问题:找 PES 上的最低点(平衡结构)或在其上做分子动力学(AIMD)。

理由(直觉):电子质量 \(m_e \approx 1/1836\) 质子质量。根据能均分,速度比 \(\sim \sqrt{M/m_e} \sim 43\)。电子比核"快"几十倍到上千倍,所以核在电子的视角里几乎是静止的——电子可以瞬时适应核的任何位形。


4. 代价

BO 近似丢掉了什么

  1. 核量子效应(nuclear quantum effects, NQE):氢原子质量小,本身还是量子粒子;隧穿(tunneling)、零点运动(zero-point motion)都被压在外层"经典力学"里。低温下氢键系统、质子转移这些场景 BO 近似会出错
  2. 非绝热过程(non-adiabatic processes):当两个电子态能量非常接近(例如光激发、锥形交叉 conical intersection),电子不再能瞬时跟随核;BO 失效。标准 DFT 不处理,需要 Ehrenfest 动力学 / 表面跳跃等特殊方法
  3. 电声耦合(electron-phonon coupling)是 BO 的一阶修正;超导、热电等计算必须显式处理

对于 DFTBench 考察的范围(vc-relax 求平衡结构、scf 求单点能量、静态能带)——BO 近似几乎完美,不构成误差源。


5. 引入的新概念

  • Born-Oppenheimer approximation / BO 近似
  • 电子波函数 \(\psi_e\)(参数化 \(\{\vec{R}_I\}\)
  • 外势 external potential \(V_{ext}\)
  • 势能面 PES / potential energy surface
  • 绝热近似 adiabatic approximation(BO 的另一个名字,强调"电子绝热跟随")
  • 核量子效应 NQE / 零点运动 ZPE(被忽略的部分)
  • 电声耦合 electron-phonon coupling(一阶修正)

6. 对应 QE 字段

BO 近似贯穿整个 QE 求解——它是最底层的前提,没有专门的开关。但以下字段直接体现了分层结构:

字段 体现什么
ATOMIC_POSITIONS crystal / ATOMIC_POSITIONS angstrom 核位置参数——作为电子问题的外部输入
ATOMIC_SPECIES + .upf \(Z_I\) 的来源——每个核对应赝势里的电荷(详见化简 6)
calculation = 'scf' 只做内层:固定核位置,求电子基态(PES 上某一点)
calculation = 'relax' 外层:原子位置 BFGS 搜索 PES 局部最小
calculation = 'vc-relax' 外层:晶格 + 原子位置联合 BFGS
calculation = 'md' 外层:用经典牛顿方程在 PES 上跑分子动力学

典型 Si 输入(test_manual/si.vc-relax.in)里的体现

ATOMIC_POSITIONS crystal          ! 核位置 —— BO 参数
  Si  0.00  0.00  0.00
  Si  0.25  0.25  0.25

这两行就是"外层"给"内层"的参数。QE 先解该位形下电子基态(内层 SCF),算出 \(E_e\) 和力/应力,然后 BFGS 微调位置(外层),再解内层,循环直到力/应力收敛。

输出里看到的: - ! total energy = ... Ry:当前核位形下的 \(E_e + V_{NN}\)(整条 PES 的一个点) - Forces acting on atoms ...\(-\partial E / \partial \vec{R}_I\)(PES 梯度) - total stress (Ry/bohr**3)\(\partial E / \partial \epsilon\)(PES 对应变的梯度)

后面两个量就是 BO 外层优化用到的一阶信息


7. 对应 benchmark 条目

benchmark/materials/*.jsoninfo 字段的 structure(晶格 + 原子位置)就是 BO 外层问题的输入初值和目标

  • 输入:一个"好猜"的晶格常数和原子坐标
  • 目标:外层 BFGS 收敛后的"真"平衡结构(relaxed_structure

评分字段 a, b, c, alpha, beta, gammacompare.pyCOMPARISON_RULES)都是外层优化输出——衡量 BO 外层是否找到了正确的 PES 最小点(附加 XC 泛函、赝势等综合误差)。

total_energy_ev_per_fu(每化学式单元总能量)是 PES 最小值处的 \(E_e + V_{NN}\),换算到 eV 并除以化学式单元数。


8. ML 类比

Bilevel optimization

BO 近似 = 标准的两层优化形式:

\[ \begin{aligned} \text{外层:} &\quad \{\vec{R}_I^*\} = \arg\min_{\{\vec{R}_I\}} E_e(\{\vec{R}_I\}) + V_{NN} \\ \text{内层:} &\quad E_e(\{\vec{R}_I\}) = \min_{\psi_e} \langle \psi_e | \hat{H}_e | \psi_e \rangle \end{aligned} \]
  • 类似 MAML:外层更新 meta 参数(核位置),内层对任务求最优参数(电子基态)。每个外层梯度步都需要完整解一次内层
  • 类似 NAS + 内层训练:外层搜索结构,内层训练权重
  • 类似 implicit layers / DEQ:内层是一个 argmin 算子,外层用包络定理(Hellmann-Feynman 就是这个的物理版本)算梯度

Hellmann-Feynman 定理(ML 视角)

外层需要 \(\frac{\partial E_e}{\partial \vec{R}_I}\)。直觉上这要对内层过程反向传播。但 Hellmann-Feynman 定理说:对于内层的基态, $\(\frac{\partial E_e}{\partial \vec{R}_I} = \langle \psi_e | \frac{\partial \hat{H}_e}{\partial \vec{R}_I} | \psi_e \rangle\)$ 不用反向传播内层求解过程——直接用内层的最优解算 \(\hat{H}_e\) 对参数的显式偏导即可。这就是 implicit differentiation / 包络定理(envelope theorem)的物理版。

这就是为什么 QE 在 SCF 收敛后很便宜地就能输出力和应力:不用 backprop,直接用收敛的 \(\psi_e\) 算个期望值。

时间尺度分离

电子/核速度比 ~43(质量比 ~1836 的平方根) ≈ SGD 里"两组参数分不同学习率"的极端版(1:40 学习率差)。在极限情况下,快变量永远处于给定慢变量下的最优——这就是 BO 的假设。


9. 典型取值 / 常见坑

  • 什么时候 BO 不够
  • 含大量氢的体系 + 低温 + 需要精确零点能 → 用 path-integral MD 补 NQE
  • 光激发 / 光化学 / 电荷转移涉及非绝热 → 用 TDDFT + Ehrenfest 或面跳跃
  • 超导 Tc 计算必须显式考虑电声耦合(BO 的一阶修正)
  • QE 默认:所有 pw.x 计算都假设 BO;不需要用户操心,但也无法关闭
  • ATOMIC_POSITIONS 的坐标系
  • crystal:晶格矢量的分数坐标(0~1)——最常用
  • angstrom:直接写 Å
  • bohr:原子单位
  • alat:相对 celldm(1) 记错坐标系是新手最常见的 BO"入口错误"——核位置就是 BO 的外层参数,错了整个计算废
  • 外势在代码里:QE 不直接暴露 \(V_{ext}(\vec{r})\);它由 ATOMIC_SPECIES 里的赝势(化简 6)与 ATOMIC_POSITIONS 的坐标合成——每个原子在其中心产生一个库仑型吸引(修正核心区)

关键词清单(本篇引入)

  • Born-Oppenheimer approximation / BO 近似
  • adiabatic approximation / 绝热近似
  • external potential \(V_{ext}\) / 外势
  • potential energy surface (PES) / 势能面
  • electronic Hamiltonian \(\hat{H}_e\)
  • nuclear Hamiltonian \(\hat{H}_N\)
  • nuclear quantum effects (NQE)
  • zero-point energy (ZPE)
  • electron-phonon coupling(BO 一阶修正)
  • Hellmann-Feynman theorem

下一步阅读

12-slater-determinant.md — 化简 2:给电子波函数一个结构——Slater 行列式自动编码反对称性