当前位置: 首页 > 第一原理 >【转帖】VASP 初学者必读

【转帖】VASP 初学者必读

作者 顺水
来源: 小木虫 14000 280 举报帖子
+关注

VASP 初学者必读
初学VASP(一) what's it?

VASP = Vienna Ab-initio Simulation Package

VASP is a complex package for performing ab-initio quantum-mechanical
molecular dynamics (MD) simulations using pseudopotentials (如超软赝势US-PP)
or the projector-augmented wave (PAW) method and a plane wave basis set.

The approach implemented in VASP is based on the (finite-temperature)
local-density approximation with the free energy as variational quantity
and an exact evaluation of the instantaneous electronic ground state at
each MD time step.

它的好处主要包括
基组小适于第一行元素和过渡金属,
大体系计算快(<4000价电子),
适于平行计算(Unix/Linux)
其他特性还包括自动对称性分析、加速收敛算法另文涉及。

一个简单的VASP作业主要涉及四个输入文件:
INCAR(作业细节) POSCAR(体系坐标) POTCAR(赝势) KPONITS(k空间描述)
初学VASP(二) 布里赫定理

本文简单介绍点能带理论的基础知识 以利于后文讨论

布里赫(F.Bloch) 参考书:《固体能带理论》谢希德 陆栋 主编

Bloch定理

周期性势场的单电子薛定谔方程的非简并解和适当选择组合系数的简并解同时
是平移算符T(Rl)的属于本征值exp(ik•Rl)的本征函数

数学表示:
T(Rl)ψn(k,r) = ψn(k,r+Rl) = exp(ik•Rl)•ψn(k,r)

ψn(k,r)称为Bloch函数,用它描写的电子也称为布里赫电子

推论一:
晶格电子可用通过晶格周期性调幅的平面波表示。由此我们知道k的物理意义 波矢

推论二:
若Km•Rl = 2nπ,即Km为倒格矢,那么
ψn(k,r) = ψn(k+Km,r)

所以我们将k值限定在一个包括所有不等价k的区域求解薛定谔方程,这个区域称为
布里渊区(Brillouin,没错,就是量化课上CI方法中最重要的基石Brillouin定理的那位
)在布里渊区,对于每个n,En(k)是一个k的连续、可区分(非简并情况)的函数,称为能带
,所有的能带称为能带结构。

ok 那么实际上VASP的计算就是利用以上定理,通过T算符的变换,将实空间(r空间)和动
量空间(k空间)联系起来,利用晶格的周期性简化计算,所以在后面的讨论中将常出现
band,k-points,projectors in real space等概念。
初学VASP(三) 描述原子坐标

POSCAR = position + CAR

第1行:任意文字注释

第2行:晶格常数,单位A,后面所有的长度值得自原值除以此值
a=b=c时取a即可,否则个人习惯取三者最大
若取负值,则为晶胞体积,单位A3

第3-5行:定义晶矢 参见《固体量子化学——材料化学的理论基础》赵成大

如 对于正交晶体 a=20.022 b=19.899 c=13.383 α=β=γ=90
可以这样定义
20.022
1.00000 0.00000 0.00000
0.00000 0.99386 0.00000
0.00000 0.00000 0.66841
又如 对于面心立方晶体 a=b=c=3.57 α=β=γ=90
可以定义如下
3.57
0.0 0.5 0.5   (1/2(b+c))
0.5 0.0 0.5   (1/2(a+c))
0.5 0.5 0.0   (1/2(a+b))

第6行:每种元素的原子数,特别注意顺序,要与下面的坐标顺序以及POTCAR中
的顺序一致

第7行:可省略,无需空行。
做动力学时,是否需要固定部分离子的坐标。若是,此行以'S'或者's'首字即可。

