ASE合金候选结构与能量凸包
五个Cu–Ni固定晶格EMT结构,计算形成能、分解组合与候选集合凸包。
阅读本篇目录
下载全部输入、可运行脚本、实际数据和四张高清图。在已分配CPU资源内,使用新解压目录执行 bash run.sh;ASE3.29.0、单进程单线程,生成 work/。本包不调用GPU或外部DFT程序。
1 这个例子解决什么问题#
给定一组候选结构及一致方法计算的能量,可以判断这组候选之间哪些组合能量更低。本例用ASE EMT快速计算Cu–Ni五种组成,演示形成能归一与PhaseDiagram接口,不将它称为真实Cu–Ni平衡相图。
所有候选均为同一个a=3.6Å的FCC四原子胞,Ni原子数依次为0、1、2、3、4;不优化原子或晶胞,不做有限温度混合熵计算。
bash run.sh
cat work/transport-phase-output/alloy.csv
ls work/transport-phase-output/alloy-*.extxyz
2 建立并计算五个候选#
from ase.build import bulk
from ase.calculators.emt import EMT
references = []
for n_Ni in range(5):
atoms = bulk('Cu', 'fcc', a=3.6, cubic=True)
atoms.symbols = ['Ni'] * n_Ni + ['Cu'] * (4 - n_Ni)
atoms.calc = EMT()
energy = atoms.get_potential_energy()
references.append((atoms.get_chemical_formula(), energy))
energy是整个四原子胞的eV总能。Cu和Ni两端也采用相同晶胞与势函数,避免把不同能量零点混到一起。这里的Ni端点受共同晶格参数约束,不是独立优化后的Ni基态。
3 形成能按原子数归一#
Ni原子分数为x,四原子胞能量记为E:
ΔEform/atom = [E − (1−x)E(Cu4) − xE(Ni4)] / 4
| 候选 | Ni原子分数 | 形成能/meV·atom⁻¹ | 高于候选凸包/meV·atom⁻¹ |
|---|---|---|---|
| Cu4 | 0 | 0 | 0 |
| Cu3Ni | 0.25 | 10.338584 | 10.338584 |
| Cu2Ni2 | 0.50 | 13.808074 | 13.808074 |
| CuNi3 | 0.75 | 10.372949 | 10.372949 |
| Ni4 | 1 | 0 | 0 |

对于这五个固定晶格EMT候选,三个混合组成都高于两端点连线。这一结论只针对当前势函数、结构和约束;不能据此推断真实合金的混溶温度或实际相分离行为。
4 用PhaseDiagram提取分解组合#
from ase.phasediagram import PhaseDiagram
pd = PhaseDiagram(references, verbose=False)
energy, indices, coefficients = pd.decompose(formula='Cu2Ni2')
print(energy, indices, coefficients)
返回当前参考集合中满足目标成分的最低能量组合、参考索引和系数。索引对应输入 references 的顺序;这里是按化学式组成求分解,不能把系数直接当作某个结构的原子坐标。
附件还用独立线性规划核对了相同组成约束,比较的是同一集合、同一归一规则的能量。加入新候选后,原凸包可能改变,因此应保存完整参考列表与来源。
5 用自己的DFT数据时怎样替换#
先准备元素参考和各组成的候选结构;使用一致泛函、赝势、截断能、电子与结构收敛标准计算,明确是否允许晶胞优化,再将化学式及对应整胞能量传入PhaseDiagram。不同胞大小必须保持化学式与能量对应。
需要有限温度相稳定性时,还要考虑相应的振动、电子、磁性或构型自由能,并确保候选相足够完整。本页的五个未优化经验势结构仅用于操作参考。参考:ASE相图接口。