1 Fix_POSCAR(以atom_constrain.py为例)

1.1 atom_constrain.py 使用介绍

在对slab 结构进行计算时,有的时候为了减少计算量,可以考虑把slab 结构中某些层进行固定,目前固定的方法有很多,比如用MS进行手动固定,vaspkit-402 功能或许楠的POSCARtoolkit.py脚本等都可以实现不同方式的原子层固定,但目前vaspkit-402功能会把POSCAR坐标自动转换为笛卡尔坐标,POSCARtoolkit.py 功能虽然比较齐全,但操作比较复杂。因此,本脚本克服了上述问题,可以实现原本的POSCAR已经被固定或没被固定的情况,且输出文件不会对原有的POSCAR 进行转换。

脚本主要功能: 实现两种方式对POSCAR 进行选择性固定:

1555690223463

1555690327267

下面详细介绍两种方式的使用流程。

方式1:

atom_constrian.py 脚本拷贝到POSCAR 所在目录 然后python atom_constrain.py

屏幕将输出如下提示:

脚本已经把POSCAR按照 z 方向坐标进行按层排序,并把所有原子序号及坐标打印到屏幕,由于原本的POSCAR 是笛卡尔坐标,所以z坐标单位是真实长度,且此时其层间距数值较大,如上面的结果所示,倒数第二层与最后一层间距数值差异达到1.1A,这个差值可以作为Input: 后面层间距的阈值判断的依据,输入的阈值在(0,1.1)范围内时,比如0.3或0.9、或1.1 等,脚本会自动把POSCAR 中两层间的距离大于输入的阈值的原子算作不同的层,比如此例中将会计算出4层,如果输入的阈值为1.2 或更大,由于POSCAR没有任何两层间的距离比1.2大,因此整个POSCAR 将会被脚本认为只有一层。

本例输入阈值为1,其输出结果如下,提示有4层被找到以及让用户输入方式1 或方式2 ,在这里输入a(选择方式1):`

 

如上面的输出结果所示,当选择方式1 后,提示输入固定的层数,此处输入3,并输入固定的类型为:F F F

 

最后脚本把被固定的原子的序数打印出来,并把被固定的结果输出到 POSCAR_NEW 里面。如下所示:

注意:如果 输入a 或 F F F 提示有误,请输入'a' 和' F F F ' 替代!

 

方式2

使用方法和方式1基本相同,重新运行脚本,此次我故意选了一个分数坐标的 POSCAR

 

注意:由于此时的Z方向数值差异较小,为0.12左右,因此 输入阈值在(0,0.12)之间均可。

接下来按提示输入:

我选择了方式2,输入b ,层数输入4 5,并输入F F T 固定类型,表示 我将要把从底部往上的第一层 和第二层进行相应的固定。输出结果同样把被固定的原子数打印出来。其POSCAR_NEW显示如下:

 

1.2 把atom_constrain.py 加入vaspkit 统一管理

Vaspkit 目前功能越来越完善,如果用户自己有些小的脚本可以补充vaspkit的功能,那么,可以把自己的小脚本“集成到”vaspkit里面,用vaspkit统一管理自己的脚本,现在以atom_constrain.py为例讲解如何把该脚本“放到”vaspkit 里面,利用vaspkit 惯有的工作模式进行使用:

第一步:进入vaspkit安装目录下的utilities 目录,我安装vaspkit的路径如下 :

第二步:把atom_constrain.py 拷贝到此

第三步:vim ~/.vaspkit (或vi~/.vaspkit

按图下修改:注意图中箭头处

img

输入“:wq” ,保存并退出

第四步,进入含有POSCAR 的目录体验一把:

输入vaspkit--->>74得到如下图示:

img

接着输入u4 ,再输入任何字符回车后进入脚本工作页面:

img