2.2 VASP四个输入文件#

(1) POSCAR:研究对象的原子排列结构

原子结构和电子结构决定物质的性质。首先我们需要知道研究对象的结构信息,即原子的空间排列。在这里我们研究对象是常温常压下具有金刚石结构的单质硅Si,其空间群为Fd-3m,结构示意图如下:

vasp-input-files 配图 image6.png

请注意,这里我们取的是cubic的晶胞,含有8个原子,并非原胞。如果你对上面提到的这些概念陌生,请复习《固体物理》或者《晶体物理学》。

将其写成POSCAR文件内容如下:

Si8
1.0
5.4687280655 0.0000000000 0.0000000000
0.0000000000 5.4687280655 0.0000000000
0.0000000000 0.0000000000 5.4687280655
Si
8
Direct
0.250000000 0.250000000 0.250000000
0.000000000 0.500000000 0.500000000
0.250000000 0.750000000 0.750000000
0.000000000 0.000000000 0.000000000
0.750000000 0.250000000 0.750000000
0.500000000 0.500000000 0.000000000
0.750000000 0.750000000 0.250000000
0.500000000 0.000000000 0.500000000

在刚刚新建的test文件夹里面,用vim命令创建一个名为POSCAR,内容如上的文件。注意,文件名需严格为POSCAR,不能小写或其它字母。创建成功之后下载到本地windows并用vesta查看。

现在我们对POSCAR文件的格式和内容做一些说明:

第一行内容任意,建议写成体系的名称;

第二行是无量纲的晶格缩放系数,通常取1就行;

三到五行是胞的晶格信息,即三个基矢a1 a2 a3在xyz基矢下的坐标,单位是Å

第六行是元素类型,这里只有一种元素Si

第七行是胞里面元素对应的原子个数,这个胞里有8个Si原子,所以数字是8

第八行只有两种写法,要么Direct要么Cartesian,这里D和Direct以及任何以大写D开头的词效果都是一样的。类似的,Ca和Cartesian以及C也是一样效果。注意,这一行强烈建议顶格,前面不要空格。

第九行开始是原子坐标信息,和第八行配套。在这里,第八行开头是D,表示分数坐标,所以第九行0.25 0.25 0.25意思就是以a1 a2 a3为基矢,在(0.25 0.25 0.25)坐标上放置一个Si原子,其余类似;如果是Cartesian,表示笛卡尔坐标,是以xyz为基矢的绝对坐标。D和C只是两种表示方法而已,他们可以相互转换。比如同样是刚才的结构,现在以Cartesian坐标给出如下:

Si8
1.000
5.4687280654999997 0.0000000000000000 0.0000000000000000
0.0000000000000000 5.4687280654999997 0.0000000000000000
0.0000000000000000 0.0000000000000000 5.4687280654999997
Si
8
Cartesian
1.3671820163749999 1.3671820163749999 1.3671820163749999
0.0000000000000000 2.7343640327499998 2.7343640327499998
1.3671820163749999 4.1015460491250000 4.1015460491250000
0.0000000000000000 0.0000000000000000 0.0000000000000000
4.1015460491250000 1.3671820163749999 4.1015460491250000
2.7343640327499998 2.7343640327499998 0.0000000000000000
4.1015460491250000 4.1015460491250000 1.3671820163749999
2.7343640327499998 0.0000000000000000 2.7343640327499998

因此这个POSCAR表示了一个晶格常数为5.4687Å的cubic结构,里面特定位置处有8个Si原子。如果在Direct坐标下,把第二行的1改成2,其余不变,就相对于把整个体系边长扩大2倍,体积扩大了8倍。但如果你是在Cart下把第二行改成了2,那情况就不一样。可以自行尝试,并用vesta可视化。

注意:由于计算精度有限,坐标到第六七位开始其实就没有意义了。比如晶格常数3.333013887156和3.333014本质上并没有太大差别。

如果结构里有多种元素,比如4个Si,4个C,写法如下图。这表示Direct下面开始的前4行是Si原子,之后的4行是C原子的坐标。因此,你很容易知道更多原子类型的POSCAR应该怎么写了。

