VASP 5.4.4 编译集成 VTST+VASPSol+Wannier90+libbeef

本文最后更新于:2026年2月1日 下午

最近因为在一个新的超算平台开了户,但是奇葩的是这个超算平台竟然 VASP 都没有编译。由于着急算个 case,想着干脆自己编译一个算了。本着大而全的心思,把常用和不常用的几个插件都编译进去。

本文记录了在 Intel 2018 工具链环境下,编译集成了 4 个常用插件的 VASP 5.4.4 的完整过程。

插件功能简介

在开始编译之前,先简单介绍一下本次集成的各个插件的功能:

libbeef

BEEF (Bayesian Error Estimation Functional) 是一个用于密度泛函理论的贝叶斯误差估计泛函库。它可以在保持计算成本基本不变的情况下,对 DFT 计算结果提供误差估计,特别适用于需要评估计算不确定性的研究。

  • 官方仓库: https://github.com/vossjo/libbeef
  • 相关文献: Wellendorff et al., Phys. Rev. B 85, 235149 (2012)
  • 主要用途: 化学反应能垒的不确定性分析、吸附能计算误差评估

Wannier90

Wannier90 是一个计算最大局域化 Wannier 函数(MLWF)的工具,可以从 DFT 计算得到的 Bloch 态构建局域化的 Wannier 函数。

VTST (Transition State Tools)

VTST 是德克萨斯大学 Henkelman 课题组开发的过渡态搜索工具集,包含了多种优化算法和过渡态搜索方法。

  • 官方网站: https://theory.cm.utexas.edu/vtsttools/
  • 主要功能:
    • NEB (Nudged Elastic Band): 反应路径搜索
    • Dimer: 鞍点搜索
    • 改进的优化算法 (BFGS, LBFGS, FIRE 等)
    • Lanczos: 计算 Hessian 矩阵选定本征模
  • 适用场景: 催化反应机理研究、扩散路径计算、相变过渡态

VASPSol

VASPSol 是一个隐式溶剂模型插件,基于连续介质模型处理溶液环境效应。

  • 官方仓库: https://github.com/henniggroup/VASPsol
  • 相关文献: Mathew et al., J. Chem. Phys. 140, 084106 (2014)
  • 主要用途:
    • 电化学界面模拟
    • 溶液中的分子、表面反应
    • 需要考虑溶剂化效应的体系
  • 优势: 相比显式溶剂模型,大幅降低计算成本

一、编译器与核心模块选择

首先 module avail 看了下编译工具链,选择了比较稳健、兼容性比较好的 Intel 2018 工具链。

1
2
3
module purge
module load compiler/intel/2018.5.274
module load mpi/intelmpi/2018.4.274

建议: 将上述模块加载命令添加到 ~/.bashrc 中,方便每次登录 shell 自动加载,同时也要放在提交作业的脚本里面。

验证编译器和 MKL 工具是否正确加载:

1
2
3
4
5
6
7
8
which fpp
# 输出: /public/software/compiler/intel/intel-compiler-2018.5.274/bin/intel64/fpp

which mpiifort
# 输出: /public/software/mpi/intelmpi/2018.4.274/intel64/bin/mpiifort

echo $MKLROOT
# 输出: /public/software/compiler/intel/intel-compiler-2018.5.274/mkl

二、VASP 5.4.4 源码和插件准备

2.1 下载并解压 VASP 源码

先把 VASP 5.4.4 源码准备好。注意 VASP 5.4.4 出过一个 patch 修复了一个 bug,官方的版本是 vasp.5.4.4.pl2.tgz

获取源码: VASP 是商业软件,需要有效的 VASP 许可证才能从官网下载: https://www.vasp.at/

创建目录,解压源码:

1
2
3
4
mkdir -p software/test/vasp5.4.4/
cd software/test/vasp5.4.4/
tar -xzf vasp.5.4.4.pl2.tgz
cd vasp.5.4.4.pl2/

2.2 准备初始 Makefile

1
cp arch/makefile.include.linux_intel makefile.include

2.3 编译顺序说明

VASPSol 和 VTST 是源代码补丁,必须在编译 VASP 前应用;Wannier90 和 libbeef 是外部库,需要先单独编译。

本文编译顺序: 1. libbeef(独立编译) 2. Wannier90(独立编译) 3. VTST(源码补丁) 4. VASPSol(源码补丁) 5. VASP 主程序


三、编译外部库

3.1 编译 libbeef

下载源码

从 GitHub 下载 libbeef:

