🔧 工作流脚本
工作流脚本用于自动化重复性的 DFT、MD 和 NEP 数据准备步骤。
脚本位置: Scripts/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
运行前,把结构文件放在当前目录。脚本按以下顺序检测:
- 如果存在一个或多个
.vasp文件,优先处理.vasp; - 如果
.vasp和.xyz同时存在,会打印提示,并只处理.vasp; - 如果没有
.vasp且只有一个.xyz,会把这个 extxyz 转为 POSCAR 文件; - 如果没有
.vasp且存在多个.xyz,会让用户选择一个。
运行前的典型目录:
或:
运行后脚本会创建:
current directory/
├── struct_fp/
│ ├── POSCAR_1.vasp
│ ├── POSCAR_2.vasp
│ └── ...
├── fp/
├── <prefix>_1/
├── <prefix>_2/
└── presub.sh
fp/ 是脚本自动创建的。脚本结束后,需要用户把 INCAR、POTCAR、KPOINTS 放到 fp/ 中,计算目录会链接这里的文件。
运行过程中输入的 prefix 会作为计算文件夹名前缀。后续使用 out2xyz 提取结果时,文件夹名会作为 config_type 写入 extxyz,便于之后检查结构来源。
CP2K
CP2K 可以从交互菜单进入,也可以直接命令行调用:
交互模式会要求输入:
示例:
CP2K 模板应设置为从 pos.xyz 读取坐标。参考模板在:
脚本会为每个结构生成 <prefix>_<index>/ 目录,并写入 input.inp 和 pos.xyz。
MD 采样预处理
GPUMD
运行前,把 .vasp 文件或一个 extxyz 文件放在当前目录。检测顺序与 VASP SCF 预处理一致:优先处理 .vasp;如果没有 .vasp 且存在多个 .xyz,会让用户选择一个。
运行前典型目录:
或:
运行后脚本会创建:
current directory/
├── struct_md/
│ ├── model_1.xyz
│ ├── model_2.xyz
│ └── ...
├── md/
├── sample_1/
├── sample_2/
└── presub.sh
md/ 是脚本自动创建的。脚本结束后,需要把 nep.txt 和 run_*.in 放入 md/。例如 run_1.in 会链接到 sample_1/run.in,run_2.in 会链接到 sample_2/run.in。
LAMMPS
运行前,把 .vasp 文件或一个 extxyz 文件放在当前目录;两种格式同时存在时优先处理 .vasp。
运行后脚本会创建:
current directory/
├── struct_md/
│ ├── lammps_1.data
│ ├── lammps_2.data
│ └── ...
├── md/
├── sample_1/
├── sample_2/
└── presub.sh
脚本结束后,需要把 lmprun.in 和 nep.txt 放到 md/ 中。
主动学习式流程
常见 NEP 数据迭代流程:
- 使用当前
nep.txt运行 MD; - 收集
dump.xyz或active.xyz; - 删除明显不合理结构;
- 选择多样性高或偏差大的结构;
- 运行 DFT 单点;
- 将 DFT 结果转换为 extxyz;
- 追加到
train.xyz; - 重新训练 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
然后根据你的集群系统提交生成的文件夹。
使用建议
- 工作流脚本和集群环境强相关,正式批量提交前先用少量结构测试。
- 模板文件如
INCAR、KPOINTS、POTCAR、run.in应仔细检查。 - 批量 DFT 前先用分析和采样脚本清理候选结构。