Si8
1.0
5.4687280655 0.0000000000 0.0000000000
0.0000000000 5.4687280655 0.0000000000
0.0000000000 0.0000000000 5.4687280655
Si C
4 4
Direct
0.250000000 0.250000000 0.250000000
0.000000000 0.500000000 0.500000000
0.250000000 0.750000000 0.750000000
0.000000000 0.000000000 0.000000000
0.750000000 0.250000000 0.750000000
0.500000000 0.500000000 0.000000000
0.750000000 0.750000000 0.250000000
0.500000000 0.000000000 0.500000000

(2) INCAR:控制计算参数,做scf/relax/band……

在Linux下用vim创建一个名为INCAR的文件,里面内容如下(右边#后面的内容不写)。

ISTART = 0
ICHARG = 2
LCHARG = .TRUE.
LWAVE = .TRUE.
ENCUT = 400
ISPIN = 1
LREAL = Auto

# for static
NSW = 0
ISMEAR = 0
SIGMA = 0.05
NELM = 60
EDIFF = 1E-06
#LORBIT = 11

INCAR的内容取决于计算任务,比如静态计算、结构优化、分子动力学模拟的INCAR就各有不同。上面是一个用于我们稍后的静态自洽计算对应的INCAR。

INCAR格式问题:编写INCAR时避免在Linux下使用tab键,可以使用键盘上的空格键;参数后面的“=”前后是否有空格无所谓;

INCAR中实际的参数有上百个,没有给出的参数就意味着取默认值。前面用#表示注释掉,即在计算时软件会自动取默认值。INCAR中的参数可以分四类:

a. 计算模型的参数:比如截断能ENCUT、自旋参数ISPIN、LDA+U的参数、离子步NSW、力收敛EDIFFG、能量收敛EDIFF等。

b. 控制输出文件的参数:是否写下波函数/电荷密度文件LWAVE/LCHARG)

c. 帮助自洽迭代能收敛的参数:比如IALGO、AMIX、ADDGRID等

d. 提升计算效率的参数:NCORE,NPAR等

这些参数的含义在2.3.3节中解释,在这一步中,你只需要写出这个一个INCAR文件,然后跟着教程往下走即可。

(3) KPOINTS:直接决定了计算精度和时长

用vim创建一个名为KPOINTS的文件,里面内容如下:

K-point
0
Auto
20

KPOINTS写法有很多种,并且针对不同计算需要用不同的写法。对于常规的静态自洽计算和结构优化计算,上面是一种比较好用的KPOINTS的写法。这种格式的KPOINTS适用于不同晶格类型的3D体系的静态自洽计算和结构优化计算。第一行随便写内容,不能没有;第二行用0就行;第三行写Auto;核心在第四行的数字(整数)。这个数字越大,计算精度通常越高,计算所需时间越长,内存越大。其物理含义是在倒空间的第一布里渊区中,在三个倒格基矢b1 b2 b3方向上自动布点。20代表了在每个倒格矢上布点间隔为2π×0.05Å−1(其中0.05是20的倒数)。比如在我们的8原子的Si结构中,由固体物理知识,对于这种abc三条轴夹角90°的特殊结构,很容易计算三条倒格矢长度都是2π×0.183Å−1,其中0.183是晶格常数5.469的倒数。因此在每条基矢方向撒点的数目就约等于2π×0.1832π×0.05≈4,所以撒点网格就是4x4x4,一共有64个点。这个撒点的目的是为了将连续积分离散化,变成求和,离散程度越高,对应的网格划分约密,求和值理论上就越接近积分值。但并不意味着21一定比20好,这涉及到一个k点收敛的问题。

与之等价的另外一种KPOINTS的写法如下:

K-Spacing Value to Generate K-Mesh: 0.050
0
Monkhorst-Pack
4 4 4
0.0 0.0 0.0

这样撒点的目的是在自洽计算中对整个第一布里渊区进行采样,计算每个k点的能量Ek。在这里,你只需要写出这样的KPOINTS文件即可。在真正做计算面对不同的体系时,我们借助vaspkit来自动生成这样格式的KPOINTS文件。如果是2D或者1D材料,建议采用这种写法的KPOINTS。具体取法在后面2.3.4节中介绍。

