pymatgen专题

pymatgen:配比与界面反应能

用实际CuAu候选能量沿混合线求平衡反应和转折点,分清原子分数、每原子能与反应式单位。

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

把两种材料放在一起时,可以先用体相候选能量查看可能的平衡反应产物,再决定是否需要建立显式界面。本例用实际Cu–Au能量演示InterfacialReactivity的混合线分析。

该工具求的是体相平衡反应能,不会自动建立界面,也不计算界面能、扩散速率或活化势垒。

下载六个实际能量条目、完整脚本、CSV与配图。

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。

Cu与Au沿配比变化的有限候选平衡反应能和实际平衡反应式

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界面反应模块。

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

查看配图

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

100%查看原图 ↗