EN 中文

VASP 结构优化

Published on 2024-12-02

1. 输入文件

VASP 的输入文件为四个基本文件:INCARPOSCARPOTCARKPOINTS

1.1 INCAR 参数设置

System = Si-film    # 系统名称,可自由定义以标识当前计算体系。

# 任务控制
ISTART = 0          # 初始态设置:
                    # 0 从头开始计算。
                    # 1 从 WAVECAR 文件读取初始波函数。
                    # 2 从 WAVECAR 和 CHGCAR 文件读取波函数和电荷密度。
ISPIN = 1           # 自旋极化选项:
                    # 1 非自旋极化(非磁性材料)。
                    # 2 自旋极化(磁性材料)。
ICHARGE = 2         # 初始电荷密度选择:
                    # 2 从 POTCAR 提供的静态电荷密度开始。
                    # 1 从头生成电荷密度。
LWAVE = .FALSE.     # 输出 WAVECAR 文件:
                    # .TRUE. 输出(存储波函数数据)。
                    # .FALSE. 不输出(节省磁盘空间)。
LCHARG = .FALSE.    # 输出 CHGCAR 文件:
                    # .TRUE. 输出(存储静态电荷密度)。
                    # .FALSE. 不输出(节省磁盘空间)。
ISYM = 0            # 对称性设置:
                    # 0 关闭对称性(含缺陷或非对称结构)。
                    # 1 或 2 保持对称操作。

# 电子弛豫
ENCUT = 500         # 平面波截断能(eV),决定计算精度和效率。
ISMEAR = 0          # 展宽方法:
                    # -5(四面体法,用于金属),0(高斯展宽,用于半导体),1 或 2(费米展宽)。
SIGMA = 0.05        # 展宽宽度(eV),推荐值:0.01 ~ 0.1。
EDIFF = 1E-08       # SCF 收敛判据:迭代间能量变化小于 1E-08 eV 时停止。
NELMIN = 6          # 最少电子迭代次数,确保基本收敛。
NELM = 300          # 最大电子迭代次数,避免迭代循环。
GGA = PE            # 泛函选择,使用 PBE(Perdew-Burke-Ernzerhof)交换关联泛函。
LREAL = .FALSE.     # 倒空间计算,提高精度但增加计算量。
ADDGRID = .TRUE.    # 启用额外 FFT 网格以提高数值精度。
ALGO = N            # 电子弛豫算法:
                    # Normal(标准模式),Fast 或 VeryFast(加速模式)。
PREC = Accurate     # 精度设置:
                    # Accurate(高精度),Normal 或 Low(用于初始测试)。

# 离子弛豫
ISIF = 2            # 晶格优化选项:
                    # 2 仅优化原子位置,固定晶格参数。
                    # 3 同时优化原子位置和晶格形状。
EDIFFG = -0.01      # 离子收敛判据:
                    # 负值基于力(eV/Å)。
                    # 正值基于能量。
IBRION = 2          # 离子弛豫算法:
                    # 2 共轭梯度法(适用于大多数优化任务)。
POTIM = 0.5         # 时间步长,控制优化速度。
NSW = 200           # 最大离子步数。

# 并行控制
NPAR = 4            # FFT 网格并行维度(推荐:总核数的平方根)。
KPAR = 2            # 并行 k 点数目(总核数应能被 NPAR × KPAR × NCORE 整除)。
NCORE = 12          # 每个任务的核数。

对于结构优化,INCAR 中的关键参数包括 IBRIONISIFNSWEDIFFEDIFFG

1.1.1 常用 IBRION 设置及应用

(1) 单点能计算
(2) 结构优化
(3) 分子动力学
(4) 声子计算

a. 有限差分法 IBRION = 5, 6
使用有限差分计算声子模式:

b. 微扰理论(DFPT) IBRION = 7, 8
使用密度泛函微扰理论(DFPT)计算声子模式:

1.1.2 常用 ISIF 设置及应用

1.1.3 NSWEDIFFEDIFFG 的推荐设置

参数 功能 初始优化 高精度优化 单点计算
NSW 最大离子步数 100-200 200-500 0
EDIFF SCF 收敛(eV) 1e-05 1e-08 1e-06
EDIFFG 离子收敛(eV/Å) -0.1 -0.01 不需要

1.2 POSCAR 示例

以下为描述体相硅结构的 POSCAR 文件示例:

Si-bulk   # 系统名称,可自定义
1.0       # 全局缩放因子(可用于缩放晶格)
   5.430    0.000    0.000  # 晶格矢量 a
   0.000    5.430    0.000  # 晶格矢量 b
   0.000    0.000    5.430  # 晶格矢量 c
Si           # 原子类型
2            # 每种类型的原子数
Direct       # 坐标类型(Direct:分数坐标;Cartesian:笛卡尔坐标)
  0.000  0.000  0.000  # 原子 1 的坐标
  0.250  0.250  0.250  # 原子 2 的坐标

