Phonopy 随机位移幅度与配对
用phonopy-init生成每原子独立幅度的随机结构,查看正负配对、自动数量与真实POSCAR。
阅读本篇目录
下载原生QHA、随机位移与结构优化实例包,在普通账号已分配的CPU资源中运行:
unzip phonopy-qha-random-relax-wave247.zip -d phonopy-practical
cd phonopy-practical
bash setup.sh
bash run.sh
setup.sh创建本目录个人.env,需要联网下载固定版本的conda-forge Linux x86_64包;公共模块不变。环境为Phonopy4.8.3、Python3.11.18、NumPy2.4.6、pypolymlp0.22.1和symfc1.7.3,实际预编译C/C++运行库libgcc/libstdcxx16.2.0。绘图另用集群phonopy/4.8.3模块。所有计算使用1个CPU线程,不需要GPU,不启动DFT。
一键流程输出source/、analysis/和figures/;已有结果目录不覆盖,重新练习请换新的解压目录。以下手动命令都放在独立新目录,便于自己修改参数。
1 准备一个明确的参考结构#
本节采用5.43 Å的2Si原胞,生成2×2×2、16Si超胞。它与同包QHA的五个DFT体积数据是两种用途,不混为一次计算。
cat source/unit.vasp
ls source/random-peratom/POSCAR-*
这些新POSCAR只有几何结构,没有新能量或力标签。
2 每个原子的位移幅度独立抽样#
mkdir manual-random
cd manual-random
../.env/bin/phonopy-init -c ../source/unit.vasp --dim '2 2 2' \
--rd 12 --amplitude 0.01 --amax 0.03 --amax-per-atom \
--random-seed 24701 --pm
ls POSCAR-* phonopy_disp.yaml
cd ..
--amplitude 0.01设置下限,--amax 0.03设置上限,单位Å;--amax-per-atom让每个原子独立选取这个区间中的位移长度,再配随机方向。这里是位移长度的均匀抽样,不是三维球壳体积中的均匀采样,也不是300 K热分布。
本例所有原子位移长度实际在0.01001434–0.02984257 Å之间,完整数据在analysis/random-radii.csv。
**当前4.8.3的固定幅度随机位移属于准备步骤,应使用phonopy-init。**主命令phonopy在load模式下对这一准备操作会提示改用init。已有力常数后按温度抽样的流程不同,见谐热快照。
3 为什么请求12个,却有24个结构#
--pm生成正负成对位移:对一个位移数组u,同时准备−u。因此--rd 12 --pm得到24个结构,但只有12组独立配对。
head -n 8 analysis/random-radii.csv
cat source/random-peratom/phonopy_disp.yaml

图中分布只统计每对中的一个独立构型,结构箭头放大20倍,真实POSCAR仍保持原位移。不要把同一正负对拆到训练和测试两侧,再把它们称为完全独立的泛化测试。
4 自动数量是什么意思#
ls source/random-auto/POSCAR-*
cat source/random-auto/phonopy_disp.yaml
自动分支使用--rd auto --rd-auto-factor 2。这个高对称小Si超胞实际生成2个结构,程序根据力常数模型的独立参数估计数量。
自动估计不是模型质量保证,不代表任意材料只需2个DFT标签。降低对称性、增加阶数、扩大相互作用范围或构型分布后,需求会改变。准备完结构后,仍要按目标势能面计算能量和力,整理单位、原子序及训练/验证/测试划分;可以结合训练数据HDF5整理继续。
设置定义见Phonopy官方命令和设置,上述终端流程使用集群实际4.8.3。