下述VASP编译均基于Intel编译器,适用于并行版本。
安装前首先检查编译器,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:
vasp_std
:标准版VASPvasp_gam
:Gamma-point VASP,只适用于1x1x1 gamma KPOINTS的计算vasp_ncl
:non-collinear versionVTST的插件可以在Transition State Tools for VASP里下载。
下载完成后解压,并将文件都复制到VASP源代码的src
目录下,安装VTST网站上的安装教程修改src/main.F
和src/.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-vdW全称为Bayesian error estimation functional with van der Waals correlation, 是DTU在2012年做出来的一个新泛函,目前和Quantum Espresso,VASP,GPAW均有接口。 具体的编译过程可以参考SUNCAT - Software和 BEEF 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
里添加-Dlibbeeef
,LLIBS
里添加-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
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
里添加-DVASP2WANNIER90
,LLIBS
里添加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) ......
更多的使用技巧可以参考下面的链接
这一块主要针对不同的计算平台,介绍Intel编译器和并行环境的配置。
需要注意的是不同的计算平台一般都会有专门的编译节点,编译请在编译节点进行,不可在主节点上编译。
深圳超算有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即可。(提交任务的脚本也要加入上面三行)