pymatgen专题

pymatgen:CuNi短程有序度实操

构造三种32原子CuNi排列,统计最近邻Cu–Ni连接,用实际数据解释负、近零与正的有序参数。

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

同样是50:50的CuNi,Cu和Ni在空间中怎么排列,会改变最近邻的元素配对。本例从自有实际Cu晶格构造32位点模型,只比较几何邻居统计,不计算合金能量。

下载输入、实际输出、完整分析与绘图脚本。

unzip pymatgen-composition-order-models-wave717-*.zip
cd pymatgen-composition-order-models
module load pymatgen/2026.9.24
bash results.sh
bash plot.sh

环境为pymatgen2026.9.24、Python3.11、NumPy/SciPy和Matplotlib。results.sh读已有结果;plot.sh把参考数据画到figures。run.sh会重新做这套小规模后处理,结果写到新建的analysis,不会启动DFT或MD。已有analysis时请保留它,在另一份解压目录分析。

三种实际构造的CuNi模型和最近邻异种元素有序参数

1. 准备晶格与超胞#

原Cu常规胞晶格常数为3.63502234402532Å,含4个FCC位点。用于建模的等价简明POSCAR为:

Cu FCC source geometry
1.0
3.63502234402532 0 0
0 3.63502234402532 0
0 0 3.63502234402532
Cu
4
Direct
0 0 0
0 0.5 0.5
0.5 0 0.5
0.5 0.5 0

完整原件保存在inputs/POSCAR-Cu。扩为2×2×2后有32个位点,再分配16Cu和16Ni。

python - <<'PY'
import numpy as np
from pymatgen.core import Structure
s = Structure.from_file('inputs/POSCAR-Cu')
s.make_supercell([2, 2, 2])
rng = np.random.default_rng(717012)
cu = set(rng.choice(len(s), len(s)//2, replace=False).tolist())
random_model = Structure(s.lattice,
    ['Cu' if i in cu else 'Ni' for i in range(len(s))], s.frac_coords)
random_model.to(filename='POSCAR-CuNi-my-random')
print(random_model.composition, len(random_model))
PY

参考包还含沿z规则交替的layered-L10和按z分区的segregated-slab。这里后一个名字表示元素分区排列,仍是三维周期体相胞,没有真空表面。三种模型晶格、坐标、组成相同,只改变元素标签,未重新弛豫。

2. 选择最近邻壳层#

本例FCC最近邻距离为a/√2=2.5703489492Å,每个位点有12个最近邻。接口的r为壳层中心,dr是半宽,本例取0.03Å。

python - <<'PY'
from pymatgen.core import Structure, Element
from pymatgen.analysis.disorder import get_warren_cowley_parameters
for name in ['layered-L10', 'balanced-random', 'segregated-slab']:
    s = Structure.from_file('reference-structures/POSCAR-CuNi-' + name)
    alpha = get_warren_cowley_parameters(s, r=2.5703489492249236, dr=0.03)
    print(name, alpha[Element('Cu'), Element('Ni')])
PY

换成有应变、热运动或不同晶格的结构时,要根据实际径向分布选壳层,不能照抄这个距离。

3. 读懂实际结果#

对异种元素Cu–Ni,本例报告:

α(Cu,Ni)=1−P(Ni|Cu)/c(Ni),其中c(Ni)=0.5。

排列 Cu最近邻中Ni的比例 α(Cu,Ni)
规则交替L1₀型 2/3 −0.333333
固定种子随机排列 0.5625 −0.125000
元素分区排列 1/3 +0.333333

负值表示异种近邻比该组成的独立随机基准更常见;正值表示异种近邻较少。32原子的单个随机样本并不保证α恰为0,也不是经过SQS优化的结构。

本例刻意展示异种元素项。该版本同种元素对的原生归一化公式不同,不能把字典里的所有项都不加区分地代入上述异种公式。

4. 对照邻居计数#

cat reference-data/CuNi-short-range-order.csv
cat reference-data/CuNi-directed-neighbor-counts.csv

第二个CSV给出中心元素、邻居元素、有向配对数、该中心元素的邻居总数和条件概率。本例另按周期镜像逐对数距离,独立核对了最近邻数和α。

这些结果描述所给排列的几何有序程度,没有推断混合焓、稳定相或有限温度平衡态。用于MD时,可逐帧统计并做时间/空间平均,再分析误差和收敛。

接口见pymatgen短程有序模块。

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

查看配图

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

100%查看原图 ↗