在阅读器中打开

This chapter is written in Chinese. Your browser’s translate feature gives a full English version.

13SOLIDS
计算化学数据库与资源导航 2026 · 目录增补

周期体系与凝聚态第一性原理

Periodic systems & first-principles condensed matter

数据库第 13 类收录 16 个程序(编号 129–142、232、252)。第 10 类已经有 Quantum ESPRESSO、VASP、CP2K 这三个用得最多的固体程序;这里是同一领域的其余主力:几条不同的基组路线(平面波、全电子 LAPW、数值原子轨道、实空间网格),计算激发态的多体微扰程序(GW、BSE),以及几乎每个固体计算都会用到的后处理工具(Wannier 函数、声子)。贯穿例子是硅:最简单的半导体之一,却同时暴露出 k 点收敛、赝势选择和“DFT 带隙偏小”这三个固体计算的核心问题。

和分子计算的三点不同
  • 布里渊区要积分。周期体系的波函数带一个晶体动量 k,能量要在布里渊区里对 k 取平均,k 点网格(常用 Monkhorst–Pack 网格)必须收敛;金属的费米面附近还要加展宽(smearing)。
  • 基组通常是平面波。精度由一个截断能控制,收敛很系统;代价是核附近剧烈振荡的波函数没法用平面波表示,要用赝势或投影缀加波(PAW)替换掉内层电子。
  • 真空也要算钱。平面波填满整个晶胞,做表面、二维材料或孤立分子时,真空层越厚越贵,还要检查层厚和偶极修正。

一、四条基组路线

路线做法长处代价程序
平面波 + 赝势 / PAW价电子用平面波展开,内层电子换成赝势或 PAW只调一个截断能就能系统收敛;力和应力干净;并行好真空和杂化泛函都贵;结果依赖赝势质量CASTEP、ABINIT、JDFTx、DFTK.jl、GPAW(可选);第 10 类的 Quantum ESPRESSO、VASP
全电子 (L)APW+lo原子球内用类原子函数,球间用平面波,所有电子都算不依赖赝势,常作精度参考;能算芯能级、超精细场慢,设置参数多WIEN2k、exciting、Elk
数值原子轨道以原子为中心、数值表示的局域轨道真空几乎不花钱;可做线性标度、上千原子;FHI-aims 是全电子基组收敛不如平面波系统;有基组叠加误差FHI-aims、SIESTA;第 10 类的 CP2K(高斯与平面波混合)
实空间网格波函数直接放在实空间格点上适合有限体系和实时传播,边界条件灵活格点会带来“蛋盒效应”(能量随原子相对格点的位置轻微波动)Octopus、GPAW(默认表示之一)

同一个泛函,不同程序算出来差多少?2016 年 Lejaeghere 等 69 位作者在 Science 上比较了 15 个固体程序、40 种赝势或基组,算 71 种单质晶体的 PBE 状态方程,结论是:较新的程序和赝势彼此一致,差别和不同高精度实验之间的差别相当;较老的方法差得多。2024 年 Bosoni 等把这个检验扩展到 1 到 96 号元素、每种元素 10 个立方化合物(960 条状态方程),先让两个全电子程序互相核对,再拿来检验九种赝势方案。这两项工作回答的是精密度(程序之间是否一致),不是准确度(泛函离实验多远),两者要分开谈。

二、贯穿例子:硅的带隙

硅是金刚石结构,实验晶格常数 5.431 Å,间接带隙 1.17 eV(低温),导带底在 Γ 到 X 的连线上、靠近 X 点。几个层级的方法给出的带隙:

方法间接带隙(eV)出处
PBE(GGA)0.57–0.62本站用 PySCF 2.15 计算:GTH 赝势、实验晶格常数;gth-dzvp 基组 6×6×6 k 点得 0.62,更大的 gth-tzv2p 基组 4×4×4 k 点得 0.57
GW(以 LDA 为起点)1.29Hybertsen 与 Louie 1986
实验1.17同上文献引用的实验值

PBE 的带隙只有实验值的一半左右,这不是程序的问题,换任何一个程序都一样:Kohn–Sham 本征值之差本来就不等于基本带隙,LDA、GGA 一类泛函普遍低估带隙。修正的路有两条:杂化泛函(如 HSE06)便宜一些;GW 近似从电子的自能出发,算的是光电子能谱测到的准粒子能级,Hybertsen 和 Louie 用它把硅的带隙算到 1.29 eV,金刚石 5.5 eV(实验 5.48),锗 0.75 eV(实验 0.744)。要算光吸收谱,还要在 GW 之上解 Bethe–Salpeter 方程(BSE),把电子和空穴之间的吸引(激子)算进去。

