Skip to content

🔧 工作流脚本

工作流脚本用于自动化重复性的 DFT、MD 和 NEP 数据准备步骤。

脚本位置: Scripts/workflow/

交互入口

gpumdkit.sh

选择:

3) Workflow

菜单如下:

+---------------------------------------------------------+
|                      WORKFLOW TOOLS                     |
+---------------------------------------------------------+
| 301) SCF batch pretreatment                             |
| 302) MD sample batch pretreatment (gpumd)               |
| 303) MD sample batch pretreatment (lmp)                 |
+---------------------------------------------------------+
| 000) Return to the main menu                            |
+---------------------------------------------------------+
Input the function number:

常用功能:

菜单 工作流 用途
301 SCF batch pretreatment 准备 DFT 单点计算
302 MD sample batch pretreatment (GPUMD) 准备 GPUMD 采样计算
303 MD sample batch pretreatment (LAMMPS) 准备 LAMMPS 采样计算

SCF 批处理预处理

适用于已有多个结构,需要准备第一性原理单点计算的情况。

VASP

gpumdkit.sh
# 选择 3 -> 301 -> VASP

运行前,把结构文件放在当前目录。脚本按以下顺序检测:

  1. 如果存在一个或多个 .vasp 文件,优先处理 .vasp
  2. 如果 .vasp.xyz 同时存在,会打印提示,并只处理 .vasp
  3. 如果没有 .vasp 且只有一个 .xyz,会把这个 extxyz 转为 POSCAR 文件;
  4. 如果没有 .vasp 且存在多个 .xyz,会让用户选择一个。

运行前的典型目录:

current directory/
├── POSCAR_1.vasp
├── POSCAR_2.vasp
└── POSCAR_3.vasp

或:

current directory/
└── sampled.xyz

运行后脚本会创建:

current directory/
├── struct_fp/
│   ├── POSCAR_1.vasp
│   ├── POSCAR_2.vasp
│   └── ...
├── fp/
├── <prefix>_1/
├── <prefix>_2/
└── presub.sh

fp/ 是脚本自动创建的。脚本结束后,需要用户把 INCARPOTCARKPOINTS 放到 fp/ 中,计算目录会链接这里的文件。

运行过程中输入的 prefix 会作为计算文件夹名前缀。后续使用 out2xyz 提取结果时,文件夹名会作为 config_type 写入 extxyz,便于之后检查结构来源。

CP2K

CP2K 可以从交互菜单进入,也可以直接命令行调用:

gpumdkit.sh
# 选择 3 -> 301 -> CP2K
python Scripts/workflow/scf_batch_pretreatment_cp2k.py train.xyz template.inp calc

交互模式会要求输入:

<extxyz_file> <template.inp> <prefix_name>

示例:

dump.xyz template.inp H2O

CP2K 模板应设置为从 pos.xyz 读取坐标。参考模板在:

Scripts/workflow/cp2k_template.inp

脚本会为每个结构生成 <prefix>_<index>/ 目录,并写入 input.inppos.xyz

MD 采样预处理

GPUMD

gpumdkit.sh
# 选择 3 -> 302

运行前,把 .vasp 文件或一个 extxyz 文件放在当前目录。检测顺序与 VASP SCF 预处理一致:优先处理 .vasp;如果没有 .vasp 且存在多个 .xyz,会让用户选择一个。

运行前典型目录:

current directory/
├── POSCAR_1.vasp
└── POSCAR_2.vasp

或:

current directory/
└── dump.xyz

运行后脚本会创建:

current directory/
├── struct_md/
│   ├── model_1.xyz
│   ├── model_2.xyz
│   └── ...
├── md/
├── sample_1/
├── sample_2/
└── presub.sh

md/ 是脚本自动创建的。脚本结束后,需要把 nep.txtrun_*.in 放入 md/。例如 run_1.in 会链接到 sample_1/run.inrun_2.in 会链接到 sample_2/run.in

LAMMPS

gpumdkit.sh
# 选择 3 -> 303

运行前,把 .vasp 文件或一个 extxyz 文件放在当前目录;两种格式同时存在时优先处理 .vasp

运行后脚本会创建:

current directory/
├── struct_md/
│   ├── lammps_1.data
│   ├── lammps_2.data
│   └── ...
├── md/
├── sample_1/
├── sample_2/
└── presub.sh

脚本结束后,需要把 lmprun.innep.txt 放到 md/ 中。

主动学习式流程

常见 NEP 数据迭代流程:

  1. 使用当前 nep.txt 运行 MD;
  2. 收集 dump.xyzactive.xyz
  3. 删除明显不合理结构;
  4. 选择多样性高或偏差大的结构;
  5. 运行 DFT 单点;
  6. 将 DFT 结果转换为 extxyz;
  7. 追加到 train.xyz
  8. 重新训练 NEP。

更完整的开发版主动学习脚本说明见 主动学习

基于模板的温度系列

对于简单的温度系列模拟,使用 shell 循环即可:

for temp in 300 500 700 900; do
    mkdir -p "${temp}K"
    cp model.xyz "${temp}K/"
    cp nep.txt "${temp}K/"
    sed "s/TEMPERATURE/$temp/g" run_template.in > "${temp}K/run.in"
done

然后根据你的集群系统提交生成的文件夹。

使用建议

  • 工作流脚本和集群环境强相关,正式批量提交前先用少量结构测试。
  • 模板文件如 INCARKPOINTSPOTCARrun.in 应仔细检查。
  • 批量 DFT 前先用分析和采样脚本清理候选结构。