dpdata专题

dpdata读取VASP、ABACUS、CP2K和LAMMPS

用真实计算结果核对能量、力、元素类型、单位和坐标旋转。

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

下载本篇输入、完整脚本、数据与高清图。解压后在新目录运行,reference保存鸢算科技实际运行的参考结果。

1 环境、输入和运行#

本例使用已有GPUMDkit环境中的dpdata 1.1.0及ASE进行数据整理,CPU即可运行。它将不同程序的结构、能量、力等整理为统一字段,不重新计算电子结构。

下载包包含9组真实Si双原子VASP输出、ABACUS Si输出、CP2K水分子输出以及从真实水轨迹导出的LAMMPS坐标。运行全部示例:

bash run.sh

只运行dpdata:

mkdir dpdata
cp -a inputs/dpdata dpdata/input
cp dpdata_examples.py dpdata/
cd dpdata
/public/toolkit/miniconda3/envs/gpumdkit-1.5.8/bin/python dpdata_examples.py

下载包没有POTCAR、波函数和许可程序;读取这些文本结果不需要重跑VASP。

2 读VASP:统一单位并核对坐标系#

import dpdata
s = dpdata.LabeledSystem('input/vasp/si-mode-+0.000/OUTCAR',
                        fmt='vasp/outcar')
print(s['energies'], s['forces'], s['cells'])
s.to('deepmd/npy', 'si-data')

LabeledSystem包含结构以及真实能量、力标签。dpdata常用坐标/晶胞单位Å、能量eV、力eV/Å、virial eV。本次未位移Si双原子总能 −10.84830721 eV,晶胞体积 40.89273222 ų;9个正负位移条件的总能范围为−10.84830721至−10.23029405 eV。

从9个真实VASP输出提取的Si位移能量和力分量

读取VASP时可能将晶胞旋转为下三角形式,力和坐标也随之旋转;不能只按原始x/y/z分量逐项相减就判定数据错误。配套脚本从原OUTCAR晶胞求旋转矩阵,验证其正交性后再比较力,并单独核对总能。

图中最大力分量是转换后坐标系中的分量,不是坐标无关的力模长。能量曲线仅用于演示真实标签提取,这9个相近位移不是覆盖全部Si相态的训练集。

3 读ABACUS#

s = dpdata.LabeledSystem('input/abacus', fmt='abacus/scf')
print(s['atom_names'], s['energies'], s['forces'])
s.to('deepmd/npy', 'abacus-data')

输入目录保留INPUT、STRU、KPT及OUT.tutorial/running_scf.log。本次2个Si的总能为 −211.92096574 eV,与原日志!FINAL_ETOT_IS一致。

ABACUS和VASP使用的赝势及能量基准可以不同,不能把两者的绝对能量直接比较,也不要未经统一计算设置就混成同一训练标签。

4 读LAMMPS坐标#

s = dpdata.System('input/lammps/water.dump',
                  fmt='lammps/dump', type_map=['O','H'])
print(s['atom_names'], s['atom_numbs'])

类型1对应O、类型2对应H,得到884个O和1768个H。该dump没有能量或力,所以使用System,不会自动产生DFT标签。类型表必须与你的LAMMPS输入一致,不能按元素字母顺序猜。

5 CP2K新版文本输出的转换桥接#

本次CP2K 2026.2使用FORCES|布局,与dpdata内置旧cp2k/output读取器预期不同。下载包cp2k()明确解析单帧ENERGY_FORCE的坐标、晶胞、能量与力,再通过ASE传给dpdata:

from ase.calculators.singlepoint import SinglePointCalculator
atom.calc = SinglePointCalculator(atom, energy=energy_eV, forces=forces_eV_A)
s = dpdata.LabeledSystem(atom, fmt='ase/structure')
s.to('extxyz', 'water.xyz')

atom和两个标签由下载包中完整解析代码生成;能量Hartree乘27.211386245988,力Hartree/Bohr乘27.211386245988/0.529177210903。3原子水的 −17.2195707301 Hartree转换为 −468.5683901277 eV,最大力分量为 0.727597 eV/Å。

这个桥接仅支持所示单帧、非周期的2026.2布局,并保留非周期属性;缺少应力时不会补造virial。更换CP2K版本或处理MD、结构优化多帧时,应改用匹配的读取器或扩展解析后逐帧核对。

参考:dpdata的数据模型与格式。在线文档可能包含本地1.1.0之后新增的插件,实际以加载环境为准。

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

查看配图

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

100%查看原图 ↗