type
status
date
slug
summary
tags
category
icon
password

VASP 批量计算


本节介绍几个常用于 VASP 批量计算的脚本:POSCAR.shlink.shbatchrunvaspkit.shbatchrunvasp.pbscheck.shfind.sh,并结合示例讲述如何使用脚本 vasp2xyz.shvasp_to_xyz.py 构建 .xyz 格式的势函数训练集。

1. 生成结构

准备训练集之前,首先要明确做一个怎样的势函数?通用势函数需要采样非常丰富的结构;而专注于研究某种性质的势函数,采样覆盖目标问题相关的势能面区域即可。常规的势函数训练集包括对应温度区间的 AIMD 采样结构,结合一定的原子坐标微扰结构(微扰操作见下文)即可。
AIMD 的精度不用要求太高,所以如果 AIMD 的温度区间是低温、室温或中温时可以使用 VASP MLFF(VASP 版本大于等于 6.3)加速采样,具体操作见下文。模拟过程中,AIMD 一般间隔 0.1 ps 对轨迹抽样,更小时间间隔内的结构之间具有强关联性,对增加训练集多样性无益,徒增训练集大小。
采样和微扰过后,需要重新进行高精度的单点能计算以获得高精度的原子受力和位力信息。如果研究高压或辐照体系,采样之后的单点能计算可能需要非常高的精度(例如 KSPACING = 0.1SIGMA = 0.02)来确保原子受力的准确。此外,辐照相关的势函数还需要非常多的小团簇结构,以充分覆盖原子局域环境的剧烈变化。

2. VASP MLFF 加速动力学采样

AIMD 采样时 INCAR 设置如下所示:
设置 MLFF 时,常用命令如下:
如果想要续算 MLFF,在当前目录下执行
并在 INCAR 中设置 ML_ISTART = 1 即可。

3. 对平衡晶胞施加微扰

对平衡的晶胞施加微扰,一般包括 ±3% 的随机形变和每个原子 0.05、0.10、0.20 Å 的随机位移(如果模拟对象包含非晶相或液相,随机位移可以逐渐增大到1.0 Å)。推荐使用更小的平衡晶胞(不超过64原子)来施加微扰,既不妨碍实现各种形变,又有效地控制了训练集中总的原子数目,是加速训练集构建行之有效的策略。
微扰后的结构可以使用 screen_forces.py 或类似脚本剔除不合理的结构(例如高嫩结构和原子受力特别大的结构)。微扰脚本 generate_random_perturbed_structures.py 如下(仅供参考):
模拟对象无序度较高时,可以使用 RAG(Randomized Atomic-system Generator)或类似的方法迅速采样中高能区域势能面,但是这种方法可能引入非物理结构导致势能面失真,需要谨慎处理。RAG 方法的具体细节参考 Efficient Training of Machine Learning Potentials by a Randomized Atomic-System Generator 一文。

4. VASP 批量计算

假如手里已经有了筛选后的结构文件,例如 iter0.xyz,使用 Ovito 将其输出为一帧一帧的 .vasp 结构文件存放在文件夹 iter0/ 下。使用 ./POSCAR.sh iter0/iter0/ 下的每一帧 .vasp 结构文件转为对应的子文件夹及子文件夹中的 POSCAR 文件。
POSCAR.sh 脚本如下:
拷贝 link.shbatchrunvaspkit.shbatchrunvasp.pbscheck.shfind.shCONTCAR.shiter0/ 下,并在 iter0/ 下准备批量计算用到的其它输入文件如 INCARKPOINTSPOTCAR。这里给出一个单点计算的 INCAR 示例:
使用 ./link.sh INCAR KPOINTS POTCAR 将输入文件链接到每一个子文件下。以 INCAR 为例,此时修改任何一个 INCAR,所有的 INCAR 都会改变。link.sh 脚本如下:
如果结构文件的元素种类不同一,那么单点计算不能使用同样的 POTCAR;类似的,如果结构文件的晶胞大小不一致,那么单点计算不能使用同样的 KPOINTS(使用 KSPACING 参数就没有这个烦恼)。这时可以使用 ./batchrunvaspkit.sh 批量调用 Vaspkit 生成需要的输入文件。
以生成 KPOINTS 为例,batchrunvaspkit.sh 脚本如下:
输入文件齐全后,可以使用 qsub batchrunvasp.pbs 提交作业。我个人的 batchrunvasp.pbs 脚本如下:
计算过程中,每一个子任务完成都会在 ./tmp 文件中输出对应信息。计算完成后,使用 ./check.sh 检查收敛情况。check.sh 脚本如下:
考虑到每个人的磁盘空间是有限的,计算完成后删除所在目录下的 CHGCHGCARWAVECAR 文件甚至 POTCAR 是很有必要的。使用 ./find.sh CHG CHGCAR WAVECAR 或者 find . \\( -name "CHG" -o -name "CHGCAR" -o -name "WAVECAR" \\) -exec rm {} + 删除不需要的文件。

5. 单点数据收集

为了收集单点计算的数据,可以使用 vasp_to_xyz.py 脚本从 vasprun.xml 文件中提取 NEP 训练所需的 .xyz 格式的结构文件。使用 vasp2xyz.sh 脚本可以批量提取并将结构文件合并到一个 .xyz 文件中。vasp_to_xyz.py 脚本如下:
vasp2xyz.sh 脚本调用了上面的 vasp_to_xyz.py 脚本,具体代码如下:
从头开始离线编译最新版GROMACSVASP声子谱计算
Loading...