PFD-kit 结构扰动与超胞实操
用六个实际命令演示晶胞、原子位移、选定比例和超胞,说明输出为什么还不能直接训练。
阅读本篇目录
下载结构、实际扰动结果、Si数据、预训练/微调模型和脚本,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd pfd-entrypoint-examples
bash results.sh
bash plot.sh
PFD-kit使用集群0.10.13版,Python3.12.14。参考结构和DFT标签来自本站已有小Si例子,这次没有重新计算DFT。
1. 从一个Si8结构开始#
module purge
module load pfd-kit/0.10.13
cat inputs/Si8.vasp
mkdir my-perturb
cd my-perturb
cp ../inputs/Si8.vasp .
pfd perturb Si8.vasp -n 4
输出 pert_Si8.extxyz,包含四个结构。默认晶胞扰动幅度0.05、原子位移参数0.2 Å、normal分布。输入结构是本例Si8常规胞,不需要POTCAR;本命令不会启动VASP。
默认扰动对精细参考结构可能偏大。第一次学习时可以先限制晶胞不变,并缩小原子位移。
mkdir ../my-uniform
cd ../my-uniform
cp ../inputs/Si8.vasp .
pfd perturb Si8.vasp -n 4 -c 0 -d .03 -s uniform
2. 三种位移分布不是同一个“最大位移”#
| 分布 | 本例参数d | 含义 |
|---|---|---|
| normal | 0.03 Å | 各分量标准差d/√3,向量长度不设硬上限 |
| uniform | 0.03 Å | 球内均匀取位移,长度不超过d |
| const | 0.02 Å | 被选中原子的位移长度固定为d |
本次cell-normal中实际最大原子位移可超过0.03 Å,这是normal分布的定义,不是参数失效。晶胞变化带来的整体伸缩和额外原子位移还应分开比较。
mkdir ../my-half
cd ../my-half
cp ../inputs/Si8.vasp .
pfd perturb Si8.vasp -n 3 -c 0 -d .02 -s const -a .5
这里Si8中每帧恰好选4个原子位移0.02 Å,其他4个不动。安装版实现选取 int(a*N)个原子,不是对每个原子独立投掷概率;小体系里非整数会向下取整。
3. 晶胞扰动和超胞#
晶胞变换采用对称随机矩阵:对角变化在±c,非对角在±c/2内。变换晶胞时先保留原子分数坐标,再加原子位移。因此不能只用两份笛卡尔坐标之差判断额外扰动大小。
mkdir ../my-cell
cd ../my-cell
cp ../inputs/Si8.vasp .
pfd perturb Si8.vasp -n 4 -c .01 -d .03 -s normal
先生成2×1×1超胞而不加扰动:
mkdir ../my-supercell
cd ../my-supercell
cp ../inputs/Si8.vasp .
pfd perturb Si8.vasp -n 1 -c 0 -d 0 -r 2 1 1
输出16个原子。-r 2表示三个方向均重复2次,Si8变成64原子;不是只沿一个方向重复。
4. 本次实际生成的结构#
| 例子 | 帧数 | 每帧原子数 | 主要操作 |
|---|---|---|---|
| default | 4 | 8 | 默认晶胞与normal原子扰动 |
| uniform | 4 | 8 | 固定晶胞、球内位移 |
| constant-half | 3 | 8 | 4个原子各位移0.02 Å |
| cell-normal | 4 | 8 | 1%晶胞与normal原子扰动 |
| repeat-211 | 1 | 16 | 2×1×1超胞 |
| repeat-2 | 1 | 64 | 2×2×2超胞 |

原生命令没有seed选项;包内 scripts/perturb.py在同一Python进程中设置NumPy种子,再调用原生入口,方便对照参考结果。终端直接运行会生成新的随机结构。
cd ..
python3 scripts/perturb.py
这条命令应在解压包根目录执行;它创建独立work目录,已有目录时拒绝覆盖。
5. 生成结构后还缺什么#
本次17帧都只有几何,没有能量和力标签。先筛除过近原子或不合理晶胞,再使用一致的DFT方法标注,才能进入监督训练;不要把extxyz后缀理解成已具备训练标签。后续参考数据与标签和真实DFT补标微调。命令说明可对照PFD-kit源码与文档。