表里的 PBE 数值用的是高斯基组,换大一档基组带隙变化 0.04 eV,加密 k 点变化约 0.02 eV,说明它离收敛值已经不远;导带底落在 Γ 到 X 约 85% 处,位置也和实验一致。复现脚本在本站仓库 tools/handbook-calcs.py。

三、基态与通用程序

编号程序基组路线擅长获取与许可
134CASTEP
www.castep.org
平面波 + 赝势结构、声子、NMR(GIPAW)与光谱;能按需生成赝势学术免费;商业版在 BIOVIA Materials Studio
232ABINIT
www.abinit.org
平面波 + 赝势 / PAW密度泛函微扰理论(声子、介电、弹性),GW 和 BSE 激发态免费,主体 GPL-3.0
131GPAW
gpaw.readthedocs.io
PAW;实空间网格、平面波或原子轨道三选一Python 写成,和 ASE 深度集成免费,GPL-3.0
129FHI-aims
fhi-aims.org
数值原子轨道,全电子分子和周期体系通用,杂化泛函和 GW 效率高注册,向开发方申请许可
130SIESTA
siesta-project.org
数值原子轨道 + 赝势线性标度,含数千原子的大体系免费,GPL-3.0
133WIEN2k
www.wien2k.at
全电子 APW+lo能带和电子结构的高精度参考,芯能级、电场梯度商业许可
136Elk
elk.sourceforge.io
全电子 FP-LAPW磁性和非共线自旋体系免费,GPL-3.0
141DFTK.jl
docs.dftk.org
平面波Julia 写成,代码短,适合方法开发和教学免费,MIT
142JDFTx
jdftx.org
平面波联合密度泛函(JDFT)溶剂模型,电化学界面免费,GPL-3.0

平面波家族:CASTEP、ABINIT、GPAW、DFTK.jl、JDFTx

CASTEP 由英国的开发组维护(2005 年 Z. Kristallogr.),学术用户可以免费拿到源码,商业版本集成在 Materials Studio 里;它的 GIPAW 方法常用来算固体 NMR 化学位移。ABINIT(2020 年 CPC、JCP 两篇综述)的特色是密度泛函微扰理论:不用超胞,直接对微扰求响应,一次得到声子、介电张量、弹性和压电常数,也自带 GW 和 BSE。GPAW(2024 年 JCP)用 PAW,可以在实空间网格、平面波和原子轨道三种表示之间切换,整个程序是 Python,和 ASE(第 10 类)配合写工作流很顺手。DFTK.jl(2021 年 JuliaCon)用 Julia 写,几千行就是一个完整的平面波程序,适合做方法和误差分析研究,也适合教学。JDFTx(2017 年 SoftwareX)把液体溶剂当成连续的密度泛函来处理,常用于电极–电解液界面和恒电位计算。

全电子:WIEN2k 与 Elk

WIEN2k 用 APW+lo 方法(2020 年 JCP 综述),所有电子都显式计算,不依赖赝势,所以常被当作“精度参考”,上面提到的精密度比较也以全电子程序为基准。它还能算芯能级、电场梯度、超精细场这类依赖核附近波函数的量。Elk 是开源的全电子 FP-LAPW 程序,强项是磁性:非共线磁结构、自旋螺旋、自旋–轨道耦合。

原子轨道:FHI-aims 与 SIESTA

FHI-aims(2009 年 CPC)用数值原子轨道做全电子计算,分子和周期体系用同一套设置,杂化泛函和 GW 的效率在全电子程序里很突出。SIESTA(2002 年 JPCM;2020 年 JCP 新综述)用数值原子轨道加赝势,局域基组让它可以做线性标度计算,含几千个原子的体系也能算。原子轨道基组的收敛不如平面波系统,同一个结果要报告用的是哪一档基组。

四、激发态:GW、BSE 与含时密度泛函

编号程序擅长获取与许可
137Yambo
www.yambo-code.eu
在 Quantum ESPRESSO、ABINIT 结果之上算 GW 准粒子能级和 BSE 激子光谱免费,GPL-2.0
138BerkeleyGW
berkeleygw.org
大规模并行的 GW / BSE,准粒子能带和激子效应免费,修改版 BSD 许可
135exciting
www.exciting-code.org
全电子 LAPW+lo 上的 GW、BSE 和 TDDFT 光谱免费,GPL-2.0 或以后版本
132Octopus
octopus-code.org
实空间、实时 TDDFT:光吸收、强场和光驱动动力学免费,GPL-3.0

