4、第一性原理计算基础:密度泛函理论(DFT)简介、常用软件(VASP、Quantum ESPRESSO)、输入输出文件解析
好,咱们进入正题。第一性原理计算,说白了就是“算材料”。不用实验数据,只靠几个物理常数,就能预测材料的性质。听起来很玄乎,对吧?我刚开始接触时也觉得像魔法。但搞懂了密度泛函理论(DFT),你会发现它其实是一套非常优雅的数学把戏。
4.1 密度泛函理论(DFT)到底在算什么?
先问个问题:一个原子核加一堆电子,怎么算出它们的行为?理论上解薛定谔方程就行。但现实是,多电子体系的方程复杂到没法直接解。你想想看,一个晶体里有10的23次方个电子,这方程写出来能绕地球三圈。
DFT的核心思想很聪明:用电子密度代替波函数。波函数有3N个变量(N是电子数),而电子密度只有3个变量(x, y, z)。这计算量一下子就降下来了。嗯,这里要注意,这个简化是有代价的——我们引入了近似。
核心公式(Kohn-Sham方程):
说白了就是把复杂的多电子问题,拆成一个个单电子问题。每个电子在一个有效势场中运动,这个势场包含了其他电子的平均作用。
我在项目中遇到过一件事:用DFT算一个催化剂的吸附能,结果跟实验差了0.5 eV。后来发现是交换关联泛函选错了。不同的泛函(LDA、GGA、杂化泛函)适用于不同体系,选错了就是“差之毫厘,谬以千里”。
| 泛函类型 | 特点 | 适用场景 |
|---|---|---|
| LDA(局域密度近似) | 简单粗暴,计算快 | 金属、简单半导体 |
| GGA(广义梯度近似) | 考虑了密度梯度,更准 | 大多数材料,尤其是表面和分子 |
| 杂化泛函(如HSE06) | 混入部分精确交换能 | 带隙计算、强关联体系 |
避坑指南:我曾经用LDA算一个氧化物的带隙,结果只有实验值的一半。后来换成HSE06,才勉强对上。记住:LDA普遍低估带隙,这是它的固有缺陷。
4.2 常用软件:VASP vs Quantum ESPRESSO
做DFT计算,离不开软件。目前主流的两大金刚是VASP和Quantum ESPRESSO(简称QE)。我两个都用过,说说我的感受。
4.2.1 VASP(Vienna Ab initio Simulation Package)
VASP是商业软件,但学术界用得最多。为什么?因为它稳定、高效、功能全。我个人习惯用VASP做结构优化和电子性质计算。它的输入文件很简洁,但输出文件多得让人头疼。
- 优点:收敛快、并行效率高、赝势库齐全
- 缺点:收费、不开源、改代码困难
- 核心输入文件:INCAR(控制参数)、POSCAR(结构)、POTCAR(赝势)、KPOINTS(k点网格)
4.2.2 Quantum ESPRESSO(QE)
QE是完全开源的,对学生党很友好。我建议初学者先用QE练手,反正不要钱。它的输入文件是纯文本格式,可读性比VASP好一些。
- 优点:免费开源、社区活跃、可定制性强
- 缺点:收敛慢、文档有点乱、并行效率不如VASP
- 核心输入文件:输入文件(.in)、赝势文件(.UPF)
| 对比项 | VASP | Quantum ESPRESSO |
|---|---|---|
| 价格 | 收费(约2000欧元/年) | 免费 |
| 易用性 | 中等(输入文件简洁但晦涩) | 中等偏下(输入文件冗长) |
| 计算效率 | 高(优化得好) | 中等 |
| 功能覆盖 | 全面(结构、电子、光学、声子等) | 全面(但部分功能需额外模块) |
4.3 输入输出文件解析——以VASP为例
搞懂输入输出文件,是DFT计算的基本功。我刚开始学VASP时,对着INCAR文件一脸懵,每个参数都不知道干啥的。后来踩了不少坑,才慢慢摸清门道。
4.3.1 INCAR文件——控制计算的“大脑”
INCAR里写的是计算参数。比如你要做结构优化还是静态计算,用哪种泛函,截断能设多少。我建议新手先套用别人的模板,再慢慢调参数。
# 一个典型的INCAR示例(结构优化)
SYSTEM = Si bulk
ENCUT = 400 # 平面波截断能,单位eV
ISIF = 3 # 优化晶胞参数和原子位置
IBRION = 2 # 使用共轭梯度法优化
NSW = 100 # 最大优化步数
EDIFF = 1E-5 # 电子步收敛标准
EDIFFG = -0.02 # 离子步收敛标准(力收敛)
PREC = Accurate # 精度设置
我的经验:ENCUT一般设为赝势推荐值的1.3倍。比如赝势推荐400 eV,你就设520 eV。这样能保证计算结果收敛。我曾经偷懒设了400 eV,结果算出来的晶格常数偏大0.02 Å,优化后才发现。
4.3.2 POSCAR文件——告诉软件原子怎么排
POSCAR就是晶胞结构。格式很简单:第一行注释,第二行晶格常数,接着3行晶格矢量,然后是原子种类和数量,最后是原子坐标。
# 硅的POSCAR示例
Si bulk
5.43 # 晶格常数(Å)
0.0 0.5 0.5 # 晶格矢量a
0.5 0.0 0.5 # 晶格矢量b
0.5 0.5 0.0 # 晶格矢量c
Si # 原子种类
2 # 原子数量
Direct # 坐标类型(分数坐标)
0.00 0.00 0.00 # 第一个Si原子
0.25 0.25 0.25 # 第二个Si原子
注意:POSCAR里的坐标可以是分数坐标(Direct)或笛卡尔坐标(Cartesian)。我习惯用分数坐标,因为跟晶格矢量绑定,改晶格常数时不用改坐标。但如果你做表面或分子计算,笛卡尔坐标更直观。
4.3.3 KPOINTS文件——k点网格怎么设
k点网格决定了布里渊区的采样密度。网格越密,结果越准,但计算也越慢。我一般用Monkhorst-Pack方法自动生成。
# 硅的KPOINTS示例
Automatic generation
0
Monkhorst-Pack
11 11 11 # 沿三个方向的k点数目
0.0 0.0 0.0 # 偏移量(一般设0)
经验之谈:对于绝缘体和半导体,k点网格要密一些(比如8x8x8以上)。金属可以稍疏一点(6x6x6),因为费米面附近需要更多采样。我算过一个二维材料,k点设成1x1x1,结果能量不收敛,折腾了两天才发现是k点太少。
4.3.4 输出文件——怎么看结果
VASP的输出文件很多,但最常用的是OUTCAR和OSZICAR。OUTCAR记录了所有计算细节,包括每一步的能量、力、应力等。OSZICAR只记录电子步和离子步的能量变化,适合快速查看收敛情况。
我习惯用grep命令快速提取关键信息:
# 提取最终能量
grep "energy without entropy" OUTCAR | tail -1
# 提取晶格常数
grep "lattice constant" OUTCAR
# 提取原子受力
grep "TOTAL-FORCE" OUTCAR -A 3
核心要点:DFT计算不是“一键出结果”。你需要反复检查输入参数、分析输出文件、调整计算策略。我做过一个项目,前两周都在调参数,真正算结果只花了一天。但调参数的过程,才是真正理解DFT的过程。
4.4 本章知识体系
下面这张图总结了DFT计算的核心流程和关键点。你可以把它当作一个快速参考。
嗯,到这里DFT的基础就讲完了。记住:理论是死的,经验是活的。多算、多调、多分析,你很快就能上手。下一节我们聊聊如何用DFT算材料的电子结构——能带和态密度,那才是真正有意思的部分。
公众号:蓝海资料掘金营,微信deep3321