



在计算材料科学中,结合能(Binding Energy)或吸附能(Adsorption Energy)是衡量一个粒子(原子、分子、团簇)与基底(表面、缺陷、掺杂位点等)之间相互作用强度的关键物理量。结合能的定义如下:
其中:





:复合体系(吸附体系)的总能量
![]()



:基底体系的能量
![]()



:吸附物的能量
结合能为负值表示吸附过程为放热过程,体系稳定;绝对值越大,吸附越强。
结合能范围 |
相互作用类型 |
典型材料体系 |
|
-1.0 eV – -5.0 eV |
化学吸附 |
CO/Pt(111), H/Metal |
|
-0.1 eV – -1.0 eV |
较强物理吸附 |
有机分子/二维材料 |
|
-0.01 eV – -0.1 eV |
弱物理吸附 |
惰性气体/表面 |
|
> 0 eV |
不稳定/排斥 |
部分缺陷体系 |
结合能计算在催化、吸附分离、表面科学、储能材料等领域具有重要应用价值。





推荐配置:
# VASP版本选择
# VASP 6.4+ 版本(稳定性最佳)
# VASP 6.5+ 版本(GPU支持)
# 依赖库
libmpi-dev
libblas-dev
liblapack-dev
fftw3-dev
# 编译器
# Intel Compiler (推荐)
module load intel/2024.1
# 或GNU编译器
module load gcc/13.2
并行环境设置:
# 节点数与核心数配置
# 根据体系大小选择
# 小体系:1节点 × 16核
# 中体系:2-4节点 × 64核
# 大体系:8-16节点 × 256核
# 环境变量
export OMP_NUM_THREADS=8
export KMP_AFFINITY=granular
POSCAR文件结构
Title
1.0
# 晶格参数 (保持复合体系一致)
5.200000 0.000000 0.000000
0.000000 5.200000 0.000000
0.000000 0.000000 15.000000
# 原子种类
Al C
# 原子数目
16 1
# 坐标方式
Direct
# 原子坐标
Al
Al
…
C
关键注意事项:
1.基底和吸附物计算必须使用相同的晶胞尺寸
2.真空层厚度建议≥15 Å(表面计算)
3.吸附物位置需预先放置合理(可使用GPAW、ASE或VESTA)
POTCAR文件生成
# 使用相同版本和类型的赝势
# 建议采用PBE泛函对应的PAW赝势
# 合并赝势文件
cat /path/to/POTCAR_Al /path/to/POTCAR_C > POTCAR
# 检查赝势版本一致性
# 确保所有原子类型使用相同POTCAR库版本
KPOINTS设置
Automatic generation
0
Monkhorst-Pack
9 9 1
0 0 0
K点收敛测试要点:
表面计算:kz方向可设为1(真空层方向)
体相材料:k点密度需进行收敛测试
推荐:能量变化时的最小K点网格

INCAR关键参数
# ==================== INCAR文件 ====================
SYSTEM = Adsorption system
PREC = Accurate # 高精度
ENCUT = 450 # 平面波截断能
ISMEAR = 0 # Gaussian展宽(精确能量)
SIGMA = 0.05 # 展宽参数 (eV)
ISPIN = 2 # 自旋极化(如需)
LCHARG = .TRUE. # 输出电荷密度
LWAVE = .FALSE. # 不保存波函数(节省空间)
# 离子步
IBRION = 2 # 共轭梯度优化
ISIF = 2 # 只优化原子位置
NSW = 100 # 最大离子步
EDIFFG = -0.02 # 力收敛判据 (eV/Å)
# 电子步
EDIFF = 1E-6 # 能量收敛判据
NELM = 200 # 最大电子步
ALGO = Fast # 快速算法
结合能计算专用INCAR:
# 静态能量计算(用于结合能)
IBRION = -1
NSW = 0
EDIFF = 1E-8 # 更高精度
ISMEAR = 0
SIGMA = 0.05
第一步:基底结构优化
# INCAR参数
SYSTEM = Substrate only
IBRION = 2
ISIF = 2
NSW = 100
EDIFFG = -0.01
# 运行
mpirun -np 16 vasp_std > out_substrate
第二步:吸附物结构优化(可选)
# 对分子吸附物单独优化
# 可使用更大的真空层
SYSTEM = Adsorbate only
ISYM = 0 # 关闭对称性
第三步:复合体系结构优化
# INCAR参数
SYSTEM = Composite system
IBRION = 2
ISIF = 2
NSW = 100
EDIFFG = -0.02
优化完成的判断标准:
# 检查CONTCAR和OUTCAR
grep “fmax” OUTCAR
# 输出类似:fmax = 0.008923 eV/Angstrom
# 最大力应小于0.02 eV/Å





