symfc专题

symfc 位移与真实力标签

实际生成Si16/54/128位移结构,用GPUMD求力并保持独立训练、验证和测试。

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

拟合前先固定参考结构、原子顺序、长度与力的单位。结构文件里的原子数相同,不代表力与位移顺序一定相同。

下载完整Si实例包,解压到自己的工作目录。包内保留123个真实静态力条件、独立训练/验证/测试划分、14个拟合条件、原生导出文件与绘图脚本。

1. 本例结构与数据数量#

Si金刚石原胞2原子、晶格常数5.43 Å,按原胞重复得到:

超胞 原子数 训练 验证 测试 平衡结构
2×2×2 16 48 8 8 1
3×3×3 54 24 4 4 1
4×4×4 128 16 4 4 1

共123个实际静态条件。原胞重复数不能误当成常规8原子晶胞的重复数。

实际三个超胞

2. 重建位移结构#

/public/toolkit/miniconda3/envs/ase-3.29.0/bin/python \
  make_structures.py structures-new

这个已运行过的入口生成3份结构NPZ和 CASES.json,不自动覆盖当前计算输入。结构生成的核心为:

from ase.build import bulk
cell = bulk('Si', 'diamond', a=5.43).repeat((2, 2, 2))

脚本对每个结构生成固定种子的随机位移,去除整体平移,再按所有笛卡尔分量的RMS缩放。训练位移RMS交替为0.005、0.02、0.05 Å;验证和测试为0.03 Å,使用不同种子。RMS不等于每个原子的最大位移。

如果改动结构或位移文件,应重新计算对应的力,不能继续复用旧标签。

3. 对位移结构求力#

实例包已经提供结构NPZ与 potential.txt。在获得P100资源后:

bash static-all.sh

实际GPUMD run.in:

potential potential.txt
time_step 0
ensemble nve
dump_xyz 1 snapshot.xyz precision double mass force potential
run 1

time_step 0保持结构,snapshot.xyz导出力和能量。位移结构仍是周期体系;程序可能把坐标包回晶胞,所以应按晶格平移等价检查位置,不应把合法的周期包裹误判为结构移动。

程序只使用任务环境分配的GPU。默认无GPU列表时选单个设备;Slurm任务应保留调度器给出的设备环境,不把主机全部GPU写进自己的任务。

4. 收集数据#

static-all.sh末尾自动执行:

/public/toolkit/miniconda3/envs/ase-3.29.0/bin/python \
  collect_labels.py work labels

输出 labels/Si16-labels.npz、Si54-labels.npz、Si128-labels.npz。位移为Å,原子力为eV/Å。对每份力先减平均漂移,再减去同样处理的平衡结构残余力。平衡结构只是参照,不作为一份额外随机训练样本。

数组形状为 displacements=(构型数,原子数,3),forces同形;还保留原始力、能量、参考晶胞、原子编号与数据划分。训练只用 splits == 'train',验证/测试不参加拟合。

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

查看配图

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

100%查看原图 ↗