本文章为原创,版权归作者刘锦程所有,文章转载请先取得作者的同意,非常欢迎转发文章链接!严禁以任何方式挪用本文内容,用于以盈利为目的各种活动。
相关内容 :基于VASP的SSAdNDP编译和简单测试
参考文献:Dunnington, B. D.; Schmidt, J. R. J. Chem. Theory Comput., 2012, 8, 1902–1911.
下载网站:
https://schmidt.chem.wisc.edu/nbosoftware
先下载:
periodic_nbo_v.1.1.tgz
对于VASP用户还需要下载:
projection_v.1.1.2.tgz
对于Crystal用户还需要下载:
CRYSTAL_interface.tgz
注:对于crystal用户可以参考
http://bbs.keinsci.com/thread-12111-1-1.html
帖子中的编译方法。
编译之前的准备文件:
VASP程序包,从vasp.at网站下载,目前的ssNBO和ssAdNDP仅完美支持vasp.5.4.1.24Jun15之前的版本,对于vasp.5.4.1.05Feb16和5.4.4版经测试发现在patch补丁的时候报错,估计对补丁文件稍作修改亦可使用,暂时我还没有做测试。5.4和5.3的编译方法有很大的不同,建议使用5.4.1.15年版,编译方便非常多。
periodic_nbo_v.1.1.tgz
projection_v.1.1.2.tgz
intel2013或之前版本的intel mkl编译器。由于程序最终更新是在2015年,且程序作者的mkl版本太老,如果不用老的编译器,很多代码要做修改,参考(http://bbs.keinsci.com/thread-12111-1-1.html )
我编译使用的是:
composer_xe_2013_sp1.2.144,
vasp.5.4.1.24Jun15
第一步:重新编译VASP
首先要重新编译VASP,编译VASP的方法参考:
自己的电脑上编译:
http://bbs.keinsci.com/thread-11812-1-1.html
https://www.bilibili.com/video/av39616222
服务器上编译:
http://bbs.keinsci.com/thread-11111-1-1.html
https://www.bilibili.com/video/av33956717
编译之前需要多一步:
把projection_v.1.1.2.tgz解压得到的,proj_VASP_5.4.patch和projection_output.F文件copy到vasp的src/目录下:
patch < proj_VASP_5.4.patch
注:
对于VASP5.3还需要在~/src/.objects文件的SOURCE里添加projection_output.o,VASP5.4不需要添加。
第二步:编译projection.exe
这里我是用的intel2013编译器,测试发现intel2015以后的编译器都无法成功。
Makefile文件不需要做修改,直接make,可以得projection.exe
第三步:编译nbo.exe 编译之前需要修改Makefile.template文件 由于作者使用的intel编译器较老,下面这个默认的路径在intel2013里没有: MODULE_PATH=/opt/intel/mkl/10.0.3.020/lib/em64t 需要替换成MODULE_PATH=/opt/intel/composer_xe_2013_sp1.2.144/mkl/include/intel64/lp64/ 另外LDFLAGS= 参数也需要做相应修改,最终我编译成功的
Makefile.template文件:
1 2 3 4 5 6 7 MODULE_PATH=/opt/intel/composer_xe_2013_sp1.2.144/mkl/include/intel64/lp64/ MKL_LIB=/opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64 FC=ifort LD=ifort #FFLAGS=-check all -check noarg_temp_created -g -traceback -warn unused -I $(MODULE_PATH) FFLAGS= -vec-report0 -openmp -I $(MODULE_PATH) LDFLAGS=-L${MKL_LIB} -lmkl_core -lmkl_intel_lp64 -lmkl_sequential ${MKL_LIB}/libmkl_blas95_lp64.a ${MKL_LIB}/libmkl_lapack95_lp64.a -openmp
第四步:测试Silicon的例子
INCAR输入文件里添加LNBO = True,如果VASP的用于投影波函数文件编译成功,计算完成会产生一个wavefunction.dat文件。然后准备高斯基组文件(Gaussian94 format)basis.inp,可以从ESML网站上生成:https://bse.pnl.gov/bse/portal ,这里作者使用的是3-21G(d) basis set。运行./projection.exe basis.inp wavefunction.dat NBO.out,将平面波基组投影到高斯基组,会生成NBO.out,NBO_mat.out,band_spillover.out,spillover.out文件。运行./nbo.exe NBO.out,NBO计算结果打印到屏幕上。
可以添加nbo.config文件,控制判断孤对电子和键的阈值,默认是LP 1.60,BD 1.85。并且还可以进一步输出格点文件。
1 2 3 4 5 6 7 8 9 10 #####NBO search parameters#### 1.60 #Occupancy cutoff for one-center NBOs 1.85 #Occupancy cutoff for two-center NBOs #####Visualization output control parameters#### F #Control over printing of .cube files for visualization. F #density - Whether density (T) or wavefunctions (F) are visualized. 0 -1 #vis_start vis_end - Start and end of NBOs to print .cube files for 0 0 0 #mesh - Number of points along each lattice vectors to use in .cube files 1 1 1 #box_int - Number of unit cell to use for .cube file. See READ_ME.txt for guidance 0.00 #origin_fact - Shift of the origin for .cube file. See READ_ME.txt for guidance
最终输出的信息比NBO6.0少一些:由于硅1s轨道在赝势里,且价层电子全部成键,所以没有看到NBO输出LP的信息,只有BD和RYD信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ------ **** NATURAL BOND ORBITALS **** ------ BD* Si 1 Si 2 Occ: 5.0691199E-02 Polarization: 50.00000 % 50.00000 % Hybrid 1: s% 25.000001907 p% 74.601173401 d% 0.398826480 f% 0.000000000 -0.00000 0.00057 0.00110 0.00110 0.00110 -0.00358 0.00147 0.00147 0.00147 -0.49999 -0.49867 -0.49867 -0.49867 -0.03646 -0.03646 -0.03646 0.00000 -0.00000 Hybrid 2: s% 24.999996185 p% 74.601173401 d% 0.398826689 f% 0.000000000 0.00000 -0.00057 0.00110 0.00110 0.00110 0.00358 0.00147 0.00147 0.00147 0.49999 -0.49867 -0.49867 -0.49867 0.03646 0.03646 0.03646 0.00000 -0.00000 BD Si 1 Si 2 Occ: 1.938513 Polarization: 50.00000 % 50.00000 % Hybrid 1: s% 25.000001907 p% 74.601173401 d% 0.398826480 f% 0.000000000 0.00000 -0.00057 -0.00110 -0.00110 -0.00110 0.00358 -0.00147 -0.00147 -0.00147 0.49999 0.49867 0.49867 0.49867 0.03646 0.03646 0.03646 -0.00000 0.00000 Hybrid 2: s% 24.999996185 p% 74.601173401 d% 0.398826689 f% 0.000000000 0.00000 -0.00057 0.00110 0.00110 0.00110 0.00358 0.00147 0.00147 0.00147 0.49999 -0.49867 -0.49867 -0.49867 0.03646 0.03646 0.03646 0.00000 -0.00000 ... ... ------ **** NATURAL RYDBERG STATES **** ------ RYD Si 1 Occ: 1.5159165E-03 Hybridization s% 0.000000000 p% 0.000000000 d% 100.000000000 f% 0.000000000 0.00000 -0.00000 -0.00000 0.00000 -0.00000 -0.00000 0.00000 -0.00000 0.00000 -0.00000 -0.00000 0.00000 0.00000 0.00000 0.00000 -0.00000 -0.17421 0.98471 RYD Si 1 Occ: 1.5159191E-03 Hybridization s% 0.000000001 p% 0.000000000 d% 100.000000000 f% 0.000000000 0.00000 0.00000 -0.00000 0.00000 -0.00000 0.00000 0.00000 0.00000 -0.00000 -0.00000 -0.00000 -0.00000 0.00000 0.00000 0.00000 -0.00000 0.98471 0.17421
在确定NBO计算结果没问题以后,可以进一步输出我们感兴趣的轨道。nbo.config里有六个参数控制作图,不能搞错顺序,就在作者提供的文件基础上修改就可以了。
1 2 3 4 5 6 T #Control over printing of .cube files for visualization. F #density - Whether density (T) or wavefunctions (F) are visualized 21 22 #vis_start vis_end - Start and end of NBOs to print .cube files for 48 48 48 #mesh - Number of points along each lattice vectors to use in .cube files 2 2 2 #box_int - Number of unit cell to use for .cube file. -0.5 #origin_fact - Shift of the origin for .cube file.
例如,我们要观察第4和第8个Si原子之间的共价键:
先确定这两个原子之间的BD和BD*编号分别是21 22:
1 2 BD* Si 4 Si 8 BD Si 4 Si 8
然后按照上述方法编辑nbo.config文件,重新运行./nbo.exe NBO.out :
会输出nbo_21.cube,和nbo_22.cube文件,拖到VESTA里作图即可:
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。