第8行开始为离子的坐标,格式为
option line
coordinate1 of element1
coordinate2 of element1
...
coordinateN of element1
option line
coordinate1 of element2
coordinate2 of element2
...
coordinateM of element2
...
其中,option line指定输入坐标的格式,除了第一个以外,如果后面的输入格式同前,
则都可以无空行省略。
option line可指定的输入坐标格式有两种
'D'or'd' for direct mode
'C'or'c'or'K'or'k' for cartesian mode
顾名思义,前者是定义在三个晶矢方向上的坐标
R=R1×x+R2×y+R3×z R1,R2,R3为前面的晶矢,x,y,z为输入的三个坐标,R为坐标位矢
而后者只是简单的将直角坐标除以前面第二行定义的晶胞常数
两者可以混用,但不推荐。

如果第7行设定了S(Selective Dynamic),则可以用以下形式定义各坐标是否可以移动
Selective dynamics
Cartesian
0.00 0.00 0.00 T T F
0.25 0.25 0.25 F F F
初学VASP(四) k点的选择

如前所述
The Bloch theorem changes the problem of calculating an infinite number of
electronic wavefucntions to one of calculating a finite number of
wavefunctions at an infinite number of k-points. (参见CASTEP的帮助文档,他和
VASP是亲兄弟)。

所以呢,一般来说,k点越密越多,计算精度也越高,当然计算成本也越高。
嗯,对于k点的需求,金属>>半导体,绝缘体,不过呢,很多时候主要还是受硬件限制
简约化可以使k点的数目大大下降。对于原子数较多的体系的计算,就需要谨慎的尝试  
k点数目,在避免或者预先评估wrap-around error的前提下尽量减少k点数目。

另一个问题是k空间网格(k-points grid)的位置和形状,
是否包括Г点(Gamma点,也可理解为原点)?(一般不包括的话很可能会带来误差,尤其
是使用了tetrahedron方法的时候。暂时还不知道不包括的好处,为了减少k点?)
方形?线形?还是长方形?或者奇形怪状? :)

后文另述。那么现在来看看KPOINTS file的结构:

Line1: comment line 注释行 no problem

Line2: k点总数 或者 '0'自动生成网格(Automatic k-mesh generation)

如果是前者,给出k点总数,又分两种情况

M.全手动 Entering all k-points explicitly
Line3: 输入格式标识。直角坐标 (Cartesian)或者 倒格坐标(Reciprocal)
    同样的 'cCkK' for Cartesian,其他首字母则自动切换到 Reciprocal
Line4-n: 逐个k点的描述。 格式为 x y z W。 xyz是三个坐标,W是权重。所有k点的权
    重相互之间的比例对了就行,VASP会自动归一的
注意C坐标和R坐标的定义
C: k=(2π/a)(x y z) R: k=x*b1+y*b2+z*b3 b1-3为倒格基矢
(这里我们看到xyz只是代表了坐标的顺序,与坐标轴无关)
比如一些常用的高对称性点的C和R坐标:
Point   Cartesian coordinates   Reciprocal coordinates
        (units of 2pi/a)        (units of b1,b2,b3)
------------------------------------------------------
G          (  0   0   0  )          (  0   0   0   )
X          (  0   0   1  )          ( 1/2 1/2  0   )
W          ( 1/2  0   1  )          ( 1/2 3/4 1/4  )
K          ( 3/4 3/4  0  )          ( 3/8 3/8 3/4  )
L          ( 1/2 1/2 1/2 )          ( 1/2 1/2 1/2  )
输入示例:
Example file
4
Cartesian
0.0  0.0  0.0   1.
0.0  0.0  0.5   1.
0.0  0.5  0.5   2.
0.5  0.5  0.5   4.

一般如非必要,可以先用自动模式生成k点,VASP会自动生成一个简约化后的k点矩阵,
存于IBZKPT file,可以直接复制里面的数据到KPOINTS file来用,其实这也是这个输入
法的主要用途,为了减少重复自动生成格点的时间。
另一个用途是为了做精确的DOS(Density of status)的计算,由于这类计算所需k点数极
大,通过全手动尽可能的优化k点也就必需了。

