GPUMD:准备 NaCl 长程模型标签
从真实NaCl晶胞与VASP-D3BJ输入开始,生成能量受力标签并检查k点与有限差分。
阅读本篇目录
本例用20个小NaCl晶胞演示长程模型的数据准备,随后在电荷模型与电荷+vdW实操训练两种模型。所有标签来自集群真实计算;原子电荷和C6没有参考标签,不能因模型输出了这些量就称其物理精度已经验证。
1. 下载后先画图#
下载NaCl真实标签、模型、完整输入生成器与绘图脚本,保存为 gpumd-NaCl-longrange-wave218.zip。
unzip gpumd-NaCl-longrange-wave218.zip -d nacl-longrange
cd nacl-longrange
bash view.sh
head data/NaCl-D3-labels.csv
figures/有四张图,analysis/有误差、受力差分和接口对照CSV。此步骤读取随包真实结果,不重新运行VASP或模型训练。重复画图时使用新解压目录。

2. 数据如何划分#
20个8原子晶胞含4Na+4Cl,晶格应变与小幅原子位移在标签计算前生成,固定为训练12、验证4、独立测试4个父构型。另有6个±0.01 Å差分点和3个4×4×4 k网格对照,共29次真实电子结构计算。差分和加密网格不加入训练。
本例VASP6.5.1由NVHPC25.3构建,GPU单进程单卡;PBE PAW version64 Na/Cl,ENCUT400 eV、EDIFF1E-6、IVDW12。GPUMD5.9.1由GCC13.3/CUDA12.9.86构建,P100/V10016G使用对应模块;后处理ASE3.29.0。
3. 生成并查看完整电子结构输入#
module load ase/3.29.0
python3 prepare_dft.py
cat dft-cases/NaCl-00/INCAR
cat dft-cases/NaCl-00/POSCAR
cat dft-cases/NaCl-00/KPOINTS
INCAR:
SYSTEM = NaCl PBE-D3BJ long-range labels
PREC = Accurate
GGA = PE
IVDW = 12
ENCUT = 400
EDIFF = 1E-6
ISMEAR = 0
SIGMA = 0.05
ISPIN = 1
NBANDS = 64
ALGO = Normal
NELM = 100
NELMIN = 4
ISTART = 0
ICHARG = 2
NSW = 0
IBRION = -1
ISIF = 2
ISYM = 0
LREAL = .FALSE.
LASPH = .TRUE.
ADDGRID = .TRUE.
LWAVE = .FALSE.
LCHARG = .FALSE.
NCORE = 1
KPAR = 1
POSCAR:
NaCl PBE-D3BJ long-range model tutorial
1.0
5.49578975292098 0.00233490157276 0.00000000000000
0.00000000000000 5.50009736929407 -0.00750612976897
0.00421263745705 0.00000000000000 5.54107517618007
Na Cl
4 4
Cartesian
0.01521821048820 -0.00552248912288 -0.00395725879744
-0.01338738495874 2.77892192656750 2.79573541925063
2.72559755497277 0.02751808529494 2.75858229088523
2.76384477714446 2.72547559914332 0.02282312569526
2.72083392118023 -0.02538260189466 -0.01701019746147
2.73754074167681 2.71943534302690 2.78844610843122
0.02975074463613 -0.02769212472396 2.77367059342208
-0.00532527024123 2.72817194185706 0.02195943213971
KPOINTS:
Gamma mesh for NaCl label demonstration
0
Gamma
3 3 3
0 0 0
NSW=0保持结构不动,ISYM=0保留所给位移,EDIFF=1E-6控制电子收敛。IVDW=12对应DFT-D3(BJ),见VASP官方说明。本例NBANDS64,并检查了最高能带占据;改变材料后应重新确认能带数。
4. 提交与提取#
生成器同时建立 batches/,每个任务申请1GPU、1CPU,按平台加载VASP模块。POTCAR按Na、Cl顺序取对应PAW,包内不分发POTCAR、波函数或VASP程序。以一个P100批次为例:
cd batches/p100-0
cat config.json
sbatch job.slurm
该批依次算两个结构。其他P100及V10016G批次进入相应目录提交;全部完成后回到包根目录:
module load ase/3.29.0
python3 parse_dft.py
head data/NaCl-D3-labels.csv
随包已有真实标签和模型,不需要为阅读教程重算29个结构。标签选择包含D3修正的原生TOTEN,单位eV/整个8原子晶胞;力取原生受力,单位eV/Å。train.xyz写整个晶胞能量,NEP输出能量列则是每原子值。
5. 检查能量和力是否一致#
三组DFT位移差分的最大受力偏差约 6.15×10⁻⁵ eV/Å。三个父构型从3×3×3加密到4×4×4后,能量变化约 0.026–0.050 meV/原子,最大受力变化约 1.65×10⁻⁵ eV/Å。
cat DFT-VALIDATION.json
这些是选定小晶胞的实际检查,不能据此推断其他材料的网格也已收敛。训练集覆盖应变和小位移,尚未提供表面、缺陷、液态或高温大畸变的精度依据。接下来保持此数据划分,分别训练两种长程模型。