02_vasp输入文件 - Yiwei666/13_vasp GitHub Wiki

输入文件

INCAR      in    **
STOPCAR    in
stout      out
POTCAR     in     **
KPOINTS    in     **
IBZKPT     out
POSCAR     in     **
CONTCAR    out
CHGCAR     in/out
CHG        out
WAVECAR    in/out
TMPCAR     in/out
EIGENVAL   out
DOSCAR     out
PROCAR     out
OSZICAR    out
PCDAT      out
XDATCAR    out
LOCPOT     out
ELFCAR     out
PROOUT     out

在VASP(Vienna Ab initio Simulation Package)中,INCAR、KPOINTS、POSCAR和POTCAR是控制计算和描述体系的关键输入文件。以下是它们的简要介绍:

  • INCAR(Input Cards):

    • INCAR文件包含了VASP计算的控制参数和选项。
    • 它决定了计算的性质,如能量优化、分子动力学、电子结构等。
    • 您可以在INCAR中设置能带结构、优化算法、自洽迭代次数、截止能量、自旋极化等参数。
    • 这是VASP中最重要的输入文件之一,决定了计算的性质和精度。
  • KPOINTS:

    • KPOINTS文件定义了在布里渊区域(k空间)中选择的离散k点网格。
    • 这些k点网格用于计算电子波函数和电子结构。
    • KPOINTS文件中的k点密度和分布方式对计算的精度和效率有很大影响。
    • 可以使用自动或手动方式生成k点网格,具体取决于研究问题和所需精度。
  • POSCAR(Position Cards):

    • POSCAR文件包含了晶体结构的原子坐标和晶格参数。
    • 它定义了模拟的体系的几何结构,包括原子种类、坐标和晶格矢量。
    • 您可以在POSCAR中指定不同元素的数量、晶格常数、原子坐标等信息。
    • 这个文件是VASP中用于构建模拟体系的基础。
  • POTCAR(Potential Cards):

    • POTCAR文件包含了原子种类的赝势(pseudopotential)信息。
    • 赝势是一种有效的方法,用于减少计算中需要考虑的电子数量,从而提高计算效率。
    • 每个元素都需要对应的赝势文件,VASP使用POTCAR来确定使用哪些赝势。
    • POTCAR文件中的信息确定了如何处理原子核和核外电子相互作用。

这些文件一起定义了VASP计算的参数、计算体系的结构以及如何处理电子结构。正确配置和理解这些文件对于成功运行VASP模拟和获得准确的结果至关重要。通常,用户需要根据研究问题和体系的特性来调整这些文件中的参数和设置。

INCAR

VASP中的INCAR文件包含了许多关键词和选项,用于控制计算的各个方面。以下是一些常用的重要关键词及其含义:

  • EDIFF:

    • 含义:电子总能量收敛的判据。
    • 说明:当电子总能量的变化小于或等于EDIFF时,迭代过程将停止。通常以电子电子结构迭代前后的总能量之差作为判据。
  • ENCUT:

    • 含义:平面波截止能量(能量截断)。
    • 说明:定义了用于展开电子波函数的平面波的最大能量。较高的ENCUT值可以提高精度,但也会增加计算成本。
  • ISMEAR 和 SIGMA:

    • 含义:控制计算中的Fermi-Dirac分布和σ参数。
    • 说明:ISMEAR定义了Fermi-Dirac分布的类型(例如,0表示无分布,-1表示Gaussian分布),而SIGMA则是Fermi-Dirac分布的宽度参数,用于控制电子温度。

ISMEAR用于控制Methfessel-Paxton方法的展宽方式。以下是各个取值的意义:
ISMEAR = 0:高斯展宽方式。
ISMEAR = -1:费米展宽方式。
ISMEAR = N (N > 0):Methfessel-Paxton展宽方式,其中N为展宽的阶数。
这些取值的选择通常取决于体系的性质和计算目标。例如,对于不知道体系是绝缘体、半导体还是金属的情况,建议使用ISMEAR = 0和SIGMA = 0.03-0.05。对于半导体或绝缘体,建议使用足够多的k点并选择ISMEAR = -5。对于金属,可以使用ISMEAR = 1或ISMEAR = 2以及适当的SIGMA = 0.2。

  • IBRION 和 ISIF:
    • 含义:结构优化算法和力的计算。
    • 说明:IBRION定义了结构优化算法的类型(例如,0表示不进行优化,2表示弛豫能量最小化),而ISIF定义了哪些晶格参数需要被优化。

