VTST 补丁编译步骤(VASP 6.4.3–6.6.1 + vtstcode)¶
本文件是 第1章 第9节 的操作清单,依据 VTST 官方安装说明(https://theory.cm.utexas.edu/vtsttools/installation.html )整理,只描述“做什么”,不包含 VASP 源码。
0. 准备¶
cd ~/software
git clone https://github.com/henkelmangroup/vtstcode.git # Apache-2.0
ls vtstcode # vtstcode6.4.3 vtstcode6.5.1 vtstcode6.6.0 vtstcode6.6.1 ...
cd ~/software/vasp.6.6.1
cp -r src src.orig # 备份,出问题时可以 diff 或还原
选择与 VASP 版本一致的 vtstcode 目录。若没有完全一致的目录,优先使用版本号最接近且不高于你的 VASP 的目录,并预期可能需要手动排错。
1. 复制 VTST 文件¶
cp -r ../vtstcode/vtstcode6.6.1/* src/
ls src/{neb,dimer,lanczos,dynmat,opt,fire,lbfgs,ml_pyamff}.F
ls -d src/pyamff_fortran
chain.F 会被 VTST 版本覆盖;其余为新增文件。
2. 修改 src/.objects¶
在 SOURCE 列表中 chain.o 那一行之前插入(每行末尾的反斜杠保持与文件中其他行一致):
bfgs.o dynmat.o instanton.o lbfgs.o sd.o cg.o dimer.o bbm.o \
fire.o lanczos.o neb.o qm.o \
pyamff_fortran/*.o ml_pyamff.o \
opt.o \
规则:dynmat.o neb.o dimer.o lanczos.o instanton.o 在 chain.o 之前;sd.o cg.o qm.o lbfgs.o bfgs.o fire.o ml_pyamff.o pyamff_fortran/*.o 在 opt.o 之前。
3. 修改 src/main.F(两处)¶
CALL CHAIN_FORCE(...):在参数TIFOR,与LATT_CUR%A,之间插入TSIF,(续行符&的位置保持合法)。IF (LCHAIN) CALL chain_init( T_INFO, IO)→CALL chain_init( T_INFO, IO)。
4. 修改 src/makefile¶
- 在
LIB变量末尾追加pyamff_fortran,例如LIB= lib parser→LIB= lib parser pyamff_fortran; - 并行编译时把依赖规则改为
dependencies: sources libs。
5. 自动检查(只读)¶
全部 [PASS] 后再编译;任何 [FAIL] 都会导致编译或运行出错。
6. 编译与验证¶
make veryclean
make DEPS=1 -j 16 all 2>&1 | tee make_vtst.log
grep -i -c "error" make_vtst.log
nm bin/vasp_std | grep -i -c dimer # > 0
nm bin/vasp_std | grep -i -c fire # > 0
建议把带 VTST 的程序装到单独目录(如 ~/software/vasp.6.6.1-vtst/bin)或改名(vasp_std_vtst),避免与原版混淆。功能验证见 第11章 过渡态搜索:INCAR 中 IMAGES 或 ICHAIN 设置后才会进入 VTST 代码;VTST 优化器需要 IBRION = 3、POTIM = 0 与 IOPT。
7. 安装 VTST 脚本¶
git clone https://github.com/henkelmangroup/vtstscripts.git ~/software/vtstscripts
echo 'export PATH=$HOME/software/vtstscripts:$PATH' >> ~/.bashrc
which nebmake.pl nebresults.pl chgsum.pl # 需要系统有 perl
常见错误¶
| 现象 | 原因 | 处理 |
|---|---|---|
| 编译 main.F 时 CHAIN_FORCE 参数不匹配 | 第 3 步第 1 处未改 | 加入 TSIF, |
| 运行 NEB 时 VTST 代码没被初始化 | 第 3 步第 2 处未改 | 去掉 IF (LCHAIN) |
| 找不到 PyAMFF 模块/对象 | .objects 顺序错或 LIB 未加 pyamff_fortran |
按第 2、4 步修改 |
make -j 时偶发找不到库 |
依赖规则缺 libs |
dependencies: sources libs |
| 与 VASP 版本不匹配的各种编译错误 | vtstcode 目录版本不对 | 换用对应版本目录,从 src.orig 重新开始 |