目录

一、概述

二、方法

1、excel排序法(已淘汰)

2、Materials Studio + Perl脚本法

3、VASPKIT、QVASP、ATOMSK等程序

4、实时操作的新模式:ase gui(最新)

三、总结


一、概述

VASP计算中为了节约机时,加快计算速度,经常会采取固定一部分原子的策略来实现。

VASP的结构信息存放在名为POSCAR的文本文件中。一般的POSCAR文件如图1所示:

图1、默认的POSCAR文件格式

如果要固定某些原子,则需要在这个文本文件中加入一行Selective dynamics,以及每个原子坐标后面需要加 T(放开优化)和 F(固定坐标),三个T(F)代表x,y,z三个方向上都做限制。如图2:

微信截图_20201121095507.png

图2、固定部分原子的坐标的POSCAR文本格式

知道了这个文本的格式,就可以清晰的知道,要固定某些原子,首先要知道这些原子的坐标,然后在它的坐标之后,加上F F F,剩下的原子后面加上T T T。问题就在于我们一般是在可视化的环境下,判断固定哪些原子的,如果手动的一个一个去加F和T,眼都看花了,也不一定能保证正确。幸运的是,现在有很多种方便的方法来处理这件事情。现将这些方法尽量按照历史顺序、列举一下,有更好的方法也请各位补充更正。

二、方法

1、excel排序法(已淘汰)

总体的思想就是把这个文本的原子坐标部分copy到excel,然后按照坐标数值的大小排序,最后把T T T,F F F写在后面,这个方法现在看来已经很笨了,效率较低,出错率也高,建议还在使这种方法的赶紧放弃。

怀旧热线:VASP构建表面结构(slab)如何固定部分原子(POSCAR)的简单方法(已淘汰,供怀旧使用)-CSDN博客

2、Materials Studio + Perl脚本法

MS支持perl脚本,武汉理工大学赵焱课题组,编写的perl脚本,可以直接读取MS的xsd结构文件信息,并转换为纯文本文件,非常方便使用。

链接:【VASP实用脚本】 Materials Studio一键获取POSCAR(可固定原子)的方法-CSDN博客

建议:如果后续还有版本升级的话,有两个小的建议,1、在脚本的最前面再加一个循环,可以一键把一个文件夹里所有的xsd文件批量转化为POSCAR并自动命名;2、在xsd2pos.pl的基础上,再写一个逆向的cont2xsd.pl,把优化好的CONTCAR读入到xsd里,便于优化结束后的在MS中可视化。

3、VASPKIT、QVASP、ATOMSK等程序

(1)VASPKIT目前支持两种不同的固定表面模式,如图3所示:

微信截图_20201121125626.png

                                      图3. VASPKIT固定原子工作界面

Fix atoms (FFF) by Layers模式,会让你输入一个判据,程序会根据这个值来判断一下结构可以分为多少层。然后输入你要固定的层数,就可以固定了。

Fix atoms (FFF) by Heights模式,就是让你输入z方向的坐标的一个最大值,一个最小值的数值,就可以固定这个范围内的所有原子了。

VASPKIT: Tutorials — VASPKIT 1.5 documentation

(2)QVASP里面也有这样一个命令来固定原子:qvasp -fix POSCAR

根据提示:Input the Z coordinate range you want to fix (eg: 0.1 0.2): 

输入两个数值就可以了。

QVASP: https://sourceforge.net/projects/qvasp/

(3)ATOMSK的命令稍微复杂些,需要你在一条命令里把你要输入的信息都输入完。比如:

atomsk -fix all below 4.05 Z vasp

意思就是把z方向,把坐标小于4.05的原子都固定住。

ATOMSK:Atomsk - Tutorial - VASP

当然,固定原子只是这些程序强大功能的一个小小分支。

扩展阅读:前面说过POSCAR固定原子其实就是一个文本的操作,如果你觉得黑箱操作不过瘾,想看看到底怎么操作的这个文本,可以抽时间学习一下shell,fortran,python是三种语言做这件事的不同方式:

4、实时操作的新模式:ase gui(最新)

我们一般都是在远程服务器上进行计算,比如搜索表面的过渡态时,一般习惯先把表面的所有原子都固定住,只放开表面上的反应物和产物,粗算一下。看着差不多了,再按照正常的放开表面的几层原子,再细算一下。这时,如果用方法2 的话,可视化程度很好,心里比较有底,但是完成第一步粗算以后,要把所以表面原子都固定的CONTCAR文件下载下来,然后再在MS里面设定新的固定原子,最后再把这些文件传到服务器,比较繁琐。如果使用方法3,纯文本操作,虽然不用再来回的下载上传,但如果不可视化看一眼这个结构,又不太放心。针对这种情况,推荐使用ase gui来解决这个问题。

如何安装ase,可以参考(Installation — ASE documentation),在服务器上的话,一般需要load 一下anaconda的环境,否则numpy,scipy等会缺失。

我们举一个TiO2(001)面的例子。

(1)在客户端登录服务器,安装好ase,在POSCAR所在的文件夹,运行命令:

ase gui POSCAR

(2)如果ase安装正常的话,将弹出ase gui的可视化界面,如图4:

图4,ase gui 初始画面

(3)为了看清楚成键情况,更加方便选择原子,设置一下View-Show bonds

图5. Show Bonds

(4)用右键转动一下,可以得到如下视图:

                                                               图6. 成键的视图。

(5)按住鼠标左键,选中想要固定的部分:

图7,选中原子

(6)可以看出,被选中的原子,边缘编程了粗线:

                                                        图8,选中的原子突出显示

(7)点击Tool-Constraints,选择Constrain selected atoms

                                                               图9,Tools菜单

(8)这时候你会发现,被固定了的原子上都打上了一个叉号,没固定的原子不变:

                                                图10. 固定的原子上,显示叉号。

(9)最后,保存文件的修改,File-Save,命名保存即可。

                  

                                                                      图11,保存

(10)这时候我们回到文件夹,看一下这个文件,发现已经按照我们的要求,固定好原子,在服务器上就可以直接使用了。(唯一的遗憾是ase gui有个bug,保存的POSCAR文件少一行元素行,希望以后的版本能修复)

                                                        图12,最终的结构文件

三、总结

    POSCAR文件中原子的固定是一件很小的事情,但可以看出随着大家不断的使用,它的操作模式也经历了很大的变化,从最初的笨方法,到现在有很多方便的方法可以选择,大大的提高了我们的工作效率。相信随着各种脚本和程序的推出,以前很多“笨”方法慢慢都会被淘汰,是我们所有人都变得更聪明了吗?也不是,是有一些聪明、勤奋又爱分享的人,让很多操作变得越来越“傻瓜”,于是我们大多数人也变得“聪明”起来。谢谢这些贡献者,也希望越来越多人能够积极加入把操作变“傻瓜”的事业当中。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