pymatgen:配比与界面反应能
用实际CuAu候选能量沿混合线求平衡反应和转折点,分清原子分数、每原子能与反应式单位。
阅读本篇目录
把两种材料放在一起时,可以先用体相候选能量查看可能的平衡反应产物,再决定是否需要建立显式界面。本例用实际Cu–Au能量演示InterfacialReactivity的混合线分析。
该工具求的是体相平衡反应能,不会自动建立界面,也不计算界面能、扩散速率或活化势垒。
unzip pymatgen-phase-interface-tools-wave718-*.zip
cd pymatgen-phase-interface-tools
module load pymatgen/2026.9.24
bash results.sh
bash plot.sh
后处理环境为pymatgen2026.9.24、Python3.11、NumPy、SciPy和Matplotlib。已有DFT能量直接复用;run.sh重新分析到新建的analysis,不提交DFT。原参考数据在reference-data,图片输出到figures。

1. 从实际数据建立相图#
输入为inputs/phase-structure.json,含六个同方法VASP候选;完整能量表和元素参考见化学势边界实例。
python - <<'PY'
import json
from pymatgen.core import Composition
from pymatgen.entries.computed_entries import ComputedEntry
from pymatgen.analysis.phase_diagram import PhaseDiagram
from pymatgen.analysis.interface_reactions import InterfacialReactivity
with open('inputs/phase-structure.json') as f:
source = json.load(f)['results']
entries = [ComputedEntry(r['composition'], r['energy'], entry_id=name)
for name, r in source.items()]
pd = PhaseDiagram(entries)
reaction = InterfacialReactivity(
Composition('Cu'), Composition('Au'), pd,
norm=True, use_hull_energy=True)
for index, x, energy, formula, per_reaction in reaction.get_kinks():
print(index, 'x(Cu)=', x, 'eV/atom=', energy,
formula, 'kJ/mol所打印反应=', per_reaction)
PY
norm=True在这个元素端点例子里对应原子分数;混合物写成xCu+(1−x)Au,x是Cu比例。不要把它当成Au比例,也不要直接推广成任意化合物的质量分数。
use_hull_energy=True用给定候选凸包的端点能量作为参考。对于本例的纯Cu、Au端点,它们就是实际元素参考。
2. 实际转折点#
cat reference-data/CuAu-interface-reaction-kinks.csv
| x(Cu) | 反应能/eV每原子 | 打印的反应 |
|---|---|---|
| 0 | 0 | Au→Au |
| 0.50 | −0.05645988875 | 0.5Cu+0.5Au→0.5CuAu |
| 0.75 | −0.047634769375 | 0.75Cu+0.25Au→0.25Cu₃Au |
| 1 | 0 | Cu→Cu |
转折点表示最低能平衡产物组合发生变化的位置。负值是相对于未混合元素端点的能量降低,不等于对应温度下会立即发生反应。
3. 反应式归一化要一起看#
x=0.5处打印反应的反应物总共是1个原子当量,所以−0.05645988875eV/atom对应−5.447549kJ/mol“该打印反应”。若改写成整数反应:
Cu+Au→CuAu,则反应能为−0.1129197775eV/化学式,约−10.895099kJ/mol CuAu。
两者相差2倍,来自反应式整体倍数,不是两种算法矛盾。对化合物端点更要保留原生反应式、计量系数和每原子基准。
4. 绘制整条混合曲线#
bash plot.sh
cat reference-data/CuAu-interface-reaction-curve.csv
随包脚本在101个Cu原子分数上读取候选凸包能量,并减去同配比的未混合端点能量;每个转折点还用独立线性规划和原子守恒核对。
5. 换自己的界面材料#
准备两种端材料及所有相关竞争相的兼容体相能量,建立PhaseDiagram,再替换两个Composition。使用固体电解质/电极等开放体系时,应另行明确开放元素和化学势,选择适用的grand-potential流程;不能把本例封闭二元混合线当作含储库的计算。
若还关心显式界面几何、界面应变和界面能,继续做结构与界面建模,然后实际计算界面超胞。当前例子只有六个真实Cu–Au候选,不包含温度、反应势垒或完整材料相集合。
接口见pymatgen界面反应模块。