目录

晶体随机合金和点缺陷模型生成工具

misaraty 更新 | 2026-08-25
前言
下载:PRISM

PRISM

PRISM仅依赖pymatgen,从CIF或POSCAR自动生成可复现的扩胞、类SQS随机合金以及空位、替位、四面体/八面体填隙结构。

PRISM 是一个面向周期性晶体计算的通用结构生成脚本。用户只需修改Python文件开头的参数区,即可读取有序CIF、POSCAR或 CONTCAR,完成扩胞、按数量/比例/百分比随机替换、类SQS 候选筛选以及点缺陷构建。随机合金同时考虑近邻原子对统计、局部浓度均匀性和替换原子分散度;多个空位或替位可以随机枚举并按照周期性最小距离排序;填隙位可以按照四面体、八面体或最大空隙几何搜索。所有结果同时写出CIF和POSCAR,并通过manifest.csv 保存结构来源、组成、随机种子、评分、原子序号、坐标和缺陷间距。

快速开始

  1. 将输入结构放到prism_structure_generator.py所在目录。

  2. 打开脚本并修改最前面的USER CONFIGURATION参数区。

  3. 运行:

1
python prism_structure_generator.py

也可以临时覆盖输入、输出目录和对角扩胞倍数:

1
2
3
4
python prism_structure_generator.py \
    -i input.cif \
    -o generated_structures \
    --supercell 2 2 2

读取POSCAR:

1
python prism_structure_generator.py -i POSCAR

查看命令行参数:

1
python prism_structure_generator.py --help

基本参数

1
2
3
4
INPUT_STRUCTURE = "input.cif"
OUTPUT_DIRECTORY = "generated_structures"
SUPERCELL_MATRIX = [2, 2, 2]
RANDOM_SEED = 2026
  • INPUT_STRUCTURE:输入CIF、POSCAR或CONTCAR。

  • OUTPUT_DIRECTORY:输出目录。

  • SUPERCELL_MATRIX:可以是[a, b, c],也可以是一般的3×3整数矩阵。

  • RANDOM_SEED:固定随机种子,保证结果可复现。

所有相对路径均以脚本所在目录为基准。

类SQS随机合金

百分比替换

下面表示将扩胞后Te位点的25%替换为Se:

1
2
3
4
5
GENERATE_RANDOM_ALLOY = True

RANDOM_REPLACEMENTS = [
    {"source": "Te", "target": "Se", "percent": 25},
]

每条规则只能指定以下三项中的一项:

1
2
3
{"source": "Te", "target": "Se", "count": 8}
{"source": "Te", "target": "Se", "fraction": 0.25}
{"source": "Te", "target": "Se", "percent": 25}

比例换算采用常规的0.5向上取整:

1
替换数 = int(母位点数 × 比例 + 0.5)

例如30个Te位点的25%为7.5,最终替换8个。

筛选参数

1
2
3
4
5
6
7
8
9
SQS_TRIALS = 5000
SQS_KEEP = 3
SQS_PAIR_SHELLS = 6
SQS_SHELL_TOLERANCE = 0.05
SQS_LOCAL_NEIGHBORS = 8

SQS_PAIR_WEIGHT = 1.0
SQS_LOCAL_UNIFORMITY_WEIGHT = 2.0
SQS_SEPARATION_WEIGHT = 2.0

综合评分由三部分组成:

  • pair:近邻壳层原子对分布与理想随机合金的偏差。

  • local:不同区域局部替换浓度的波动。

  • separation:替换原子的成团惩罚和周期性分散度。

若更重视统计随机性,可设置:

1
2
3
SQS_PAIR_WEIGHT = 1.0
SQS_LOCAL_UNIFORMITY_WEIGHT = 0.5
SQS_SEPARATION_WEIGHT = 0.5

若更重视VESTA中观察到的空间均匀性,可使用默认的1.0、2.0、2.0,或进一步增大后两项。

PRISM生成的是“类SQS”结构,不是ATAT/mcsqs严格定义的多体相关函数SQS。如果论文核心依赖严格SQS,应使用ATAT/mcsqs或icet对最终结构进行核验。

缺陷初始结构

1
DEFECT_BASE = "best_sqs"
  • best_sqs:从评分最优的类SQS结构分别生成各种缺陷。

  • supercell:从未随机替换的完整超胞分别生成各种缺陷。

每条缺陷规则都独立作用于同一个母结构,不会自动把“空位→替位→填隙”串联到同一个结构上。

空位

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
GENERATE_VACANCIES = True

