pymatgen:MP2020条目与能量校正
从真实氧化物输出演示PBE标签映射、GGA+U输入规则、组成校正和能量归一化。
阅读本篇目录
从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. 实际校正了多少#

| 项目 | 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实操。