pymatgen专题

pymatgen凸包与Pourbaix图

用实际Cu–Au能量做候选凸包,再用有来源的Zn参考数据画电化学稳定区。

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

下载输入、实测结果和完整脚本。在解压目录运行 bash run.sh,结果写入 work/;reference/保留原始结构与CSV,脚本不会自动提交新的电子结构计算。

1 先检查能量和组成#

module load pymatgen/2026.9.24
python - <<'PHASE'
import json
from pymatgen.entries.computed_entries import ComputedEntry
from pymatgen.analysis.phase_diagram import PhaseDiagram
r = json.load(open('inputs/phase-structure.json'))['results']
entries = [ComputedEntry(x['composition'], x['energy'], entry_id=name)
           for name,x in r.items()]
pd = PhaseDiagram(entries)
for e in entries:
    print(e.entry_id, pd.get_form_energy_per_atom(e),
          pd.get_e_above_hull(e))
PHASE

每条输入是对应整个结构的总能eV与该结构的原子组成,不要把每原子能量误填成总能。元素端点和合金必须使用一致方法、势函数和收敛精度。

本例复用集群六组Cu–Au计算,结果为:

候选 形成能/eV·atom⁻¹ 高于凸包/meV·atom⁻¹
Cu、Au元素端点 0 0
Cu3Au −0.047635 0
CuAu −0.056460 0
CuAu3 −0.027278 0.952
另一Cu4Au4排列 −0.040957 15.503

实际Cu–Au能量的有限候选凸包

“在凸包上”仅针对给入的候选集合。本例未枚举全部有序相,也不包含有限温度熵;接近1 meV/atom的差别需要进一步数值收敛,不能据此宣布实际材料的完整相图。

2 查询分解参照#

entry = next(e for e in entries if e.entry_id == 'cuau-3')
parts, above = pd.get_decomp_and_e_above_hull(entry)
print([(e.entry_id, weight) for e,weight in parts.items()])

本例CuAu3分解参照为CuAu和Au,返回权重为原子归一化权重,不是未经换算的化学式摩尔系数。若想写配平反应,应再使用反应对象计算系数。

3 Pourbaix图需要另一类参照#

普通相图使用同方法总能;Pourbaix还需要一致的固体形成能、水/氢氧参照、离子溶液自由能与浓度。不要将上面的原始VASP总能直接填入PourbaixEntry。

本例在集群实际运行Zn电化学图后处理,输入为pymatgen官方离线测试数据中的24条Zn参照记录;不是本批新增DFT,也不是我们的实验测量。完整来源哈希与上游许可随包保留。

python - <<'PB'
from monty.serialization import loadfn
from pymatgen.analysis.pourbaix_diagram import PourbaixDiagram
entries = loadfn('inputs/pourbaix_test_data.json')['Zn']
pb = PourbaixDiagram(entries, filter_solids=True)
print(sorted(e.name for e in pb.stable_entries))
print(pb.find_stable_entry(pH=7, V=-1.5).name)
PB

默认参考浓度下,稳定域涉及Zn、ZnO、Zn²⁺、ZnHO₂⁻、ZnO₂²⁻。图中电位相对于SHE,虚线为该模型下水的稳定窗口。

Zn官方离线参照数据的Pourbaix图

4 浓度改变会移动边界#

low = PourbaixDiagram(entries, conc_dict={'Zn':1e-8},
                     filter_solids=True)
print(sorted(e.name for e in low.stable_entries))

本次低浓度图中Zn(HO)2(aq)进入稳定集合,说明浓度是模型输入的一部分。图反映热力学参照下的稳定性,不自动包含反应动力学、钝化膜生长速度或复杂配体。

有自己体系时,应先准备相互兼容的固体和离子参照,再选择pH、电位和浓度范围。在线数据库接口需要用户自己的API凭据,本例完全离线,不需要在输入或教程中写API key。

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

查看配图

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

100%查看原图 ↗