IBRION是VASP中的一个关键词,用于控制离子更新和移动的方式。以下是各个取值的意义:
IBRION = -1:不更新离子位置,但执行NSW次外部循环。在每个外部循环中,会重新优化电子自由度(对于NSW > 0,这显然没有太多意义,除非用于测试目的)。如果不需要更新离子,则使用NSW = 0代替。
IBRION = 0:分子动力学方式。
IBRION = 1:离子弛豫(RMM-DIIS)方式。
IBRION = 2:离子弛豫(共轭梯度算法)方式。
IBRION = 3:离子弛豫(阻尼分子动力学)方式。
IBRION = 5和IBRION = 6:二阶导数、Hessian矩阵和声子频率(有限差分法)。
IBRION = 7和IBRION = 8:二阶导数、Hessian矩阵和声子频率(密度泛函微扰理论)。
IBRION = 40:沿IRC计算能量剖面。
IBRION = 44:改进的二聚体方法。
这些取值的选择通常取决于体系的性质和计算目标。如果需要进行困难的弛豫问题,建议使用共轭梯度算法(IBRION = 2),该算法目前具有最可靠的备份程序。在接近局部极小值时,RMM-DIIS(IBRION = 1)通常是最佳选择。对于半导体或绝缘体,建议使用足够多的k点并选择Fermi展宽方式(ISMEAR = -5)。

  • ALGO 和 ADDGRID:

    • 含义:电荷密度和波函数计算的算法。
    • 说明:ALGO定义了用于计算电荷密度的算法(例如,Fast、Exact、All),而ADDGRID定义了用于计算电荷密度的数值格点网格密度。
  • LDAU 和 LDAUJ:

    • 含义:处理局部密度近似(LDA+U)相关参数。
    • 说明:LDAU用于启用或禁用LDA+U方法,而LDAUJ定义了d或f轨道上的U和J参数,以修正DFT的描述。
  • LORBIT 和 NEDOS:

    • 含义:输出文件和DOS计算参数。
    • 说明:LORBIT控制输出文件的类型(例如,0表示只输出能量和力,11表示输出投影的DOS),而NEDOS定义了DOS计算中的能量点数。
  • NSW 和 ISMEAR:

    • 含义:分子动力学和自旋极化计算参数。
    • 说明:NSW定义了分子动力学步数,ISIF定义了自旋极化的类型(例如,0表示非极化,4表示自旋极化计算)。

这只是一小部分INCAR中可用的关键词。VASP提供了丰富的选项,可以根据研究需要调整这些参数。正确设置这些参数对于获得准确的计算结果至关重要。

🟢 关于V2PC的静态自洽计算

  • Materials project给出的INCAR文件
ALGO = Normal  # 算法用于电子优化
EDIFF = 1e-05  # 能量收敛标准
ENCUT = 520    # 截断能
IBRION = -1    # 禁用离子优化
ISIF = 3       # 启用晶胞和离子优化
ISMEAR = -5    # Fermi展宽方式,适用于半导体或绝缘体
ISPIN = 2      # 启用自旋极化计算
KPAR = 8       # 并行计算中的k点分组数目
LAECHG = True  # 计算投影态密度时,计算电荷密度差异
LASPH = True   # 启用局域球近似
LCHARG = True  # 计算电荷密度
LORBIT = 11    # 输出轨道信息到PROCAR文件
LREAL = Auto   # 自动选择投影算法的精度
LVHAR = True   # 计算势能哈密顿量
LWAVE = False  # 不计算波函数
MAGMOM = 4*0.003 4*-0.0  # 磁矩设置,这里设置了两个原子的磁矩,每个原子有四个轨道,其中两个轨道的磁矩为0.003,另外两个轨道的磁矩为0.0
NELM = 100     # 最大迭代次数
NPAR = 4       # 并行计算中处理一个轨道的核心数目
NSW = 0        # 禁用离子步骤
PREC = Accurate    # 高精度计算模式
SIGMA = 0.05   # Fermi展宽方式中的展宽值
SYSTEM = Mp-8044   # 系统名称,用于输出文件命名等目的

  • vaspkit输出的INCAR文件
