16. 化简 6:赝势(Pseudopotential)¶
把核和内层电子"打包冻结",只算价电子。
本篇位置:化简链第 6 步。上承化简 5(XC 泛函)——我们已经有了一个可评估的能量泛函;下启化简 8(平面波基组)——赝势让平面波截断能落在可接受区间。
1. 化简位置¶
- 第几步:12 步化简链的第 6 步
- 上一步:化简 5(XC 泛函近似),已经把 \(E_{xc}[\rho]\) 写成 LDA/GGA/meta-GGA 等可评估形式
- 下一步:化简 7(Bloch + BZ)和化简 8(平面波基组)——赝势直接决定了后者的
ecutwfc上限
用一句话概括:把"全电子 + 真实核库伦奇点"这个数值上很难对付的外势,替换成一个光滑的等效势,让后续所有数值手段(平面波、FFT、稀疏对角化)都能在可接受的资源下做下来。
2. 上一步的困难¶
到化简 5 结束,我们拿到的 Kohn-Sham 方程形式上是
看起来只要找一组基把它展开成矩阵特征值问题就能做。可是,\(V_{ext}\) 里有一个 \(-Z/r\) 的库伦奇点,它把价电子的波函数在原子核附近挤压成剧烈振荡(为了保持对内层电子的正交性,按节点定理每个波函数要有许多 radial node)。
数值上的代价:
- 要用平面波基组表达这种振荡,波矢上界需 \(|\vec{G}|^2 \sim 10^4\) Ry 量级,这是个灾难性的截断能
- 每次做 FFT 的网格密度也随之爆炸
- 而且:内层 1s/2s/2p 电子对化学成键几乎不贡献,白算
关键观察:几乎所有化学、光学、弹性、结构、磁性性质都只依赖最外层的几个价电子(valence electrons)。内层的 core electrons 在不同化学环境中几乎不变,可以视为随核"一起冻住"。
这就是做赝势的动机:把"核 + 内层电子"看成一个复合粒子,给它造一个光滑的等效势。
3. 引入的假设/近似¶
核心假设是 frozen core approximation + smooth pseudo-wavefunction construction:
- core 冻结:内层电子的波函数在所有化学环境中保持不变(不随成键、应变变化)
- 截断半径 \(r_c\):在核附近选一个半径 \(r_c\)。\(r > r_c\) 区域保留真实全电子行为;\(r < r_c\) 区域用光滑函数替换真实波函数
- 匹配条件:赝波函数 \(\tilde{\phi}\) 与真实全电子波函数 \(\phi^{AE}\) 在 \(r = r_c\) 处平滑连接(值、一阶导、某些情况下更高阶)
- 作用于价电子的等效势:构造一个 \(V_{ps}(\vec{r})\),使得用它解出的价电子轨道能量和 \(r > r_c\) 区域的波函数都等于全电子解
代价:
- 赝势对"转移能力(transferability)"不保证——同一个 Ti 赝势在 TiO₂ 和 Ti 金属里可能表现不同
- \(r_c\) 越大,赝势越软(ecutwfc 越低),但精度越差
- 选错价电子数(semi-core 问题)会带来系统误差,Ge、Ti、过渡金属尤其常见
4. 引入的新概念¶
4.1 价电子 vs core 电子¶
| 元素 | 通常价电子构型 | 备选(semi-core) |
|---|---|---|
| Si | 3s² 3p²(4 个) | — |
| Ge | 4s² 4p²(4 个) | 3d¹⁰ 4s² 4p²(14 个) |
| Ti | 3d² 4s²(4 个) | 3s² 3p⁶ 3d² 4s²(12 个) |
| Cu | 3d¹⁰ 4s¹(11 个) | — |
"要不要把 semi-core 纳入价电子"是赝势设计者的判断。PseudoDojo 的 Ge.upf 就把 3d 当价电子,带来的代价是 ecutwfc 从 ~40 Ry 上升到 ~60 Ry。这正是 TritonDFT baseline 里 Ge 算错的根因之一:默认 ecutwfc 不够高。
4.2 三大类赝势¶
| 类型 | 代表 | 要点 | 代价 |
|---|---|---|---|
| Norm-conserving (NC) | Hamann 1979; ONCVPSP | 在 \(r < r_c\) 内赝波函数的电荷积分 = 真实波函数积分(保持范数) | 理论最严谨,但 ecutwfc 相对高 |
| Ultrasoft (USPP) | Vanderbilt 1990 | 放弃范数守恒,补上 augmentation charges 恢复电荷;可用极大 \(r_c\) | ecutwfc 可到 20-30 Ry,但实现复杂;需同时给 ecutrho 充分大 |
| PAW (Projector Augmented Wave) | Blöchl 1994 | 把 \(r < r_c\) 的全电子信息用投影算符"即时重建";形式上最接近全电子计算 | 精度 ≈ 全电子;是 VASP 默认。QE 也支持 |
一句话记忆:NC 严谨但硬,USPP 软但复杂,PAW 两头兼顾。TritonDFT 用的 PseudoDojo 全是 ONCVPSP(Optimized Norm-Conserving Vanderbilt)——一种在 NC 框架下高度优化的现代赝势。
4.3 赝势库(pseudopotential libraries)¶
| 库 | 类型 | URL | 特点 |
|---|---|---|---|
| PseudoDojo | NC (ONCVPSP) | http://www.pseudo-dojo.org/ | TritonDFT 使用;SR/FR 两套(标量相对论 / 完全相对论) |
| SSSP | NC + USPP + PAW | https://www.materialscloud.org/discover/sssp | Materials Cloud 维护的 "best of" 精选 |
| GBRV | USPP | https://www.physics.rutgers.edu/gbrv/ | Garrity-Bennett-Rabe-Vanderbilt,为高通量筛选优化 |
| QE PAW datasets | PAW | QE 官网 pslibrary |
Dal Corso 维护 |
| ABINIT JTH / GPAW | PAW | — | 其他代码生态 |
类比 HuggingFace:每个赝势库 ≈ 一个 model hub;同一个元素可能有好几版 .upf,精度、转移能力、收敛性都要自己测。
4.4 .upf 文件¶
Unified Pseudopotential Format,XML-like 文本/二进制混合格式。关键字段:
<PP_HEADER>:元素名、赝势类型(NC/USPP/PAW)、XC 泛函(必须和输入文件input_dft匹配)、价电子数z_valence<PP_MESH>:径向网格 \(r_i\)<PP_LOCAL>:局部势 \(V_{loc}(r)\)<PP_NONLOCAL>:非局域投影算符(Kleinman-Bylander 形式)<PP_PSWFC>:赝原子轨道<PP_RHOATOM>:赝原子电荷密度(用作 SCF 初猜)
打开 PseudoDojo/SR_v0.4.1/PBE_standard/Si.upf 对照看一遍,比读十页理论都清楚。
4.5 转移能力(transferability)¶
好的赝势要在原子、分子、固体、有压强/应变情况下都能给出接近全电子的结果。典型测试:
- 孤立原子能级
- 二聚体键长、键能
- 晶体晶格常数、体积模量、弹性常数
- 相变压强(如 Si diamond → β-Sn)
- 声子谱(对 \(r_c\) 附近区域的敏感度)
PseudoDojo 的"ghost state test"、"delta factor"等都是标准化的 transferability 评测。
5. 对应 QE 字段¶
&CONTROL
pseudo_dir = '/path/to/PseudoDojo/SR_v0.4.1/PBE_standard/'
/
&SYSTEM
ntyp = 1 ! 原子种类数
ecutwfc = 40.0 ! 受赝势软硬度限制(见 4.2)
ecutrho = 320.0 ! NC: 4×ecutwfc;USPP/PAW: 8-12×
input_dft = 'PBE' ! 建议省略;由 upf 里的 XC 自动决定
/
ATOMIC_SPECIES
Si 28.0855 Si.upf ! 三列:元素符号 原子质量 .upf 文件名
关键坑:
pseudo_dir里所有.upf的 XC 必须一致,且和input_dft一致(若指定)ecutwfc最小值写在.upf的<PP_HEADER>里(wfc_cutoff),但这只是 SCF 能跑起来的下限,不是精度收敛的下限——后者要自己做收敛测试ecutrho默认4 * ecutwfc,USPP/PAW 需要手动加到8-12 × ecutwfc
6. 对应 benchmark 条目¶
DFTBench 用到赝势的地方:
tritonDFT-src/PseudoDojo/SR_v0.4.1/{LDA,PBE,PBEsol}_standard/— 三套 ONCVPSP,覆盖约 72 个元素(H 到 Rn,无稀土和锕系)SR_v0.4.1:Scalar-Relativistic v0.4.1;SOC 计算要用FR版本standardvsstringent:标准版 \(r_c\) 较大(ecutwfc 低);严格版 ecutwfc 更高但精度更好- 材料 JSON 的
elements字段 → benchmark 自动查找对应.upf - Bug 相关:如果 benchmark 用错赝势库(例如拿 PBE upf 跑 LDA),会得到无意义结果;评分会因 a,b,c 相对误差过大而挂
Ge 算错的完整链条:
1. Ge.upf(PseudoDojo SR v0.4.1)把 3d 当价电子
2. 这要求 ecutwfc ≳ 60 Ry
3. DFTBench 里默认值 40 Ry 不够 → SCF 收敛到一个数值上偏移的基态
4. 弛豫后 a 偏差超过阈值 → 评分为 0
7. ML 类比¶
| 赝势概念 | ML 对应 |
|---|---|
| 赝势本身 | 预训练好的 backbone / feature extractor |
| 冻结 core 电子 | freeze 前几层参数,只 fine-tune 头部 |
| 价电子 | 下游任务使用的高层特征 |
| 不同赝势库(PseudoDojo / SSSP / GBRV) | 不同的 model hub(HuggingFace / timm / torchvision) |
| NC vs USPP vs PAW | 不同架构的精度-速度 trade-off(ViT / CNN / MobileNet) |
r_c(截断半径) |
receptive field / 模型容量 |
| Transferability | OOD generalization |
| semi-core 选择 | 决定 fine-tune 哪几层 |
| upf 文件 | model checkpoint + config.json |
| ecutwfc 下限 | 模型要求的最小输入分辨率 |
| ghost state / delta factor 测试 | benchmark suite(GLUE、ImageNet-C) |
特别值得强调的类比:"冻结 core"类似 LoRA 里的 frozen base model。只不过 LoRA 的增量用低秩矩阵表示,赝势的"增量"是在 \(r < r_c\) 内把真实势替换成一个软势。
8. 典型取值与常见坑¶
典型 ecutwfc(PseudoDojo ONCVPSP standard, PBE, Ry)¶
| 元素 | 典型推荐 | 备注 |
|---|---|---|
| H, Li, Na, K | 30-40 | 轻元素,软 |
| C, N, O, F | 50-60 | 2p 节点,较硬 |
| Si | 40 | 经典 benchmark 元素 |
| Ge | 60+ | 3d semi-core,常被忽略 |
| Ti, V, Cr, Fe, Ni | 60-80 | 3d 过渡金属 |
| Cu, Zn | 50-60 | 3d 已满 |
| Pb, Bi | 40-50 | 用 FR 版还需 SOC |
经验法则:做任何新材料前先做 ecutwfc 收敛测试。以 2 Ry 或 5 Ry 为步长扫到总能量收敛到 1 meV/atom 以内。
常见坑¶
- XC 不一致:LDA upf + PBE input → 荒谬结果。QE 一般会警告但不会报错停止
- ecutwfc 太低:Ge 40 Ry 是最著名的例子;第二常见是稀土元素(f 电子)
- 混用赝势库:同一计算里 Si 用 PseudoDojo,O 用 SSSP,两者的 \(r_c\) 规则不同 →
ecutrho的选择变得尴尬 - 忘记 FR:SOC 开启(
lspinorb=.true.)必须用 FR 赝势;用 SR 赝势算出来的 SOC 劈裂是零 ecutrho太低:USPP/PAW 必须手动提高到 8-12 × ecutwfc,否则电荷密度混叠- semi-core 选错:不仅 Ge,Ti/V/Cr/Mn 在氧化物中往往需要 semi-core 赝势。benchmark 分数下跌 20% 的典型原因
pseudo_dir路径错:QE 给的错误信息是 "file not found",新手常卡在这里- 赝势文件编码问题:Windows 换行、UTF-8 BOM 会让老版本 QE 读取失败
调试 checklist¶
遇到能量/结构明显偏差时,按优先级检查:
- XC 是否一致?(
grep "XC" *.upf对照&SYSTEM的input_dft) - ecutwfc 是否做过收敛测试?
- 是否用了 semi-core 足够的赝势?(
grep "z_valence" *.upf) - ecutrho 是否够大?(USPP/PAW ≥ 8 × ecutwfc)
- 如果涉及重元素和 SOC,FR 还是 SR?
下一步阅读¶
17-bloch-bz.md— 化简 7:布洛赫定理 + 布里渊区。有了赝势只算价电子,下一步就是用晶体周期性把"无限多原子"化简成"每个 k 点一个原胞"。