VASP 初学者必读
- 格式:pdf
- 大小:108.68 KB
- 文档页数:22
VASP 初学者必读 转载自http://qmlab.bjut.edu.cn/bbs/read.php?tid=1621&fpage=0&toread=&page=1
初学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