快乐科研,快乐生活分享 http://blog.sciencenet.cn/u/guolingju 夫未战而庙算胜者,得算多也;未战而庙算不胜者,得算少也.多算胜少算,而况于无算乎?

博文

VASP 固定POSCAR中部分原子的四类方法

已有 21147 次阅读 2020-11-21 14:47 |个人分类:第一性原理(vasp)|系统分类:科研笔记

一、概述

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

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

image.png

图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写在后面,这个方法现在看来已经很笨了,效率较低,出错率也高,建议还在使这种方法的赶紧放弃

怀旧热线:http://blog.sciencenet.cn/blog-478347-986198.html

2、Materials Studio + Perl脚本法

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

链接http://blog.sciencenet.cn/blog-478347-1199741.html

建议:如果后续还有版本升级的话,有两个小的建议,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: https://vaspkit.com/tutorials.html#fix-atoms-by-layers

(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的原子都固定住。

ATOMSKhttps://atomsk.univ-lille.fr/tutorial_vasp.php

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


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

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

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

如何安装ase,可以参考(https://wiki.fysik.dtu.dk/ase/install.html),在服务器上的话,一般需要load 一下anaconda的环境,否则numpy,scipy等会缺失。

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

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

ase gui POSCAR

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

image.png

图4,ase gui 初始画面

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

image.png

图5. Show Bonds

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

image.png

图6. 成键的视图。

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

image.png

图7,选中原子

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

image.png

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

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

image.pngimage.png

图9,Tools菜单

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

image.png

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

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

image.png

image.png

图11,保


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

image.png

图12,最终的结构文件

三、总结

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



https://blog.sciencenet.cn/blog-478347-1259200.html

上一篇:Visualbox 6.1.0版本无法共享粘贴板问题
下一篇:ase gui输出格式的修改
收藏 IP: 223.72.99.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-20 05:26

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部