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计算核心流程 1. 构建初始结构 POSCAR / 晶体结构 2. 设置计算参数 INCAR / KPOINTS / POTCAR 3. 运行计算 VASP / QE 4. 检查收敛性 能量/力是否收敛? 不收敛 → 调整参数 5. 结果分析 能带 / 态密度 / 电荷 关键参数速查 • ENCUT:截断能(1.3倍推荐值) • ISIF:优化选项(3=全优化) • KPOINTS:k点密度(8x8x8起步) • EDIFF:电子步收敛(1E-5) • EDIFFG:力收敛(-0.02) 💡 常见问题:不收敛?检查ENCUT是否太小、k点是否太少、结构是否合理

嗯,到这里DFT的基础就讲完了。记住:理论是死的,经验是活的。多算、多调、多分析,你很快就能上手。下一节我们聊聊如何用DFT算材料的电子结构——能带和态密度,那才是真正有意思的部分。


公众号:蓝海资料掘金营,微信deep3321