Global Parameters
ISTART =  1            (Read existing wavefunction, if there)
ISPIN  =  1            (Non-Spin polarised DFT)
# ICHARG =  11         (Non-self-consistent: GGA/LDA band structures)
LREAL  = .FALSE.       (Projection operators: automatic)
# ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
# PREC   =  Accurate   (Precision level: Normal or Accurate, set Accurate when perform structure lattice relaxation calculation)
LWAVE  = .TRUE.        (Write WAVECAR or not)
LCHARG = .TRUE.        (Write CHGCAR or not)
ADDGRID= .TRUE.        (Increase grid, helps GGA convergence)
# LVTOT  = .TRUE.      (Write total electrostatic potential into LOCPOT or not)
# LVHAR  = .TRUE.      (Write ionic + Hartree electrostatic potential into LOCPOT or not)
# NELECT =             (No. of electrons: charged cells, be careful)
# LPLANE = .TRUE.      (Real space distribution, supercells)
# NWRITE = 2           (Medium-level output)
# KPAR   = 2           (Divides k-grid into separate groups)
# NGXF    = 300        (FFT grid mesh density for nice charge/potential plots)
# NGYF    = 300        (FFT grid mesh density for nice charge/potential plots)
# NGZF    = 300        (FFT grid mesh density for nice charge/potential plots)
 
Static Calculation
ISMEAR =  0            (gaussian smearing method)
SIGMA  =  0.05         (please check the width of the smearing)
LORBIT =  11           (PAW radii for projected DOS)
NEDOS  =  2001         (DOSCAR points)
NELM   =  60           (Max electronic SCF steps)
EDIFF  =  1E-08        (SCF energy convergence, in eV)

KPOINTS

K-POINTS      #  第一行随便写都行,但不能没有
 0            #  数字零,不是字母O,格子自动生成
Gamma         #  gamma centered 
1 1 1         #  1*1*1 
0 0 0         #  S1 S2 S3, 一般保持 0 0 0 不变。
  • 该 KPOINTS 文件里面 共有 5 行 , 后面为 注释
  • 第 一行可以随便写内容 但不能没有 ;
  • 第二 行是数字 0, 不是字母 O, 0 在这里表示的是自动生成 K 点。
  • 第三 行 ,VASP 只认 第一个 字母 g 大小写均可。也可以写成 gamma
  • 第四行,为生成对应数目的 K 点,一会详细讲。本例为 1 × 1 × 1 ,只有一个 k 点 。
  • 第 五行是, k 点的 shift 值,一般不需要调, 0 0 0 即可
  • 对于 原子或者分子的计算 ,K 点取一个 gamma 点( 1 1 1 )就够了,多的 K 点是能提高周期性镜像分子间的相互作用精度,这部分能量是我们不想要的。
  • Gamma 点 在 VASP 计算中非常重要 建议是 永远用 gamma centered, 也就是第三行保持 G 不变。另外一种是原始的 Monkhorst Pack 网格。
  • 在文章计算说明部分应该给出所使用的 k 点数量,因为如果不这样做,就很难对这些结果再现。
  • 增大超晶胞的体积减少了达到收敛时所需要的 k 点数量,因为实空间体积的增加对应于倒易空间体积的减少。
  • 如果计算中涉及不同体积的超晶胞,并需要对其结果进行比较,则在倒易空间中选定 k 点时,需要使不同超晶胞倒易空间中的 k 点密度大体相同,这是使这些计算在 k 空间中具有类似的收敛精度的有效方法。说白了, a × ka = b × kb = c × kc

POSCAR

文件结构

