[toc]
小白,按教程写的,不一定对,但是,是一个完成的流程
数据准备
执行VASP计算获取OUTCAR
1 | mkdir 00.data |
创建VASP模拟输入数据
INCAR
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21SYSTEM = Water
! ab initio
PREC = Normal ! Precision level, standard precision
ENMAX = 400 ! cutoff should be set manually
ISMEAR = 0 ! Gaussian smearing; metals:1
SIGMA = 0.1 ! Smearing value in eV; metals:0.2
! MD
IBRION = 1 ! Activate MD
NFREE = 2 ! 2 independent degrees of freedom
NSW = 1000 ! Max electronic SCF steps
EDIFFG = -0.02 ! forces smaller 0.02 A/eV
POTIM = 2 ! Timestep in fs
MDALGO = 2 ! Nosé-Hoover thermostat
SMASS = 0 ! MD Algorithm: -3-microcanonical ensemble; 0-canonical ensemble
TEBEG = 40 ! Start temperature K
TEEND = 400 ! End temperature KKPOINTS
1
2
3
4
5Gamma-point only
0
Monkhorst Pack
1 1 1
0 0 0Gamma-point only:表示只使用伽玛点(k = 0),即在布里渊区的中心。这通常用于小系统或简单计算,因为只考虑伽玛点可以简化计算。
0:这是指定的 k 点数,”0” 表示只使用伽玛点,不进行额外的 k 点采样。
Monkhorst Pack:这是定义 k 点网格的方式,Monkhorst-Pack 方法通过在布里渊区中均匀地分布 k 点来生成网格,适合周期性系统。
1 1 1:这三位数字表示在三个方向上的 k 点数。在此例中,表示在每个方向上只使用一个 k 点(即只有伽玛点)。
0 0 0:这是对 k 点的偏移量,通常与 Monkhorst-Pack 网格一起使用。这里的 “0 0 0” 表示不进行任何偏移,直接在伽玛点。
POSCAR
1
2
3
4
5
6
7
8
9
10
11H2O_2
0.52918 ! scaling parameter
15 0 0
0 15 0
0 0 15
1 2
select
cart
0.00 0.00 0.00 F F F
1.10 -1.43 0.00 T T F
1.10 1.43 0.00 T T FPOTCAR
1
cat ~/softwares/VASP/PAW_PBE/O/POTCAR ~/softwares/VASP/PAW_PBE/H/POTCAR >POTCAR
1 | tree |
├── INCAR
├── KPOINTS
├── POSCAR
└── POTCAR
1 | mpirun -np 16 vasp_std |
.
├── CHG
├── CHGCAR
├── CONTCAR
├── DOSCAR
├── EIGENVAL
├── HILLSPOT
├── IBZKPT
├── ICONST
├── INCAR
├── KPOINTS
├── OSZICAR
├── OUTCAR
├── PCDAT
├── POSCAR
├── POTCAR
├── REPORT
├── vasprun.xml
├── WAVECAR
└── XDATCAR
1 | cp OUTCAR ../ |
.
├── OUTCAR
└── VASP
数据转换与划分
普通方法
1 | # split.py |
1 | cd data |
.
├── set.000
├── set.001
├── set.002
├── set.003
├── type_map.raw
└── type.raw
这里划分出四组数据,前三组作为训练集,最后一组作为测试集
1 | mkdir train_data && mkdir val_data |
这里是需要手动把训练集和测试集分配好
1 | tree -L 3 |
.
├── train_data
│ ├── data_0
│ │ ├── set.000
│ │ ├── type_map.raw
│ │ └── type.raw
│ ├── data_1
│ │ ├── set.001
│ │ ├── type_map.raw
│ │ └── type.raw
│ └── data_2
│ ├── set.002
│ ├── type_map.raw
│ └── type.raw
└── val_data
└── data_3
├── set.003
├── type_map.raw
└── type.raw
一步完成
1 | # split.py |
后面training_data和validation_data数据集路径需要相应修改为:
“systems”: [“../00.data/data/training_data/“],
“systems”: [“../00.data/data/validation_data/“],
准备input.json
指定训练参数
1 | cd ../../ |
输入下面内容,注意修改type_map,和training_data和validation_data数据集
1 | { |
训练与测试
1 | dp train input.json |
[2024-10-10 12:30:17,515] DEEPMD INFO batch 10000: val: rmse = 8.50e-03, rmse_e = 3.00e-03, rmse_f = 6.62e-03
[2024-10-10 12:30:17,515] DEEPMD INFO batch 10000: total wall time = 12.63 s
[2024-10-10 12:30:17,774] DEEPMD INFO saved checkpoint model.ckpt
[2024-10-10 12:30:17,774] DEEPMD INFO average training time: 0.0600 s/batch (exclude first 200 batches)
[2024-10-10 12:30:17,774] DEEPMD INFO finished training
[2024-10-10 12:30:17,774] DEEPMD INFO wall time: 610.835 s
WARNING:tensorflow:disable_mixed_precision_graph_rewrite() called when mixed precision is already disabled.
1 | import numpy as np |
- 预测:数据集小,仅供演示
1 | import dpdata |
1 | import numpy as np |
冻结与压缩
1 | dp freeze -o graph.pb |
graph-compress.pb graph.pb
执行DeepMD模拟
LAMMPS输入文件准备
- deepmd势:
graph.pb
1 | cd .. |
- input文件:
in.lammps
1 | # liquid water |
water的lammpsdata:
system.data不需要键角信息
1 | LAMMPS Description |
在具有兼容版本的 LAMMPS 环境中,执行深度势分子动力学:
1 | mpirun -np 8 lmp_mpi -i in.lammps |
LAMMPS (2 Aug 2023)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
Loaded 1 plugins from /home/xxx/softwares/deepmd-kit/lib/deepmd_lmp
Reading data file …为什么感觉跑的很慢呢?
所有文件保存在water_deepmd
参考
[1] https://docs.deepmodeling.com/projects/deepmd/en/r2/getting-started/index.html

