算法原理

本节详细介绍赝势生成的数学原理和数值方法。

概述

赝势生成流程包含以下关键步骤:

  1. 全电子原子解 - 获取参考态波函数和能级

  2. TM 伪化 - 在截断半径内构造光滑伪轨道

  3. 势反演 - 从伪轨道反演半局域势

  4. KB 转换 - 构造可分离非局域投影

  5. 可转移性检验 - 验证赝势质量

物理动机:为什么需要赝势?

核心矛盾

在平面波 DFT 计算中,基组是 \(\phi_{\mathbf{G}}(\mathbf{r}) = e^{i\mathbf{G}\cdot\mathbf{r}}\)。 真实的价电子波函数在核附近有剧烈振荡(为了与芯态正交),需要极高频的平面波才能描述。

但价电子的化学性质主要由核外区域决定。我们是否可以“重新定义”核内的波函数, 使其平滑,同时保持核外物理性质不变?

赝势的回答

是的。在某个截断半径 \(r_c\) 内,用平滑的“伪波函数”替代振荡的真实波函数:

  • \(r > r_c\):伪波函数 = 真实波函数(外区不变)

  • \(r \leq r_c\):伪波函数平滑、无节点

代价是什么?

需要同时修改势能,使得平滑的伪波函数仍然是薛定谔方程的解。 这个修改后的势就是“赝势”。

模守恒的物理意义

为了保证散射性质不变,我们要求内区电荷守恒:

\[\int_0^{r_c} |\phi_{\text{PS}}|^2\,dr = \int_0^{r_c} |\phi_{\text{AE}}|^2\,dr\]

这保证了:

  1. 静电势在 \(r > r_c\) 处正确

  2. 散射相移在相关能量范围内尽可能一致

  3. 赝势在不同化学环境下具有可转移性

赝势生成流程

┌──────────────────────────┐
│  全电子求解(AE)         │  solve_ae_atom()
│  输出:u_l(r), ε_l, n(r)  │
└────────────┬─────────────┘
             │
             ▼
┌──────────────────────────┐
│  TM 伪化                  │  tm_pseudize()
│  r ≤ r_c:内区平滑化       │
│  r > r_c:外区保持不变     │
└────────────┬─────────────┘
             │
             ▼
┌──────────────────────────┐
│  势反演(半局域势)        │  invert_semilocal_potential()
│  V_l = ε + u''/(2u) - l(l+1)/(2r²) │
└────────────┬─────────────┘
             │
             ▼
┌──────────────────────────┐
│  KB 转换(可分离形式)     │  kb_transform()
│  V = V_loc + Σ |β⟩D⟨β|     │
└────────────┬─────────────┘
             │
             ▼
┌──────────────────────────┐
│  验证(可转移性/稳定性)   │  run_full_validation()
│  范数 / 对数导数 / 幽灵态   │
└──────────────────────────┘

理论基础

径向 Schrödinger 方程

对于球对称势,径向波函数 \(u_{nl}(r) = r R_{nl}(r)\) 满足:

\[\left[-\frac{1}{2}\frac{d^2}{dr^2} + V_l(r) + \frac{l(l+1)}{2r^2}\right] u_{nl}(r) = \varepsilon_{nl} u_{nl}(r)\]

其中 \(V_l(r)\) 是半局域势(依赖于角动量 \(l\))。

范数守恒条件

在截断半径 \(r_c\) 内,伪轨道 \(\tilde{u}_{nl}\) 与全电子轨道 \(u_{nl}\) 的范数相等:

\[\int_0^{r_c} |\tilde{u}_{nl}(r)|^2 dr = \int_0^{r_c} |u_{nl}(r)|^2 dr\]

这保证了电荷分布在 \(r \leq r_c\) 内的一致性。

可分离非局域形式

完整的非局域势可表示为:

\[V_{\text{NL}}(r, r') = V_{\text{loc}}(r) \delta(r - r') + \sum_l |\beta_l\rangle D_l \langle\beta_l|\]

其中:

  • \(V_{\text{loc}}(r)\) - 局域势

  • \(|\beta_l\rangle\) - 投影算符

  • \(D_l\) - 耦合系数(能量单位:Hartree 原子单位)