||
VASP计算中为了节约机时,加快计算速度,经常会采取固定一部分原子的策略来实现。
VASP的结构信息存放在名为POSCAR的文本文件中。一般的POSCAR文件如图1所示:
图1、默认的POSCAR文件格式
如果要固定某些原子,则需要在这个文本文件中加入一行Selective dynamics,以及每个原子坐标后面需要加 T(放开优化)和 F(固定坐标),三个T(F)代表x,y,z三个方向上都做限制。如图2:
图2、固定部分原子的坐标的POSCAR文本格式
知道了这个文本的格式,就可以清晰的知道,要固定某些原子,首先要知道这些原子的坐标,然后在它的坐标之后,加上F F F,剩下的原子后面加上T T T。问题就在于我们一般是在可视化的环境下,判断固定哪些原子的,如果手动的一个一个去加F和T,眼都看花了,也不一定能保证正确。幸运的是,现在有很多种方便的方法来处理这件事情。现将这些方法尽量按照历史顺序、列举一下,有更好的方法也请各位补充更正。
总体的思想就是把这个文本的原子坐标部分copy到excel,然后按照坐标数值的大小排序,最后把T T T,F F F写在后面,这个方法现在看来已经很笨了,效率较低,出错率也高,建议还在使这种方法的赶紧放弃。
怀旧热线:http://blog.sciencenet.cn/blog-478347-986198.html
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所示:
图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的原子都固定住。
ATOMSK:https://atomsk.univ-lille.fr/tutorial_vasp.php
当然,固定原子只是这些程序强大功能的一个小小分支。
扩展阅读:前面说过POSCAR固定原子其实就是一个文本的操作,如果你觉得黑箱操作不过瘾,想看看到底怎么操作的这个文本,可以抽时间学习一下shell,fortran,python是三种语言做这件事的不同方式:
shell(Lipai):http://home.ustc.edu.cn/~lipai/scripts/vasp_scripts/bash_fix_atom.html
fortran(qvasp):qvasp/qvasp-v2.2/source-code/fix-pos.f90
python(vaspkit):/utilities/POSCARtoolkit
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:
图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文件中原子的固定是一件很小的事情,但可以看出随着大家不断的使用,它的操作模式也经历了很大的变化,从最初的笨方法,到现在有很多方便的方法可以选择,大大的提高了我们的工作效率。相信随着各种脚本和程序的推出,以前很多“笨”方法慢慢都会被淘汰,是我们所有人都变得更聪明了吗?也不是,是有一些聪明、勤奋又爱分享的人,让很多操作变得越来越“傻瓜”,于是我们大多数人也变得“聪明”起来。谢谢这些贡献者,也希望越来越多人能够积极加入把操作变“傻瓜”的事业当中。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-29 04:24
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社