GW 来自 Hedin 1965 年的多体微扰理论:电子的自能写成格林函数 G 和屏蔽库仑作用 W 的乘积。实际做法多半是 G₀W₀,在一次 DFT 计算的轨道上做一阶修正,所以结果会依赖起点泛函(“G₀W₀@PBE”和“G₀W₀@HSE”可以差零点几 eV),报告时要写明。GW 的收敛参数(空带数目、介电矩阵截断、k 点)出了名地难收敛,Golze、Dvorak、Rinke 2019 年的《GW Compendium》是很好的实用指南。BSE 在 GW 之上加入电子–空穴相互作用,能得到激子和光吸收谱;含时密度泛函(TDDFT,Runge–Gross 1984)对分子的激发很实用,但常用的绝热近似核在固体里抓不住激子,这一点 Onida、Reining、Rubio 2002 年的综述讲得很清楚。Yambo(2019 年 JPCM)和 BerkeleyGW(2012 年 CPC)都读平面波程序的结果做 GW / BSE;exciting(2014 年 JPCM)在全电子框架里做同样的事;Octopus(2020 年 JCP)在实空间里做实时传播,适合激光驱动、强场和光与物质耦合的问题。

五、后处理:Wannier 函数与声子

编号程序擅长获取与许可
139Wannier90
wannier.org
最局域化 Wannier 函数:能带插值、Berry 相相关性质、输运、紧束缚模型免费,LGPL-2.1 或以后版本(3.1 及更早的发行版是 GPL-2.0)
140phonopy
phonopy.github.io
有限位移法算声子谱、声子态密度、热力学性质和准简谐热膨胀免费,BSD-3-Clause

Bloch 函数在 k 空间里有一个可以任意选的相位,Marzari 和 Vanderbilt(1997)利用这个自由度构造出在实空间里最局域的 Wannier 函数。它们像化学里的“键轨道”,可以看出成键;更实用的是能带插值:用粗 k 网格的 DFT 结果插值出很密的能带,再去算电导、反常霍尔电导、拓扑不变量,或者给多体计算(如 DMFT)提供紧束缚模型。Wannier90(2020 年 JPCM)有接口连到 Quantum ESPRESSO、VASP、ABINIT 等多数平面波程序。

声子有两种算法。密度泛函微扰理论(Baroni 等 2001 年 RMP 综述)直接算力常数对波矢的响应,ABINIT 和 Quantum ESPRESSO 都有;phonopy(2015 年 Scripta Mater.,2023 年 JPCM)用有限位移法:在超胞里把原子挪一点,读回各原子受的力,拼出力常数。它不在乎背后用哪个 DFT 程序,所以几乎能接所有程序。超胞大小和位移幅度要收敛;出现虚频时,先检查结构是不是真的稳定、超胞是不是太小。

一个固体计算的收敛清单
  1. 截断能(或数值轨道的基组档次):加大到所关心的量不再变化,常见标准是总能量变化小于约 1 meV/原子。
  2. k 点网格:半导体和绝缘体收敛快;金属要更密的网格加展宽,还要检查展宽宽度的影响。
  3. 赝势:用经过验证的库,例如 SSSP(第 2 类,按全电子状态方程、声子、能带等多项标准检验)或 PseudoDojo,不要随手拿一份。
  4. 结构:先优化晶格常数和原子位置(PBE 一般把晶格常数高估约 1%),或者固定实验晶格常数,在文中写明选的是哪一种。
  5. 自旋:可能有磁性的体系,试几种初始磁矩,比较能量。
  6. 表面与二维材料:检查真空层厚度,极性表面加偶极修正。

六、表面与界面:slab、台阶能与固液界面

催化、电化学和腐蚀都发生在表面上。周期程序算表面的标准做法是 slab 模型:沿表面法向切出若干层原子,上下留出真空层,面内保持周期性。三件事要收敛:层数(中间几层要像体相)、真空厚度(相邻周期像里的 slab 互相“看不见”),以及面内超胞的大小(吸附物不要和自己的周期像相互作用)。只在一侧吸附或两面不对称时,slab 带一个净偶极,周期边界会在真空里造出一个不存在的电场,要加偶极修正(Neugebauer 和 Scheffler 1992)。

表面能。一块含 N 个原子、上下两个相同表面(每面面积 A)的 slab,表面能 γ = (Eslab − N·Ebulk) / (2A),Ebulk 是体相每个原子的能量。这个式子对 Ebulk 很敏感:体相和 slab 的 k 点、截断能只要稍有不一致,误差就随层数线性累积,γ 随层数增加反而发散。Fiorentini 和 Methfessel 的办法是用同一套参数算几种层数,把 Eslab 对 N 做直线拟合,用斜率当 Ebulk。