1
2
3
cd /public/home/steven/software/test/vasp5.4.4/
git clone https://github.com/vossjo/libbeef.git libbeef-master
cd libbeef-master

编译安装

1
2
3
./configure CC=icc --prefix=/public/home/steven/software/test/vasp5.4.4/libbeef-master
make
make install

执行完之后,在 lib/ 目录下会生成 libbeef.a 静态库文件,完整路径为: /public/home/steven/software/test/vasp5.4.4/libbeef-master/lib/libbeef.a

修改 VASP 的 makefile.include

回到 VASP 源码文件夹 vasp.5.4.4.pl2/,编辑 makefile.include

步骤 1: 在 CPP_OPTIONS 中添加 -Dlibbeef 预处理选项:

1
2
3
4
5
6
7
8
9
10
 CPP_OPTIONS= -DHOST=\"LinuxIFC\"\
-DMPI -DMPI_BLOCK=8000 \
-Duse_collective \
-DscaLAPACK \
-DCACHE_SIZE=4000 \
-Davoidalloc \
-Duse_bse_te \
-Dtbdyn \
-Duse_shmem \
+ -Dlibbeef

步骤 2: 添加 BEEF 库路径,并在 LLIBS 中链接:

1
2
3
4
 ......
+ BEEF = -L/public/home/steven/software/test/vasp5.4.4/libbeef-master/lib -lbeef
- LLIBS = $(SCALAPACK) $(LAPACK) $(BLAS)
+ LLIBS = $(SCALAPACK) $(LAPACK) $(BLAS) $(BEEF)

3.2 编译 Wannier90

下载源码

Wannier90 目前有 3.x 的版本,但是为了兼容 VASP 5.4.4,这里选择 2.1.0 版本。

1
2
3
4
cd /public/home/steven/software/test/vasp5.4.4/
wget http://www.wannier.org/code/wannier90-2.1.0.tar.gz
tar -xzf wannier90-2.1.0.tar.gz
cd wannier90-2.1.0/

配置编译选项

复制 Intel Fortran 的配置模板:

1
cp config/make.inc.ifort ./make.inc

修改 make.inc 文件,将 LIBDIR 改为使用环境变量:

1
2
- LIBDIR = /opt/intel/mkl/lib/intel64
+ LIBDIR = ${MKLROOT}/lib/intel64

编译

1
2
make
make lib

关于测试: make test 是检测是否编译成功。由于代码库比较老,如果 HPC 环境使用较新的 Python,make test 可能显示 failed 或者卡住。解决方案: - 切换到 Python 2.x: module load python/2.7 - 或者直接跳过测试(不影响使用)

编译完成后会在当前目录生成 libwannier.a 静态库文件。

修改 VASP 的 makefile.include

仿照上面 libbeef 的步骤,编辑 VASP 源码目录下的 makefile.include

步骤 1: 在 CPP_OPTIONS 中添加 Wannier90 v2 接口选项:

1
2
3
4
5
6
7
8
9
10
11
 CPP_OPTIONS= -DHOST=\"LinuxIFC\"\
-DMPI -DMPI_BLOCK=8000 \
-Duse_collective \
-DscaLAPACK \
-DCACHE_SIZE=4000 \
-Davoidalloc \
-Duse_bse_te \
-Dtbdyn \
-Duse_shmem \
-Dlibbeef \
+ -DVASP2WANNIER90v2

步骤 2: 添加 WANNIER90 库路径,并在 LLIBS 中链接:

1
2
3
4
5
 ......
BEEF = -L/public/home/steven/software/test/vasp5.4.4/libbeef-master/lib -lbeef
+ WANNIER90 = /public/home/steven/software/test/vasp5.4.4/wannier90-2.1.0/libwannier.a
- LLIBS = $(SCALAPACK) $(LAPACK) $(BLAS) $(BEEF)
+ LLIBS = $(WANNIER90) $(SCALAPACK) $(LAPACK) $(BLAS) $(BEEF)

四、应用源码补丁

4.1 集成 VTST

下载源码

从 VTST 官网下载最新版本:https://theory.cm.utexas.edu/vtsttools/download.html

1
2
3
cd /public/home/steven/software/test/vasp5.4.4/
wget https://theory.cm.utexas.edu/code/vtstcode-213.tgz
tar -xzf vtstcode-213.tgz

复制源文件到 VASP

将 VTST 的所有源代码复制到 VASP 5.4.4 的 src 目录:

