首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Learn VASP The Hard Way

Ex50 影响功函数计算的因素(一)

前面我们通过Cu(111)表面作为例子,学会了功函数计算的基本步骤和可视化过程。那么功函数计算的时候,需要注意的事项有哪些呢?

1 INCAR中的参数

计算功函数的参数:LVHAR =.TRUE.

加入这一参数时,VASP只将静电势能写入LOCPOT文件中。

在早期的VASP版本中,静电势的写入是通过设置LVTOT这个参数的。

在5.2.12版本之后,如果你设置LVTOT= .TRUE. ,那么静电势,交换相关势都会写入到LVTOT中。由于我们计算功函数的时候,只需要静电势这一部分。所以,如果你用的是5.2.12版本之后的VASP,设置LVHAR= .TRUE. 即可。

如果有疑惑的话,不妨做个测试,分别设置LVTOT和LVHAR = .TRUE. 然后做个单点计算对比下结果。

设置LVTOT = .TRUE. 的结果如下:

设置LVHAR = .TRUE. 的结果如下:

我们对比下13-15Å范围内纵坐标的大小和平均值

很显然,两个参数对功函数的影响是不可忽略的。使用LVTOT这个参数,由于加入了交换相关势,曲线变得不再那么光滑,并且与LVHAR的结果有一定的偏差。所以,在计算功函数的时候,LVHAR这个参数一定要注意。

这一点也体现在VASP官网最新的ppt中,如下如:

(自己主动根据下图中的关键词找这个ppt,别问我要,也不要在大师兄群里求助浪费别人的时间。)

注意:在 hand-on-session(老版本的官方教程)中,使用的是LVTOT这个参数。老版本就是过时的意思。希望大家的以新版本的计算为准。

老版本中功函数的计算例子。

2 真空层的厚度及修改

真空层的厚度:指的是slab在z(或者c)方向上的长度减去表面原子在z方向的坐标。

Slab方向的长度,指的是POSCAR或者CONTCAR中第5行中的数值,上图箭头所指的地方。

那么我们怎么修改真空层的厚度呢?

由于slab模型中的原子部分就在那边乖乖地待着,我们只需改变slab中晶格常数在z或者c方向的长度即可。

例子1:上图中真空层的厚度为15 Å,我们需要一个20Å的slab模型,也就是在21.2994的基础上再加5个Å,等于26.2994。但这样做,对不对呢?

修改之后的POSCAR:

结构如下图:

我们发现slab的Cu原子部分之间好像也被拉长了。测量了一下两个Cu原子之间的距离为:2.956Å。

修改之前为: 2.547Å。

所以:我们在前面的操作中,直接修改的z方向的数值,方法是错误的。

原因在于:前面的结构中坐标为分数坐标: Direct

我们修改完成之后,Cu原子在c方向的距离也会发生相应的改变。

所以,如果直接修改POSCAR或者CONTCAR改变真空层厚度的话,我们一定一定要先将它们转化为Cartesian 坐标。怎么转化呢?

方法1:用软件操作,比如p4vasp。

我们可以切换坐标通过鼠标点一下即可,然后保存成Cartesian 的POSCAR。

当然啦,也可以使用其他软件,比如VESTA等等,更好的选择,也欢迎留言补充。

方法2:使用脚本转换:

1)VASP官网在POSCAR的解释部分,提到了怎么进行坐标切换的公式。

链接如下:https://cms.mpi.univie.ac.at/vasp/vasp/POSCAR_file.html

2)在此基础上,本人写了一个python的小脚本,可以实现Direct到Cartesian的转换。

运行如下:

图中流程的解释:

1)将一个计算中的CONTCAR复制过来;

2)使用head -n 10 看一下这个CONTCAR的文件结构。(10指的是前面10行,如果你想看前面5行,使用head -n 5 )

3)dire2cart.py CONTCAR 使用脚本进行转换,转换的对象为CONTCAR

4)转换完成后,Cartesian的保存为CONTCAR_C文件,

5)cat CONTCAR_C 这个命令查看转化后的内容。(当然也可以继续使用前面的head命令)

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171212G0230600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券