O atom in a box
1.0 ! universal scaling parameters
8.0 0.0 0.0 ! lattice vector a(1)
0.0 8.0 0.0 ! lattice vector a(2)
0.0 0.0 8.0 ! lattice vector a(3)
O           ! O element
1           ! number of atoms
Cartesian   ! positions in
cartesian
coordinates
0 0 0
  • 第一行:同样随便写,但不能不写;
  • 第二行:Scale factor,称为缩放系数,一般 1.0 即可。一般在做晶胞体积和能量关系曲线中用到,在其他计算中很少用。比如:这一行写成 1.1 ,代表下面的晶胞的 a,b,c 矢量,和所有的原子坐标都要乘以 1.1。
  • 第三到五行是格子在三个方向上的晶格矢量信息 ; 比如: 8.0 0.0 0.0 ,代表晶胞的 a 边是垂直于 y 和 z 坐标轴的,在 x 方向上长 8 个埃。
  • 第六行 元素符号 如有多个原子则依次用空格隔开。比如 O Al C H
  • 第七行 对应第六行元素原子的数目,注意是一一对应的
  • 第八行的 Cartesian, 同 KPOINTS 的第三行 只认第一个字母 , C 或者 c 代表笛卡尔坐标 , D 或者 d 代表分数坐标系 Direct, 值得注意的是 ,VASP 输出文件 CONTCAR 里面采用的是分数坐标系。两个坐标系的区别从第 8 行开始 前面的七行都保持完全一致。 也就是说 如果想实现两个坐标系之间转换 我们只需改变第 7 行后面的部分即可 这个也可以用 VESTA 完成。
  • 第 9 行是氧原子的坐标信息。

用vesta 可以非常方便的生成 POSCAR比如我们把上节课下载好的Al2O3.cif 文件拖到 vesta 里。 File Export Data 里,保存类型选择 VASP 即可。会生成一个 vasp 后缀的文件,我们只需要把文件名重命名为 POSCAR 即可

POTCAR

赝势文件选取

  1. 建议都用 potpaw_PBE.54.tar.gz 最新的赝势更为准确,5.4 的赝势里包含了动能项,可以用一些特殊的泛函,比如 SCAN 。
  2. 如果有计算需要LDA 的赝势,建议用 Potpaw_LDA.54.tar.gz
  3. USPPPAW 两种赝势应该用哪一种呢?根据手册上建议,直接无视USPP 行了, USPP 可以说是之前计算机太差时候一种妥协方法,精度不好,现在已经很少用了。

赝势版本

根据官网wiki,VASP Portal提供了周期表中所有元素的投影增强波(PAW)赝势。这些赝势用于PAW方法,并存储在POTCAR文件中。每个元素的PAW赝势有多个版本可用。标准版本没有扩展名。_h扩展表示该赝势比标准赝势更硬,因此需要更大的能量截断。_s扩展表示该赝势比标准版本更软。_pv和_sv扩展表示将半芯态和价态视为价态(即对于V_pv,将半芯态和价态视为价态;对于V_sv,将半芯态和价态视为价态)。_d扩展的PAW文件将半芯态视为价态(对于Ga_d,将半芯态视为价态)

根据您的需求,您可以选择以下赝势:

  • V:标准版本。
  • V_pv:将半芯态和价态视为价态。
  • V_sv:将半芯态和价态视为价态。
  • V_sv_GW:将半芯态和价态视为价态。

赝势文件生成

POTCAR 怎么生成:

下面是普适的方法,在 linux 服务器里操作。其他的用脚本自动生成的放法很多,可以自己研究。

第一步,把官网下载的赝势文件解压到到 ~/bin 目录,方法:

1) potpaw_PBE.54.tar.gz 上传到服务器的 ~/bin 目录。
2) cd ~/bin
3) mkdir pbe54
4) cp potpaw_PBE.54.tar.gz ./pbe54
5) cd ./pbe54
6) tar -zxvf potpaw_PBE.54.tar.gz

第二步,生成赝势文件,统一格式,比如我的POSCAR 里有 Al O 两种元素:

cat ~/bin/pbe54/Al/POTCAR ~/bin/pbe54/O/POTCAR > POTCAR

POTCAR 中的元素顺序一定要和 POSCAR 保持一致 否则计算会出错。

参考资料

https://lvaspthw.readthedocs.io/en/latest/LVASPTHW/Ex_07/