VASP是备受专业技术人员认可的DFT计算软件,每年发表论文超过1万篇,至2022年底,文章总量已超过11万篇。其计算结果不仅可以验证实验,更能够预测实验结果,指导实验路线。
VASP简介
1. 程序结构概要
VASP.4.X 是一个 Fortran 90 程序。它允许动态内存分配和单一可执行文件,可用于任何类型的计算。
一般来说,源代码和赝势函数应位于以下目录中:
VASP/src/vasp.4.lib
VASP/src/vasp.4.X
VASP/pot/..
VASP/pot_GGA/..
VASP/potpaw/..
VASP/potpaw_GGA/..
vasp.4.lib 目录包含的源代码很少更改,更新时通常不需要重新安装该目录。不过,在将代码应用到新平台时,可能需要对 vasp.4.lib 进行重大修改。vasp.4.X 目录包含主要的 Fortran 90 代码。pot/pot GGA/(以及可能为 potpaw/ potpaw GGA/)目录分别包含(超软)赝势和投影缀加波。LDA 版本放在 pot 和 potpaw 目录中,而 GGA 版本(Perdew,Wang 1991)放在 pot GGA 和 potpaw GGA 目录中。源文件和赝势可在文件服务器上获取(见第 3.2 节)。
大多数计算将在工作目录下进行,在开始计算之前,必须在该目录下创建几个文件。最重要的输入文件如下:
INCAR POTCAR POSCAR KPOINTS
2 教程,第一步
如果您尚未安装 VASP,请阅读第 3.2 节。本教程中讨论的计算所需的文件可以在 VASP 文件服务器(tutor/...目录下)中找到。本地计算机上必须有 VASP 可执行文件(最好放在您的搜索路径中)。如果您对搜索路径这一词不熟悉,请停止阅读本节内容,您应该获取一本 UNIX 指南以了解更多有关 UNIX shell 环境的信息。
2.1 金刚石
将 tutor/diamond 目录下的所有文件复制到工作目录下,然后逐步进行:
1.以下四个文件是核心输入文件,必须存在于工作目录中才能执行 VASP。请使用编辑器检查每个文件。
INCAR 文件
INCAR 文件是 VASP 的核心输入文件。它决定 "做什么和怎么做"。它是一个带标签的自由 ASCII 文件:每行由一个标签(即字符串)、等号"="和一个或多个值组成。大多数参数都有默认值。请查看教程中提供的 INCAR 文件,它的长度可能比实际需要的要长。例如,POTCAR 文件中给出了截断能的默认值,因此 INCAR 文件中通常不需要。但在这个简单的示例中,INCAR 文件中提供了截断能值(在大多数情况下这样做可能是明智的)。
POSCAR
POSCAR 文件包含离子的位置。以金刚石为例,POSCAR 文件包含以下几行:
cubic diamond comment line
3.7 universal scaling factor
0.5 0.5 0.0 first Bravais lattice vector
0.0 0.5 0.5 second Bravais lattice vector
0.5 0.0 0.5 third Bravais lattice vector
2 number of atoms per species
direct direct or cart (only first letter is significant)
0.0 0.0 0.0 positions
0.25 0.25 0.25
这些位置可以用直接坐标(分数坐标)或笛卡尔坐标表示。在第二种情况下,位置将根据第二行提供的通用缩放因子进行缩放。晶格矢量始终按通用比例因子缩放
KPOINTS
KPOINTS 文件决定 K 点设置。
4x4x4 | Comment |
0 | 0 = automatic generation of k-points |
Monkhorst | M use Monkhorst Pack |
4 4 4 | grid 4x4x4 |
0 0 0 | shift (usually 0 0 0) |
第一行是注释。如果第二行等于零,则使用 Monkhorst-Pack 方法自动生成 k 点(第三行的第一个字符为 "M")。使用提供的KPOINTS文件进行计算时,会使用一个4×4×4的Monkhorst-Pack网格。
• POTCAR
POTCAR 文件包含赝势(如果有多个种类的赝势,可以使用UNIX命令cat将POTCAR文件连接起来)。POTCAR 文件还包含原子的相关信息(如原子质量、原子化合价、赝势创建时的原子参考构型能量等)。
2.键入命令运行 VASP
> vasp
同样,只有当 vasp 可执行文件位于搜索路径的某处时,该命令才能正常运行。搜索路径通常在 UNIX shell 的 PATH 变量中提供。有关详细信息,用户可参阅 UNIX 手册。
启动 VASP 后,将得到类似以下的输出结果:
VASP.4.4.3 10Jun99
POSCAR found : 1 types and 2 ions
LDA part: xc-table for CA standard interpolation
file io ok, starting setup
WARNING: wrap around errors must be expected
entering main loop
N E dE d eps ncg rms rms(c)
CG : 1 0.1209934E+02 0.120E+02 -0.175E+03 165 0.475E+02
CG : 2 -0.1644093E+02 -0.285E+02 -0.661E+01 181 0.741E+01
CG : 3 -0.2047323E+02 -0.403E+01 -0.192E+00 173 0.992E+00 0.416E+00
CG : 4 -0.2002923E+02 0.444E+00 -0.915E-01 175 0.854E+00 0.601E-01
CG : 5 -0.2002815E+02 0.107E-02 -0.268E-03 178 0.475E-01 0.955E-02
CG : 6 -0.2002815E+02 0.116E-05 -0.307E-05 119 0.728E-02
1 F= -.20028156E+02 E0= -.20028156E+02 d E =0.000000E+00 writing wavefunctions
VASP使用Pulay混合方法的自洽循环和迭代矩阵对角化方案来计算Kohn-Sham(KS)基态。每一行对应一个电子步,在每个电子步中,波函数都会被迭代改进一点,电荷密度也会被优化一次。stdout(即在屏幕上看到的内容)的副本也会写入 OSZICAR文件中。
各列的含义如下:N 列是电子迭代步骤计数,E 是当前的自由能,dE 是两步之间自由能的变化,d eps 是能带结构能量的变化。ncg 栏表示哈密顿算符应用于波函数的频率。rms 这一列给出了在所有占据带上求和的残差向量的初始范数(R = (H−εS)|φi),并且表示波函数的收敛程度。最后一栏rms(c) 表示输入和输出电荷密度之间的差值。在前五步中,密度和势能没有更新,对波函数进行预收敛(因此 rms(c) 没有显示)。前五次迭代后,开始更新电荷密度。以金刚石为例,只需要三次更新就可以获得足够精确的基态。最后一行显示的是达到收敛后的自由电子能 F。
OUTCAR文件中包含有关力和应力张量的更多信息。请查看该文件,以便了解 OUTCAR 文件中包含的信息。
另一个重要文件是 WAVECAR 文件,它存储着最终的波函数。为了加快计算速度,VASP 通常会在启动时读取该文件。在计算结束时,该文件将被写入(如果存在则被覆盖)。
3.要计算平衡晶格常数,请尝试输入 ./run。run脚本是一个简单的shell脚本,用于在不同晶格参数下运行 vasp。可以使用编辑器检查该脚本的内容。
4.确定平衡体积(例如,使用能量的二次拟合)。平衡晶格常数应接近 3.526。
5.现在,在 POSCAR 文件中设置平衡晶格常数,并将位于 0.25 0.25 0.25 的离子移动到 0.24 0.24 0.24,然后使用 VASP 将其弛豫到平衡位置。必须在INCAR文件中添加以下行(参见6.22节):
NSW = 10 ! allow 10 steps
ISIF = 2 ! relax ions only
IBRION = 2 ! use CG algorithm
设置参数以便在系统中进行最小化能量的计算过程中,VASP会沿着力的方向进行线性最小化。线性最小化需要VASP根据力的方向进行一次小试探步进,然后重新计算总能量。VASP 根据能量变化、初始力和最终力计算出最小值的位置。对于碳元素而言,自动选择的试探步进往往过大,如果在INCAR文件中设置参数POTIM,就可以使VASP以更高效的方式运行:
POTIM = 0.1 ! reduce trial step
进行此步骤,并从一个更粗糙的结构,如(0.20,0.20,0.20)作为起始结构再次进行计算。
在每个任务结束时,VASP 都会将最终位置写入 CONTCAR 文件。该文件与 POSCAR 文件格式相同,可以通过将 CONTCAR 复制到 POSCAR 并再次运行 VASP 来继续运行。
6.作为最后的练习,将 POSCAR 文件中的晶格常数改为 3.40,并将 INCAR 文件中的 ISIF 改为:
ISIF = 3 ! relax ions + volume
POTIM = 0.1 ! you need to specify POTIM as well
然后重新开始计算。如果 ISIF 设置为 3,VASP 将弛豫离子位置和晶胞体积。
不要忘记随时检查 OUTCAR 文件.
7.最终的晶格常数将相当精确(约 3.510 A)。与能量体积曲线拟合得到的晶格常数的微小差异是由于 Pulay 应力造成的(见第 7.6 节):只有在计算相对于基组完全收敛的情况下,应力张量才是正确的。解决此问题有几种可能。
8.在 INCAR 文件标准值(ENMAX=550)的基础上,将平面波截断值提高 30%。现在基组基本收敛,可以得到更精确的晶格常数结果。尝试将此设置应用于碳,并通过设置来提高电子基态计算的精确度。
EDIFF = 1E-7 ! very high accuracy required 10ˆ-7 eV
在 INCAR 文件中。从最后一次计算的 CONTCAR 文件开始(即把 CONTCAR 复制到 POSCAR)。
9.误差与结构无关,因此可以使用大的基组和小的基组分别计算一次。从平衡结构开始,采用高截断能(ENCUT=550)。应力张量应为零。
然后使用默认截断能。现在的应力为 -43 kBar。这样就可以估算出基组不完备可能造成的误差。(可以通过在INCAR文件中设置
PSTRESS=-43!Pulay stress=-43 kB
来修正弛豫,但通常最好增加ENCUT)
👉 点击阅读原文加我,探索更多优惠💖