L.半手动/线形模式 Strings of k-points for bandstructure calculations
看到啦,对于能带结构的计算,同前面的理由,需要精确的选取k点,在指定的高对称性
方向上生成指定数目的k点。
Line2: 指定两点间生成的k点数 不同于全自动的总k点数
Line2.5: 'L' for Line-mode 表示是线形模式
Line3: 输入格式标识。同前。C or R
Line4-n: 每行描述一个点 格式为 x y z。每两行的点连成一线,在两点间生成指定数
目的k点。每两行两行之间以空行区分(不空的话,VASP可能也认得出,没试过)
比如:
10  ! 10 intersections
Line-mode
rec
  0   0   0   ! gamma
  0.5 0.5 0   ! X

  0.5 0.5 0   ! X
  0.5 0.75 0.25  ! W


ok,那么更常用的方法是让VASP自动生成网格
Line2: 0 !number of k-points = 0 ->automatic generation scheme
(!后面字符为注释)
Line3: A for fully automatic or G for Г/Gamma or M for Monkhorst-Pack
       若都不是这些首字母,则自动切换为高级模式。

A mode 全自动模式,可以看作以Г点为圆心以l为半径做圆,当然各晶格矢不同时,相
应的圆就拉成了椭圆,来确保三个倒格矢方向上覆盖的k点数为l
Line4:length (l)
    Useful values for the length vary between 10 (large gap insulators) and
100 (d-metals).  

进一步的做法是分别指定三个倒格矢方向上的格点数N1,N2,N3。G mode
Line4: N1 N2 N3
Line5: s1 s2 s3 偏移原点的位矢 一般设成 0 0 0 啦。

以及Monkhorst-Pack法,生成的格点不包括Г点,从Г点周围1/2长度处开始取点。
M mode
Line4: N1 N2 N3
Line5: s1 s2 s3 同上

所谓的高级模式,就是用C坐标或者R坐标直接输入新的基矢

c                      c
0.25 0 0               0.25 0 0
0 0.25 0               0 0.25 0
0 0 0.25               0 0 0.25
0.0 0.0 0.0            0.5 0.5 0.5
分别等价于
g                      m
4 4 4                  4 4 4
0 0 0                  0 0 0
因为存在这种等价关系,所以一般也没有必要使用高级模式

好啦,就这些。最后提醒一点,VASP的帮助文档特别提醒,对于六方晶系,不要用M来自
动生成格点,而要用G。

关于tetrahedra方法,帮助文档说用于全手动模式,可选。具体设定原文如下:
In this case, the next line must start with 'T' or 't' signaling that this
connection list is supplied. On the next line after this 'control line' one
must enter the number of tetrahedra and the volume weight for a single
tetrahedron (all tetrahedra must have the same volume). The volume weight
is simply the ratio between the tetrahedron volume and the volume of the
(total) Brillouin zone. Then a list with the (symmetry degeneration) weight
and the four corner points of each tetrahedron follows (four integers which
represent the indices to the points in the k-point list given above, 1
corresponds to the first entry in the list). Warning: In contrast to the
weighting factors for each k-point you must provide the correct 'volume
weight' and (symmetry degeneration) weight for each tetrahedron - no
internal renormalization will be done by VASP!
示例:
Example file
4
Cartesian
0.0  0.0  0.0   1.
0.0  0.0  0.5   1.
0.0  0.5  0.5   2.
0.5  0.5  0.5   4.
Tetrahedra
1  0.183333333333333
6    1 2 3 4
初学VASP(五) 赝势•选择

POTCAR 赝势文件

可以理解为分子力学模拟中的力场文件 但包括的信息更多
VASP4.6将各元素优化的INCAR里的参数也包括在这里了,作为支持PREC的缺省选择
通常各元素的POTCAR已经包括在软件包里了
我们只需要按照POSCAR里的顺序,将各元素的POTCAR按顺序连接起来就可以了
如以下命令:
cat file1 file2 file3 > POTCAR