同时,目前VASP支持将KPOINTS的内容写进INCAR中,用KSPACING和KGAMMA两个参数来代替KPOINTS文件。2π×0.05Å−1=0.314,因而对应的KSPACING值为0.314。初学阶段仍建议写出KPOINTS文件。

在这个例子中,用于本次静态计算演示,建议你手写第一种格式。

(4) POTCAR:赝势文件,描述原子电子间相互作用

请自行向课题组里的师兄师姐寻求VASP的赝势文件,在本次例子中,你需要一个Si的POTCAR文件(不带后缀的文件夹里面的)。POTCAR文件取决于体系的元素类型,具体来说就是取决于POSCAR中元素那一行内容。POTCAR文件是VASP官方生成的,计算时不需要人为改动(除了个别情况)。文件名需要严格为POTCAR,不可小写或其它名字。VASP是付费软件,它的赝势文件POTCAR是有版权的,因此在这里我不能轻易分享出来。另外,赝势随着VASP软件的更新也有不同版本,建议至少用5.4以及以后的赝势版本。

POTCAR里面内容很长,上千行,我们只需要关心前面几十行,如下。

 PAW_PBE Si 05Jan2001
  4.00000000000000
parameters from PSCTR are:
  VRHFIN =Si: s2p2
  LEXCH = PE
  EATOM     103.0669 eV,   7.5752 Ry
  TITEL = PAW_PBE Si 05Jan2001
  LULTRA         F    use ultrasoft PP ?
  IUNSCR  =      1    unscreen: 0-lin 1-nonlin 2-no
  RPACOR     1.500    partial core radius
  POMASS =  28.085  ZVAL       4.000   mass and valenz
  RCORE      1.900    outmost cutoff radius
  RWIGS  =   2.480  RWIGS      1.312   wigner-seitz radius (au A)
  ENMAX  = 245.345  ENMIN    184.009 eV
  ICORE          2   local potential
  LCOR           T    correct aug charges
  LPAW   =       T   paw PP
  EAUG     322.069
  DEXC   =   0.000
  RMAX   =   1.950    core radius for proj-oper
  RAUG       1.300    factor for augmentation sphere
  RDEP   =   1.993    radius for radial grids
  RDEPT =    1.837    core radius for aug-charge
  Atomic configuration
   6 entries
    n  1  j            E       occ.
    1  0 0.50     -1785.8828  2.0000
    2  0 0.50      -139.4969  2.0000
    2 1  1.50       -95.5546  6.0000
    3  0 0.50       -10.8127  2.0000
    3  1 0.50        -4.0811  2.0000
    3  2 1.50        -4.0817  0000:0

第一行PAW_PBE:表明是采用PAW方法描述电子离子作用,且是GGA-PBE泛函。

LEXCH:泛函类型,PE就是PBE,CA就是LDA。

ZVAL:该赝势(PAW势)所考虑的价电子数目,这里把Si外层的4个电子视为价电子。价电子构型可以从下面的Atomic configuration看到,这里最外层是3s23p2. 对于其他元素,比如Fe,有26个电子,通常只会把最外层的8个或者16个电子视为价电子,其余的视为芯电子。因为内层电子通常不参与成键。

RCORE:原子核+芯电子的半径(Bohr单位,1.9Bohr=1.9*0.5292=1.005Å),当原子间距接近该值时,赝势可能失效。

RWIGS:把原子视为硬球时的半径,第一个数值是Bohr单位下的。后面算PDOS时会再次遇到。

ENMAX:建议截断能(eV),和INCAR中的ENCUT设置密切相关

其余内容可以参考:https://blog.sciencenet.cn/blog-567091-729732.html

由于本次演示的体系中只有Si一种元素,因此POTCAR文件直接用VASP的赝势库文件夹Si里面的POTCAR即可。如果POSCAR中有多种元素,比如含有Si C两种原子时,那就需要使用cat命令把Si和C各自的POTCAR拼接成一个,注意前后顺序要和POSCAR一致。

cat xxx/Si/POTCAR xxx/C/POTCAR > POTCAR (注意空格,xxx是赝势路径)

这条命令会把C的POTCAR拼接在Si的POTCAR后面,并组成一个新的POTCAR。在实际的计算中,我们常常会使用vaspkit来自动实现这一步,在3.2中有介绍