硅薄膜(Si-film)的 POSCAR 文件示例:

Si Thin Film                            
   1.00000000000000     
     5.4299999999999997    0.0000000000000000    0.0000000000000000
     0.0000000000000000    5.4299999999999997    0.0000000000000000
     0.0000000000000000    0.0000000000000000   20.8599999999999994
   Si
    16
Selective dynamics  # 启用选择性动力学
Direct
0.000000 0.000000 0.200000 F F F  # 三个方向均固定
0.500000 0.500000 0.200000 T T F  # z 方向固定,x 和 y 方向自由
0.500000 0.000000 0.330153 T T T  # 三个方向均自由
0.000000 0.500000 0.330153 T T T
0.250000 0.250000 0.265077 T T T
0.750000 0.750000 0.265077 T T T
0.750000 0.250000 0.395230 T T T
0.250000 0.750000 0.395230 T T T
0.000000 0.000000 0.460307 T T T
0.500000 0.500000 0.460307 T T T
0.500000 0.000000 0.590460 T T T
0.000000 0.500000 0.590460 T T T
0.250000 0.250000 0.525384 T T T
0.750000 0.750000 0.525384 T T T
0.750000 0.250000 0.655537 T T T
0.250000 0.750000 0.655537 T T T

1.3 KPOINTS 文件

(1) Monkhorst-Pack 网格

Monkhorst-Pack 网格为周期性晶体计算提供均匀的 k 点分布。

Automatic k-point generation   # 自动 k 点生成方法(注释)
0                              # 忽略总 k 点数,使用自动生成
Monkhorst-Pack                 # 选择 Monkhorst-Pack 网格
4 4 4                          # x、y、z 方向的网格密度
0 0 0                          # 无网格偏移

适用场景:周期性晶体、优化、态密度计算和电子结构分析。

(2) Gamma 网格

Gamma 网格将 k 点网格以 Gamma 点为中心,适用于小晶格或非对称晶格。

Automatic k-point generation   # 自动 k 点生成方法(注释)
0                              # 忽略总 k 点数,使用自动生成
Gamma                          # 选择 Gamma 中心网格
4 4 4                          # x、y、z 方向的网格密度
0 0 0                          # 无网格偏移

适用场景:小体系、非对称晶格或快速优化计算。

1.4 POTCAR 文件使用

POTCAR 包含描述系统中原子性质所需的赝势信息。

VASP 提供多种类型的赝势:

生成 POTCAR 文件:

对于含 Si 和 H 原子的系统,拼接赝势文件:

cat /POT_GGA_PAW/POTCAR_Si /POT_GGA_PAW/POTCAR_H > POTCAR

2. 输出文件

2.1 CONTCAR 文件

内容:优化后的晶体结构,包括更新后的原子坐标和晶格参数。 格式:与 POSCAR 相同,可直接作为进一步计算的输入。 用途

2.2 OSZICAR 文件

内容

用途

2.3 OUTCAR 文件

内容

用途

2.4 XDATCAR 文件

内容

用途

2.5 vasprun.xml 文件

内容:XML 格式的全部计算数据记录,适合解析和后处理。

用途

3. 优化流程与收敛判据

3.1 优化流程

  1. 结构初始化
    • 初始结构通过 POSCAR 文件提供。
    • 使用 POTCARKPOINTSINCAR 文件配置优化条件。
  2. 逐步优化
    • 每次离子优化步后,重新计算系统的总能量、原子力和晶格应力。
    • 优化持续至满足收敛判据(如 EDIFFG)或达到最大步数(NSW)。
  3. 结构更新
    • 每个优化步的中间结果存储在 XDATCAR 文件中。
    • 优化后的最终结构保存在 CONTCAR 文件中。

3.2 收敛判据

可通过以下方法判断优化过程的收敛性:

  1. OUTCAR 文件
    • 检查每个原子上的力是否小于 EDIFFG
    • 验证总能量变化是否小于 EDIFF
  2. OSZICAR 文件
    • 查看 SCF 迭代中的能量变化(E0dE)。
    • 判断 SCF 过程是否已稳定收敛。
  3. CONTCAR 文件
    • 提取最终优化后的原子位置和晶格参数。
    • 若未收敛,CONTCAR 文件包含最后一步的结构。
  4. 使用工具
    • 使用 pymatgenASE 等工具解析 vasprun.xml 文件并评估收敛性。

3.3 常见问题与解决方案

3.3.1 SCF 不收敛

问题:SCF 迭代出现能量振荡或发散。

可能原因

解决方案

3.3.2 优化不收敛

问题:优化达到最大步数(NSW)但未满足力或能量的收敛判据。

可能原因

解决方案

3.3.3 优化中出现振荡

问题:优化过程中能量和力反复振荡,无法稳定收敛。

可能原因

解决方案

3.3.4 优化中出现发散

问题:优化过程中结构严重变形,导致能量大幅增加。

可能原因

解决方案