软件包自带的绝大多数赝势是超软赝势(US-PP)了,但不少元素有两个版本,如何
选取呢?
一个简单的办法是看后缀
标准的没有后缀 _h 硬一点 _s 软一点
_pv,_sv,_d 就是说semi-core的p,s或者d也当做价态处理了
如果是数字的话,表示的可能是不同的半径截距

也可以参考各版本同目录下的V_RHFIN file ,PSCTR file
这两个文件告知该版本的赝势是如何生成的。比如:
V_RHFIN file
Sc: 6p d2 s1
    8  21.   .002000  44.95590 125.   .25E-05 .300  200FCA 12.00000
   .7  1.0   0
  1.0   .0   .5 -320.8847 2.0000
  2.0   .0   .5  -34.4217 2.0000
  2.0  1.0  1.5  -28.2366 6.0000
  3.0   .0   .5   -3.7944 2.0000
  3.0  1.0  1.5   -2.2591 6.0000
  3.0  2.0  2.5    -.1113 2.0000
  4.0   .0   .5    -.2699 1.0000
  4.0  3.0  2.5    -.1000  .0000
第一行是注释行 给出基本的信息
第二行是最重要的控制行
    8  21.   .00 2000  44.95590 125.   .25E-05 .300  200 F CA 12.00000
    J   Z   XION    N  AM         H    DELRVR   PHI  NC1 | CH QCOR
                                                         |
                                                     GREEN

J - 轨道数  Z - 原子序数    XION - 离子化程度 一般设为0 N - 格点数
AM - 原子质量   H - 决定格点间距    DELRVR - 自洽收敛标准
PHI - 线性拟合参数 NC1 - 最大自洽循环次数 GREEN - 是否存在初始的势
CH - 交换相关能(XC)类型
      Slater-XC
    HL Hedin Lundquist (1971)
    CA Ceperly and Alder parameterized by J.Perdew and Zunger
    WI Wigner interpolation
    PB Perdew -Becke
    PW Perdew -Wang 86
    LM Langreth-Mehl-Hu
    91 Perdew -Wang 91
QCOR - 非价键电子数(core electrons)
第三行开始是每个轨道的具体参数,依次为
n l j(=l±1/2) 原子轨道能 占有率

PSCTR file of LDA/H1.25
   TITEL  = US H
   LULTRA =    T    use ultrasoft PP ?
   RWIGS  =    0.57  nn distance ! Wigner-Seitz radius

   RCLOC  =   .65
   NE     =   100
   LCOR   =   .TRUE.
   QCUT   =   -1
   RMAX   = 3.0 ! core radius for proj-oper

   Description
l     E      TYP RCUT    TYP  RCUT(cutoff radius)
0   0         15   0.80  23   1.25
0   0.5       15   0.80  23   1.25
1  -0.2       15   0.80  23   1.25
最重要的地方上面已经用颜色标出来啦:)
说明一下,TYP是指赝势的类型,RCUT是半径截距,TYP可取的值如下:
正则
1 BHS
2 TM
3 VAN
6 XNC
7 RRKJ wave function possibly with node
15 RRKJ wave function strictly no node
非正则 +8

最后一个问题是LDA or GGA。貌似没有定论目前。
这个最好是两个一起做做看啦。或者看文献别人验证过哪个数据好。
其实据说目前最好的是PAW(P.E.Blochl,Phys.Rev.B 50,17953(1994).,Phys.Rev.B 59,
1758(1999).),PP已经落伍了,不过好像我们用的VASP不带这个,就不展开讨论了。



转自:http://qmlab.bjut.edu.cn/bbs/rea ... ;toread=&page=1
感谢wzhao

[ Last edited by 顺水 on 2009-8-21 at 16:11 ]

 返回小木虫查看更多

今日热帖
  • 精华评论
猜你喜欢
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