pymatgen专题

pymatgen EOS体积与能量拟合

读取五个真实Si体积点,用Birch–Murnaghan方程提取平衡体积、体模量和拟合曲线。

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

下载EOS、介电光学与NMR实操包,在解压目录执行:

bash run.sh
ls analysis
ls figures

该包使用现有pymatgen 2026.9.24环境,单次1个CPU核心,直接读取已有的真实VASP输出,不启动新的VASP任务。分步执行也可以:

module load pymatgen/2026.9.24
python response.py
python plot.py

1. 从同一材料的一组体积计算开始#

附件中五个Si计算各有8个原子,体积比例为88%、94%、100%、106%、112%。脚本从各目录的CONTCAR读取最终晶胞体积,从同一轮XML读取E0;两者都按原子数归一化,避免把整胞能量与每原子体积混用。

cat calculations/eos-diamond-100/INCAR
cat calculations/eos-diamond-100/KPOINTS
cat analysis/si-eos-native.csv
体积 / ų·atom⁻¹ E0 / eV·atom⁻¹
18.30125000 -5.34930515
19.54906250 -5.41317991
20.79687500 -5.42332831
22.04468750 -5.39462431
23.29250000 -5.33805022

这是五个真实DFT点。准备自己的数据时,保持元素、PAW、泛函及收敛设置一致;固定体积后是否放松原子或形状,要在整组中采用一致规则。本文只处理已有输出;如何生成体积点及提交任务见VASP状态方程教程。

2. 拟合,再看最低点是否被采样包围#

脚本使用:

fit = EOS('birch_murnaghan').fit(volume, energy)
V0 = fit.v0
B0_GPa = float(fit.b0_GPa)

拟合得到平衡体积约20.44396ų/atom,体模量约88.565GPa。fit.b0的基本单位是eV/ų,fit.b0_GPa转换到GPa;1eV/ų约为160.21766208GPa,不能混用两个数值。

Si真实体积点与EOS拟合

head analysis/si-eos-fit.csv
cat analysis/RESULTS.json

实心点是原始DFT数据,曲线是方程拟合,不是新增了301次DFT计算。虚线是拟合最低点;若最低点跑到所选体积区间外,应先扩展采样范围,而不是只接受一个输出数字。

3. 换成自己的体系#

完整提取和拟合在response.py的EOS部分;本例目录名和8原子计数都来自原始输入,不应照搬到其他结构。先核对每个目录的原子数和单位,再准备同一口径的volume、energy数组。

这里的曲线来自静态E0,没有振动或有限温度自由能。五点教学拟合也不等于截断能、k点和体积范围已经对所有目标性质收敛。pymatgen EOS接口。

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

查看配图

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

100%查看原图 ↗