台阶能。真实表面有台阶,台阶边上的原子配位数更低,常常就是催化的活性位点。做法是切一个邻晶面(vicinal surface),例如 fcc 金属的 (211) 面就是 (111) 台面加上单原子高的台阶。从邻晶面 slab 的多余能量里扣掉台面本身的表面能,剩下的归台阶:β = (Eslab − N·Ebulk − 2γ台面Ap) / (2L)。Ap 是晶胞在台面方向上的投影面积,L 是每一面上台阶在晶胞里的长度,β 的单位是能量每长度(如 eV/Å)。台阶之间要隔得足够远,否则算出来的混进了台阶之间的相互作用;最稳妥的检查是换两种台面宽度,β 不变才算数。

固液界面。“铜水界面”这类问题比真空中的表面难一层:室温下水的结构一直在变,界面上还有双电层和电极电势。常见的三种处理,代价由低到高:

  1. 隐式溶剂:把水当成连续介电体。平面波程序里常用 VASPsol(Mathew 等 2014)和 Environ(Andreussi、Dabo、Marzari 2012,接 Quantum ESPRESSO)。便宜,但没有氢键,也没有具体的水分子取向。
  2. 显式水层:在 slab 上放一两层冰状的水或几个水分子,做静态优化。能看到吸附物和水之间的氢键,但结果依赖你选的那一个水构型。
  3. 从头算分子动力学(AIMD):几十到上百个水分子和 slab 一起跑几十皮秒,再对轨迹取平均。最接近真实,也最贵。Groß 和 Sakong 2022 年的综述把这几种做法在水/金属界面上的结果放在一起比较过。

现成的例子:铜电极上的 CO₂ 还原。铜是唯一能把 CO₂ 大量还原成甲烷、乙烯等烃类的纯金属。Peterson 等 2010 年在 Cu(211) 台阶面上算了每一步质子–电子转移的自由能,用的是 Nørskov 等提出的计算氢电极:在可逆氢电极(RHE)的 0 V 下,H⁺ + e⁻ 的自由能取成 ½H₂ 的自由能,电极电势 U 的影响写成每转移一个电子加 −eU。结果是吸附的 CO 加氢成 CHO(*CO → *CHO)这一步最难,由它定出的极限电位约 −0.74 V(相对 RHE),和实验上甲烷开始出现的电位相近。这个例子把本节的东西都用上了:台阶面 slab、吸附能、溶剂修正,以及把电势写进自由能的计算氢电极。

编号程序做法接哪个程序获取与许可
252Environ
www.quantum-environ.org
连续介质嵌入:隐式溶剂、电解质和外加电场,自洽连续溶剂模型(SCCS)Quantum ESPRESSO(作为插件编译进 pw.x 等)免费,GPL-2.0

相关的数据:第 3 类的 Catalysis-Hub 汇总了多个研究组在各种表面上算的吸附能和反应能,第 9 类的 OC20 / OC22 是表面吸附的大规模 DFT 数据集,查到别人算过同一个体系时,先对一下设置再比较数字。

七、怎么选:一张速查表

你的问题先用再核对
晶体结构、形成能、表面吸附平面波程序(QE、VASP、CASTEP、ABINIT、GPAW)截断能、k 点、赝势;和材料数据库(第 3 类)的同口径结果对照
需要不依赖赝势的参考值WIEN2k、exciting、Elk、FHI-aimsLAPW 的基组参数
几千个原子、或大量真空SIESTA、FHI-aims、CP2K基组档次和基组叠加误差
带隙、光电子能谱杂化泛函,或 GW(Yambo、BerkeleyGW、exciting、FHI-aims、ABINIT)起点泛函、空带数目、介电截断
光吸收谱、激子BSE(Yambo、BerkeleyGW、exciting);有限体系用 TDDFTBSE 的 k 点和能带数
激光驱动、强场动力学Octopus(实时 TDDFT)格点间距和时间步长
声子、热力学性质、热膨胀phonopy,或 ABINIT / QE 的 DFPT超胞大小、虚频
能带插值、拓扑、输运Wannier90Wannier 函数的展开度与能窗
电极–电解液界面、恒电位JDFTx溶剂模型的参数化范围
学方法、写新算法DFTK.jl、GPAW和成熟程序比对
讲解

固体计算的结果能不能复现,主要看三样东西有没有写全:赝势或 PAW 数据集的名字和版本,截断能和 k 点网格,晶格常数是优化的还是实验的。材料数据库(第 3 类)里同一个化合物的形成能、带隙往往来自不同的泛函和校正方案,拿来和自己的计算比之前,先确认口径一致。另外记住硅的例子:PBE 带隙偏小是泛函的系统误差,不是“没收敛”,加 k 点、加截断能都不会让它变成 1.17 eV。

参考文献

文献在 OpenAlex 逐条核对过;许可证按各项目官方仓库里的许可文件或官网说明核对,2026-11-10;“表面与界面”一节和 Environ 2026-11-12 补充。示例数值由 PySCF 2.15.0 计算,复现脚本在本站仓库 tools/handbook-calcs.py。