VACANCY_DEFECTS = [
    {
        "name": "V_Te",
        "element": "Te",
        "count": 1,
        "selection": "random_separated",
        "structures": 3,
        "trials": 2000,
        "min_pair_distance": 0.0,
    },
]

selection可选:

  • random:纯随机选择,不比较缺陷间距。

  • random_separated:小搜索空间进行穷举,大搜索空间随机枚举,再按周期性最小距离从大到小排序;推荐用于多个同类缺陷。

  • separated:从一个靠近晶胞中心的位点开始,采用贪心最远点策略。

  • center:选择最靠近晶胞中心的位点,只适合单缺陷视觉定位,不推荐用于多个缺陷。

单空位不存在空位—空位距离。对于低对称或随机合金,建议生成多个单空位结构,因为不同位点的局部化学环境可能不同。

替位

下面在Te位点生成两个P替位,并优先保存P–P周期距离最大的三个构型:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
GENERATE_SUBSTITUTIONS = True

SUBSTITUTION_DEFECTS = [
    {
        "name": "P_Te",
        "source": "Te",
        "target": "P",
        "count": 2,
        "selection": "random_separated",
        "structures": 3,
        "trials": 5000,
        "min_pair_distance": 0.0,
    },
]

如果要求P–P距离至少为6 Å:

1
"min_pair_distance": 6.0

输出文件名会记录最小周期距离,例如:

1
2
03_substitution_P_Te_01_dmin11.301A.cif
POSCAR_03_substitution_P_Te_01_dmin11.301A

相同dmin的构型仍可能具有不同局部合金环境,正式计算建议全部弛豫并比较总能。如果研究缺陷成团或结合能,还应另外构造近距离和中等距离构型。

填隙

填隙原子不能简单放在任意随机坐标。PRISM先搜索几何候选,再输出结构。

四面体填隙

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
{
    "name": "Cd_i_tet",
    "element": "Cd",
    "site_type": "tetrahedral",
    "count": 1,
    "structures": 3,
    "grid": [12, 12, 12],
    "min_distance": 1.20,
    "tetra_distance_tolerance": 0.35,
    "tetra_angle_tolerance": 0.35,
    "fifth_neighbor_gap": 0.10,
    "dedup_distance": 0.70,
}

八面体填隙

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
{
    "name": "Cd_i_oct",
    "element": "Cd",
    "site_type": "octahedral",
    "count": 1,
    "structures": 3,
    "grid": [12, 12, 12],
    "min_distance": 1.20,
    "octa_distance_tolerance": 0.35,
    "octa_angle_tolerance": 0.35,
    "seventh_neighbor_gap": 0.10,
    "dedup_distance": 0.70,
}

最大空隙

若晶体中没有标准四面体或八面体空隙,可使用:

1
"site_type": "largest_void"

四面体/八面体分类基于网格搜索、近邻距离相似性和理想夹角偏差,是几何候选而不是能量稳定性的证明。所有填隙结构必须经过第一性原理或可靠势函数弛豫,并检查原子是否迁移到其他位点。

输出文件

典型输出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
generated_structures/
├── 00_supercell.cif
├── POSCAR_00_supercell
├── 01_sqs_rank01_score....cif
├── POSCAR_01_sqs_rank01_score...
├── 02_vacancy_....cif
├── 03_substitution_....cif
├── 04_interstitial_....cif
├── interstitial_candidates_....csv
└── manifest.csv

manifest.csv记录:

  • 结构名称和类别

  • 元素组成和原子数

  • 随机种子

  • 类SQS综合评分和分项评分

  • 缺陷位点原子序号和分数坐标

  • 空位/替位之间的周期性距离

  • 填隙候选类型、坐标、空隙半径和近邻几何

重要注意事项

  1. 输入结构必须是有序结构;脚本会拒绝分数占位的无序CIF。

  2. 所有距离均考虑周期性边界条件。使用VESTA检查时建议显示至少2×2×2周期复制。

  3. center在周期性体相中没有特殊物理意义,仅方便可视化。

  4. 多缺陷“尽量远离”适用于模拟稀释、近似独立缺陷;研究缺陷复合物时必须同时计算近距离构型。

  5. PRISM只生成初始结构,不计算缺陷形成能、电荷态、有限尺寸修正或化学势。

  6. CIF和POSCAR使用相同的原子顺序;POSCAR输出不会主动重新排序。

  7. 所有候选结构在用于论文前都应进行结构弛豫、距离检查和能量比较。

引用

论文正式发表后补充。