1
cp vtstcode-213/vtstcode5/* vasp.5.4.4.pl2/src/

修改 main.F

编辑 vasp.5.4.4.pl2/src/main.F,找到 CHAIN_FORCE 调用处(一般在 3146 行左右):

1
2
3
4
- CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
LATT_CUR%A,LATT_CUR%B,IO%IU6)
+ CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6)

说明: 这是为了将应力张量 (TSIF) 传递给 CHAIN_FORCE 函数,VTST 需要这个参数用于 NEB 计算中的晶格优化。

修改 .objects 文件

编辑 vasp.5.4.4.pl2/src/.objects 文件,找到两处 chain.o(搜索即可找到),在这两处 chain.o 之前分别添加以下内容:

1
2
bfgs.o dynmat.o instanton.o lbfgs.o sd.o cg.o dimer.o bbm.o \
fire.o lanczos.o neb.o qm.o opt.o \

4.2 集成 VASPSol

下载源码

从 GitHub 下载 VASPSol:

1
2
cd /public/home/steven/software/test/vasp5.4.4/
git clone https://github.com/henniggroup/VASPsol.git VASPsol-master

复制源文件

1
cp VASPsol-master/src/solvation.F vasp.5.4.4.pl2/src/

应用补丁

1
2
cd vasp.5.4.4.pl2/
patch src/pot.F < ../VASPsol-master/patches/pbz_patch_541

注意: VASP 5.4.4.pl2仍然使用 pbz_patch_541 补丁。

修改 makefile.include

CPP_OPTIONS 中添加 VASPSol 选项:

1
2
3
4
5
6
7
8
9
10
11
12
 CPP_OPTIONS= -DHOST=\"LinuxIFC\"\
-DMPI -DMPI_BLOCK=8000 \
-Duse_collective \
-DscaLAPACK \
-DCACHE_SIZE=4000 \
-Davoidalloc \
-Duse_bse_te \
-Dtbdyn \
-Duse_shmem \
-Dlibbeef \
-DVASP2WANNIER90v2 \
+ -Dsol_compat

五、编译 VASP

所有插件配置完成后,回到 VASP 源码目录:

1
cd /public/home/steven/software/test/vasp5.4.4/vasp.5.4.4.pl2/

5.1 编译

1
make all         # 编译所有版本(std, gam, ncl)

编译时间: 根据硬件配置,完整编译大约需要 20-40 分钟。

5.2 编译目标说明

  • make std: 标准版本(支持 k 点)
  • make gam: Gamma-only 版本(仅 Gamma 点,速度更快)
  • make ncl: 非共线磁性版本(自旋轨道耦合)
  • make all: 编译以上三个版本

5.3 验证编译结果

编译成功后,在 bin/ 目录下会生成三个可执行文件:

1
2
3
4
5
ls bin/
# 应该看到:
# vasp_std
# vasp_gam
# vasp_ncl

六、总结

本文详细记录了在 Intel 2018 工具链下编译 VASP 5.4.4 并集成 4 个常用插件的完整流程:

  1. libbeef: 贝叶斯误差估计泛函,用于 DFT 计算不确定性分析
  2. Wannier90: 最大局域化 Wannier 函数工具,用于能带插值和紧束缚模型构建
  3. VTST: 过渡态搜索工具集,包含 NEB、Dimer 等算法
  4. VASPSol: 隐式溶剂模型,用于溶液环境模拟

关键要点: - 外部库(libbeef, Wannier90)需要先独立编译 - 每个插件都需要对应的 CPP_OPTIONS 预处理选项


参考资料

  1. VASP 官方 插件Wiki: https://www.vasp.at/wiki/index.php/Makefile.include#Wannier90_(optional)
  2. libbeef 文档: https://github.com/vossjo/libbeef
  3. Wannier90 用户手册: https://github.com/wannier-developers/wannier90/raw/v3.1.0/doc/compiled_docs/user_guide.pdf
  4. VTST Tools 官网: https://theory.cm.utexas.edu/vtsttools/
  5. VASPSol GitHub: https://github.com/henniggroup/VASPsol
  6. VASPSol 论文: Mathew et al., J. Chem. Phys. 140, 084106 (2014)
  7. BEEF 泛函论文: Wellendorff et al., Phys. Rev. B 85, 235149 (2012)

“觉得不错的话,请我喝杯咖啡吧~ ୧(๑•̀⌄•́๑)૭”

ETH地址

ETH支付

DOGE地址

DOGE支付

VASP 5.4.4 编译集成 VTST+VASPSol+Wannier90+libbeef
https://tpmk.github.io/2026/02/01/compiling-vasp-5.4.4-vtst-vaspsol-wannier90-libbeef/
作者
Steven Chu
发布于
2026年2月1日
许可协议