密度泛函理论计算软件VASP最全入门干货:四个输入文件逐行详解
VASP(Vienna Ab initio Simulation Package)是一个基于 Fortran 的从头计算软件包,主要用于进行密度泛函理论(DFT)计算,以处理材料的电子结构。它采用平面波基组和赝势方法,适用于模拟固体、表面、分子和纳米结构的电子、结构和动力学性质。VASP 的主要功能包括电子结构计算、离子弛豫(结构优化)、分子动力学模拟、带结构分析以及各种高级功能如杂化泛函、GW 方法和机器学习力场。它的目的是通过量子力学原理从第一性原理模拟材料行为,帮助研究者预测材料的物理和化学性质,而无需实验数据。VASP 是材料科学、凝聚态物理和计算化学领域的标准工具之一,由维也纳大学开发,是专有软件,需要许可证。
运行 VASP 计算通常需要四个主要输入文件:INCAR、POSCAR、KPOINTS 和 POTCAR。这些文件定义了计算参数、原子结构、k 点采样和赝势。VASP 使用合理的默认值,但这些文件允许用户自定义计算。输出文件包括 OUTCAR(详细日志)、CONTCAR(更新后的结构)和 WAVECAR(波函数)等。下面详细解释每个输入文件的目的、格式以及各行(或部分)的含义和用途。
一、INCAR 文件
目的
INCAR 是 VASP 的核心输入文件,用于控制计算的算法、参数和行为。它决定了 VASP “做什么”和“如何做”,包括电子结构优化、离子弛豫、分子动力学等。如果某些参数未指定,VASP 会使用默认值。但 INCAR 是最常见的错误来源,因此需要仔细理解每个标签的含义。
格式
INCAR 是一个标签格式的自由 ASCII 文本文件。每行通常是一个语句,格式为 标签 = 值。支持多语句在一行(用分号 ; 分隔)、长行续行(用反斜杠 )、引号内换行,以及注释(用 # 或 !)。空行通常被忽略,但制表符可能引起问题。
各行/标签的含义和用途(常见示例)
INCAR 中的行是键-值对,不是固定顺序。以下是常见标签的详细解释,按类别分组。每个标签后是示例行、值范围和用途。
系统描述标签:
SYSTEM = Rhodium surface calculation 含义:系统名称或描述,为计算体系起名字。用途:仅用于标识,不影响计算。输出文件会回显此信息,便于管理多个计算。
启动和电荷初始化标签:
ISTART = 0 含义:0 表示从头开始计算;1 表示从 WAVECAR 读取轨道。用途:控制计算是否续算。默认 0,用于新任务;用于重启时设为 1 以加速收敛。2 只在计算体积-能量相关曲线的时候用到。3 在重启分子动力学计算的时候使用,同时需要WAVECAR、CHGCAR(用于储存电荷密度信息)文件。
ICHARG = 2 含义:0 代表由WAVECAR计算电荷密度信息,若没有WAVECAR文件,则默认ICHARG = 2;1 代表由CHGCAR文件读取。如果没有CHGCAR文件,则由初猜产生;2 代表由程序初猜产生;ICHARG = 3 在重启分子动力学计算时使用;11/12/13 在做非自洽计算时使用、DOS和能带计算时使用。
电子结构参数标签:
ENCUT = 300.00 含义:平面波截断能量(单位 eV)。 用途:定义波函数扩展的能量上限。通常至少等于 POTCAR 中的 ENMAX,以确保精度。过低导致不准,过高增加计算成本。
ALGO = Normal 含义:电子最小化算法(Normal、Fast、All 等)。 用途:选择优化方法。Normal 是标准 Davidson 算法;Fast 更快但可能不稳定。
NELM = 60 含义:电子最小化步数的最大值。 用途:限制每离子步的电子迭代次数。默认 60,如果未收敛可增大。
EDIFF = 1E-06 含义:电子最小化的能量收敛阈值(单位 eV)。 用途:当能量变化小于此值时停止电子循环。用于控制精度;更严格的值(如 1E-08)用于高精度计算。当EDIFF =0 时,将严格执行NELM电子自洽步骤。
ISMEAR = 0含义:展宽方法(-1 为 Fermi 展宽;0 为 Gaussian;-4/-5 为四面体方法)。 用途:处理部分占据轨道。Fermi 展宽适合金属;四面体适合半导体/绝缘体。不同的值适用于不同的体系:导体,半导体,绝缘体;( 0 (Gaussian Smearing) 可以满足大部分的体系(金属,导体,半导体,分子))
SIGMA = 0.05 含义:展宽宽度(单位 eV)。 用途:控制展宽强度。过大导致能量不准,过小可能不收敛。典型值 01-0.2。
1)金属 ISMEAR = 1 ; SIGMA = 0.1(默认0.2,也可以用0.05)2)绝缘体或半导体 ISMEAR = 0 ; SIGMA = 0.053)气体分子,原子体系计算: ISMEAR = 0 ;SIGMA = 0.01
离子弛豫/分子动力学标签:
EDIFFG = -1E-02 含义:离子弛豫的力收敛阈值(单位 eV/Å)。负值表示力阈值,正值表示能量阈值。 用途:决定何时停止结构优化。当所有力小于 |EDIFFG| 时停止。
NSW = 20 含义:离子步数。 用途:设置弛豫或 MD 的步数。0 表示只做单点能计算;>0 启用离子运动。
IBRION = 2 含义:结构优化算法(2 为共轭梯度;1 为 准牛顿法RMM-DIIS)。 用途:选择优化器。共轭梯度稳定;RMM-DIIS 更快但可能不稳。
POTIM = 0.5 含义:离子步长(单位 Å,或 MD 时 fs)。 用途:控制离子移动幅度。MD 时为时间步长。
性能优化标签:
KPAR = 4 含义:k 点并行组数。 用途:并行化 k 点计算,提高效率。
NCORE = 4 含义:每个轨道的核数。 用途:优化并行性能。
LREAL = A 含义:使用实空间投影(A 为原子级)。 用途:加速计算,但略微牺牲精度。适合大系统。
提示:VASP 在 OUTCAR 中回显 INCAR 设置,便于验证。标签不区分大小写,但值需精确。
二、POSCAR 文件
目的:
POSCAR 定义系统的原子结构,包括晶胞几何和离子位置。它是计算的起点,支持选择性动力学(固定某些原子)和初始速度(用于 MD)。格式与输出文件 CONTCAR 兼容,用于重启。
格式:
POSCAR 是固定顺序的纯文本文件。各部分按行分隔,有些可选。
各行的含义和用途(示例注解)
以下是典型 POSCAR 的行-by-行解释,使用立方 BN 示例。
第 1 行:注释示例:Cubic BN 含义:系统描述(最多 40 字符)。 用途:标识文件,不影响计算。
第 2 行:缩放因子示例:57 含义:通用缩放因子 s(或三个数分别缩放 x/y/z)。负值表示目标体积。 用途:缩放晶格矢量和笛卡尔位置。单位 Å,确保结构尺寸正确。
第 3-5 行:晶格矢量示例:0 0.5 0.5 0.5 0.0 0.5 0.5 0.5 0.0 含义:三个晶格矢量 的笛卡尔分量(未缩放)。 用途:定义单元胞。实际矢量 = 此 × s。用于计算倒易空间。
第 6 行:物种名称(可选)示例:B N 含义:元素符号列表。 用途:注释,必须匹配 POTCAR 顺序。不允许重复名称(在某些模式下)。
第 7 行:每个物种的离子数示例:1 1 含义:每个元素的原子数。 用途:定义总原子数和分配。顺序匹配 POTCAR。
第 8 行:选择性动力学(可选)示例:Selective dynamics 含义:启用后,每位置行添加 T/F 标志(T=允许移动,F=固定)(如0 0.0 0.0 F F F)。 用途:控制弛豫中哪些坐标可变。适用于表面或缺陷模拟。
第 9 行:位置模式示例:Direct 含义:Direct 表示分数坐标;Cartesian 表示绝对 Å。 用途:指定位置类型。Direct 适合周期系统。
后续行:离子位置(每原子一行)示例:00 0.00 0.00 0.25 0.25 0.25 含义:每个原子的 x y z 坐标(Direct: 分数;Cartesian: Å × s)。如果选择性动力学,添加 T/F。 用途:定义原子位置。顺序按物种数分配(第一行 B,第二行 N)。需至少 7 位精度以保持对称性。
可选部分:晶格速度(MD 重启)示例:从 CONTCAR 复制。 含义:晶格矢量的速度(当单元胞可变时)。 用途:仅用于 MD 续算,不手动编辑。
可选部分:离子速度示例:Direct 后每原子一行速度。 含义:初始速度(Direct: 分数/步;Cartesian: Å/fs)。 用途:初始化 MD。通常用 INCAR 的 TEBEG 热初始化。
可选部分:MD 额外数据 含义:预测-校正坐标和恒温器数据。 用途:仅用于 MD 重启,不编辑。
提示:使用工具如 VESTA 检查结构。精度高以避免对称问题。
三、KPOINTS 文件
目的:
KPOINTS 指定 Brillouin 区中的 k 点采样,用于积分电子结构。如果缺失,使用 INCAR 的 KSPACING。k 点收敛对精度至关重要。
格式
支持自动、正则网格、线模式和显式列表。固定顺序。
各行的含义和用途
不同模式下行不同。以下按模式解释。
自动模式(已弃用):
第 1 行:注释,如 Fully automatic mesh。用途:描述。
第 2 行:0。含义:自动生成。
第 3 行:Auto 或 A。含义:激活自动。
第 4 行:10。含义:长度参数 ,决定细分。用途:生成 Gamma 中心网格。建议用 KSPACING 代替。
正则 k 点网格(Gamma 或 Monkhorst-Pack,最常用):
第 1 行:注释,如 Regular k-point mesh。
第 2 行:0。含义:自动计数。
第 3 行:Gamma 或 Monkhorst。含义:网格类型(G: Gamma 中心;M: Monkhorst-Pack)。
第 4 行:4 4 4。含义:沿倒易矢量的细分 N1 N2 N3。用途:定义网格密度。选择比例匹配倒易矢量长度。
第 5 行(可选):0 0 0。含义:移位 s1 s2 s3。用途:调整网格位置,避免对称问题。
线模式(带结构):
第 1 行:注释,如 k points along high symmetry lines。
第 2 行:40。含义:每段点数。用途:决定分辨率。
第 3 行:line mode 或 L。含义:激活线模式。
第 4 行:fractional 或 Cartesian。含义:坐标系。
后续成对行:如 0 0 0 Γ 和 5 0.5 0 X。含义:路径端点和标签。用途:生成高对称路径上的 k 点。用于后处理(ICHARG=11)。
显式列表模式:
第 1 行:注释。
第 2 行:4。含义:k 点数。
第 3 行:Cartesian。含义:坐标系。
后续行:0 0.0 0.0 1。含义:x y z 和权重。用途:自定义 k 点,适用于特殊情况如四面体方法扩展。
提示:对称性会减少 k 点(ISYM>0)。Gamma 适合某些晶格以保持对称。
四、POTCAR 文件
目的
POTCAR 包含每个元素的赝势数据,用于描述原子核-电子相互作用。它由单个元素 POTCAR 拼接而成,必须与 POSCAR 顺序匹配。
格式
纯文本,由头信息和表格数据组成。不编辑。
各部分/行的含义和用途
POTCAR 是拼接的,通常不按行手动创建。但理解其内容:
头信息标签:
TITEL = PAW_PBE Ti_pv 07Sep2000 含义:赝势标题,包括类型(PAW)、泛函(PBE)、元素和日期。 用途:标识赝势。
LEXCH = PE 含义:交换-相关泛函。 用途:读入但不控制计算(用 INCAR 覆盖)。
ZVAL = 4 含义:价电子数。 用途:计算总电子数。
POMASS = 47.867 含义:原子质量(原子单位)。 用途:MD 时用于动力学;可调整轻元素。
ENMAX = 400 和 ENMIN = 300 含义:默认截断能量。 用途:建议 ENCUT 值;VASP 用最大值。
EAUG = 600 含义:增强电荷截断。 用途:内部计算。
原子配置块:如量子数 n, l, j、能量和占据。 含义:参考状态定义。 用途:设置赝势参考。
表格数据块:赝势的数值表。用途:核心计算数据。
结束:End of Dataset。
生成方式:cat POTCAR_Al POTCAR_C > POTCAR。重要性:确保计算准确性和可重复性。