GPUMDkit专题

GPUMDkit 建模、表面与点缺陷

用ASE搭建真实几何,再用GPUMDkit扩胞、转换和生成三种扰动。

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

下载本组输入、真实参考输出与绘图脚本,解压后进入资料包根目录。所有示例在自己的新目录执行,inputs和reference保留。默认bash run.sh all只做工具处理;需要重新训练时才提交compute.sbatch。

第一步:用ASE生成基准结构#

GPUMDkit擅长格式处理和扰动;切面和删除原子交给配套ASE。两者在同一个模块环境使用。本篇仅生成待计算结构,不给新结构沿用旧能量、旧力标签。

module load gpumdkit/1.5.8
mkdir -p work/build
cd work/build
python - <<'ASE'
from ase.build import bulk, surface
from ase.io import write
si = bulk("Si", "diamond", a=5.43, cubic=True)
bulk64 = si.repeat((2, 2, 2))
vacancy = bulk64.copy()
del vacancy[0]
slab = surface(si, (1, 1, 1), 4, vacuum=15.0, periodic=True)
for name, atoms in [("bulk64", bulk64), ("vacancy63", vacancy),
                    ("slab111", slab)]:
    atoms.pbc = True
    write(name + ".vasp", atoms, format="vasp", direct=True)
    print(name, len(atoms), atoms.get_volume())
ASE

本次生成64原子体相、63原子单空位及32原子(111)表面。表面两侧各留15Å真空,z晶胞长度42.54005Å;VASP/POSCAR和本例模型仍用三维周期边界,以真空隔开周期副本。它不是已优化表面,也没有表面能或空位形成能。

第二步:转换和扩胞#

gpumdkit.sh -pos2exyz bulk64.vasp bulk64.xyz
gpumdkit.sh -pos2exyz vacancy63.vasp vacancy63.xyz
gpumdkit.sh -pos2exyz slab111.vasp slab111.xyz
gpumdkit.sh -replicate bulk64.vasp supercell.vasp 256

本次目标256原子对应1×2×2重复,实际晶胞10.86×21.72×21.72ų。目标原子数入口会选择整数重复因子;自己的结构应检查实际原子数和长宽比,不能把目标值当作一定满足的承诺。

python - <<'ASE'
from ase.io import read
for f in ["bulk64.xyz", "vacancy63.xyz", "slab111.xyz", "supercell.vasp"]:
    a = read(f)
    print(f, len(a), a.cell.lengths(), a.pbc)
ASE

64原子体相、63原子空位及含真空的32原子表面实际坐标;红叉标出被删除位置

第三步:同时扰动晶胞和原子#

回到资料包根目录,复制提供的2原子Si结构:

mkdir -p work/perturb-uniform
cp inputs/sampling/POSCAR work/perturb-uniform/
cd work/perturb-uniform
python "$GPUMDkit_path/Scripts/sample_structures/perturb_structure.py" \
  POSCAR 3 0.01 0.02 uniform

依次表示3个结构、晶胞扰动参数0.01、原子位移参数0.02Å、uniform分布。工具输出POSCAR_*.vasp和perturb.txt。另外在新目录把最后参数改为normal和const,分别生成另两组;三种分布对位移参数的解释不同,normal参数不应当作绝对最大位移。

本次三个uniform结构体积为41.17608、41.15393、40.97620ų;基准为40.89273ų。三种分布的9个结构均保留Si元素和原子数,实际最短周期距离2.32714–2.38261Å。扰动是随机的,再运行会得到不同坐标。

需要纯晶胞应变或纯原子位移时,把另一个扰动参数设为0;先用小样本检查是否符合自己的采样意图。生成的新结构下一步送DFT单点计算,再按标签转换教程读取E/F/virial。不能把未计算扰动直接当作带DFT标签的训练集。

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

查看配图

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

100%查看原图 ↗