Ex2.7 输入文件的检查
VASP输入文件的检查,不论对于老司机,还是新手菜鸟来说,都是一个非常关键的,不能忽略的计算步骤。
我们要时刻牢记DFT计算的核心法则:Rubbish in, Rubbish out。当你给VASP输入一堆垃圾的时候,最好的结果就是VASP罢工,我们有机会可以重新修改再提交。如果VASP不罢工,就会给你一些垃圾的结果供你分析,然后在垃圾结果的基础上,你分析的头头是道,却不知道从根本上你就已经错了,路已经走偏了。 所以输入文件的检查是避免输入垃圾input的最后一道关卡。另外一点是,当前热门的大模型训练也是遵循的这一个原则,数据的好坏是一个成功大模型的重要保障。好的大模型肯定有一个高质量的数据作为支撑,垃圾的数据是训练不出好的大模型的。这就类似三字经开头的:人之初,性本善,性相近,习相远。思路扯回来,下面我们围绕着VASP的几个关键输入文件罗列一下Rubbish的一些特征。
前面我们已经讲到四个输入文件:INCAR
, KPOINTS
, POSCAR
,POTCAR
,此外,还有一个提交任务的脚本script,总共五个文件。可以用一句话来帮助记忆:I Kick PPs
, 翻译过来就是我踢屁股
,我踢PP
。当然,你也可以把Kick
换成Kiss
,只要方便记忆就行。
1 INCAR
:
1.1 INCAR 中的参数的书写是不是正确? 比如 IBRION = 5
,写成 IBRIOM = 5
。这样的低级拼写错误一定要避免。如何避免呢? 可以针对自己的体系,把一些常用计算类型的INCAR提前保存起来,用的时候直接复制,尽量避免重新输入的这一过程,从而减少拼写错误的出现。
1.2 我们算的是什么体系,对应的参数是否设置正确?
- 比如对于分子体系,
ISMEAR = 0
, 你使用了适用于金属体系的ISMEAR = 1
。 - 有磁性,初始磁矩设置会加快收敛的速度,你设置了没?
- 有些DFT+U的计算,U值是否跟POSCAR中的元素一一对应,同样适用于上一点
1.3 我们算的是什么任务,对应的参数是否设置正确。
- 算NEB,INCAR中 IMAGE的数目跟实际的是否一致?用VTST还是VASP自带的optimizer?
- 算频率,
IBRION = 5
,NFREE
以及POTIM
设置了没?NCORE
等参数有没有删掉? - 算Bader电荷,DOS等电子结构分析的时候,哪些参数需要注意?
- 优化结构的时候,怎么样才能保证电子结构和几何结构优化顺利进行?
2 KPOINTS
- KPOINTS越大,计算速度越慢,可以说是对计算速度影响最大的一个因素。很多人为了加快计算速度,去INCAR中调试ENCUT等参数,效果甚微。
- VASP 的计算可以分为粗算和精算两种,前者就是马马虎虎算一下,快读得到一个
more or less good
的结果去进行下一步的精算。 因为不管是VASP还是其他计算软件,在保持计算参数不变的情况下,结构所具有的物理化学意义越合理,电子结构收敛的也就越快,几何结构也是如此。 因此,在粗算这一步的时候,我们的目标就是快速通过VASP得到一个比较合理的模型结构,对于参数的选择并不是很严格,此时就可以play with the KPOINTS
来极大的加快自己的计算速度。 - 在计算吸附的时候,我们需要用到slab+species 和 slab 的能量,那么计算这两个模型的时候, KPOINTS是否一致?
- 能带计算的时候,K-Path是否设置合理?
- 对于六方晶系的金属,比如
Ru
, KPOINTS需要Gamma centered
,写对了没? - 当体系的模型变大(小)的时候,KPOINTS 有没有相应的改变?
- 还有其他的,后面再继续补充。
3POSCAR
- POSCAR 是我们理论计算的模型结构文件,模型对不对,是否合理,这是一个很有技术含量的活(后面会单独写一个章节进行介绍),即使对于单原子能量的计算,依然有很多人不看说明书,在那里瞎算。
- 明确计算的体系以及模型的大小;
- 明确计算的具体任务,优化还是算频率等;在做表面计算的时候,经常需要固定和放开表面的原子。优化的时候需要放开,算频率的时候则需要固定住。有时候拿优化的结果,直接算频率就会得到一些意外的惊喜,本来一小时的工作,一天都算不完。
4 POTCAR
- POTCAR 的选择是否合理? 有没有参考VASP的推荐说明
- POTCAR 中元素的顺序是否跟POSCAR中的一致? 这也是大家经常出现的错误。
- POTCAR 有没有在计算文件中?很多人忘记放POTCAR就直接提交任务,这也是经常出现的一个错误。
5 scripts
- 提交任务的脚本,使用的节点数,核数要估算好。
- 计算需要的内存
Memory
有时候也需要设置的大写,比如VASP最新的ML功能,内存小了就容易出错。 - 有些服务器具有不同的
partition
,你的任务是否提交到正确的那个上了? - 如果KPOINTS 是 3x3x1,用vasp_gam 版本就会出错。
- 计算结束后,可以放一些后处理的脚本或者清理文件的命令,这些命令是否准确?
小结:
对于新手来说,本节内容只是简单介绍一些需要的注意事项,但是我们连O
原子的计算还没实战,说这些着实有些太超纲了,如面熟练了再回来看一看。只要对下面两点有印象就好准备输入文件的时候牢牢记住Rubbish in, Rubbish out
这一个核心法则:
- 提交任务之前按照
I Kick/Kiss PPs
这一口诀,再次检查输入文件。