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

请注意,这里我们取的是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 = 11INCAR的内容取决于计算任务,比如静态计算、结构优化、分子动力学模拟的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
20KPOINTS写法有很多种,并且针对不同计算需要用不同的写法。对于常规的静态自洽计算和结构优化计算,上面是一种比较好用的KPOINTS的写法。这种格式的KPOINTS适用于不同晶格类型的3D体系的静态自洽计算和结构优化计算。第一行随便写内容,不能没有;第二行用0就行;第三行写Auto;核心在第四行的数字(整数)。这个数字越大,计算精度通常越高,计算所需时间越长,内存越大。其物理含义是在倒空间的第一布里渊区中,在三个倒格基矢b1 b2 b3方向上自动布点。20代表了在每个倒格矢上布点间隔为(其中0.05是20的倒数)。比如在我们的8原子的Si结构中,由固体物理知识,对于这种abc三条轴夹角90°的特殊结构,很容易计算三条倒格矢长度都是,其中0.183是晶格常数5.469的倒数。因此在每条基矢方向撒点的数目就约等于,所以撒点网格就是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文件。,因而对应的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中有介绍