┌─────────────────────────────────────────────────────────┐
│ 结合能计算流程 │
├─────────────────────────────────────────────────────────┤
│ │
│ 步骤1:复合体系计算 │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ POSCAR_system │ │ INCAR_static │ │
│ │ POTCAR │ │ ISMEAR=0 │ │
│ │ KPOINTS │ │ NSW=0 │ │
│ └─────────────────┘ └─────────────────┘ │
│ ↓ │
│ vasp_std (静态计算) │
│ ↓ │
│ E_total = 从OUTCAR提取自由能 │
│ │
│ 步骤2:基底计算 │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ POSCAR_substrate │ │ INCAR_static │ │
│ │ (相同晶胞) │ │ 参数一致 │ │
│ └─────────────────┘ └─────────────────┘ │
│ ↓ │
│ vasp_std (静态计算) │
│ ↓ │
│ E_substrate = 从OUTCAR提取自由能 │
│ │
│ 步骤3:吸附物计算 │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ POSCAR_adsorbate │ │ INCAR_static │ │
│ │ (相同位置) │ │ 参数一致 │ │
│ └─────────────────┘ └─────────────────┘ │
│ ↓ │
│ vasp_std (静态计算) │
│ ↓ │
│ E_adsorbate = 从OUTCAR提取自由能 │
│ │
│ 最终计算: │
│ E_binding = E_total – (E_substrate + E_adsorbate) │
│ │
└─────────────────────────────────────────────────────────┘
#!/bin/bash
# ==================== 结合能计算脚本 ====================
# ============ 步骤1:复合体系 ============
mkdir 01_total
cp 00_vasp/* 01_total/
cd 01_total
# 复制复合体系POSCAR
cp ../00_vasp/POSCAR_total .
# INCAR配置
cat > INCAR
SYSTEM = Total System
PREC = Accurate
ENCUT = 450
ISMEAR = 0
SIGMA = 0.05
ISPIN = 2
LCHARG = .TRUE.
LWAVE = .FALSE.
IBRION = -1
NSW = 0
EDIFF = 1E-8
ALGO = Normal
EOF
# 运行
mpirun -np 16 vasp_std > OUTCAR_total
# 提取能量
E_total=$(grep “free energy TOTEN” OUTCAR_total | tail -1 | awk ‘{print $4}’)
echo “复合体系总能量: $E_total eV”
# ============ 步骤2:基底体系 ============
cd ../
mkdir 02_substrate
cp 00_vasp/* 02_substrate/
cd 02_substrate
cp ../00_vasp/POSCAR_substrate .
cp ../00_vasp/INCAR_static INCAR
cp ../00_vasp/POTCAR .
# 运行
mpirun -np 16 vasp_std > OUTCAR_substrate
# 提取能量
E_substrate=$(grep “free energy TOTEN” OUTCAR_substrate | tail -1 | awk ‘{print $4}’)
echo “基底体系能量: $E_substrate eV”
# ============ 步骤3:吸附物体系 ============
cd ../
mkdir 03_adsorbate
cp 00_vasp/* 03_adsorbate/
cd 03_adsorbate
cp ../00_vasp/POSCAR_adsorbate .
cp ../00_vasp/INCAR_static INCAR
cp ../00_vasp/POTCAR .
# 运行
mpirun -np 16 vasp_std > OUTCAR_adsorbate
# 提取能量
E_adsorbate=$(grep “free energy TOTEN” OUTCAR_adsorbate | tail -1 | awk ‘{print $4}’)
echo “吸附物体系能量: $E_adsorbate eV”
# ============ 计算结合能 ============
cd ..
python3
import numpy as np
E_total = -1234.567890 # 替换为实际值
E_substrate = -1200.123456
E_adsorbate = -34.456789
E_binding = E_total – (E_substrate + E_adsorbate)
print(f”结合能: {E_binding:.6f} eV”)
print(f”每原子结合能: {E_binding/len(atoms):.6f} eV”)
PYEOF
#!/usr/bin/env python
# ==================== OUTCAR能量提取脚本 ====================
import re
def extract_energy(filename):
“””从OUTCAR文件提取总能“””
energies =
with open(filename, ‘r’) as f:
for line in f:
if ‘free energy TOTEN’ in line:
# 提取能量值
parts = line.split()
energy = float(parts)
energies.append(energy)
# 取最后一步的能量
return energies[-1] if energies else None
# 使用示例
E_total = extract_energy(‘OUTCAR_total’)
E_substrate = extract_energy(‘OUTCAR_substrate’)
E_adsorbate = extract_energy(‘OUTCAR_adsorbate’)
E_binding = E_total – (E_substrate + E_adsorbate)
print(f”结合能 = {E_binding:.6f} eV”)
替代方法:从OSZICAR提取
# OSZICAR文件最后几行
grep “F=” OUTCAR | tail -5
# 或使用awk
grep “free energy TOTEN” OUTCAR | tail -1 | awk ‘{print $5}’




结合能计算的基本原理:结合能的定义、结合能计算的物理意义
结合能计算的前期准备:软件安装与环境配置、输入文件准备、结构优化流程
结合能计算完整流程:标准三步计算法、详细计算脚本、从OUTCAR提取能量
下一章将正式引入本次教程的核心—反应模型与反应位点。我们将从HER催化剂模型与位点知识点梳理、催化剂活性位点的原子级模型介绍了、理论计算方法与工具介绍了方面详细介绍反应模型与反应位点。
