pymatgen专题

pymatgen:MP2020条目与能量校正

从真实氧化物输出演示PBE标签映射、GGA+U输入规则、组成校正和能量归一化。

更新于 2026-11-12约 7 分钟阅读按任务与环境选择适用配置
阅读本篇目录

从VASP读取一个总能之后,还需要弄清它采用什么泛函、U值、赝势与计算流程,才能讨论和其他数据一起使用。MP2020提供一套特定的能量校正规则,本篇演示条目解析、规则筛选与校正算术。

本例实际计算了固定几何Fe₄O₄ PBE及Fe₄O₆ PBE+U,采用VASP6.6.1的NVHPC25.3 P100模块、单MPI进程和单科学线程;后处理为pymatgen2026.9.24、Python3.11。

**本例是接口教学数据,未做结构松弛,不作为可直接并入Materials Project相图的数据。**实际混用数据库能量,应遵循官方MPRelaxSet等参数与标准流程,并完成相应结构优化和收敛检查。接口接受条目只表示满足它检查的条件,不代替这些计算要求。

下载真实VASP输出、输入、条目JSON、CSV与绘图脚本。

unzip pymatgen-oxide-tools-wave713-*.zip
cd pymatgen-oxide-tools
bash results.sh
bash run.sh
bash plot.sh

1. 实际GGA+U输入#

Fe₂O₃初始几何取AFLOW刚玉原型,将Al替为Fe并等比例放大晶格1.058倍,保持分数坐标。随后只做电子单点;本次23步达到EDIFF=1E-6。

INCAR:

SYSTEM = Fe2O3 energy compatibility tutorial
ENCUT = 520
EDIFF = 1E-6
NELM = 160
ALGO = Normal
ISPIN = 2
MAGMOM = 5 -5 5 -5 6*0
ISYM = 0
ISMEAR = 0
SIGMA = 0.05
LREAL = .FALSE.
LASPH = .TRUE.
PREC = Accurate
IBRION = -1
NSW = 0
LWAVE = .FALSE.
LCHARG = .FALSE.
LORBIT = 11
NCORE = 1
KPAR = 1
AMIX = 0.2
BMIX = 0.0001
AMIX_MAG = 0.8
LDAU = .TRUE.
LDAUTYPE = 2
LDAUL = 2 -1
LDAUU = 5.3 0
LDAUJ = 0 0
LMAXMIX = 4
BMIX_MAG = 0.0001

LDAUTYPE=2采用Dudarev形式,Fe的Ueff=5.3eV、O为0。它是这套规则对相应Fe氧化物的输入约定,不是程序为所有Fe体系自动求出的通用U值。

POSCAR:

Fe4 O6
1.0
  -2.5184102999999998   -4.3620145939047781   -0.0000000000000019
   2.5184102999999989   -4.3620145939047781   -0.0000000000000000
  -0.0000000000000000   -2.9080097292698524    4.5827975333333324
Fe O
4 6
direct
   0.6478400000000000    0.6478400000000000    0.0564800000000001 Fe
   0.8521599999999999    0.8521600000000000    0.4435200000000001 Fe
   0.3521600000000000    0.3521599999999999    0.9435200000000001 Fe
   0.1478400000000000    0.1478399999999997    0.5564800000000001 Fe
   0.4439000000000002    0.0561000000000001    0.7499999999999999 O
   0.7500000000000000    0.4439000000000000    0.7500000000000000 O
   0.0561000000000003    0.7499999999999999    0.7500000000000000 O
   0.5561000000000000    0.9438999999999997    0.2500000000000002 O
   0.2500000000000000    0.5560999999999998    0.2500000000000000 O
   0.9439000000000002    0.2500000000000001    0.2499999999999997 O

KPOINTS:

Fe2O3 teaching SCF
0
Gamma
3 3 3
0 0 0

这组小网格用于演示读写和校正,不作为数据库混用参数或材料收敛标准。总价电子数92,使用Fe_pv和O的PBE赝势。

自己重算随包两套单点模板:

bash prepare-potcar.sh
bash submit.sh
squeue -u "$USER"

POTCAR从集群已有授权目录准备,不在下载包中。按自己账户的可用分区和GPU模块修改模板;两套计算完成后:

bash analyze-new.sh

新分析分别写入analysis-magnetism-new和analysis-compatibility-new。只学后处理时用run.sh读取reference-native即可,不必重算。

2. 从实际输出建立条目#

from pymatgen.io.vasp.outputs import Vasprun
from pymatgen.entries.compatibility import MaterialsProject2020Compatibility
v = Vasprun('reference-native/Fe2O3-PBEU/vasprun.xml',
            parse_dos=False, parse_projected_eigen=False,
            parse_potcar_file=False)
entry = v.get_computed_entry(inc_structure=True)
print(entry.composition, entry.energy, entry.parameters)

能量为对应整晶胞eV。inc_structure=True保留结构,可供氧阴离子类型等判断使用;不能随意丢掉结构后假定氧化物、过氧化物和超氧化物都得到相同处理。

3. 明确处理名称差异#

当前解析器给本例的名称是PBE/PBE+U,MP2020接口使用GGA/GGA+U。仅对已经确认采用PBE的这两个标签作对应转换:

original = entry.parameters['run_type']
assert str(v.parameters['GGA']).upper() == 'PE'
assert original in ['PBE', 'PBE+U']
entry.data['original_vasprun_run_type'] = original
entry.parameters['run_type'] = {'PBE':'GGA', 'PBE+U':'GGA+U'}[original]
compat = MaterialsProject2020Compatibility(check_potcar_hash=False)
corrected = compat.process_entry(entry)
print(corrected.energy, corrected.correction)

保留原标签和实际Hubbard参数,不把PBEsol、SCAN或其他泛函直接改名混入。这个版本的代码入口按本文固定环境使用;在线新版本文档可能采用新的模块路径。

本例按实际POTCAR名称检查Fe_pv/O,没有启用赝势内容哈希检查。仅名称通过不能确认实际势库内容与数据库完全一致。

4. 实际校正了多少#

实际Fe4O6条目的组成校正

项目 eV/Fe₄O₆晶胞
原始单点总能 −66.67151332
Fe相关GGA/GGA+U混合项:4×(−2.256) −9.024000
氧化物O项:6×(−0.687) −4.122000
校正合计 −13.146000
接口输出的修正后总能 −79.81751332

这10原子晶胞含两个Fe₂O₃化学式单元,所以总修正换算为−6.573eV/Fe₂O₃或−1.3146eV/atom。计算形成能时必须统一归一化,并一致处理参照物;不能混用整胞和每原子数值。

库返回约0.0421eV/cell的校正模型不确定度,这不等于全部DFT计算误差。

5. 为什么普通PBE FeO被筛掉#

随包另一个实际收敛的FeO条目没有加U。该规则要求相应Fe氧化物使用5.3eV,因而将这个GGA条目排除。过滤反映的是这套能量兼容规则的输入约定;电子收敛另外检查。

cat reference-data/MP2020-energy-compatibility.csv
cat reference-data/MP2020-energy-adjustments.csv

被排除条目的修正后能量留空,不能把它当作“校正量为零且可混用”。同样,本例两种组成的原始总能不用于直接比较稳定性。

6. 用到自己的数据#

先确定目标是同一方法内部比较、官方GGA/GGA+U混用,还是其他泛函混用;使用对应方案及其计算参数。保存原始总能、组成、结构、U值、赝势信息、校正项和模型版本,不覆盖原始能量。

方法范围见pymatgen官方兼容校正说明,相图入口见凸包与Pourbaix实操。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