VASP Compilation
Table of Contents

vasp.5.4.1.05Feb16

下述VASP编译均基于Intel编译器,适用于并行版本。

clean

安装前首先检查编译器,MKL等路径是否配置正确。

[tangzeyuan@mu02 ~]$ which fpp
/opt/intel/composer_xe_2015.1.133/bin/intel64/fpp
[tangzeyuan@mu02 ~]$ which mpiifort
/opt/intel/impi/5.0.2.044/intel64/bin/mpiifort
[tangzeyuan@mu02 ~]$ echo $MKLROOT
/opt/intel/composer_xe_2015.1.133/mkl

接下来解压源代码,使用makefile.include.linux_intel进行编译,无需修改参数。 测试时可以make std(大约需要10分钟),确认配置之后可以make all来完成所有版本的编译。 为了便于检查编译过程中可能出现的各种问题,也可以make all > vasp_all.log 2>&1保留编译的输出和错误信息。

[tangzeyuan@mu02 ~]$ cd opt/
[tangzeyuan@mu02 opt]$ pwd
/home/tangzeyuan/opt
[tangzeyuan@mu02 opt]$ tar -zxvf vasp.5.4.1.05Feb16.tar.gz 
[tangzeyuan@mu02 opt]$ mv vasp.5.4.1 vasp.5.4.1_clean
[tangzeyuan@mu02 opt]$ cd vasp.5.4.1_clean
[tangzeyuan@mu02 vasp.5.4.1_clean]$ cp arch/makefile.include.linux_intel makefile.include
[tangzeyuan@mu02 vasp.5.4.1_clean]$ make std

make all之后会产生3个版本的VASP:

vtst

VTST的插件可以在Transition State Tools for VASP里下载。 下载完成后解压,并将文件都复制到VASP源代码的src目录下,安装VTST网站上的安装教程修改src/main.Fsrc/.objects。 执行编译。

[tangzeyuan@mu02 opt]$ tar -zxvf vasp.5.4.1.05Feb16.tar.gz 
[tangzeyuan@mu02 opt]$ tar -zxvf vtstcode-170.tgz
[tangzeyuan@mu02 opt]$ mv vasp.5.4.1 vasp.5.4.1_vtst
[tangzeyuan@mu02 opt]$ cp vtstcode-170/* vasp.5.4.1_vtst/src/.
[tangzeyuan@mu02 opt]$ cd vasp.5.4.1_vtst
[tangzeyuan@mu02 vasp.5.4.1_vtst]$ vi src/main.F
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)
[tangzeyuan@mu02 vasp.5.4.1_vtst]$ vi src/.objects
......
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 \
########### 在chain.o前面加入上面两行 ###########
chain.o \
......
[tangzeyuan@mu02 vasp.5.4.1_vtst]$ cp arch/makefile.include.linux_intel makefile.include
[tangzeyuan@mu02 vasp.5.4.1_vtst]$ make std

beef

beef-vdW全称为Bayesian error estimation functional with van der Waals correlation, 是DTU在2012年做出来的一个新泛函,目前和Quantum Espresso,VASP,GPAW均有接口。 具体的编译过程可以参考SUNCAT - SoftwareBEEF Functional Software。 把beef编译到VASP里,首先要编译libbeef

[tangzeyuan@mu02 opt]$ svn co svn://suncatls1.slac.stanford.edu/beef/trunk beef
[tangzeyuan@mu02 opt]$ cd beef
[tangzeyuan@mu02 beef]$ chmod +x configure
[tangzeyuan@mu02 beef]$ ./configure CC=icc --prefix=/home/tangzeyuan/opt/beef
[tangzeyuan@mu02 beef]$ make
[tangzeyuan@mu02 beef]$ make install

然后按照clean vasp的编译方法进行编译,只有makefile.include需要稍作修改(CPP_OPTIONS里添加-DlibbeeefLLIBS里添加-Lpathtolibbeef -lbeef

[tangzeyuan@mu02 vasp.5.4.1_beef]$ vi makefile.include
CPP_OPTIONS= -DMPI -DHOST=\"IFC91_ompi\" -DIFC \
             -DCACHE_SIZE=4000 -DPGF90 -Davoidalloc \
             -DMPI_BLOCK=8000 -DscaLAPACK -Duse_collective \
             -DnoAugXCmeta -Duse_bse_te \
             -Duse_shmem -Dtbdyn -Dlibbeef
......
BEEF       = -L/home/tangzeyuan/opt/beef/lib -lbeef
......
LLIBS      = $(SCALAPACK) $(LAPACK) $(BLAS) $(BEEF)
......

使用时需要在INCAR里添加下面三个参数,并把vdw_kernel.bindat复制到计算目录,POTCAR直接用PBE的赝势库。

GGA=BF 
LUSE_VDW=.TRUE. 
Zab_VDW=-1.8867

wannier90

VASP与wannier90有内置的接口VASP2WANNIER90,要想让VASP与wannier90联用,首先得编译wannier90。

VASP 5.4.1 目前只能与wannier90-v1.2对接,与wannier90-v2.0的接口还没有实现。

[tangzeyuan@mu02 opt]$ tar -zxvf wannier90-1.2.tar.gz
[tangzeyuan@mu02 opt]$ cd wannier90-1.2
[tangzeyuan@mu02 wannier90-1.2]$ cp config/make.sys.ifort make.sys
[tangzeyuan@mu02 wannier90-1.2]$ vi make.sys 
LIBDIR = /opt/intel/mkl721/lib/32
LIBS   =  -L$(LIBDIR) -lmkl_lapack  -lmkl_ia32 -lguide -lpthread
########### 删掉上面高亮的两行,用下面两行代替 ###########
LIBDIR = $(MKLROOT)/lib/intel64
LIBS   =  -L$(LIBDIR) -mkl -lpthread
[tangzeyuan@mu02 wannier90-1.2]$ make wannier lib test

然后按照clean vasp的编译方法进行编译,只有makefile.include需要稍作修改(CPP_OPTIONS里添加-DVASP2WANNIER90LLIBS里添加install_path/libwannier.a

[tangzeyuan@mu02 vasp.5.4.1_wannier90]$ vi makefile.include
CPP_OPTIONS= -DMPI -DHOST=\"IFC91_ompi\" -DIFC \
             -DCACHE_SIZE=4000 -DPGF90 -Davoidalloc \
             -DMPI_BLOCK=8000 -DscaLAPACK -Duse_collective \
             -DnoAugXCmeta -Duse_bse_te \
             -Duse_shmem -Dtbdyn -DVASP2WANNIER90
......
WANNIER90  = /home/tangzeyuan/opt/wannier90-1.2/libwannier.a
......
LLIBS      = $(WANNIER90) $(SCALAPACK) $(LAPACK) $(BLAS)
......

更多的使用技巧可以参考下面的链接

platforms

这一块主要针对不同的计算平台,介绍Intel编译器和并行环境的配置。

需要注意的是不同的计算平台一般都会有专门的编译节点,编译请在编译节点进行,不可在主节点上编译。

NSCCSZ

深圳超算有gg、gk、yw等分区,下面以gk分区为例来介绍环境变量的配置(其余分区只需把home-gk换成相应分区的home目录即可)

source /home-gk/compiler/intel2016/bin/compilervars.sh intel64
source /home-gk/compiler/intel2016/mkl/bin/mklvars.sh intel64
source /home-gk/compiler/intel2016/impi/5.1.3.210/bin64/mpivars.sh

配置完成之后,根据自己的需要编译相应版本的VASP即可。(提交任务的脚本也要加入上面三行)