Phono3py 力收集与力常数
从真实ABACUS力日志建立FC2/FC3,展示有效位移、漂移处理、单位与实际拟合残差。
阅读本篇目录
这一篇从位移结构和力日志出发,生成 FORCES_FC3、fc2.hdf5 和 fc3.hdf5。结构YAML、力数据和力常数需要成套传递。
下载完整实例包,解压到自己的工作目录。包内含真实输入、已有力输出、28个计算条件、工具命令、结果CSV和绘图脚本。
1. 一条命令完成本例准备#
bash prepare.sh
ls model/
结果包括:
phono3py_disp.yaml
FORCES_FC3
fc2.hdf5
fc3.hdf5
fit-data.npz
RESULTS.json
已有本例 generated/ 位移目录,但还没有 model/ 时,底层步骤为:
module load phono3py/4.8.2
python collect_fit.py generated model
2. 脚本具体做什么#
- 读取原始Phono3py位移YAML,按映射表定位38个有效位移。
- 调用Phonopy的官方ABACUS力解析器,读取39份日志;原始力单位为eV/Å。
- 对每份力减去其平均漂移,再减去同样处理后的平衡结构残余力。
- 将38组有效力填入数据集,对76个未计算槽位按原生文件格式补零,并由原始YAML保留“排除”标记。
- 用symfc建立3 Å截断FC3,单独用traditional建立FC2并对称化,导出原生HDF5。
76组补零只是文件占位,不能当成76组“零力训练样本”。保留原始 phono3py_disp.yaml 与 FORCES_FC3 的组合即可,不必自行重写YAML结构。
3. 关键API#
完整脚本已在包内。核心拟合调用为:
p.produce_fc3(
fc_calculator='symfc',
fc_calculator_options='cutoff=3.0',
is_compact_fc=False,
)
p.produce_fc2(
fc_calculator='traditional',
is_compact_fc=False,
)
p.symmetrize_fc2()
Si16的本例FC2为16×16×3×3,FC3为16×16×16×3×3×3;前者单位eV/Ų,后者eV/ų。紧凑与完整力常数的维度不同,不能只根据文件名判断结构是否匹配。
4. 看拟合残差#
bash analyze.sh

38组位移全部参与拟合,力分量RMSE为 0.00019225 eV/Å,最大绝对残差 0.00129104 eV/Å。图中是同一批输入力的回算残差,说明本模型如何描述这些位移;它不是独立测试集精度,也不能代替超胞/截断/位移幅度的收敛检查。
5. 进入输运计算#
bash run.sh rta-q6-s0p1
脚本将三份输入复制到 work/rta-q6-s0p1/ 后运行。在自己的任务里至少一起传递 fc2.hdf5、fc3.hdf5、phono3py_disp.yaml;若只想从参考模型开始,可从 reference/model/复制同一套文件。
实际文件格式可参考Phono3py输入输出说明。对其他DFT程序,应使用对应的官方解析器,不把ABACUS日志改名成VASP输出。
symfc二、三、四阶力常数实例#
symfc专题提供实际Si16/54/128 NEP力标签、独立训练/验证/测试、14组拟合、截断/超胞与dense/梯度比较,以及正确原子映射后的Phonopy/Phono3py联用。6篇教程、6张实际结构与数据图和完整下载包配套;NEP标签不冒充DFT,有限模型不作收敛材料物性。