GPUMDkit专题

GPUMDkit 从 ABACUS 制作能量力训练集

用实际位移Si、水分子及MD输出说明原始坐标基准、晶格单位和逐帧标签。

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

下载原始输入输出、转换脚本与绘图资料包。解压进入目录,inputs 是原始参考输入,reference 是实际结果。bash run.sh all 只做转换与检查,不重新启动 DFT;每次在 work 新建目录,LAST-RUN.txt 记录位置。下面独立示例均从资料包根目录开始。

哪些文件必须放在一起#

保留同一份计算的 INPUT、STRU、OUT.suffix。SCF 与 MD 菜单读取原始结果,输出 NEP 的能量、力和可用 virial;不把缺少的标签补成零。

本篇有五个实际来源:2 原子 Si 基准 SCF、2 原子位移 Si SCF、3 原子 H₂O SCF、31 帧 Si NVE 和21 帧短 NPT 输出。位移 Si 与水的标签是本批在集群新计算的,其余使用既有实算结果。

原始斜晶胞方向与实际写出的逐帧晶胞

1. 位移 Si 输入长什么样#

本例 STRU:

ATOMIC_SPECIES
Si 28.0855 Si_ONCV_PBE-1.0.upf

NUMERICAL_ORBITAL
Si_gga_8au_100Ry_2s2p1d.orb

LATTICE_CONSTANT
10.26

LATTICE_VECTORS
0 0.5 0.5
0.5 0 0.5
0.5 0.5 0

ATOMIC_POSITIONS
Direct
Si
0.0
2
0 0 0 1 1 1
0.26 0.25 0.25 1 1 1

INPUT:

INPUT_PARAMETERS
suffix tutorial
calculation scf
basis_type pw
ecutwfc 40
scf_thr 1e-8
scf_nmax 150
ks_solver cg
device gpu
precision double
cal_force 1
cal_stress 1
pseudo_dir ./PP_ORB
orbital_dir ./PP_ORB
out_chg 0
out_pot 0
out_wfc_pw 0

pseudo_dir 与 orbital_dir 要指向自己的文件目录。包内 PP_ORB 提供与原例一致、已公开的选定官方文件;源信息与许可保留在其中。

使用 abacus/3.10.1-p100:GNU 13.3、HPC-X 2.50、OpenBLAS 0.3.30、CUDA 12.8。要自己计算,在已分配资源的工作副本中运行:

module purge
module load abacus/3.10.1-p100
export OMP_NUM_THREADS=2
mpirun -np 1 abacus > stdout.log

下载包的 compute.sbatch 可在新目录重算本批四个小 DFT 条件,不覆盖 inputs 中的参考输出。

2. 从 SCF 结果开始转换#

资料包根目录:

module purge
module load gpumdkit/1.5.8
mkdir my-abacus-scf
cp -r inputs/abacus-displaced my-abacus-scf/source
cd my-abacus-scf
gpumdkit.sh

输入 1 格式转换 → 104 ABACUS → 1 SCF → source。完成后 0 返回、0 退出。

head -n 4 NEPdataset/train.xyz

得到 1 个两原子构型,本例总能量约 −211.91230551 eV,最大原子力分量约 0.307704 eV/Å。它是未优化的位移结构,非零力正是这里要保存的标签。

输出保持原始 STRU 的晶胞与方向。不要先把结构用 CIF 工具重新定向,再直接拼接原日志里的力与应力;这些张量也有方向基准。

3. 多元素数据也要核对顺序#

独立使用 inputs/abacus-water,按同样的 SCF 菜单操作。这个真空盒 H₂O 输入依次为 H、H、O,输出应保留对应三行力。

实际结果总能量约 −466.12259888 eV,最大力分量约 0.858696 eV/Å。这是一个给定几何的 SCF 标签点,没有将它解释为已经优化的水分子结构。

4. MD 选择另一条菜单#

从资料包根目录准备:

mkdir my-abacus-md
cp -r inputs/abacus-md my-abacus-md/source
cd my-abacus-md
gpumdkit.sh

选择 1 → 104 → 2 MD → source。原目录需要包含 OUT.tutorial/running_md.log、MD_dump,以及配套 INPUT、STRU。

head -n 4 NEPdataset/train.xyz
cat NEPdataset/frame-map.json

本例得到 31 帧,包括完整初始帧。frame-map.json 记录输出帧序号与来源。NPT 输入 inputs/abacus-npt 用相同菜单,得到 21 帧;每一帧使用该帧写出的晶胞。

这两段短输出写出的体积均约 40.0115 ų,本例 NPT 段未出现可见的写出体积变化,不据此判断压力已经平衡。这里演示的是忠实读取每一帧数据。

5. 晶格单位与 virial#

MD_dump 中的 LATTICE_VECTORS 可以是以晶格常数为单位的数值。例如 0 0.5 0.5 还要乘这一帧 LATTICE_CONSTANT,才能得到 Å。

本例晶格常数约 5.429356 Å,因此向量分量为 0 2.714678 2.714678 Å。应力/virial 从 kbar 与实际晶胞体积换算,不能拿无量纲约化向量的行列式当 ų。

当前模块使用已配套的 dpdata 1.1.0,保持原始方向并按逐帧晶胞输出 E/F/virial。缺少 virial 时省略该可选字段;缺少能量或力、不收敛、已有 NEPdataset 时会停止并提示。重复转换请换新目录。

本入口不自动附加电荷、BEC 或自旋标签。标签规范与后续格式转换见数据检查与 DeepMD 衔接。

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

查看配图

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

100%查看原图 ↗