科学网

 找回密码
  注册
科学网 标签 VASP 相关日志

tag 标签: VASP

相关日志

vasp中布里渊区的倒格矢的讨论
sixiangzhe14 2020-10-28 17:35
个人分类: vasp|0 个评论
布里渊区
sixiangzhe14 2020-10-27 20:16
在计算中,不同的POSCAR会得到不同的高对称点,能带以不同的POSCAR 为基础进行计算。 这是CdTe的原胞布里渊区,得到高对称点路径 这是CdTe的晶胞的布里渊区,得到高对称点路径 原胞 L和X都是面中点,但是是不同的面中点,W为角顶点,G为体心 ,K为楞中点 晶胞 X为面中点,R为角顶点,M为楞中点,G为体心
个人分类: 能带|0 个评论
VASP学习笔记-常见错误
Janeluck 2020-10-15 08:50
计算能带之前要先计算SCF,得到CHGCAR, WAVECAR; 相比于优化结构,INCAR文件改4处: IBRION = -1 NSW=0 LCHARG=.T. LWAVE=.T. KPOINT文件可以适当提高精度计算
个人分类: 第一性原理计算|1789 次阅读|0 个评论
[转载]VASP计算稀土元素要点归纳
hongyesies 2020-10-6 22:08
本文来源于: https://zhuanlan.zhihu.com/p/55486090 版权属于“计算材料学”公众号(wechat ID:jisuancailiao) VASP计算稀土元素要点归纳 Yaust 计算材料学(wechat ID:jisuancailiao)公号编辑 19 人赞同了该文章 稀土就是化学元素周期表中镧系元素——镧(La)、铈(Ce)、镨(Pr)、钕(Nd)、钷(Pm)、钐(Sm)、铕(Eu)、钆(Gd)、铽(Tb)、镝(Dy)、钬(Ho)、铒(Er)、铥(Tm)、镱(Yb)、镥(Lu),以及与镧系的15个元素密切相关的元素—钇(Y)和钪(Sc)共17种元素,称为稀土元素。 稀土元素已广泛应用于电子、石油化工、冶金、机械、能源、轻工、环境保护、农业等领域。应用稀土可生产荧光材料、稀土金属氢化物电池材料、电光源材料、永磁材料、储氢材料、催化材料、精密陶瓷材料、激光材料、超导材料、磁致伸缩材料、磁致冷材料、磁光存储材料、光导纤维材料等。 中国拥有丰富的稀土矿产资源,成矿条件优越,堪称得天独厚,探明的储量居世界之首,为发展中国稀土工业提供了坚实的基础。中国的稀土主要集中在江西和内蒙地区,对于这两地的科研工作者来说,研究和稀土相关的课题具有很好的实用价值。 稀土的优点来源于其局域的f轨道电子,f轨道电子所起的作用主要体现在两个方面,一个是半满且足够局域的f轨道电子为稀土化合物提供磁性,再一个,稀土的f轨道电子使得电子可以发生f-d轨道和f-f轨道跃迁,从而吸收和发射光子,f轨道的局域性使得f-f轨道跃迁时发射光子的波长不易受到化学环境的影响。 但VASP计算稀土的难度也正在f轨道电子,这是个强关联体系。在处理稀土的f轨道时所需要注意的要点列举如下: 1.使用稀土元素的POTCAR时需格外小心,因为稀土的POTCAR很可能会存在问题。很多稀土元素的金属单质结构在ISIF=3的情况下优化,体积会不断膨胀下去直至系统报错,且静态自洽过程中电子步不易收敛。 2. 为了避免1的情况,一种可能的方案是采用简化POTCAR,所谓简化POTCAR是将一部分f轨道电子当作内壳层电子处理,因为这些电子比较局域,一般不会参与到化学反应中去,以稀土元素Eu为例:在PBE目录下,Eu表示完整的POTCAR,而Eu_2和Eu_3则表示将部分f电子当成内壳层处理的POTCAR。 3. 稀土元素一般存在着不止一个化合价,针对这种情况,简化的POTCAR也不止一个,例如2的情况,Eu_2表示+2价的Eu,Eu_3表示+3价的Eu。 4. 稀土元素的磁性主要是由f电子产生的,因此将f电子当成内壳层处理的其中一个代价便是稀土元素无法正确反映稀土元素的磁学性质。 5. 简化后的POTCAR不能使用HSE06进行计算,但是没有简化的稀土可以用HSE06。对简化后的POTCAR采用HSE06会报错。 6. 因为将f电子已经当成内壳层来处理了,因此对简化后的POTCAR加U没有意义,加U并不影响最终结果。
个人分类: VASP|3250 次阅读|0 个评论
优化N2分子
sixiangzhe14 2020-9-23 16:56
今天优化N2分子,刚开始将两个N原子距离设置为1AA,发现两个原子总是分离,我以为是两个原子离着太远了,又设置为0.9AA,并且将POTIM由默认值设置为0.1,发现还是优化成了两个单独原子,后来从网上查了查,发现一种说法是两个原子离着太近了,于是就将初始值设置为1.13AA左右,优化之后为1.113AA,结果合理,可见初始POSCAR合理的重要性。
个人分类: vasp|1808 次阅读|0 个评论
[转载]加电场
sixiangzhe14 2020-9-11 18:21
http://blog.sciencenet.cn/blog-1524047-952103.html vasp计算中加电场
个人分类: vasp|0 个评论
VASP常用电荷相关计算总结
wangzongguo 2020-8-28 13:32
VASP 软件对电荷相关的计算和处理有多个方面,这篇文章介绍基本的电荷密度、Bader电荷以及电子局域函数的计算和数据处理方法。 1. 文件介绍: CHG、CHGCAR: charge density AECCAR0, AECCAR1, AECCAR2: core charge and valence chage ELFCAR:electron localization function 2. 计算方法: 通过一步静态计算即可获取以上所有文件,相关 INCAR 关键 参数设置: LCHARG=.TRUE. ( VASP 默认 .TRUE. ),将电荷密度写入 CHG, CHGCAR 文件 LAECHG = .TRUE. ( VASP 默认 .FLASE. ), 得到包含 charge 信息的 AECCAR0(core charge), AECCAR1, AECCAR2(valance charge) LELF = .TRUE. ( VASP 默认 .FALSE. ),得到写有电子局域函数的文件 ELFCAR 。 3. 结果处理软件(使用方法参考软件附带链接): 处理 CHGCAR 文件推荐软件: LEV00 、 VESTA VESTA 直接 根据系统版本选择安装使用 ,不具体介绍 LEV00 :通过链接下载,根据机器安装的数学库和编译器修改 Makefile 中 的 “LIBS” 和 “FCOMPL” 两项(一般用 ifort 即可),并进行安装(执行 make ),得到 lev00 可执行程序(根据需求设置 lev00 的环境变量,这里不赘述)。 lev00 使用: 直接运行可执行程序 lev00 ,根据提示设置选项即可。 运行完成后,可以得到 .dat 或 .gnu 文件,可以通过O rigin 、 gnuplot 等软件绘图。 注意事项:(1)除了用到 CHGCAR 文件,还需要读取 OUTCAR,POSCAR (或 CONTCAR )文件。(2)如果 OUTCAR 文件中包含用虚线包围的警示信息,需要删除这些警示信息后再使用,否则会遇到读取文件的错误。(3) lev00 除了可以处理 CHGCAR 以外,还可以用于 DOS、coulomb potential 等 VASP 计算的数据处理,将会在后面具体介绍。 处理 AECCAR 文件推荐软件: Bader 安装: Bader 软件可以通过链接直接下载到 ifort 编译的可执行程序( bader ),也可以下载源代码。 (设置 bader 的环境变量) 软件执行命令(两步即可完成): 需要借用 VTST 中的处理脚本 chgsum.pl chgsum.pl AECCAR0 AECCAR2 (产生 CHGCAR_sum 文件) bader CHGCAR -ref CHGCAR_sum (得到 ACF.dat, BCF.dat 以及 AVF.dat 三个文件) ACF.dat 文件可以获取每个原子的 bader 电荷。 处理 ELFCAR 文件推荐软件 : VESTA 根据系统版本选择安装使用。 软件相关链接: LEV00: https://nms.kcl.ac.uk/lev.kantorovitch/codes/lev00/index.html VESTA: https://jp-minerals.org/vesta/en/ Bader : http://theory.cm.utexas.edu/henkelman/code/bader/ VTST: http://theory.cm.utexas.edu/vtsttools/scripts.html
个人分类: VASP计算|12390 次阅读|0 个评论
[转载]INCAR设置
sixiangzhe14 2020-7-22 15:45
一、电子迭代算法 ALGO =Normal selects IALGO =38 (blocked Davidson iteration scheme). ALGO =VeryFast selects IALGO =48 (RMM-DIIS). ALGO =Fast selects a faily robust mixture of the Davidson and RMM-DIIS algorithms. In this case, Davidson ( IALGO =38) is used for the initial phase, and then VASP switches to RMM-DIIS ( IALGO =48). Subsequencly, for each ionic update, one IALGO =38 sweep is performed for each ionic step (except the first one). 二、 LELF = .TRUE. | .FALSE. Default: LELF = .FALSE. Description: LELF determines whether to create an ELFCAR file or not. This file contains the so-called ELF (electron localization function) If LELF is set, NPAR =1 has to be set explicitely in the INCAR file in addition 三、静电势 计算静电势只需加上 LVHAR = .TRUE. LVHAR = Default: LVHAR = .FALSE. Description: This tag determines whether the total local potential (saved in the file LOCPOT ) contains the entire local potential (ionic + Hartree + exchange correlation) or the electrostatic contributions only (ionic + Hartree). This tag is available in VASP.5.2.12 and newer version. Note that in VASP.5.2.12, the default is to write the entire local potential, including the exchange correlation potential. 四、偶极修正 对于slab需要加上偶极修正,尤其氧化物这种极性强的材料。 LDIPOL = .TRUE. IDIPOL = 3
0 个评论
Intel+MKL编译vasp-5.3.5
xyliucd 2020-6-25 23:07
vasp的编译既简单又复杂——很容易得到执行文件(简单),但是计算速度如何又另说了(真不是夸张)。笔者经过GNU编译的各种坑,最后测试还是Intel编译的并行版本速度最快。以下以5.3.5版本为例,说一下使用Intel Parallel Studio 2017的编译过程*。 *注:参考 https://software.intel.com/content/www/us/en/develop/articles/building-vasp-with-intel-mkl-and-intel-compilers.html 系统:CentOS 7 编译环境:Intel parallel studio 2017 其他说明:将vasp.5.3.5.tar.gz和vasp.5.lib.tar.gz放在同一目录下。 Step 1:编译vasp.lib $tar-vxfvasp.5.lib.tgz $cdvasp.5.lib 修改makefile.linux_ifc_P4的编译器如下: CPP=icc-E-P-C$*.F$*.f FC=ifort 然后编译vasp.lib,编译完成后回到上级目录: $ make -f makefile.linux_ifc_P4 $ cd .. Step 2: 编译vasp-5.3.5 解压: $tar-vxfvasp.5.3.5.tar.gz $cdvasp.5.3 在makefile.linux_ifc_P4基础上修改,笔者这里直接贴出修改后的结果,可以直接拷贝做成一个新的makefile.intel2017: .SUFFIXES:.inc.f.f90.F SUFFIX=.f90 FC=mpiifort FCL=$(FC) CPP_=./preprocess$*.F|/usr/bin/cpp-P-C-traditional$*$(SUFFIX) CPP_=fpp-f_com=no-free-w0$*.F$*$(SUFFIX) FFLAGS=-FR-nameslowercase-assumebyterecl-I$(MKLROOT)/include/fftw OFLAG=-O2-xHost OFLAG_HIGH=$(OFLAG) OBJ_HIGH= OBJ_NOOPT= DEBUG=-FR-O0 INLINE=$(OFLAG) MKL_PATH=$(MKLROOT)/lib/intel64 MKL_FFTW_PATH=$(MKLROOT)/interfaces/fftw3xf/ BLAS=-mkl=cluster LAPACK= LIB=-L../vasp.5.lib-ldmy\\ ../vasp.5.lib/linpack_double.o$(LAPACK)\\ $(BLAS) LINK= CPP=$(CPP_)-DMPI-DHOST=\\LinuxIFC\\-DIFC\\ -DCACHE_SIZE=32000-DPGF90-Davoidalloc-DNGZhalf\\ -DMPI_BLOCK=64000-Duse_collective-DscaLAPACK-DMKL_ILP64 FFT3D=fftmpiw.offtmpi_map.offtw3d.offt3dlib.o/opt/intel/mkl/lib/intel64/libfftw2xf_double_intel.a INCS=-I$(MKLROOT)/include/fftw BASIC=symmetry.osymlib.olattlib.orandom.o SOURCE=base.ompi.osmart_allocate.oxml.o\\ constant.ojacobi.omain_mpi.oscala.o\\ asa.olattice.oposcar.oini.omgrid.oxclib.ovdw_nl.oxclib_grad.o\\ radial.opseudo.ogridq.oebs.o\\ mkpoints.owave.owave_mpi.owave_high.ospinsym.o\\ $(BASIC)nonl.ononlr.ononl_high.odfast.ocholeski2.o\\ mix.ohamil.oxcgrad.oxcspin.opotex1.opotex2.o\\ constrmag.ocl_shift.orelativistic.oLDApU.o\\ paw_base.ometagga.oegrad.opawsym.opawfock.opawlhf.orhfatm.ohyperfine.opaw.o\\ mkpoints_full.ocharge.oLebedev-Laikov.ostockholder.odipol.opot.o\\ dos.oelf.otet.otetweight.ohamil_rot.o\\ chain.odyna.ok-proj.osphpro.ous.ocore_rel.o\\ aedens.owavpre.owavpre_noio.obroyden.o\\ dynbr.ohamil_high.ormm-diis.oreader.owriter.otutor.oxml_writer.o\\ brent.ostufak.ofileio.oopergrid.ostepver.o\\ chgloc.ofast_aug.ofock_multipole.ofock.omkpoints_change.osym_grad.o\\ mymath.ointernals.onpt_dynamics.odynconstr.odimer_heyden.odvvtrajectory.osubdftd3.o\\ vdwforcefield.onmr.opead.osubrot.osubrot_scf.opaircorrection.o\\ force.opwlhf.ogw_model.ooptreal.osteep.odavidson.odavid_inner.o\\ electron.orot.oelectron_all.oshm.opardens.o\\ optics.oconstr_cell_relax.ostm.ofinite_diff.oelpol.o\\ hamil_lr.ormm-diis_lr.osubrot_cluster.osubrot_lr.o\\ lr_helper.ohamil_lrf.oelinear_response.oilinear_response.o\\ linear_optics.o\\ setlocalpp.owannier.oelectron_OEP.oelectron_lhf.otwoelectron4o.o\\ gauss_quad.om_unirnk.ominimax_tabs.ominimax.o\\ mlwf.oratpol.oscreened_2e.owave_cacher.ochi_base.owpot.o\\ local_field.oump2.oump2kpar.ofcidump.oump2no.o\\ bse_te.obse.oacfdt.ochi.osydmat.o\\ lcao_bare.ownpr.odmft.o\\ rmm-diis_mlr.olinear_response_NMR.owannier_interpol.olinear_response.oauger.ogetshmem.o\\ dmatrix.o vasp:$(SOURCE)$(FFT3D)$(INC)main.o rm-fvasp $(FCL)-ovaspmain.o$(SOURCE)$(FFT3D)$(LIB)$(LINK) makeparam:$(SOURCE)$(FFT3D)makeparam.omain.F$(INC) $(FCL)-omakeparam$(LINK)makeparam.o$(SOURCE)$(FFT3D)$(LIB) zgemmtest:zgemmtest.obase.orandom.o$(INC) $(FCL)-ozgemmtest$(LINK)zgemmtest.orandom.obase.o$(LIB) dgemmtest:dgemmtest.obase.orandom.o$(INC) $(FCL)-odgemmtest$(LINK)dgemmtest.orandom.obase.o$(LIB) ffttest:base.osmart_allocate.ompi.omgrid.orandom.offttest.o$(FFT3D)$(INC) $(FCL)-offttest$(LINK)ffttest.ompi.omgrid.orandom.osmart_allocate.obase.o$(FFT3D)$(LIB) kpoints:$(SOURCE)$(FFT3D)makekpoints.omain.F$(INC) $(FCL)-okpoints$(LINK)makekpoints.o$(SOURCE)$(FFT3D)$(LIB) clean: -rm-f*.g*.f*.o*.L*.mod;touch*.F main.o:main$(SUFFIX) $(FC)$(FFLAGS)$(DEBUG)$(INCS)-cmain$(SUFFIX) xcgrad.o:xcgrad$(SUFFIX) $(FC)$(FFLAGS)$(INLINE)$(INCS)-cxcgrad$(SUFFIX) xcspin.o:xcspin$(SUFFIX) $(FC)$(FFLAGS)$(INLINE)$(INCS)-cxcspin$(SUFFIX) makeparam.o:makeparam$(SUFFIX) $(FC)$(FFLAGS)$(DEBUG)$(INCS)-cmakeparam$(SUFFIX) makeparam$(SUFFIX):makeparam.Fmain.F base.o:base.incbase.F mgrid.o:mgrid.incmgrid.F constant.o:constant.incconstant.F lattice.o:lattice.inclattice.F setex.o:setexm.incsetex.F pseudo.o:pseudo.incpseudo.F mkpoints.o:mkpoints.incmkpoints.F wave.o:wave.F nonl.o:nonl.incnonl.F nonlr.o:nonlr.incnonlr.F $(OBJ_HIGH): $(CPP) $(FC)$(FFLAGS)$(OFLAG_HIGH)$(INCS)-c$*$(SUFFIX) $(OBJ_NOOPT): $(CPP) $(FC)$(FFLAGS)$(INCS)-c$*$(SUFFIX) fft3dlib_f77.o:fft3dlib_f77.F $(CPP) $(F77)$(FFLAGS_F77)-c$*$(SUFFIX) .F.o: $(CPP) $(FC)$(FFLAGS)$(OFLAG)$(INCS)-c$*$(SUFFIX) .F$(SUFFIX): $(CPP) $(SUFFIX).o: $(FC)$(FFLAGS)$(OFLAG)$(INCS)-c$*$(SUFFIX) fft3dlib.o:fft3dlib.F $(CPP) $(FC)-FR-lowercase-O2-c$*$(SUFFIX) fft3dfurth.o:fft3dfurth.F $(CPP) $(FC)-FR-lowercase-O1-c$*$(SUFFIX) fftw3d.o:fftw3d.F $(CPP) $(FC)-FR-lowercase-O1$(INCS)-c$*$(SUFFIX) fftmpi.o:fftmpi.F $(CPP) $(FC)-FR-lowercase-O1-c$*$(SUFFIX) fftmpiw.o:fftmpiw.F $(CPP) $(FC)-FR-lowercase-O1$(INCS)-c$*$(SUFFIX) wave_high.o:wave_high.F $(CPP) $(FC)-FR-lowercase-O1-c$*$(SUFFIX) wave.o:wave.F $(CPP) $(FC)-FR-lowercase-O2-c$*$(SUFFIX) paw.o:paw.F $(CPP) $(FC)-FR-lowercase-O1-c$*$(SUFFIX) cl_shift.o:cl_shift.F $(CPP) $(FC)-FR-lowercase-O2-c$*$(SUFFIX) us.o:us.F $(CPP) $(FC)-FR-lowercase-O1-c$*$(SUFFIX) LDApU.o:LDApU.F $(CPP) $(FC)-FR-lowercase-O2-c$*$(SUFFIX) 注意这里笔者使用的是libfftw2xf_double_intel.a库文件,因为使用3或者单精度版本会导致有些计算出错。 然后编译即可(这里不要加-j参数,会出错): $make-fmakefile.intel2017 即在该目录下生成可执行文件vasp。 Step 3(可选): vasp的modulefile和slurm脚本 笔者设置的vasp modulefile如下: #%Module1.0 conflictvasp prepend-pathPATH/opt/vasp/5.3.5/bin 针对笔者自己搭建的超算集群,vasp的slurm脚本如下: #!/bin/bash #这里指定作业名称,注意vasp的输入文件无需特意指定 #SBATCH--job-name=test #提交到哪个队列(分区) #SBATCH--partition=E5-2640V4 #使用多少个节点 #SBATCH--nodes=4 #每个节点使用多少核 #SBATCH--ntasks-per-node=20 #错误和输出文件 #SBATCH--error=%j.err #SBATCH--output=%j.out #加载vasp moduleloadvasp/5.3.5 #以下行如果不懂,可以不管,按默认的即可。如果你知道其含义的话,可以进行自定义修改。 #以下生成MPI的nodelist CURDIR=`pwd` rm-rf$CURDIR/nodelist.$SLURM_JOB_ID NODES=`scontrolshowhostnames$SLURM_JOB_NODELIST` foriin$NODES do echo$i:$SLURM_NTASKS_PER_NODE$CURDIR/nodelist.$SLURM_JOB_ID done #生成nodelist结束 #通过MPI运行VASP mpirun-genvI_MPI_FABRICS=tcp-machinefile$CURDIR/nodelist.$SLURM_JOB_IDvasp$SLURM_JOB_NAME.sta #运行完后清理nodelist rm-rf$CURDIR/nodelist.$SLURM_JOB_ID
个人分类: 超算技术|5082 次阅读|0 个评论
小谈CASTEP(Linux), MS-CASTEP, VASP软件区别
热度 1 zhangfrank 2020-6-21 05:57
作者:Zhang Zhaofu 以下是结合个人使用软件经验,做的一点分享,未必准确可靠,欢迎交流。如有任何错误信息,欢迎及时联系我做修改。希望转载注明源出处: http://blog.sciencenet.cn/blog-2686986-1238701.html 对于 VASP 和 CASTEP 这两大主流第一性原理计算软件,网上已经有很多介绍、经验贴、教程、脚本分享,这里不加赘述。想了解更多,欢迎关注“学术之友”“ VASPKIT ”等微信公众号,以及添加 VASPKIT FAQs(331895604), DFT 计算之家 (364586948), 理论计算化学研习社 (905699144) 等科研 QQ 群讨论交流。 对于 CASTEP ,有基于 Linux 系统的 CASTEP (简称 CASTEP(Linux) 吧),也有 Material Studio 软件嵌入的 CASTEP 模块(简称 MS-CASTEP 吧),在我看来,他们是很不一样的两个软件: 1. CASTEP(Linux) 现在学术免费,可以向官方申请得到的比较新的版本( CASTEP19 ),而 MS-CASTEP 据我所知里面的 CASTEP 模块是比较老的版本(具体哪个版本不确定)。并不是意味着你用 MS2017 软件,那就是对应 CASTEP-2017 。新版本在效率、精度等肯定更方便。 2. CASTEP(Linux) 使用起来跟 VASP 一样,在 Linux 系统,命令行模式,输入参数全部可见,输入文件为 seed name.cell, seed name.param 文件。在 linux 系统下,方便实现脚本批处理 job 等基本操作;因为可见全部参数,所以更加方便修改参数:比如设置并行效率,设置输出信息等,选择是否读取一个已经有的波函数( .check ),杂化泛函设置细节等,这些据我所知在 MS-CASTEP 是不方便自主选择的。 同理,输出文件都在服务器里面, CASTEP(Linux) 可以适合自己写代码 / 用现成代码做更多分析;以及可以自主决定保存哪些文件,下载哪些文件。 注1: cell .param 可以直接 MS 建模完成后,通过 save files 得到,但是要改一些细节才能更高效在 Linux 中运算。 注 2: 可以从CASTEP官网 http://www.castep.org/CASTEP/Documentation 看Tutorial,Workshop资料,关键词用法,和其他有用信息。 注3:简单列举几个参数 xc_functional : PBE 或者xc_functional : SHF-LDA 选择用PBE或者SX functional opt_strategy : Speed 可以一定程度加速计算 geom_method : TPSD 或者 geom_method : BFGS 用TPSD 或者BFGS的优化算法,前者速度快,但是收敛性不如BFGS (类似VASP的 IBRION=2 or =1选择不同优化算法) metals_method : dm ormetals_method : EDFT: 用Density mixing or EDFT做电子迭代。前者速度快,但是某些时候不能收敛;后者收敛性非常好,但是慢。在杂化泛函时候大多都要用EDFT。 3. MS-CASTEP 是图形化 GUI 界面,方便初学者上手,但是过度依赖 MS 的 GUI 界面会束缚手脚,限制自己。而且 MS-CASTEP 的 analysis 功能有限,比如就不能做 projected bands 分析等。虽然可以在 MS 中用 Perl 编程语言实现批处理,但是依然相比起 Linux 下批处理略麻烦一些。 4. CASTEP(Linux) 有更灵活的赝势选择空间,除了自带的赝势,还可以用 OPIUM 等软件自己 generate potential ,也可以用 QE 软件支持的一些 UPF potential 等,也可以 on-the-fly 产生。对做赝势开发的研究人员比较友好。 5. CASTEP(Linux) 因为在服务器运行,自然是可以实现多核并行计算。而 MS-CASTEP 大概率只能在个人电脑运行,效率低。(顺便友情帮忙打个广告,并行公司的超算平台有技术在服务器安装 MS ,然后跟个人的电脑 MS 做对接,实现在 win 交任务,在服务器跑程序,详情可以去上述群里面问并行科技工作人员 ) 再说下 CASTEP 跟 VASP 的使用比较: 1. 单从软件上手、使用、分析数据角度,毫无疑问是 VASP 更方便,这得益于王伟老师等人开发的 VASPKIT 等一系列软件,以及 VTST 等众多脚本,以及刘锦程博士、李强博士、唐刚博士等人写的无数教程帮助。在这些资料帮助下, VASP 更加容易上手甚至深入。 即便 CASTEP 也有软件自带的脚本、以及网上一些课题组、个人在 GitHub 分享的脚本,但是方便性比起 VASP 依然略差。 2. 从计算赝势选择角度, CASTEP 是比 VASP 友好很多。 VASP 只有 PAW 赝势(虽然也有 ultrasoft, LDA 赝势,但是现在用的毕竟少很多);而 CASTEP 除了有 ultrasoft ,还有 norm-conserving ,还可以自己通过 OFT 产生,通过 OPIUM 产生,甚至可以用 QE 的 UPF potential ,整体来说更灵活。 3. 使用细节比较,感觉 VASP 有些时候存在 less convergence ,即从代码运行角度, VASP 认定的一些收敛模型,未必是精确的,而 CASTEP 的收敛性会更好。但是这意味着同样的模型,即便是相同的收敛标准, CASTEP 会比 VASP 慢,甚至某些时候是明显慢。举例来说,对结构优化, VASP 中要么能量收敛( EDIFFG 为正数)要么力收敛 (EDIFFG 为负数 ) 而 CASTEP 中是同时满足能量、力、位移三个标准 (geom_energy_tol , geom_force_tol , geom_disp_tol) 才是收敛。 注:这一点仅是个人看法,未必正确,如有不对,欢迎批评指正,我及时修改。 4. CASTEP 的 screening exchange(SX) 杂化泛函是非常好的,非参数依赖,对于绝大部分的半导体绝缘体都可以直接计算得到跟实验值吻合较好的 gap ,不需要类似 HSE 调节 HF mixing fraction 来调节 gap 。在很多时候有非常好的优势,比如做异质结性质计算,可以满足两侧同时计算准确。而 HSE 中在同一个模型下(不论是 bulk 还是 interface 等)只能有一个 HF fraction ,也会在某些时候存在不足(比如界面模型很难把两侧同时算准)。不过 SX 计算非常慢,大致比 HSE 慢 5-10 倍。 这里给自己的一个小文章打个广告,讲了对异质结能带对齐计算的一个算法,一定程度上可以克服纯 HSE 或者纯 SX 在界面计算中的不足。这个工作依然有很多不足,其主要目的是为以后的界面计算算法提供一个新思路。欢迎批评指正: Hybrid band offset calculation for heterojunction interfaces between disparate semiconductors Appl. Phys. Lett. 116, 131602 (2020) 关于 CASTEP(Linux), MS-CASTEP, VASP 软件比较,暂时就想到这么多。最后总结下,我认为每个软件都各有特点,不能说哪个好哪个差,只能说哪个更适合自己,哪个暂时更方便。 写过的其他博文链接: 表面界面建模要点/经验小结 Summary about surface/interface modeling 半导体异质结能带对齐介绍/Introduction about semiconductor band alignment
10277 次阅读|2 个评论
VASP做第一性原理分子动力学
hutao0726 2020-6-12 14:23
考虑一个结构稳不稳定,或者通过第一性原理分子动力学获得合理初始构型,需要使用VASP进行第一性原理分子动力学计算。 首先,结构的晶胞应该足够大,包含几十个原子,这样温度才会波动比较小。 其次,KPOINTS采用比较少的撒点,因为晶胞比较大。采用1 1 1的采样就可以。 KPOINTS(Gamma-only) 0 Gamma 111 000 第三,在INCAR里设置参数。降低EDIFF的精度,一般10 -4 , 10 -5 eV/atom就很高了。加入分子动力学的参数: #md IBRION=0 NSW=100 NWRITE=0 TEBEG=300 TEEND=1300 SMASS=3 NBLOCK=50 POTIM=3 第四,注意INCAR里电子结构计算的一些参数设置,有些系统计算出来OSZICAR里温度T一直为0,经过摸索才发现与ISMEAR, SIGMA等有关: ISMEAR=0;SIGMA=0.05 ALGO=Fast #POTIM=0.10 #Wavefunctionandcharge LWAVE=FALSE LCHARG=FALSE #TargetPressure #PSTRESS=0.01 LREAL=Auto NCORE=4 LVDW=.TRUE. ISYM=0 第五,从OSZICAR里提取温度和能量。 grepT=OSZICAR|awk'{print$1$3$5}'T_E.txt 第六,一些摸索的经验。POTIM不宜取得太大,否则会导致非常大的温度T,使得程序停掉。尝试过POTIM=5,温度infinite。POTIM取1.5,2都是不错的。
个人分类: VASP计算|19536 次阅读|0 个评论
[转载]VASP +U与自旋极化计算同时or不同时设置
hnuhjf 2020-1-9 01:15
转载自 http://blog.sciencenet.cn/blog-567091-777871.html 1) 自旋极化、旋轨耦合、加U等哪几项需要同时设置 2)只有先自旋极化了,才可能考虑加U或旋轨耦合? 手册说明: LDAUTYPE=2 (Default): The simplified (rotationally invariant) approach to the LSDA+U, introduced by Dudarev et al. . This flavour of LSDA+U is of the following form: LSDA 局域自旋密度近似,当然要设置ISPIN=2了!! LDAUTYPE=4: Same as LDAUTYPE=1, but LDA+U instead of LSDA+U (i.e. no LSDA exchange splitting). In the LDA+U case the double counting energy is given by, LDA局域谜底近似,是否意味着可以不设置ISPIN=2,但U和J需单独设置,参考上面的公式 It is important to be aware of the fact that when using the L(S)DA+U, in general the total energy will depend on the parameters and . It is therefore not meaningful to compare the total energies resulting from calculations with different and/or (c.q. in case of Dudarev's approach). Furthermore, since LDA+U usually results in aspherical charge densities at and atoms we recommend to set LASPH = .TRUE . in the INCAR file for gradient corrected functionals (see Sec. 6.44 ). For Ce O for instance, identical results to the FLAPW methods can be only obtained setting LASPH = .TRUE . Note on bandstructure calculation: The CHGCAR file also contains only information up to LMAXMIX (defaulted to 2) for the on-site PAW occupancy matrices. When the CHGCAR file is read and kept fixed in the course of the calculations (ICHARG=11), the results will be necessarily not identical to a selfconsistent run. The deviations can be (or actually are) large for L(S)DA+U calculations. For the calculation of band structures within the L(S)DA+U approach, it is hence strictly required to increase LMAXMIX to 4 (d elements) and 6 (f elements). (see Sec. 6.63 ). 网络摘录: http://emuch.net/html/201004/2007448.html 作者: nkleof vasp计算DOS有一种方法,就是以较低k网格达到收敛,再以很高的k网格通过ICHARG=11读取自洽CHGCAR进行DOS计算。 我昨天进行了这样的计算,但是在计算中进行了+U,如下是INCAR PREC = Accurate LREAL = A IALGO = 48 NPAR = 8 NSIM = 8 ISTART = 1 ICHARG = 11 NELMIN = 4 LORBIT = 12 EDIFF = 1E-5 ISMEAR = -5 EMIN = -20 EMAX = 20 NEDOS = 11000 IS PIN = 2 LDAU = .TRUE. LDAUTYPE = 2 LDAUL = -1 2 -1 LDAUU = 0 2 0 LDAUJ = 0 0 0 LDAUPRINT = 2 其中自洽收敛是以11 11 11网格,非自洽DOS是以21 21 21网格,另外也进行了21 21 21网格的自洽计算进行对比。 如下是三次的DOS 图,分别为k11网格自洽的DOS,在k11网格自洽基础上k21的DOS结果,k21网格自洽的DOS 从图上可以看到,在k11自洽基础上进行k21的ICHARG=11的DOS结果和其他两个有点不同,费米面以上的部分有所变化。 所以,我猜测可能是因为是INCAR里面的+U设置在后来的非自洽计算中重复起了作用, 使得实际作用的U值成了4eV。即原来以U=2进行了自洽计算,得到的CHGCAR已经包含2eV 的Coulomb repulsion,后来进行非自洽计算时INCAR中的+U设置又起了作用,再加上了2eV的Coulomb repulsion,所以出来的DOS结果和原来U=2时的不同。【见上面的手册说明?】 希望有高手来证实一下,或者解释一下k21的非自洽结果与原自洽结果的DOS不同的原因。 /////////////////////////// U=4的计算结果出来了,证明我前面提到的猜测不正确,U=4的DOS和U=2,ICHARG=11的DOS并不相同。其实从上个帖子的DOS图可以看出来, 当U值增大到4时,费米面以上的那部分峰肯定会向着高能量方向移动一段距离,而不是几乎在原地不动。 锐利的碎片 (站内联系TA) Originally posted by nkleof at 2010-04-29 23:00:53: 意思是说在自洽CHGCAR的基础上进行ICHARG=11的计算也需要原来自洽计算时的+U设置? 对啊,U值最好先算下带隙看下,不同关联势都不一样。一般要求整个过程都应该+U。 网络摘录: http://emuch.net/html/201007/2225276.html J的值的意义与LDAUTYPE有关的 。当LDAUTYPE为2时,U-J的差值才有有意义,即有效的U参数。 至于有效U参数的值怎么选取,通过线性响应的方式来估测,类似pwscf里面的。要么将U值从小测到大,并计算结果同实验结果(比如电子结构等)进行比较,然后选取一个合适的值。再要不然,参考文献中的值。 我看说明书里面说的是:in Dudarev’s approach the parametersU and J do not enter seperately, only the difference (U J) is meaningfull. 并且对于LDAUTYPE, 1 Rotationally invariant LSDA+U according to Liechtenstein et al. 4 Idem 1., but LDA+U instead of LSDA+U (i.e. no LSDA exchange splitting) 2 Dudarev’s approach to LSDA+U (Default) 那是不是说LDAUTYPE=2时只有U-J的值有意义呢? 我还想请问一下:如果我不打开自旋(用GGA+U算)的话,那么可以设置ISPIN的值为1然后将LDAUTYPE能选择为2吗?还是说非自旋计算时只能将LDAUTYPE设置为4呢? valenhou001 (站内联系TA) 有关U,J的意义,前一个回帖中说的有点小误,我已经更正过来了。 既然LSDA+U里面U,J参数在目前来说,用的时候,究竟什么样的值才有意义,难以说的清楚,所以尽量减少不明确性,推荐采用默认的方式,即LDAUTYPE=2,要给定的参数就是U-J的值了。 LD AUTYPE=2的效果和LDAUTYPE=1或4的都是差不多的。 valenhou001 (站内联系TA) Originally posted by xiaojie7783 at 2010-07-16 23:56:15: 谢谢,我还想请问:如果我不打开自旋(用GGA+U算)的话,那么可以设置ISPIN的值为1然后将LDAUTYPE能选择为2吗?还是说非自旋计算时只能将LDAUTYPE设置为4呢? 谢谢 对非自旋选用LDAUTYPE=4,而自旋极化是选用LDAUTYPE=2这样不行 。为了比较自旋极化和非自旋极化的稳定性,最好要么都是用LDAUTYPE=2, 要么LDAUTYPE=1对自旋极化,LDAUTYPE=4对非自旋极化。 百度百科摘录: 在HUBBARD模型一级近似下,U就是考虑了 同一个原子上自旋相反的局域电子之间的库仑排斥,从而导致了能带的“重正化”。 强关联电子体系是指电子间的交互作用不可忽略的系统。在简单的固体理论中,固体中电子之间的静电相互作用被忽略了,不会出现在哈密顿算符里。故各个电子被看成是独立的,不会相互影响。然而,在许多物质中,静电能不能被忽略。当把这一部分能量写入哈密尔顿量,就得到强关联模型(或赫巴德模型(Hubbard model))。在强关联电子体系 ,由于电子之间的强相互作用,导致了许多新奇的物理现象。如高温超导体、二维电子气中的分数量子霍尔效应、锰氧化物材料中的巨磁阻效应、重费米子系统、二维高迁移率材料中的金属-绝缘体相变、量子相变和量子临界现象、一维导体中的电荷密度波等等 。 1937年,科学家就发现NiO,MnO,CoO 等氧化物并不是能带理论所预言的金属,而是能隙很大的绝缘体。Mott 引进了关联能来解释这一物理问题,认为 d 电子间库仑相互作用抑制了极化涨落,产生了关联能隙,后来这一类绝缘体即被称为莫特绝缘体。Mott 进一步讨论了VO2,V2O3等材料因温度或压力改变所引起的绝缘体到金属的相变,认定它们也是电子关联导致的相变,后来被称为 Mott 转变。莫特绝缘体几乎占了3d 过渡金属二元氧化物中的一半,还包括很多的多元复杂氧化物和 4f 稀土化合物及5f 锕系化合物。 钙钛矿结构的锰氧化物是强关联电子体系的一个例子。这类材料的显示出庞磁电阻效应,以及电荷有序、轨道有序、超导序和磁有序.在LaCaMnO系的材料中,加上磁场后的电阻变化率可达到103~106。这种材料的铁磁性的根源是双交换相互作用,而且磁性转变与绝缘体-金属转变相邻近。 重费米子体系是强关联电子体系的另一个例子。在重费米子金属中,存在RKKY相互作用与Kondo相互作用的竞争。RKKY相互作用是局域磁矩之间通过极化的传导电子云而发生的间接交换相互作用。Kondo相互作用是局域磁矩与周围传导电子的直接交换相互作用。在低温下,两种相互作用竞争的结果,使重费米子金属有多种基态:磁有序态、超导态、费米液体态和非费米液体基态等。另一些过渡金属氧化物(如LiV2O5)同样具有典型的重费米子特性。 铜基以及铁基高温超导体同样是强关联电子体系。以BiSrCaCuO 为例,在掺杂浓度x为零的材料是反铁磁序的绝缘体,随着掺杂的增加会发生绝缘体到金属的转变。而在低温就具有超导电性,随着掺杂的增加,Tc 达到一峰值之后,又逐渐下降,高温超导体的正常态的电子性质都十分异常。 参考资料 徐慧.强关联电子体系材料.中南大学出版社,2009-07 LDA+U 中的U最好参考实验值,如果找不到实验值就要自己去试,通常认为带隙或晶格常数不再发生变化时的U值作为近似参考值 我来说一下。 LDA+U或是GGA+U中的U指的是HUBBARD模型中的自旋相反电子的强关联排斥能。通常的DFT计算是单电子近似的,或者是平均场近似,在这种近似下,的确可以解释很多问题。但是,真正的凝聚态体系,分子或是固体,本质上是多体理论。很多问题,比如MOTT绝缘体,在单电子近似下的结论就是错的。因此必须超越单电子近似,考虑体系的量子多体效应。U就是在这种情况下出现的。 简单的说,或者在HUBBARD模型一级近似下,U就是考虑了同一个原子上自旋相反的局域电子之间的库仑排斥,从而导致了能带的“重正化”。 比如所,在普通能带理论中,如果原胞中的电子数是奇数个,则体系一定是金属。但是在考虑过在位格点(ON-SITE)的排斥能后,就出现了绝缘体。 因此,考虑U的情况一般是体系中存在局域化的d,f电子(比如Ce)。这些电子的存在是”标准“的DFT理论无法合理处理的,必须要考虑U的影响。 而通常U是一个试验值,不同的化学环境,同一个原子的U就可能不同,必须通过试验来确定。 呵呵,先说这么多,累死了。 最近在做DFT+U计算,有些收获分享一下。本人数学功底先天不足,难免有理解错误的地方,欢迎指正。 首先是对+U必要性的感悟。DFT(LDA和GGA)对一般体系的结构、能带计算还是很令人满意的。这些一般体系是指前3周期的体系和纯金属体系。但是,对于包含d电子和f电子的体系,特别是过渡金属氧化物或氮化物,在“金属/绝缘体”的定性判断上常常出错。LDA和GGA往往把一些绝缘体/半导体的gap算的太小,甚至最高占据轨道/能带(HOMO)在Fermi面之上,即成金属了。这些最高占据轨道往往是来自这些金属原子的d电子和f电子。那么为什么DFT处理d/f电子会出现较大误差呢?我认为这些d/f电子的特殊性在于它们不仅离原子核较远,轨道空间伸展形状奇特(比如穿透效应,即穿透更加外层的s,p轨道)而且多数会发生自旋极化,即原应自旋相反的电子对发生自旋跃迁,导致金属原子神奇地出现了净的磁矩。如果单胞内所有金属原子的净磁矩方向相同,则单胞总体产生净磁矩,材料呈现铁磁性;如果单胞内相邻金属原子的净磁矩相反,则单胞没有总体净磁矩,但存在一上一下的磁矩排列,材料呈现为反铁磁性。正是d/f电子这些神奇的特性,使得DFT计算的过渡金属氧化物或氮化物能带结构频频失误。为什么呢?原因在于DFT计算电子-电子之间的排斥作用所用的交换-相关泛函,是基于单粒子近似发展起来的。单粒子近似是把自旋配对的电子对看成单个粒子,这样Kohn-Sham轨道数量为总电子数的一半。但是当处理d/f电子时,不得不把电子对分开为自旋向上和自旋向下的两个粒子,即开壳层计算open shell。对开壳层体系使用单粒子近似下的交换-相关泛函时,其中的相关泛函就不能完全考虑d/f电子的相关效应。d/f电子的相关效应,就是自旋电子与自旋电子之间的排斥,和自旋电子与内层电子之间的排斥。这些排斥作用使得轨道/能带之间分割较远,轨道/能带较窄。但是DFT的相关泛函对这些排斥考虑的不够,结果轨道/能带过宽,轨道与轨道相互接近甚至重叠。这就是为什么DFT把绝缘体计算成了金属。一般把这些过度金属半导体/绝缘体体。
个人分类: 理论计算|6890 次阅读|0 个评论
ASE 的安装及其与VASP 对接的方法
jasonmumu 2019-9-2 20:55
ASE 的全称是 Atomic Simulation Environment ,是一款基于 python 程序语言的工具包合集。支持与很多 DFT 程序的对接( Abinit, CP2K, NWChem, Gaussian, Vasp 等),具有强大的提交计算、可视化及分析计算结果的功能。这里主要介绍 ASE 的安装及其与 VASP 对接的方法。我们知道,提交 VASP 计算任务之前需要准备 POTCAR ;如果计算带电体系还需要对每个结构总的价电子个数进行设置。现在通过 ASE 提交计算任务则省去了准备 POTCAR ,和自己计算总价电子数的麻烦。所以把方法分享给大家并方便自己查看。 此外,这里介绍的是离线安装ASE的方法。 如果是联网的服务器,可以直接使用pip安装:“pipinstall--upgrade--userase”。 一 . 安装 anaconda3 ASE 需要 3.5 或更高版本的 python 程序,而 anaconda 集成了 ASE 需求的软件包。因此直接在官网下载最新版 anaconda 即可满足 ASE 安装的需求。 链接: https://www.anaconda.com/distribution/#download-section 下载得到 Anaconda3-2019.07-Linux-x86_64.sh 之后将其上传到服务器,直接 sh Anaconda3-2019.07-Linux-x86_64.sh 进行安装,关于最后一步是否将 Anaconda3 的 python 环境写入 ~/.bashrc ,取决于个人的喜好。我习惯不这么做,而是把环境变量单独写,如写到 ~/.env_ase.sh 。 环境变量的设置如下: #!/bin/bash # conda init # !! Contents within this block are managed by 'conda init' !! __conda_setup=$(CONDA_REPORT_ERRORS=false '/home/mu/anaconda3/bin/conda' shell.bash hook 2 /dev/null) if ; then \\eval $__conda_setup else if ; then . /home/mu/anaconda3/etc/profile.d/conda.sh CONDA_CHANGEPS1=false conda activate base else \\export PATH=/home/mu/anaconda3/bin:$PATH fi fi unset __conda_setup 这里把环境变量写到了 ~/.env_ase.sh 文件中。 二 . 安装 ASE 在官网下载 ASE 源包,然后上传到服务器解压缩。 链接: https://wiki.fysik.dtu.dk/ase/install.html#run-the-tests 1. 安装 解压安装包之后, cd 到解压位置后执行: source ~/.env_ase.sh python3 setup.py install --user 正常完成安装后把 ase 的目录写入环境变量。 export PATH=/home/mu/soft/ase/ase-3.18.0/bin:$PATH 与上相同,将其写到 ~/.env_ase.sh 文件中。 2. 测试 然后测试 ase 是否正确安装,执行: source ~/.env_ase.sh ase test 如果安装正确会看到如下信息: ========== Summary ========== Number of tests 317 Passes: 229 Failures: 0 Errors: 0 Skipped: 88 ============================= Test suite passed! 三 . 将 ASE 与 VASP 对接 成功安装 ASE 之后还需要必要的设置来建立 ASE 与 VASP 的联系。 1. 设置 run_vasp.py 脚本 将如下两行内容写入到 run_vasp.py 文件中。 import os exitcode = os.system('vasp_std') run_vasp.py 文件可以放到任意目录,因为计算时会指定它的路径。 2. 设置 VASP 赝势的路径 将赝势文件上传到服务器某一路径下。 需要注意的是,赝势文件的命名有如下对应关系: PBE, PW91, LDA 分别命名为 potpaw_PBE, potpaw_GGA, potpaw 。 最后将如下内容写到 ~/.env_ase.sh 文件中 export VASP_SCRIPT=/path to run_vasp.py /run_vasp.py export VASP_PP_PATH=/path to pseudo/Pseudopotentials/ Pseudopotentials 是 potpaw_PBE 的上一级目录。 四 . 提交计算的方法 我习惯用 bash 脚本提交计算任务,脚本示例如下 (ase_vasp_jobs.sh): ####################################### #!/bin/bash source ~/.env_ase.sh mpirun -np 24 python3 test.py ######################################## 需要注意的是, vasp 的运行所需要的环境需要生效,这里的计算相当于“ vasp_std test.py ”,因此如果没有在 .bashrc 中给出 vasp_std 工作目录的,需要在 ase_vasp_jobs.sh 或 .env_ase.sh 中指定 vasp_std 的工作目录。 脚本中 test.py 的内容可以是: from ase import Atoms, Atom from ase.calculators.vasp import Vasp a = d = 2.3608 NaCl = Atoms( , magmom=1.928), Atom('Cl', , magmom=0.75)], cell=a) calc = Vasp(prec='Accurate', xc='PBE', lreal=False) NaCl.set_calculator(calc) NaCl. get_potential_energy() 最后把 test.py 和 ase_vasp_jobs.sh 放到同一个目录,命令行执行如下命令即可 nohup sh ase_vasp_jobs.sh ASE 会自动生成 VASP 计算所需要的文件,如果需要自己设置 KPOINTS ,可以参考官网的教程。 五 . 带电体系的设置方法 带电体系的设置其实很容易实现,只需要在 calc 中添加 net_charge 这一个命令即可。比如 calc = Vasp(prec='Accurate', xc='PBE', lreal=False, net_charge=1) 此时获得的 INCAR 中的 NELECT 值就会相比中性体系加 1(注意这里是加1,如果想设置正价体系就需要设成负值) 。
个人分类: 软件的安装|18006 次阅读|0 个评论
[转载]第一性原理计算资源(免费和收费系列集锦)
hongyesies 2019-7-23 11:58
申明:本文转载自知乎 https://zhuanlan.zhihu.com/p/74686906 原文由唐刚博士发表,如有侵权请联系本人删除。感谢原作者的整理。 ============ VASP教程 ============ 一、VASP免费文字教程系列 1、 大师兄VASP入门系列文章 Learn VASP The Hard Way 2、丙丙de五线谱系列文章 http://jingyan.baidu.com/user/npublic?un=%E4%B8%99%E4%B8%99de%E4%BA%94%E7%BA%BF%E8%B0%B1 3、关注“学术之友”微信公众号学习相关教程 二、VASP免费视频教程 1、 刘博在B站的视频 哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibili 2、 材料人APP的视频 1) VASP入门系列 (免费视频,点击图片下方链接可看) http://app.cailiaoren.com/view/series/detail?id=23amp;amp;vid=68 2) VESTA入门系列 (免费视频,点击图片下方链接可看) http://app.cailiaoren.com/view/series/detail?id=33amp;amp;vid=112 3) VMD入门系列 (免费视频,点击图片下方链接可看) http://app.cailiaoren.com/view/series/detail?id=48amp;amp;vid=180 4) 免费线上学术视频 4.1) 二维材料计算研讨会 (免费视频,点击图片下方链接可看) http://app.cailiaoren.com/view/series/detail?id=66amp;amp;vid=285 4.2) 计算化学 (免费视频,点击图片下方链接可看) http://app.cailiaoren.com/view/series/detail?id=30amp;amp;vid=109 4.3) 声子系列 (免费视频,点击图片下方链接可看) http://app.cailiaoren.com/view/series/detail?id=25amp;amp;vid=88 三、VASP收费视频教程 (点击图片下方链接可预览内容) 1、 材料人APP全套VASP入门视频(需要下载材料人APP购买),价格1599元 http://app.cailiaoren.com/view/series/detail?id=91amp;amp;vid=599 2、 材料人APP中VASP入门视频部分剪辑版(需要下载材料人APP购买),价格699元 http://app.cailiaoren.com/view/series/detail?id=103amp;amp;vid=632 3、 材料人APP全套二维材料视频(需要下载材料人APP购买),价格2600元 http://app.cailiaoren.com/view/series/detail?id=108amp;amp;vid=668 4、 材料人APP全套二维材料视频(需要下载材料人APP购买),价格1499元 http://app.cailiaoren.com/view/series/detail?id=78amp;amp;vid=375 5、 材料人APP全套二维材料专题讨论视频(需要下载材料人APP购买),价格699元 http://app.cailiaoren.com/view/series/detail?id=45amp;amp;vid=543 6、 材料人APP全套二维材料结构搜索视频(需要下载材料人APP购买),价格199元 http://app.cailiaoren.com/view/series/detail?id=109amp;amp;vid=697 7、 材料人APP全套分子动力学视频(需要下载材料人APP购买) 1)分子动力学视频价格199元 http://app.cailiaoren.com/view/series/detail?id=101amp;amp;vid=623 2)分子动力学视频价格499元 http://app.cailiaoren.com/view/series/detail?id=27amp;amp;vid=192 8、 材料人APP全套光催化视频(需要下载材料人APP购买),价格499元 http://app.cailiaoren.com/view/series/detail?id=28amp;amp;vid=526 9、 材料人APP全套电催化视频(需要下载材料人APP购买),价格40元 http://app.cailiaoren.com/view/series/detail?id=84amp;amp;vid=395 10、 材料人APP全套电池的吸收光谱视频(需要下载材料人APP购买),价格100+699元 http://app.cailiaoren.com/view/series/detail?id=42amp;amp;vid=139 http://app.cailiaoren.com/view/series/detail?id=34amp;amp;vid=596 11、 材料人APP中python相关视频(需要下载材料人APP购买) 1)利用python处理材料计算数据,价格299元 http://app.cailiaoren.com/view/series/detail?id=92amp;amp;vid=472 2)python与材料计算快速入门,价格299元 http://app.cailiaoren.com/view/series/detail?id=52amp;amp;vid=233 ============ QE教程 ============ 一、QE免费文字教程系列 1、 yyyu大神最详细的QE教程 Blogs 2、李云海博士教程 科学网-yhli0906的博文 3、刘鹏飞博士教程 科学网-pfliu89的博文 二、QE收费视频教程(需要下载材料人APP购买) 1、QE入门,价格39元 http://app.cailiaoren.com/view/series/detail?id=75amp;amp;vid=344 2、QE过渡态和电子结构计算,价格99元 http://app.cailiaoren.com/view/series/detail?id=94amp;amp;vid=483 3、QE表面能计算,价格199元 http://app.cailiaoren.com/view/series/detail?id=111amp;amp;vid=700 =========== CP2K教程 =========== 一、CP2K免费文字教程系列 1、 兰晶岗大神系列教程 CP2K Tutorial 二、CP2K收费视频系列,价格99元(需要下载材料人APP购买) http://app.cailiaoren.com/view/series/detail?id=39amp;amp;vid=135
个人分类: VASP|6543 次阅读|0 个评论
VASP 加电场计算过程中电子步能量振幅巨大的困难
huijiany 2019-1-10 07:42
最近,在研究电场对磁性的影响。查阅了网上一些相关说明之后,得到加电场的几个重要参数设计: LDIPOL=.TRUE. IDIPOL=3 !(可以设置1、2、3分别表示电场沿着x、y、z方向。本人做的是沿着z方向) EFIELD=0.05 !(根据相关介绍,电场要一点一点的加上去,用上一次得到的WAVECAR与CHGCAR进行下一个计算,设置 ISTART=1、ICHARG=1) 然而,根据这些参数设计,出现了一个很大的问题,即在第一个离子步的电子步驰誉的中,能量振幅非常大,甚至超过10 5 .如下图所示: DAV: 1 -0.767335048512E+02 0.23386E+01 -0.50910E+01 21760 0.288E+01 0.323E+01 RMM: 2 -0.720390471133E+03 -0.64366E+03 -0.64719E+02 24413 0.112E+02 0.130E+02 RMM: 3 -0.116663211224E+03 0.60373E+03 -0.17217E+02 18792 0.996E+01 0.724E+01 RMM: 4 -0.125018502111E+03 -0.83553E+01 -0.30409E+01 18815 0.342E+01 0.737E+01 RMM: 5 -0.220082872328E+04 -0.20758E+04 -0.22467E+03 24052 0.208E+02 0.930E+01 RMM: 6 -0.778742129728E+04 -0.55866E+04 -0.20421E+04 31049 0.109E+03 0.503E+02 RMM: 7 -0.928948898001E+04 -0.15021E+04 0.17435E+04 26384 0.281E+03 0.665E+02 RMM: 8 -0.915059460028E+04 0.13889E+03 -0.43271E+04 30371 0.408E+03 0.767E+02 RMM: 9 -0.597696864276E+04 0.31736E+04 -0.23496E+04 30178 0.173E+03 0.763E+02 RMM: 10 0.122717280288E+03 0.60997E+04 -0.31091E+03 31799 0.243E+02 0.200E+02 RMM: 11 0.565960936185E+02 -0.66121E+02 -0.73026E+02 31573 0.146E+02 0.827E+01 RMM: 12 0.304215843922E+02 -0.26175E+02 -0.29971E+02 31736 0.714E+01 0.474E+01 RMM: 13 0.449800724939E+01 -0.25924E+02 -0.16956E+02 31934 0.532E+01 0.339E+01 RMM: 14 -0.166251600737E+02 -0.21123E+02 -0.10301E+02 31948 0.485E+01 0.283E+01 RMM: 15 -0.346758152887E+02 -0.18051E+02 -0.56295E+01 31782 0.455E+01 0.432E+01 RMM: 16 -0.445927395377E+02 -0.99169E+01 -0.42875E+01 31414 0.400E+01 0.431E+01 RMM: 17 -0.544220777030E+02 -0.98293E+01 -0.42041E+01 30690 0.329E+01 0.460E+01 RMM: 18 -0.603258320150E+02 -0.59038E+01 -0.29960E+01 29269 0.267E+01 0.424E+01 RMM: 19 -0.650335139483E+02 -0.47077E+01 -0.25834E+01 28373 0.183E+01 0.385E+01 RMM: 20 -0.674561370201E+02 -0.24226E+01 -0.22402E+01 25201 0.131E+01 0.303E+01 RMM: 21 -0.685396517418E+02 -0.10835E+01 -0.14487E+01 22989 0.104E+01 0.209E+01 RMM: 22 -0.701787200521E+02 -0.16391E+01 -0.96427E+00 22055 0.565E+00 0.148E+01 RMM: 23 -0.709219682851E+02 -0.74325E+00 -0.43492E+00 20124 0.310E+00 0.142E+01 RMM: 24 -0.719973022532E+02 -0.10753E+01 -0.14308E+00 19509 0.226E+00 0.167E+01 RMM: 25 -0.720809662625E+02 -0.83664E-01 -0.92656E-01 19176 0.169E+00 0.160E+01 RMM: 26 -0.721490093960E+02 -0.68043E-01 -0.15477E-01 18978 0.143E+00 0.152E+01 RMM: 27 -0.731487679495E+02 -0.99976E+00 -0.32752E-01 18984 0.226E+00 0.171E+01 RMM: 28 -0.732772444419E+02 -0.12848E+00 -0.30766E-01 18834 0.246E+00 0.156E+01 RMM: 29 -0.732051933214E+02 0.72051E-01 -0.20078E-01 18986 0.176E+00 0.146E+01 RMM: 30 -0.729943027274E+02 0.21089E+00 -0.72523E-02 18797 0.135E+00 0.140E+01 RMM: 31 -0.146491501684E+04 -0.13919E+04 -0.11912E+03 24043 0.127E+02 0.883E+01 RMM: 32 -0.605293268811E+04 -0.45880E+04 -0.19631E+04 30953 0.829E+02 0.476E+02 RMM: 33 -0.929405778429E+04 -0.32411E+04 -0.70603E+02 26555 0.204E+03 0.570E+02 RMM: 34 -0.837022476403E+04 0.92383E+03 -0.39623E+04 30332 0.385E+03 0.747E+02 RMM: 35 -0.927131625861E+04 -0.90109E+03 -0.25633E+04 30141 0.261E+03 0.819E+02 RMM: 36 -0.559510411163E+03 0.87118E+04 -0.21351E+04 31745 0.929E+03 0.840E+02 RMM: 37 -0.267363093744E+04 -0.21141E+04 -0.24604E+04 31754 0.182E+03 0.744E+02 RMM: 38 0.239581746562E+03 0.29132E+04 -0.34140E+03 31788 0.260E+02 0.234E+02 RMM: 39 -0.163430626936E+05 -0.16583E+05 -0.24678E+04 29651 0.476E+03 0.547E+02 RMM: 40 -0.260850604689E+04 0.13735E+05 -0.23790E+04 31632 0.175E+03 0.761E+02 RMM: 41 0.173774358943E+03 0.27823E+04 -0.33782E+03 31778 0.259E+02 0.223E+02 RMM: 42 0.950693812018E+02 -0.78705E+02 -0.11576E+03 31683 0.143E+02 0.977E+01 RMM: 43 -0.383136785931E+04 -0.39264E+04 -0.27360E+04 27387 0.223E+03 0.575E+02 RMM: 44 -0.473600305134E+04 -0.90464E+03 -0.10625E+04 31118 0.279E+03 0.804E+02 RMM: 45 -0.462571967238E+02 0.46897E+04 -0.35278E+03 31652 0.274E+02 0.266E+02 RMM: 46 -0.456179023176E+04 -0.45155E+04 -0.82766E+04 30445 0.598E+03 0.760E+02 RMM: 47 -0.493189312575E+04 -0.37010E+03 -0.25880E+04 31754 0.172E+03 0.520E+02 RMM: 48 0.326503151748E+03 0.52584E+04 -0.35507E+03 31799 0.263E+02 0.239E+02 RMM: 49 0.123554837536E+03 -0.20295E+03 -0.16300E+03 31814 0.150E+02 0.129E+02 RMM: 50 -0.897447869856E+04 -0.90980E+04 -0.13681E+04 27205 0.555E+03 这个现象肯定是不合理的。做了多次测试,发现DIPOL是一个非常关键的参数设置。在这之前,我也在没有设置DIPOL的时候得到收敛的体系。所以,没在意。这次,加入 DIPOL= 0.5 0.5 0.5 之后,体系能量收敛的很好。如下图所示: DAV: 1 -0.732207870579E+02 -0.73221E+02 -0.93864E-01 36056 0.812E+00 0.357E+00 DAV: 2 -0.136912352413E+03 -0.63692E+02 -0.58631E+01 34088 0.106E+02 0.771E+01 DAV: 3 -0.734744172790E+02 0.63438E+02 -0.27003E+01 32584 0.520E+01 0.139E+01 DAV: 4 -0.732235358728E+02 0.25088E+00 -0.63389E+00 28512 0.173E+01 0.755E+00 DAV: 5 -0.730784821226E+02 0.14505E+00 -0.10358E+00 26536 0.109E+01 0.335E+00 DAV: 6 -0.730235617008E+02 0.54920E-01 -0.59754E-01 25072 0.764E+00 0.262E+00 DAV: 7 -0.730179810825E+02 0.55806E-02 -0.16053E-01 28344 0.486E+00 0.147E+00 DAV: 8 -0.730175390481E+02 0.44203E-03 -0.50512E-02 27040 0.275E+00 0.141E+00 DAV: 9 -0.730060495854E+02 0.11489E-01 -0.34061E-02 24792 0.259E+00 0.966E-01 DAV: 10 -0.730008442756E+02 0.52053E-02 -0.79425E-03 28568 0.112E+00 0.537E-01 DAV: 11 -0.730011373564E+02 -0.29308E-03 -0.44438E-03 21020 0.400E-01 0.460E-01 DAV: 12 -0.730014696857E+02 -0.33233E-03 -0.17175E-02 21664 0.711E-01 0.464E-01 DAV: 13 -0.730009679785E+02 0.50171E-03 -0.94725E-03 25512 0.632E-01 0.412E-01 DAV: 14 -0.730020888471E+02 -0.11209E-02 -0.29135E-02 19880 0.776E-01 0.343E-01 DAV: 15 -0.730020240008E+02 0.64846E-04 -0.40824E-02 20056 0.881E-01 0.247E-01 DAV: 16 -0.730025350863E+02 -0.51109E-03 -0.26231E-02 19888 0.731E-01 0.195E-01 DAV: 17 -0.730023662041E+02 0.16888E-03 -0.24310E-02 19776 0.667E-01 0.176E-01 DAV: 18 -0.730025750487E+02 -0.20884E-03 -0.13228E-02 19604 0.520E-01 0.162E-01 DAV: 19 -0.730027405388E+02 -0.16549E-03 -0.10962E-02 19896 0.460E-01 0.150E-01 DAV: 20 -0.730027134871E+02 0.27052E-04 -0.82420E-03 19880 0.405E-01 0.130E-01 DAV: 21 -0.730029294955E+02 -0.21601E-03 -0.44958E-03 20296 0.304E-01 0.114E-01 DAV: 22 -0.730030497479E+02 -0.12025E-03 -0.43543E-03 19812 0.295E-01 0.983E-02 DAV: 23 -0.730031293981E+02 -0.79650E-04 -0.38449E-03 19872 0.274E-01 0.861E-02 DAV: 24 -0.730032014982E+02 -0.72100E-04 -0.41021E-03 19956 0.290E-01 0.737E-02 DAV: 25 -0.730032377822E+02 -0.36284E-04 -0.38462E-03 19896 0.278E-01 0.607E-02 DAV: 26 -0.730033832628E+02 -0.14548E-03 -0.30696E-03 19844 0.255E-01 0.485E-02 DAV: 27 -0.730034249709E+02 -0.41708E-04 -0.25751E-03 19936 0.228E-01 0.410E-02 DAV: 28 -0.730034281415E+02 -0.31706E-05 -0.16091E-03 19956 0.181E-01 0.351E-02 DAV: 29 -0.730035052190E+02 -0.77077E-04 -0.11148E-03 19872 0.153E-01 0.326E-02 DAV: 30 -0.730035592024E+02 -0.53983E-04 -0.10094E-03 19844 0.142E-01 0.306E-02 DAV: 31 -0.730035946895E+02 -0.35487E-04 -0.11621E-03 19940 0.152E-01 0.299E-02 DAV: 32 -0.730036139140E+02 -0.19224E-04 -0.10793E-03 19868 0.146E-01 0.264E-02 DAV: 33 -0.730036208305E+02 -0.69166E-05 -0.63352E-04 20368 0.113E-01 0.228E-02 DAV: 34 -0.730036318842E+02 -0.11054E-04 -0.47414E-04 20064 0.960E-02 0.204E-02 DAV: 35 -0.730036198617E+02 0.12023E-04 -0.45596E-04 19824 0.953E-02 0.183E-02 DAV: 36 -0.730036093786E+02 0.10483E-04 -0.46263E-04 19976 0.949E-02 0.164E-02 DAV: 37 -0.730035947121E+02 0.14666E-04 -0.46386E-04 20076 0.966E-02 0.151E-02 DAV: 38 -0.730035875205E+02 0.71916E-05 -0.45329E-04 20136 0.942E-02 0.141E-02 DAV: 39 -0.730035658943E+02 0.21626E-04 -0.36264E-04 20200 0.854E-02 0.132E-02 DAV: 40 -0.730035552237E+02 0.10671E-04 -0.21150E-04 20272 0.674E-02 0.124E-02 DAV: 41 -0.730035515375E+02 0.36862E-05 -0.19550E-04 20332 0.660E-02 0.120E-02 DAV: 42 -0.730035477423E+02 0.37952E-05 -0.21885E-04 20120 0.696E-02 0.113E-02 DAV: 43 -0.730035238169E+02 0.23925E-04 -0.27612E-04 19984 0.791E-02 0.107E-02 DAV: 44 -0.730035098998E+02 0.13917E-04 -0.24636E-04 20064 0.737E-02 0.966E-03 DAV: 45 -0.730035041021E+02 0.57977E-05 -0.21001E-04 19752 0.690E-02 0.963E-03 DAV: 46 -0.730034905364E+02 0.13566E-04 -0.19585E-04 19656 0.663E-02 0.923E-03 DAV: 47 -0.730035290131E+02 -0.38477E-04 -0.15410E-04 19364 0.672E-02 0.852E-03 DAV: 48 -0.730035148566E+02 0.14157E-04 -0.23779E-04 19280 0.860E-02 0.101E-02 DAV: 49 -0.730035089330E+02 0.59236E-05 -0.19735E-04 19072 0.696E-02 0.965E-03 DAV: 50 -0.730035080783E+02 0.85465E-06 -0.76305E-05 20072 0.438E-02 1 F= -.76733017E+02 E0= -.76727470E+02 d E =-.767330E+02 mag= 12.5360 0.0023 -0.0017 因此,我们的结论是:对于部分加电场的体系计算,DIPOL可以不设置,对于一些体系DIPOL很关键。至于是什么样的体系,有怎样的区别,目前还没有摸清楚。不过, 不管怎样,建议所有加电场的体系计算时尽量设置:DIPOL=0.5 0.5 0.5. 另外,之前做的二维材料的单层结构,能量也很难收敛,换成双层结构之后就好了。 总结: 计算二维材料加电场体系,我们需要注意: 1. 电场一点一点的往上加,尽量 0.1 eV/A 一个点; 2. 用双层结构 (目前也不能完全确定单层一定不行,但双层的收敛效果好) 3. 设置DIPOL=0.5 0.5 0.5 希望这些经验可以给大家一些参考,在科研过程中少走一些弯路。也欢迎大家对我的说法提出问题,讨论。
14841 次阅读|2 个评论
[转载]INCAR Settings (1)
fyctime 2019-1-9 14:08
1) ISMEAR: A) 对于半导体和绝缘体体系 ,ISMEAR 的值取绝对不能大于 0, 一般用 0, B) 对所有体系 , 更加精确的时候用 -5, C) 对于所有 K 点数目小于 3 的计算 , 不能用 ISMEAR = -5 。 会报错。 D) K 点少 , 还是半导体或者绝缘体 , 那么只能用 ISMEAR = 0 。 E) 对于金属来说 ,ISMEAR 的取值一般为 1 。 F) 保守地说 ,ISMEAR = 0(Gaussian Smearing) 可以满足大部分的体系 ( 金属 , 导体 , 半导体 , 分子 ), G) 在 DOS 能带计算中 , 使用 ISMEAR= -5 用于获取精确的信息。 2) SIGMA: SIGMA 的取值和 ISMEAR 息息相关 : A) 如果用了 ISMEAR = -5 ( 对于所有体系 ),SIGMA 的值可以忽略 , 也可以不管 (VASP 会自动略过 ) B) 对于金属 : ISMEAR =1 或者 0, 非金属 : ISMEAR= 0 的时候 , 一般取 0.10 或者采用默认值 0.20 即可。 不过很多人都不放心 , 为了保险想测试一番。标准是 : SIGMA 的取值要保证 OUTCAR 中的 entropy T*S 这一项 , 平均到每个原子上 , 要小于 1-2 meV 。 检查的时候可以用这个命令 : grep 'entropy T' OUTCAR ( 这里有两个单引号 , 不要输入的时候漏掉 ) 得出的能量除以体系中原子的数目 , 然后再和 0.001 eV 比较 , 如果小于 ,SIGMA 取值 OK, 如果大于 , 再换个测试。 C) 对于分子 , 原子体系 ( 也就是你把分子或者原子放到一个 box 里面 ), 必须要用很小的值 , 这里我们用的 0.01 。 3) IBRION: 一般来说,优化结构的时候有 3 个选择: IBRION=3 :你的初始结构很差的时候; IBRION=2 :共轭梯度算法,很可靠的一个选择,一般来说都用它。 IBRION=1 :用于小范围内稳定结构的搜索。 如果你的体系遇到结构不收敛的时候,可以尝试下换下 IBRION 的参数。
个人分类: Vasp|3833 次阅读|0 个评论
VASP: MAGMOM 设置 无效
huijiany 2019-1-3 07:06
在工作过程中需要计算几个反铁磁结构的能量,进而计算交换作用能。现把我遇到的其中一个问题发表出来交流一下。 用VASP软件计算,INCAR中设置 MAGMOM= 0 0 0 0 0 0 0 0 0 0 3 -3 -3 3 计算结果显示在OUTCAR中: magnetization (x) # of ion s p d tot ---------------------------------------- 1 -0.000 0.000 0.000 0.000 2 0.000 -0.000 0.000 -0.000 3 -0.000 0.000 0.000 0.000 4 0.000 -0.000 0.000 -0.000 5 -0.000 0.000 0.000 0.000 6 0.000 -0.000 0.000 -0.000 7 0.000 -0.000 0.000 -0.000 8 -0.000 0.000 0.000 0.000 9 -0.000 -0.000 0.000 0.000 10 -0.000 -0.000 -0.000 -0.000 11 0.000 0.000 -0.003 -0.003 12 -0.000 -0.000 0.003 0.003 13 0.000 0.000 -0.003 -0.003 14 -0.000 -0.000 0.003 0.003 ------------------------------------------------ tot -0.000 -0.000 0.000 0.000 此结果表示计算结果的各个原子没有磁矩,INCAR中的MAGMOM 设置无效。 解决办法 :经测试,发现结构偏差太大就会出现这种问题。解决办法就是先用铁磁态FM,或者其他反铁磁态优化出来的结构作为初始结构,进而调整MAGMOM再优化。
6977 次阅读|0 个评论
How to get the high-k (K, M) point in honeycomb lattice
jackongpoor 2018-12-17 17:43
最近在学习计算二维材料,发现高对称点K比较特殊(尤其是坐标选取),想了原因许久未果。 于是从基本概念出发,来尝试计算K点的坐标。 注:计算结果不唯一。 Hope this procedure helpful for your research.
个人分类: 计算材料|2506 次阅读|0 个评论
VASP 在 Centos 系统上离线编译的详细过程
jasonmumu 2018-10-17 16:41
笔者根据自己的经验总结了VASP在Centos系统的安装方法,分享给大家并方便自己查看。 编译过程处于离线状态,操作系统为Centos7,系统中已经默认安装了gcc. 本教程的VASP主要由 gfortran 编译完成,请大家检查自己的系统中gcc与g++版本是否一致。 需要的文件如下,并附上了必要的下载链接: openmpi-1.8.8.tar.gz https://www.open-mpi.org/software/ompi/v1.8/ fftw-3.3.4.tar.gz http://www.fftw.org/fftw-3.3.4.tar.gz GotoBLAS2-1.13.tar.gz https://www.tacc.utexas.edu/research-development/tacc-software/gotoblas2 lapack-3.1.1.tgz http://www.netlib.org/lapack/ vasp.5.lib_.tar_2.gz vasp.5.4.1.05Feb16.tar.gz patch.5.4.1.14032016.gz patch.5.4.1.03082016.gz makefile.include ( makefile.include ) 上面所有软件均可以在这里下载: 链接:https://pan.baidu.com/s/1ehptftd17QW4yHBA-E7V5w 密码:ws63 注:VASP是商业软件,请大家注意版权。 下面是详细的安装过程。 当前处于根目录,接着一步步地进行下列操作。 mkdir soft cd soft 将上面列出的所有材料放到soft目录下 1. 安装 openmpi mkdir openmpi188 tar zxvf openmpi-1.8.8.tar.gz cd openmpi-1.8.8 ./configure --prefix=/home/mu/soft/openmpi188 make -j4 make install (make uninstall) vi ~/.bashrc 单击 i,添加如下内容: #opemmpi-1.8.8 export MPI_HOME=/home/mu/soft/openmpi188 export PATH=$PATH:$MPI_HOME/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MPI_HOME/lib 然后单击 ESC 并 shift+: wq 退出编辑界面 source ~/.bashrc which mpirun 2. 安装fftw cd .. mkdir fftw334 tar zxvf fftw-3.3.4.tar.gz cd fftw-3.3.4 ./configure --prefix=/home/mu/soft/fftw334 --enable-mpi make -j4 make install vi ~/.bashrc 单击 i,添加如下内容 #fftw export PATH=/home/mu/soft/fftw334/bin:$PATH export LD_LIBRARY_PATH=/home/mu/soft/fftw334/lib:$LD_LIBRARY_PATH 然后单击 ESC 并 shift+: wq 退出编辑界面 source ~/.bashrc which fftw-wisdom 3.安装GotoBLAS2 cd .. tar zxvf GotoBLAS2-1.13.tar.gz cd GotoBLAS2 cp ../lapack-3.1.1.tgz ./ tar zxvf lapack-3.1.1.tgz 打开文件 f_check 将倒数第五行: print MAKEFILE FEXTRALIB=$linker_L $linker_l $linker_an; 修改为: print MAKEFILE FEXTRALIB=$linker_L -lgfortran -lm -lquadmath -lm $linker_an; make BINARY=64 TARGET=NEHALEM 生成 'libgoto2.so' 成功! 4. 安装VASP mkdir vasp54 mv ./vasp.5.4.1.05Feb16.tar.gz ./vasp54 mv ./vasp.5.lib_.tar_2.gz ./vasp54 mv ./patch.5.4.1.03082016.gz ./vasp54 mv ./patch.5.4.1.14032016.gz ./vasp54 tar -zxvf vasp.5.4.1.05Feb16.tar.gz gunzip patch.5.4.1.14032016.gz gunzip patch.5.4.1.03082016.gz cd vasp.5.4.1 patch -p0 ../patch.5.4.1.14032016 patch -p0 ../patch.5.4.1.03082016 cp ../.././fftw334/include/fftw3.f ./src cd .. tar -zxvf vasp.5.lib_.tar_2.gz cd vasp.5.lib cp makefile.linux_gfortran makefile make 生成 'libdmy.a' 成功! cd .. cd vasp.5.4.1 cp ../.././makefile.include ./ make all bin目录下面生成vasp可执行文件,则安装成功 VASP编译所需要的makefile.include文件内容见附录。 该文件中删去了CPP_OPTIONS的-DscaLAPACK项,并注释掉了SCALAPACK vi ~/.bashrc 单击 i,添加如下内容 #vasp export PATH=/home/mu/soft/vasp54/vasp.5.4.1/bin:$PATH 附录: makefile.include文件的内容 # Precompiler options CPP_OPTIONS= -DMPI -DHOST=IFC91_ompi -DIFC -DCACHE_SIZE=4000 -Davoidalloc -DMPI_BLOCK=8000 -Duse_collective -Duse_bse_te -Duse_shmem -Dtbdyn CPP = gcc -E -P -C $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS) FC = mpif90 FCL = mpif90 FREE = -ffree-form -ffree-line-length-none FFLAGS = OFLAG = -O2 OFLAG_IN = $(OFLAG) DEBUG = -O0 LIBDIR = /usr/lib/x86_64-redhat-linux6E BLAS = /home/mu/soft/GotoBLAS2/libgoto2.so LAPACK = /home/mu/soft/vasp54/vasp.5.lib/lapack_double.o BLACS = #SCALAPACK = -L$(LIBDIR) -lscalapack $(BLACS) OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o /home/mu/soft/fftw334/lib/libfftw3.a INCS =-I/home/mu/soft/fftw334/include LLIBS = $(SCALAPACK) $(LAPACK) $(BLAS) OBJECTS_O1 += fft3dfurth.o fftw3d.o fftmpi.o fftmpiw.o chi.o OBJECTS_O2 += fft3dlib.o # For what used to be vasp.5.lib CPP_LIB = $(CPP) FC_LIB = $(FC) CC_LIB = gcc CFLAGS_LIB = -O FFLAGS_LIB = -O1 FREE_LIB = $(FREE) OBJECTS_LIB= linpack_double.o getshmem.o # Normally no need to change this SRCDIR = ../../src BINDIR = ../../bin
个人分类: 软件的安装|2871 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》ex0 ~ ex72
hongyesies 2018-10-17 14:49
此前就想整理这套VASP的教程,一直没有时间。最近看到大师兄的QQ群上有人上传了,感谢匿名网友的整理工作。该教程整理了“ex0: 学习前的准备工作” ~ “Ex72- 过渡态的计算(三)”的内容,值得初学者好好研究。 Learn VASP The Hard Way.part1.rar Learn VASP The Hard Way.part3.rar Learn VASP The Hard Way.part2.rar Learn VASP The Hard Way.part5.rar Learn VASP The Hard Way.part4.rar Learn VASP The Hard Way.part7.rar Learn VASP The Hard Way.part6.rar 由于附件只能上传不超过8M的文件,因此原始PDF文件被压缩为了7个文件单独上传。 把上述7个文件全部下载放在一个文件夹里,再解压其中的一个文件即可得到PDF文件。 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网,版权属于李强博士。 另说明:本文件下载自大师兄科研QQ群(217821116),感谢网友的整理和上传。
个人分类: VASP|1467 次阅读|0 个评论
Ubuntu18.04编译VASP.5.4.1两种方法的详细过程
热度 2 jasonmumu 2018-9-28 21:37
笔者根据自己的经验总结了VASP在Ubuntu系统的安装方法,分享给大家并方便自己查看。 下面两种编译方法( gfortran 及 MKL 分别编译 VASP )均需要 VASP 源码包及其补丁,这些可以在官网或通过其他途径下载。 vasp.5.4.1.05Feb16.tar.gz patch.5.4.1.14032016.gz patch.5.4.1.03082016.gz 下面路径设置中的 /path/ 需要根据读者自己的安装路径做修改。此外,工作站联网除了用网线,还可以用USB无线网卡的。 一. gfortran 编译 VASP 1. 准备工作 首先设备需要连接互联网,然后安装 VASP 编译过程所需要的环境包。参考 - 及自己的安装经验,环境包的的安装过程如下: sudo apt-get install make sudo apt-get install g++ build-essential sudo apt-get install gfortran sudo apt-get install libopenmpi-dev sudo apt-get install libblas-dev sudo apt-get install liblapack-dev sudo apt-get install libscalapack-mpi-dev sudo apt-get install libscalapack-openmpi1 sudo apt-get install libfftw3-dev sudo apt-get install libfftw3-3 sudo apt-get install build-essential libopenmpi-dev libfftw3-dev libblas-dev liblapack-dev libscalapack-mpi-dev libblacs-mpi-dev (这一行看似重复了上面很多内容,但没有这一行安装的几百 k 的文件,编译过程会报错——找不到 openmpi 的环境包) 2. 解压并打补丁 cd 到源码包所在路径,然后进行如下操作: tar -zxvf vasp.5.4.1.05Feb16.tar.gz gunzip patch.5.4.1.14032016.gz gunzip patch.5.4.1.03082016.gz cd vasp.5.4.1 patch -p0 ../patch.5.4.1.14032016 patch -p0 ../patch.5.4.1.03082016 3. 设置编译文件 cp -v arch/makefile.include.linux_gfortran makefile.include 根据如下内容修改 makefile.include 文件: # Precompiler options CPP_OPTIONS= -DMPI -DHOST=\\IFC91_ompi\\ -DIFC \\ -DCACHE_SIZE=4000 -Davoidalloc \\ -DMPI_BLOCK=8000 -DscaLAPACK -Duse_collective \\ -Duse_bse_te -Duse_shmem -Dtbdyn CPP = gcc -E -P -C $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS) FC = mpif90.openmpi FCL = mpif90.openmpi FREE = -ffree-form -ffree-line-length-none FFLAGS = OFLAG = -O2 -mtune=native -m64 OFLAG_IN = $(OFLAG) DEBUG = -O0 LIBDIR = /usr/lib/x86_64-linux-gnu BLAS = -L$(LIBDIR) -lblas LAPACK = -L$(LIBDIR) -llapack BLACS = -L$(LIBDIR) -lblacs-openmpi -lblacsCinit-openmpi -lblacsF77init-openmpi SCALAPACK = -L$(LIBDIR) -lscalapack-openmpi $(BLACS) OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o \\ /usr/lib/x86_64-linux-gnu/libfftw3.a INCS =-I/usr/include LLIBS = $(SCALAPACK) $(LAPACK) $(BLAS) OBJECTS_O1 += fft3dfurth.o fftw3d.o fftmpi.o fftmpiw.o chi.o OBJECTS_O2 += fft3dlib.o # For what used to be vasp.5.lib CPP_LIB = $(CPP) FC_LIB = $(FC) CC_LIB = gcc CFLAGS_LIB = -O FFLAGS_LIB = -O1 FREE_LIB = $(FREE) OBJECTS_LIB= linpack_double.o getshmem.o # Normally no need to change this SRCDIR = ../../src BINDIR = ../../bin 4. 开始编译 make all 或者 make std 编译标准版本的 VASP 。如果编译过程出错,键入 make veryclean 清理上次编译失败的文件之后再进行新的尝试。 如果编译成功,则会在 ./bin 文件夹下面生成 vasp_std 可执行文件。 可以添加环境变量: export PATH=/path/vasp.5.4.1/bin:$PATH 使用方法类似: /usr/bin/mpirun.openmpi -np 8 /vasp/vasp.5.4.1/bin/vasp_std 二. MKL 编译 VASP 1. 准备工作 首先设备同样需要连接互联网,然后安装 VASP 编译过程所需要的环境包。参考 及自己的安装经验,环境包的的安装过程如下: sudo apt-get install make sudo apt-get install build-essential sudo apt-get install gfortran 2. 安装 Intel-parallel_studio XE 2019 Intel-parallel_studio XE 2019 可以在官网免费注册账户并下载。 官网: https://software.intel.com/en-us/parallel-studio-xe cd parallel_studio_xe_2019_cluster_edition sh install.sh 然后根据提示一步步执行安装。 安装完毕之后设置 Intel 的环境变量。 vi ~/.bashrc 单击 i 在 .bashrc 文件中添加如下内容: #Intel source /path/intel/bin/ifortvars.sh intel64 source /path /intel/mkl/bin/mklvars.sh intel64 export PATH=/path /intel/compilers_and_libraries_2019.0.117/linux/bin:$PATH export LD_LIBRARY_PATH=/path/intel/compilers_and_libraries_2019.0.117:$LD_LIBRARY_PATH 然后 source ~/.bashrc 使环境变量生效。使用命令 which ifort 检查是否设置成功。 3. 安装 openmpi-2.0.2 在官网下载 openmpi-2.0.2 ,键入下面命令或者使用浏览器进入下面的链接 : wget https://www.open-mpi.org/software/ompi/v2.0/downloads/openmpi-2.0.2.tar.gz tar zxvf openmpi-2.0.2.tar.gz cd openmpi-2.0.2 ./configure --prefix=/path/openmpi CC=icc CXX=icpc F77=ifort FC=ifort sudo make sudo make install 安装完成之后类似上面设置环境变量,添加如下内容: #openmpi if then source /path/intel/bin/ifortvars.sh intel64 2 /dev/null export MPI=/path/openmpi export PATH=$MPI/bin:$PATH export LD_LIBRARY_PATH=$MPI/lib:$LD_LIBRARY_PATH export MANPATH=$MANPATH:$MPI/share/man export INFOPATH=$INFOPATH:$MPI/share/man fi 然后 source ~/.bashrc 使环境变量生效。使用命令 which mpirun 检查是否设置成功。 4. 安装 fftw-3.3.4 在官网下载 fftw-3.3.4 ,键入下面命令或者使用浏览器进入下面的链接 : wget http://www.fftw.org/fftw-3.3.4.tar.gz tar zxvf fftw-3.3.4.tar.gz cd fftw-3.3.4 ./configure--prefix=/path/fftw --enable-mpi F77=ifort F90=ifort make -j4 make install fftw 可以不设置环境变量,如果想设置,可以添加如下内容: export PATH=/path/fftw/bin:$PATH export LD_LIBRARY_PATH=/path/fftw/lib:$LD_LIBRARY_PATH 检查 “ /path/fftw-3.3.4/lib/libfftw3_mpi.a ”文件是否存在,若存在,则安装成功。 5. 解压并打补丁 cd 到源码包所在路径,然后进行如下操作: tar -zxvf vasp.5.4.1.05Feb16.tar.gz gunzip patch.5.4.1.14032016.gz gunzip patch.5.4.1.03082016.gz cd vasp.5.4.1 patch -p0 ../patch.5.4.1.14032016 patch -p0 ../patch.5.4.1.03082016 6. 设置编译文件 cp arch/makefile.include.linux_intel makefile.include 根据如下内容修改 makefile.include 文件: # Precompiler options CPP_OPTIONS= -DMPI -DHOST=\\IFC91_ompi\\ -DIFC \\ -DCACHE_SIZE=4000 -DPGF90 -Davoidalloc \\ -DMPI_BLOCK=8000 -DscaLAPACK -Duse_collective \\ -Duse_bse_te -Duse_shmem -Dtbdyn CPP = fpp -f_com=no -free -w0 $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS) FC = mpif90 FCL = mpif90 -mkl=sequential FREE = -free -names lowercase FFLAGS = -assume byterecl OFLAG = -O2 -axAVX2, AVX, SSE4.2 OFLAG_IN = $(OFLAG) DEBUG = -O0 MKL_PATH = $(MKLROOT)/lib/intel64 BLAS = LAPACK = BLACS = -lmkl_blacs_intelmpi_lp64 SCALAPACK = $(MKL_PATH)/libmkl_scalapack_lp64.a $(BLACS) OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o \\ /path/fftw/lib/libfftw3_mpi.a INCS =-I/path/fftw/include LLIBS = $(SCALAPACK) $(LAPACK) $(BLAS) OBJECTS_O1 += fft3dfurth.o fftw3d.o fftmpi.o fftmpiw.o OBJECTS_O2 += fft3dlib.o # For what used to be vasp.5.lib CPP_LIB = $(CPP) FC_LIB = $(FC) CC_LIB = icc CFLAGS_LIB = -O FFLAGS_LIB = -O1 FREE_LIB = $(FREE) OBJECTS_LIB= linpack_double.o getshmem.o # Normally no need to change this SRCDIR = ../../src BINDIR = ../../bin 7. 开始编译 make all 或者 make std 编译标准版本的 VASP 。如果编译过程出错,键入 make veryclean 清理上次编译失败的文件之后再进行新的尝试。 如果编译成功,则会在 ./bin 文件夹下面生成 vasp_std 可执行文件。 可以添加环境变量: export PATH=/path/vasp.5.4.1/bin:$PATH 使用方法类似: /usr/bin/mpirun.openmpi -np 8 /vasp/vasp.5.4.1/bin/vasp_std 参考网址: http://ishxiao.com/blog/ubuntu/2017/10/15/how-to-compile-install-vasp-5.4.1.html http://www.ivofilot.nl/posts/view/31/How+to+compile+VASP+5.4.1+for+Linux+Debian+using+the+GNU+compiler https://www5.hp-ez.com/hp/calculations/page232 https://blog.csdn.net/qq_28849289/article/details/79188425
个人分类: 软件的安装|12720 次阅读|4 个评论
用phonopy计算声子谱
ysulff 2018-5-29 16:17
Phonopy计算声子谱教程.docx
个人分类: 软件教程|2200 次阅读|0 个评论
Materials Studio构建的模型如何导入lammps
daishoujun 2018-4-19 16:43
参考原文:1. http://www.52souji.net/how-to-import-the-model-built-using-ms-into-lammps.html 2. http://www.52souji.net/vasp-poscar2lammps-format-convert.html 3. https://sites.google.com/site/pmitev/academic/vasp-poscar2lammps-awk 需要注意的是: Dependencies. The script needs gawk in order to run. It expects that that awk is located under /bin. If this is different in your Linux distribution, just change the first line accordingly. 脚本需要gawk,需要安装此软件,指令如下: sudo apt-get install gawk 之后将VASP-poscar2lammps.awk和获得vasp格式文件放到同一文件夹下,因为awk文件在/usr/bin文件下,(我也不知道怎么到这里了),需要将VASP-poscar2lammps.awk,第一行进行修改: 修改如下: 在终端输入: VASP-poscar2lammps.awk Cu2.vaspdata.lammps2 root@daishoujun-Virtual-Machine:/usr/bin# VASP-poscar2lammps.awk Cu2.vaspdata.lammps2 下行是对上行的解释, VASP-poscar2lammps.awkf.POSCARf.lammps 其中,VASP-poscar2lammps.awk为转换脚本名称,f.POSCAR为具有VASP POSCAR结构的文件的文件名,f.lammps为转换的LAMMPS结构文件的文件名。 其它:把脚本VASP-poscar2lammps.awk下载下来,拷贝到你的当前目录(或者添加到系统路径中),修改权限为可执行(chmod +x),+前面有个空格。
个人分类: lammps|10006 次阅读|0 个评论
[转载]用VASP计算能量态密度(DOS)和能带的方法及心得体会
hongyesies 2018-2-24 17:14
转自: http://www.v-suan.com/archives/690.html DOS,就是态密度,也就是每个轨道的电子云分布比例,通过态密度可以了解电子结构。能带跟DOS是对应的,通过能带可以得到一些重要的电子结构信息。 一、 用 VASP 计算态密度 使用的软件:VASP 辅助分析计算的小程序:read_dos.f90 操作流程及主要步骤: 主要分两步:一、静态自洽计算;二、非自洽计算(以fcc结构的Al为例) 第 一 步 静态自洽计算 (得到自洽的电荷密度CHG、CHGCAR和E-fermi,提供给下一步非自洽计算用) 准备INCAR:即定义PREC,EDIFF,ENCUT,ISTART= 0(默认),IBRION = 2,ISMEAR(对于半导体和绝缘体:ISMEAR= 0,SIGMA = 0.05;ISMEAR= 0 表示采用Gaussian smearing 方法; 对于金属:ISMEAR= 1,SIGMA = 0.2;ISMEAR= 1 表示采用1阶smearing方法) SYSTEM=Al-fcc PREC=Accurate EDIFF= 1e-5 ENCUT= 250.0 ISTART= 0 ;IBRION = 2 #【默认NSW=0,此处定义IBRION=2无意义】 ISMEAR= 1 ; SIGMA = 0.2 准备好POSCAR文件,或以优化的晶格参数作为基础,把结构优化产生的CONTCAR拷贝成POSCAR Al 3.975 0.0 0.5 0.5 0.5 0.0 0.5 0.5 0.5 0.0 1 Direct 0.0 0.0 0.0 POTCAR直接从赝势库中得到 KPOINTS Automatic generation 0 MohkorstPack 9 9 9 0.0 0.0 0.0 提交运行 记下OUTCAR中E-fermi的数值,下一步处理结果时会用到。 grep “ E-fermi ” OUTCAR 第 二 步 非自洽计算 准备INCAR:即定义ENCUT,PREC,ISTART= 1(存在WAVECAR文件,所以取1),ICHARG = 11 ( 表示从CHGCAR中读入电荷分布,并且在计算中保持不变 ) ,ISMEAR= -5 ( -5表示带Bloch修正的四面体方法;采用 tetrahedron method with Bl¨ochl corrections计算DOS更准确一些,在PWscf中也是如此) ,RWIGS (或LORBIT = 10,这时可不设RWIGS) SYSTEM = Al-fcc PREC = Accurate ENCUT = 250 #【截断能不能大于上一步非自洽计算?最好与上一步计算保持一致】 ISTART = 1;ICHARG = 11 ISMEAR = -5 LORBIT = 10 # 【对于PAW势,可设置LORBIT = 10,此时可不用设置RWIGS参数;具体解释见附】 #【一般 上述参数用来做非自洽计算、产生DOS已经足够;如NSW表示离子运动步数,默认为0(此时,IBRION默认为-1,表示 原子位置不移动),即做静态计算。自洽还是非自洽,如何判断? 】 准备好KPOINTS文件, 增加 k点网格(增加k点可加大积分计算精度,因为是非自洽计算,k点数虽增大但仍可以很快) Automatic generation 0 MohkorstPack 19 19 19 0.0 0.0 0.0 POSCAR、POTCAR同上一步自洽计算。 将上一步自洽计算得到的CHG、CHGCAR拷贝至同一目录下,提交运行。【 ICHARG=11,ISMEAR=-5 】 计算完后,得到包含了态密度值的DOSCAR文件,采用read_dos.f90小程序对态密度文件DOSCAR进行处理,得到总态密度dos_total.dat, 及分波态密度 *_dos.dat 。 运行read_dos.f90时会提示:please input the Ef,此时需要把第二步自洽计算得到的E-fermi的值给出。接着会提示:please input the number of atoms in the POSCAR file,此时需要把POSCAR中的原子数给出。【操作./ read_dos.x DOSCAR】 输出文件的能量值是以费米能级作为能量参考零点。dos_total.dat的第一列数据是能量值,单位为eV;第二列数据是总态密度的值,单位State/eV.unit cell;第三列数据是总态密度的积分值,也就是电子数,单位为electrons (用origin等软件绘图时把dos_total.dat的最后一列删除即可) 。 *_dos.dat是相应原子【unit cell中含有的每个原子都有各自对应的s、p、d分波态密度值】的分波态密度值,其中的第一列数据是能量值,单位为eV;第二、三、四列 数据分别对应于 s 、 p 、 d 态的分波态密度值 ,单位为State/eV.atom。 #【如果将s、p、d态密度按每种元素求和,则态密度和的单位是State/eV.atom?如何将单位转换为State/eV.el.】 #【为什么自洽完了,要做非自洽计算的英文解释见后面附中的英文解释。提问:非自洽 产生的DOSCAR 文件与上一步自洽计算产生的DOSCAR之间有什么区别? 】 二、 用 VASP 计算 能带 使用的软件:VASP 辅助分析计算的小程序 : read_band.f 、 get_kpoints.sh 操作流程及主要步骤: 计算材料的能带结构即色散曲线E(k),主要分两步:一 、静态自洽计算(fcc);二、非自洽计算(以fcc结构的Al为例) 第 一 步 静态自洽计算 (同上) 【因此,可单独建一个scf的文件夹,用以产生并存储电荷密度CHG、CHGCAR和E-fermi】 第 二 步 非自洽计算 ( 在固定电子密度的情况下,得到选取 K 点的能量本征值。 ) 准备INCAR:即定义ENCUT,PREC,ISTART= 1,ICHARG = 11 ( 表示从CHGCAR中读入电荷分布,并且在计算中保持不变 ) , 并增加NBANDS (默认值为NELECT/2+NIONS/2,NELECT和NIONS分别为电子数和离子数,可以上一步自洽计算产生的OUTCAR文件中找到这两个参数,如grep “NIONS” scf/OUTCAR,和 grep “NELECT” scf/OUTCAR。)【NBANDS的设置,详见后面的英文注释】 SYSTEM = Al-fcc PREC = Accurate EDIFF = 1e-5 ENCUT = 250 IBRION= 2 ISTART = 1;ICHARG = 11 ISMEAR= 1;SIGMA =0.2 NBANDS = 12 准备KPOINTS文件, 使用 Line-mode ,给出高对称性 k 点之间 的分割点数。【分割越密,则路径积分越准确,VASP 5.x格式有变吗?】 k-points along high symmetry lines !注释行,无特别的意义 20 ! intersections,沿G-X特殊点之间产生10个k点 Line-mode ! 程序自动产生特殊k点间的k点 Rec ! 各k点相对于倒格子基失来写的 Al的元胞的高对称性点 0.5 0.0 0.5 ! X 0.0 0.0 0.0 ! G 0.0 0.0 0.0 ! G 0.5 0.5 0.5 ! L 0.5 0.5 0.5 ! L 0.5 0.25 0.75 ! W 0.5 0.25 0.75 ! W 0.375 0.375 0.75 ! K 0.375 0.375 0.75 ! K 0.0 0.0 0.0 ! G #【对高对称性点的理解及注释见后附注部分。 】 说明:通过指定Line-mode,VASP会自动在起点和终点之间插入指定的K点数,比如上面的文件就是指定VASP计算沿着X到Gamma点再到L、W、K回到Gamma点,每个方向上各取20个K点。 POSCAR、POTCAR同上一步自洽计算。 将上一步自洽计算得到的CHG、CHGCAR拷贝至同一目录下,提交运行,计算完后可以从OUTCAR文件或者EIGENVAL文件里得到需要的每个K点的能级信息 【与运用 WAVECAR 得到的能带结构一样, CHGCAR 是 WAVECAR 的积分。是的,波函数代表一切】 运行小程序get_kpoints.sh,得到kpoints.dat(即高对称点的位置;)。 编译程 序read_band.f,运行,系统提示: please input thefermi energy:E-fermi from scf OUTCAR 将上一步得到的E-fermi值输入到屏幕,则输出bands.dat,并产生spoint.dat文件 (该文件给出了作图时高对称性点的横坐标位置),因此,可用origin等绘图软件作图了。【read_band.f程序的解释见附】 lpf的经验和心得: 对于第一步自洽计算: 由于在能带计算时 k 点是一些在倒空间高对称线上的点 ,不能进行自洽计算【解释得好啊】,因此在进行能带计算前必须加一次自洽计算以得到精确的电荷密度值。 自洽计算得到的电荷密度文件CHGCAR是能带和DOS计算需要的输入文件。 对于非自洽计算:计算能带时ICHARG= 11,金属用ISMEAR=1;半导体或绝缘体,用ISMEAR=0 。 计算态密度:ICHARG = 11,ISMEAR=-5 【WAVECAR 文件在计算 DOS 和 BAND 过程中有用么?是万能的,但要开计算band和dos的源程序调用谁了】 用origin绘图技巧,用Vi打开spoint.dat文件,得到作图时高对称点的横坐标位置,将横坐标端点分别设为第一个、最后一个高对称点对应的坐标;画竖线,双击,修改Objectproperties—Cordinates:Units选为Scale,设置开始x和终点x均为spoint.dat文件中的高对称点数值;y值即设为纵坐标范围。【实际上图形中的横坐标范围已经定死了,无法修改;其实也恰好与spoint.dat中点的范围一致。如何断定spoint.dat文件中数值具体对应哪个高对称点符号?】 1:赝势 赝势文件夹各个目录对应起来分别是pot == PP, LDA ; pot_GGA == PP, GGA ; potpaw == PAW, LDA ; potpaw_GGA == PAW, GGA, PW91 ; potpaw_PBE ==PAW , GGA, PBE。 选择某个目录进去,我们还会发现对应每种元素往往还会有多种赝势存在。这是因为根据对截断能量的选取不同还可以分为Ga,Ga_s,Ga_h,或者根据半芯态的不同还可以分为Ga,Ga_sv,Ga_pv的不同。 2:non-scf ISTART=1;ICHARG=11时,PREC必须与做静态计算的设置一致(尤其是截断能),否则会报错 WARNING:dimensions on CHGCAR file are different ERROR: chargedensity could not be read from file CHGCAR for ICHARG10 3:POSCAR POSCAR中的那个缩放系数对于正格矢起作用如果原子坐标是用Car格式,它也起作用。如果原子坐标是Direct格式,则它不起做作用。【yexq评:缩放系数即对应PWscf中的alat,只影响晶格基矢量的大小,个人感觉不会影响原子的crystal位置】。 4:INCAR NSW是优化原子位置和晶胞个开启项,默认=0。如果没有设置NSW,即使ISIF=3,依然只做静态计算。 5:KPOINTS 采用Line-mode时,”0 0 0 !gama“ 的最后一个0和!之间需要有空格 。【yexq评:真是经验总结,很仔细】 附录-yexq总结: 1. 为什么自洽计算完了,还要做非自洽计算,请见下面的英文解释 Calculating a DOS can be done in two ways: The simple one is to perform a static (NSW=0, IBRION=-1) selfconsistent calculation and to take the DOSCAR file from this calculation. However, the simple approach discussed above is not applicable in all cases: A high quality DOS requires usually very fine kmeshes. You should think at least in orders of 16x16x16 meshes for small cells and even for large cells you might need something like 6x6x6- or 8x8x8-meshes. The usual way, to do DOS or band-structure calculations in this case is the following: the charge density and the effective potential converge rapidly with increasing number of k-points. So, as a first step one generates a high quality charge density using a few k-points in a static selfconsistent run. The next step is to perform a non-selfconsistent calculation using the CHGCAR file from this selfconsistent run (i.e. ICHARG is set to 11, see section 6.14) . Mind, this is the only way to calculate the band structure, because for band-structure calculations the supplied k-points form usually no regular three-dimensional grid and therefore a selfconsistent calculation gives pure nonsense ! 【但是还是需要前面的自洽计算】 For ICHARG=11, all k-points can be treated independently, there is no coupling between them, because the charge density and the potential are kept fixed. Therefore there is also no need to treat the k-points within one single run simultaneously. 【可新建1个pdos文件夹,非自洽计算可安排在该文件夹中进行 】 2. NBANDS的设置问题 可见NELECT是所采用赝势中的价电子数吗?例如 对 TiH2 :取 14/2 + 3/2 = 8.5,PdH: 取17/2+2/2=9.5 3. 对高对称性点选取的理解 采用与自洽计算所用的相同大小的胞(元胞或单胞),来选取高对称性点; 高对称性点并不一定形成闭合的曲线; 应对结构施加正确的symmetry后,选高对称性点。这也说明,能带计算不是在uniform的格子上进行,而是沿高对称性点划定的路径积分。所以,如果结构没施加对称性,则选取的高对称性点将与施加了对称性操作的“相同”结构不一样;同理按元胞找的对称性点与按单胞找的对称性点将不一样。 对于具有相同对称性的结构,其高对称性点都有一致的约定的取法,即与具体物质无关。例如同为fcc结构的不同物质,其高对称性点将是一样的。因此可以通过下述网站输入结构的空间群号寻找高对称性点: http://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-kv-list,或采用Material studio 得到高对称性点。 4.能带计算完成后,绘制能带图时,如何确定图中高对称性点的位置。 spoint.dat文件中数值按大小排列,其对应的高对称性点的顺序可能与计算前KPOINTS中输入的高对称点的顺序一致, 实际上高对称性点的crystal坐标(即KPOINTS中的三个数值)可在EIGENVAL文件中找到 (或OUTCAR中找到)。 其实,read_band.f程序很简单,即将路径上的各k点crystal坐标求均方根,然后逐点累加,并记路每一k点对应的engenvalue;当遇到特殊k点(高对称性点)时,同时将该点坐标输出到spoint.dat文件中。 该程序跟据KPOINTS文件中特殊k点之间的取样间隔来判断某点是否是特殊k点,如是则同时输出其坐标到到spoint.dat文件中。因此,当特殊k点之间插入的一般k点数变化时,则应修改源文件中的if(mod((i-1),20).eq.0 .or.i.eq.nks语句,例如将20修改为所插入的一般k点数或实际分割的k点数。因此,该程序缺乏通用性,然而程序虽简单,但却高度体现了作者对能带结构的理解。 实际高对称性点的位置可以直接求均方根确定吗?(不能,没有加和,还应该加上路径上其他点坐标产生的加和) 2.部分参数的英文注释 (1)ISMEAR = -5 | -4 | -3 | -2 | 0 | N SIGMA = width of the smearing in eV Default ISMEAR = 1 SIGMA = 0.2 ISMEAR determines how the partial occupancies fnk are set for each wavefunction. For the finite temperature LDA SIGMA determines the width of the smearing in eV. ISMEAR: -5 tetrahedron method with Bl¨ochl corrections For the calculation of the total energy in bulk materials we recommend the tetrahedron method with Bl¨ochl corrections (ISMEAR=-5). This method also gives a good account for the electronic density of states (DOS). The only drawback is that the methods is not variational with respect to the partial occupancies. Therefore the calculated forces and the stress tensor can be wrong by up to 5 to 10 % for metals. For the calculation of phonon frequencies based on forces we recommend the method of Methfessel-Paxton (ISMEAR0). For semiconductors and insulators the forces are correct, because partial occupancies do not vary and are zero or one. For the calculations of the DOS and very accurate total energy calculations (no relaxation in metals) use the tetrahedron method (ISMEAR=-5). For semiconductors or insulators use the tetrahedron method (ISMEAR=-5), if the cell is too large (or if you use only a single or two k-points) use ISMEAR=0 in combination with a small SIGMA=0.05. For relaxations in metals always use ISMEAR=1 or ISMEAR=2 and an appropriated SIGMA value (the entropy term should be less than 1 meV per atom). Mind: Avoid to use ISMEAR0 for semiconductors and insulators, since it might cause problems. For metals a sensible value is usually SIGMA= 0.2 (which is the default). (2)RWIGS or LORBIT If RWIGS or LORBIT (Wigner Seitz radii, see section 6.326.33) is set in the INCAR file, a lm- and site-projected DOS is calculated and also written to the file DOSCAR . One set of data is written for each ion, each set of data holds NDOS lines with the following data energy s-DOS p-DOS d-DOS or energy s-DOS(up) s-DOS(down) p-DOS(up) p-DOS(dwn) d-DOS(up) d-DOS(dwn) for the non spin-polarized and spin polarized case respectively. As before the written densities are understood as the difference of the integrated DOS between two pins. (3) DOSCAR file Mind: For relaxations, the DOSCAR is usually useless. If you want to get an accurate DOS for the final configuration, first copy CONTCAR to POSCAR and continue with one static (ISTART=1; NSW=0) calculation.【静态自洽计算?】 (4)LORBIT The default for LORBIT is .FALSE. (respectively 0). This flag determines, together with an appropriate RWIGS (see section 6.32), whether the PROCAR or PROOUT files (see section 5.21) are written. The file PROCAR contains the spd- and site projected wave function character of each band. The wave function character is calculated, either by projecting the wavefunctions onto spherical harmonics that are non zero within spheres of a radius RWIGS around each ion (LORIT=1, 2), or using a quick projection scheme relying that works only for the PAW method (LORBIT=10,11,12, see below). If the LORBIT flag is not equal zero, the site and l-projected density of states is also calculated. If the projector augmented wave method is used, LORBIT can also be set to 10, 11 or 12. This alternative setting selects a quick method for the determination of the spd- and site projected wave function character and does not require the specification of a Wigner-Seitz radius in the INCAR file (the RWIGS line is neglected in this case). The method works only for PAW POTCAR files and not for ultrasoft or norm conserving pseudopotentials. 即对每个能带的波函数进行s pd和site分解或投影;LORBIT = 10,不设RWIGS,针对PAW势的计算。 LORBIT = 10表示对波函数按原子site进行s 、p、d轨道分解或投影;并输出投影波函数到PROCAR or PROOUT 文件中,详见上面英文注释部分:This alternative setting selects a quick method for the determination of the spd- and site projected wave function character。什么样的quick method?
个人分类: VASP|16904 次阅读|0 个评论
不用wannier90接口直接绘费米面的VASP后处理脚本程序
热度 1 XRC0808087 2018-1-5 23:50
如果想用 VASP 绘费米面( Fermisurface ),一般都需要用 wannier90 软件 wannier 化后再计算费米面。因此需要重新编译 wannier90 版的 VASP ,而且有时 wannier90 插值的能带并不正确,这将带来很大的不便。如果我们能将布里渊区所有的 k 点都计算出来,并将本征值按照一定顺序和格式生成 bxsf 文件( http://www.xcrysden.org/doc/XSF.html ),也可以绘制出费米面。这里编写了直接生成倒空间 k 点并提取 VASP EIGENVAL 文件计算费米面的脚本。 脚本和例子: Fermi_Surface.rar (点击下载) 所需程序: VASP 、 python3 、 XCrySDen 使用方法: 1. 进行常规的 VASP 自洽计算。 2. 在 inpu.dat 中输入下面的参数: 32 32 16 5.2288 0.0 0.0 0.298862722 0.172548473 0.000000000 0.000000000 0.345096946 0.000000000 0.000000000 0.000000000 0.164380078 其中,第一行的三个数值分别为 a 、 b 、 c 方向 k 点网格数目 nx 、 ny 、 nz ;第二行第一个数值为费米能级,后面两了 0.0 无意义;第三至第五行为倒空间矢量(在 OUTCAR 中查找,关键字 “reciprocal lattice vectors” )。 3. 运行 python Genkpoints.py (Genkpoints.py和input.dat需要在同一个文件夹) 生成 KPOINTS 文件,生成的 KPOINTS 格式如下: Explicit k-points list 9261 Reciprocal lattice 0.000000 0.000000 0.000000 1 0.000000 0.000000 0.050000 1 0.000000 0.000000 0.100000 1 0.000000 0.000000 0.150000 1 …… 4. 将生成的 KPOINTS 文件放在能带计算的 文件夹中进行常规能带计算。 5. 计算结束后,将 EIGENVAL 文件拷贝到当前文件夹,然后运行 python EIG2bxsf.py (EIG2bxsf.py、input.dat和 EIGENVAL 需要在同一个文件夹) ,得到 Python.bxsf 文件。 6. 将生成的 Python.bxsf 文件用 XCrySDen 打开,即可看到该材料的费米面,如下图所示。 图 MgB 2 ( 左 ) 和 1T-TaS 2 ( 右 ) 的费米面 说 明: 1. VASP 最多允许输入 20000 个 k 点,如果超过这个数值,则会出现如下报错: ERROR in RD_KPOINTS (mkpoints.F): increase NKDIMD to 29791 此时需要降低 k 点网格使 (nx+1)*(ny+1)*(nz+1)20000 。或者修改 mkpoints.F 文件夹下的 NKDIMD 后重新编译 VASP 。 2. 如果 k 点太少,绘制的费米面比较粗糙,可以在 XCrySDen 设置费米面插值,如下图所示: 3. 此程序没有考虑晶体的对称性,所以生成的 k 点较多,如果考虑对称性计算量将大大降低。如果您有编程实现思路欢迎和我联系。
13652 次阅读|1 个评论
[转载]vasp自洽不收敛怎么办?
plgongcat 2017-12-20 19:57
1, Restart the calculation with a pre-converged PBE WAVECAR (ISTART = 1, the default value when WAVECAR exists) 2, Decrease the mixing parameter AMIX from the default 0.4 to 0.2 and to 0.1, increase NELM to 12 0 or more. 3, Try the Anderson mixing by setting IMIX = 1, AMIX = 0.1, BMIX = 0.0001, AMIX_MAG = 2*AMIX, BMIX_MAG = 0.0001 4, The above methods are usually enough, and I would pray for a while if they are not ... 来自: https://sites.google.com/site/haoweipeng/softwares https://sites.google.com/site/haoweipeng/softwares
个人分类: 软件学习|2999 次阅读|0 个评论
vasp+wannier90计算费米面
热度 1 plgongcat 2017-12-11 10:48
Vasp计算费米面需要与wannier90结合: 1. 编译与wannier90接口的vasp版本【自己度娘】; 2. INCAR添加参数 LWANNIER90 = .TRUE. ,运行vasp产生*win文件; INCAR 例子: SYSTEM = BP ENCUT = 500 ISTART = 0 ICHARG = 2 ISMEAR = 1 SIGMA = 0.05 ISIF=3 NSW=0 IBRION=2 PREC=Accurate PSTRESS=20.00 NBANDS = 48 LWANNIER90 = .TRUE. 3. 编辑*win文件 【多看wannier90说明书】 win文件例子: num_wann = 16 ! num_bands = 16 ! 【一般大于等于瓦尼尔轨道】 exclude_bands:17-48 ! 【排除不用的】 Begin Projections P:s,px,py,pz End Projections dis_num_iter = 500 num_iter = 500 fermi_energy = 6.53483759 fermi_surface_plot = true ! 费米面计算 fermi_surface_num_points = 50 bands_plot = true bands_num_points = 100 begin kpoint_path Z 0.50000 0.50000 0.00000 M 0.00000 0.50000 0.00000 M 0.00000 0.50000 0.00000 G 0.00000 0.00000 0.00000 G 0.00000 0.00000 0.00000 X 0.00000 0.00000 0.50000 X 0.00000 0.00000 0.50000 L 0.50000 0.50000 0.50000 L 0.50000 0.50000 0.50000 Z 0.50000 0.50000 0.00000 Z 0.50000 0.50000 0.00000 G 0.00000 0.00000 0.00000 end kpoint_path begin unit_cell_cart 5.5262416 -0.0246604 0.0000000 4.5335619 3.1601853 0.0000000 0.0000000 0.0000000 4.3795770 end unit_cell_cart mp_grid = 16 16 16 begin kpoints 0.000000000000 0.000000000000 0.000000000000 0.062500000000 0.000000000000 0.000000000000 0.125000000000 0.000000000000 0.000000000000 0.187500000000 0.000000000000 0.000000000000 0.250000000000 0.000000000000 0.000000000000 0.312500000000 0.000000000000 0.000000000000 0.375000000000 0.000000000000 0.000000000000 0.437500000000 0.000000000000 0.000000000000 0.500000000000 0.000000000000 0.000000000000 0.062500000000 0.062500000000 0.000000000000 0.125000000000 0.062500000000 0.000000000000 0.187500000000 0.062500000000 0.000000000000 0.250000000000 0.062500000000 0.000000000000 0.312500000000 0.062500000000 0.000000000000 0.375000000000 0.062500000000 0.000000000000 ............................... ................................ ............................... (省略一万数字) 4. 修改好*win文件后,然后再次运行vasp进行轨道投影;而后运行wannier90.x命令计算性质;最后得到*bxsf文件就是费米面数据,可以用Xcrysden软件打开处理。 mpirun -n 24 /share/soft/vasp_intelmpi/bin/vasp5.4.1_Wannier90/vasp_std mpirun -n 24 /share/soft/wannier90-1.2/wannier90.x wannier90 INCAR KPOINTS wannier90.win vasp54.sub
个人分类: 软件学习|19653 次阅读|1 个评论
[转载]vasp-neb
plgongcat 2017-11-21 16:06
1. 首先需要有编译好的vasp-neb版本; 2. vtst脚本包 一些用perl语言写的脚本,不错的处理neb计算的工具箱。详情请进: http://theory.cm.utexas.edu/vtsttools/scripts.html 后面所有 后缀名为pl 的脚本都来自这里。 3. NEB步骤: 步骤一:初末态结构优化 建立两个文件夹ini(初态的意思),fin(末态),每个文件夹放入vasp计算必备的四个文件(INCAR,POSCAR,KPOINTS,POTCAR),其中的两个POSCAR对应未优化的初末态。确保两个文件夹里面除POSCAR外,其他文件完全一样。 对于两个POSCAR,注意每一行的原子一一对应。 若有固定位置的原子(比方做表面计算,要固定底部1-2层原子),最好让两个POSCAR里面的固定原子位置完全相同。 下图是我的两个优化结构 ini fin 用dist.pl检查两个优化后结构(两个CONTCAR)的相似程度(每个对应原子的初末态距离的平方和,再开根号)。 具体命令为: dist.pl ini/CONTCAR fin/CONTCAR 若返回值小于5A,一般可以进行下一步。 步骤二:插点 插点的数目取决于前面dist.pl的返回值,一般插点数目可取(dist.pl返回值/0.8)。 具体插点的命令: nebmake.pl ini/CONTCAR fin/CONTCAR N 最后的N表示插点数目【 N一般大于3 】。插入点的算法为线性插值,详情请进前面给的vtst脚本链接。我这里为简单插一个点,执行完命令后出现文件夹00,01,02. 00表示初态,里面放的是ini/CONTCAR,02表示末态,放的是fin/CONTCAR, 01是插入的点。三个文件夹里面的文件名称都是POSCAR。 输出中提示讲初末态对应的OUTCAR复制到对应的文件夹中,以便后续数据分析。 检查插入点的合理性: 输入命令 nebmovie.pl 0 参数0表示用POSCAR生成xyz文件;还可取1,用CONTCAR生成xyz文件。 可以看到每个文件夹内多了一个后缀名为xyz的文件。将这几个xyz文件合成一个文件即可在VMD中动画演示。 也可以直接用VESTA查看01的POSCAR。 进一步可用命令nebavoid.pl 1,确保中间插入的点每一个原子间距都大于1A。该命令的参数1表示最小允许间距,可取小数。 上面输出表示没有原子间距小于1A。 原子间距太小说明结构有问题。要么是因为初末态POSCAR里的原子没有对应好,要么是因为nebmake.pl线性插值的方法不适用于估计反应路径路径。如果是前者,调整好对应原子,也就是CONTCAR里面相应行进行调换;如果是后者,用Materials studio之类的软件调整好结构,再放入对应文件夹。 步骤三:其它文件的准备 在当前目录下面放入KPOINTS,POTCAR及INCAR文件。要求KPOINTS和POTCAR与ini、fin文件夹中的一样; INCAR中的基本参数也与初末态计算的INCAR一样,另外再加入NEB计算的相关参数。 我的结构优化的INCAR: 我的NEB计算的INCAR: INCAR再多说两句。 优化算法若想使用vtst的,需要如上设置IBRION=3,POTIM=0 ,IOPT设置见本文第四个图。若使用vasp自带的优化器,可以使用IBRION=1或者3,不要取2;POTIM取合适的值(0.01-0.5范围内去尝试)。 这样就可以提交NEB任务了。 步骤四:后续处理 计算过程中,可以用 nebef.pl 命令(不带参数)查看计算收敛情况。 输出中,第二列即为最大受力(force of images in the neb ) ,第三列为相应结构的能量。 前面INCAR中EDIFFG设置为-0.02(一般结构优化可取-0.02,NEB计算取-0.03),表示当所有结构最大力小于0.02eV/A时,结束计算。上图中的力都小于0.02,此时已经完全收敛,计算结束。 另一个可以用来观察收敛情况的命令是 nebbarrier.pl (同样不带参数)。该命令没有输出到屏幕的内容,而是生成neb.dat文件。 neb.dat文件第二列表示距离(即临近两结构的dist.pl的计算结果),第三列表示能量(以初态能量为参考值),第四列为力(forces along the neb )。 EDIFFG参数对应的力是 nebef.pl 输出中的force of images in the neb. 计算完成后,使用命令nebresult.pl. nebresult.pl 做的事情如其所输出表明的,完成了nebbarrier.pl, nebspline.pl, nebef.pl, nebmovie.pl, nebjmovie.pl, nebconverge.pl还有对各文件夹中的OUTCAR打包压缩。生成了很多文件。其中mep.eps是以dist.pl距离为横坐标,能量为纵坐标画出的能势垒图,如下: 该文件一般查看图片的软件打不开,推荐使用EPS/PS viewer. 生成的 spline.dat 文件是对上面几个点的拟合曲线数据,已经有了上图,这些数据就意义不大了。 步骤五:绘图 plot neb.dat u 2:3 w p ps 5 pt 2, spline.dat u 2:3 w l 生成的vaspgr文件夹内是各个插点结构的收敛图(同样可用EPS/PS viewer打开),如下(我的只插入一个结构,所以只有一个图): 结束语: NEB计算,收敛是个核心问题,可以参见我的涉及NEB计算的其他博文。 转自: http://blog.sina.com.cn/s/blog_65c112ca0102vowf.html
个人分类: 软件学习|6328 次阅读|0 个评论
神威太湖之光第一原理计算软件VASP移植与优化
lileisheng 2017-10-25 10:53
神威太湖之光第一原理计算软件VASP移植与优化.pdf VASP是应用较多的第一原理软件,神威太湖之光的移植和优化可使用其强大的计算能力更好执行一些模型的计算。相关工作的论文先放在这里,初步的版本,随时修改。文章内容不好编辑,把摘要写这里,内容在附件。 摘要: 第一原理计算量子力学软件 VASP 是应用广泛的科学与工程计算软件,在国产神威超级计算上对其进行移植和优化具有重要的意义。首先面向 SW26010 主核移植 VASP ,评测其性能,找出计算热点。然后分别针对矩阵运算、 FFT 和热点函数等三类计算密集的运行进行从核并行和优化。通过对 RELAX 算例两种自洽迭代算法 RMM 和 DAV 的评测,三类运算从核并行和优化实现数倍和数十倍加速,相对主核版整体加速比分别达到。
3828 次阅读|0 个评论
vasp+wannier2.0
dxcharlary 2017-10-16 13:29
现有版本vasp只支持wannier1.2,但实际上vasp是可以和wannier2.0兼容的 具体操作如下: The problem seems to be due to the new version of wannier90-2.0.0 (compiled with the current Intel compiler) The variables list of wannier_setup (src/wannier_lib.F90) has two additions compared to wannier90-1.2: proj_s_loc proj_s_qaxis_loc which are optional, intent(out). VASP does not (yet) use these quantities, and as such, calls wannier_setup without them. This should not be a problem, since these variables are declared as optionals, but apparently the ifort compiler messes up (we have not tried other compilers). Solution: 1) delete these 2 parameters from the call list of wannier_setup in wannier_lib.F90 2) comment out all lines in wannier_setup referring to these variables,
5669 次阅读|0 个评论
晶体弹性常数和机械稳定性判断标准
pfliu89 2017-8-2 12:57
可以参考文献: PRB, 2007, 76, 054115 ; PRB, 2014, 90, 224104
个人分类: VASP|8221 次阅读|0 个评论
vasp中DFT+U设置
pfliu89 2017-8-2 10:07
1.VASP 计算中,采用 LDA+U 模型 U 值由以下三个参数控制, LDAUL , LDAUU , LDAUJ LDAUL—— 对具体的 p-/d-/f- 轨道加 U LDAUU—— 电子库伦相互作用项 ( on-site Coulomb interaction) LDAUJ—— 电子交换相互作用项 ( on-site exchange interaction) (U-J—— 有效 U 值 ) 2. 具体参数的定义如下(假如体系中有两类原子 La 和 S , S 不加 U , La 的 f 轨道修正( U-J )): LDAU=T ( 控制计算中是否考虑在位库伦校正相 ) LDAUTYPE= 2 (+U 的类型 , 1|2|4; 2- 默认值 ; U-J 具有实际物理意义 ) LDAUL= -1 3 ( 控制具体的原子轨道上加 U; -1, 不加 U; 1-p 轨道 ; 2-d 轨道 ; 3-f 轨道 ) LDAUU= 0 5.5 (U 值由 LDAUU-LDAUJ 确定) LDAUJ= 0 0.5 LMAXMIX= 6 ( 对 +U 体系 , 设置线性混合参数 , f 轨道设为 6)
个人分类: VASP|30219 次阅读|0 个评论
VASP电荷密度差的计算
pfliu89 2017-8-2 09:59
电荷密度差定义为: delta_RHO = RHO_sc - RHO_atom 1. 自洽得到总的电荷密度 (RHO_sc) 2. 仍然用 原来自洽计算时的四个输入文件,但 INCAR 中需要设置 ICHARG=12 , NSW=1 , 和 NELM=0 ,其他设置不变 ,得到原子的电荷密度 (RHO_atom)
个人分类: VASP|7077 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex28: 进阶前的准备(一)
hongyesies 2017-7-25 10:01
Ex 28 进阶前的准备(一) Linux命令之cd使用心得: 科研必备技能 前面 27 节,我们已经通过气相分子的例子,带领大家顺利度过了菜鸟这一关。如果你掌握了其中的思想,勤加操练,看官网,认真阅读看大师兄推荐的参考书,相信你的能力足以甩出那些整天只知道搜集 VASP 学习资料,搜集 DFT 阅读书籍,而不去行动的人好几条街了。科研忌讳的就是眼高手低,你学到的知识和你下载的书成反比。 在菜鸟篇结束之后,大师兄需要把自己日常工作的一些小技巧展示给大家。一是作为大家摆脱菜鸟身份的奖励,二来为大家的进阶篇做好准备。今天我们主要讲解一下 cd 命令。 在 linux 系统下, cd 是必不可少的一个命令 : cd 可以实现进入文件夹,返回上一级文件夹等操作等,日常操作中一些简单的做法可以极大的简化我们的工作方式,减轻手指的负担,有效避免键盘手的形成。大师兄结合自己多年来理论计算化学的操作实践,简单列举了一些组合使用 cd 命令的方法,希望大家可以熟练使用。 注意:本节没有大师兄的截图操作,大家需要认真练习,思考这些命令是怎么运行的。 希望大家阅读完本文后,按照内容练习一番,至少要达到高级篇的水平。此外,本节内容和前面的密切相关,如果前面没有掌握的话,在具体的应用部分中阅读起来会有些吃力。此时,建议从头学习,网址:www.bigbrosci.com/LVASPTHW (底部阅读原文) 1 菜鸟篇: 正常使用 cd 命令 进入文件夹: cd xxx/xxx/xxx 返回上一级: cd .. 返回上二级: cd ../.. 2 初出茅庐: 懂得如何 快速返回原来的文件夹目录 : 1 ) : cd - 2 ) : cd $OLDPWD 两者效果是一样的, 区别是前者会在屏幕显示上一级的目录。 具体使用参见本书前面几节关于VASP批量操作的相关内容, 尤其是在批量提交任务中的应用 。这个命令一定 一定 一定 要掌 掌 掌 掌... 握!!! 3 进阶篇: 知道如何结合 cd 与 alias 试想一下,如果你的文件系统下,一层套一层,好东西藏的很深(大师兄内心荡漾着邪恶清脆的笑声), 问题是, 当你进入这个文件夹,后退时需要不停地敲击: cd ../../../../../../../..................... 为避免这样的麻烦,可以这么做: alias ..='cd ../../' alias ...='cd ../../../' alias ....='cd ../../../..' 每个点代表向上返 1 级目录, 后面自己补上,大师兄手指头不想继续写了。 注意: 1) : 不要设置 alias . ='cd ../' 因为 . 在 linux 里面等于 source 命令 2 ) : 等号左右没有空格 3 ) : 等号右侧命令需要用单引号或者双引号括起来, 最好是用单引号。 不会的请自己查找前面关于alias的介绍章节。 4 高级篇: cd 与 alias 、 、 ls 的结合 大师兄 linux 走火入魔,养成了一个进入文件夹就敲击 ls 命令的习惯,但是也舍不得折磨我那双精细的老手,于是,就组合了 cd 、 alias 、 、和 ls 命令,如下 alias ....='cd ../../../.. ls' 这样你敲击 4 个点 .... 返回上面 4 级目录的时候, 自动显示当前目录下的所有东西,避免再一次敲击 ls 命令了 在这里我们用到的是 这个命令,它表示如果前面的命令成功了就进行 的命令 无聊的师弟师妹们可以这样玩一下: cd ../../../.. cd - 但是如果 前面的命令失败了,直接退出,后面的便不会运行,这种情况下你就需要用到 双排管 这个命令了。 什么是双排管? 答:  ||  (中间没有空格,大师兄给起的名字) 师兄,这玩意怎么使用? 看下面的例子就明白了: cd ../abc ls 上一级目录没有 abc 文件夹, 前面命令的失败了, ls 不会运行 cd ../abc || ls 上一级目录没有 abc 文件夹, || 前面命令的失败了, ls 依然会运行 此外,还有单管 | ( pipe )这个 命令,后面一般跟着前面一步结束的进一步操作。 比如: 1) head –n 10 POSCAR | tail –n 1 2) grep ' without' OUTCAR | tail -n 1 3) grep ' without' OUTCAR | awk '{print $4}' 4) 前面获取零点能的就是一个很好的例子 5) ……(大家自由发挥) 5 cd 私人定制篇: 如果你的一个课题的计算都在一个文件夹里面,可以这么设置,下次敲击命令时直接进入这个文件夹 alias xxx='cd ~/bigbro/a/b/c/d/e/f/g/h/i/k' 藏得这么深(师弟们懂的!),肯定是好东西, 不拿出来分享愧对大师兄谆谆教诲!学会了这个命令,就避免了用鼠标乱点进入目录了。还可以避免文件找不到.... 大家好好练习这些关于cd的基本命令,等手指头熟悉了 cd 的味道,大师兄下一节就会继续传授给大家其他的高级操作,进一步减轻手指头的负担。 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网,版权属于李强博士。
个人分类: 编程|2056 次阅读|0 个评论
《Learn VASP The Hard Way》基础篇完结
hongyesies 2017-7-24 11:30
《Learn VASP The Hard Way》由李强博士撰写,目前基础篇(ex0 ~ ex27)已经完结,感谢作者付出! 有问题可以直接 到大师兄的QQ群( 遇见大师兄 217821116 )讨论, 或关注大师兄的 微信公众号 ( BigBroScience )。 大师兄这套教程的编写方式受《learn python the hard way》(笨方法学Python)这本书的影响, (参考: https://www.douban.com/group/topic/73878230/), learn python the hard way.pdf 这种教学模式确实非常好,特别对于没有基础或者基础不好的人来说,用该方法来学一门新技术有非常显著的效果,可以快速入门。
个人分类: VASP|4679 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex27:乙醇分子的频率计算(五)
hongyesies 2017-7-24 11:06
Ex27 乙醇分子的频率计算(五) (频率计算的时间成本) 通过前面读者的反馈,本节前面主要讲述一下零点能相关的注意事项: 1 参考书籍: 以下所提到的书籍都可以在 QQ 群文件和百度网盘里面下载: http://pan.baidu.com/s/1bKHMjG 1.1 Density Functional Theory : A PracticalIntroduction 大师兄极力推荐的菜鸟入门书!!! 1) 不要网上随便下载(很多都是野鸡版,公式符号不全) 2) 不要看中文版的;去看原汁原味的,困了就歇会,慢慢坚持看; 3) 大师兄 QQ 群下载或者点击百度网盘链接; 4) 第 5 章专门讨论的频率相关的问题!!! 1.2 Atkins 的物理化学第 9 版 前面几节我们都是用的这一部分作为参考,忘了的童鞋们返回继续重修; 1.3 Jens. K. Norskov 的 FundamentalConcepts in Heterogeneous Catalysis 2 当你阅读完前面推荐书中的频率部分后,应该会明白很多。本节的第二部分我们主要讨论下频率计算的一些大家有顾虑的细节问题: 2.1 怎么进行零点能校正? 以乙醇的计算为例: A) 首先结构优化完毕后我们会得到分子的能量: E0 B) 频率计算后我们会得到分子的零点能: ZPE C) 零点能校正之后的乙醇分子能量为: E_ZPE = E0 + ZPE D)A 和 B 得出的结果直接相加即可,不要想太多。 2.2 怎么计算过渡态和反应热的零点能校正? (菜鸟暂且跳过) 对一个反应: IS -- TS -- FS IS: Initial State 反应物 TS: Transition State 过渡态 FS: Final State 产物 记住这几个定义,本书后面 IS, TS, FS 用的时候多着呢! 1) 优化反应物 IS 和产物 FS 的结构,获得能量: E(IS),E(FS); 2) 对反应物和产物进行频率计算,获得各自的零点能: ZPE(IS), ZPE(FS) 。 3) 搜索过渡态,获得结构和能量 E(TS); 4) 过渡态频率分析,获得零点能 ZPE(TS) 不考虑零点能的反应能垒 (E a ) 和反应热 ( Δ E) : E a = E(TS) – E(IS) Δ E =E(FS) – E(IS) 考虑零点能校正: E a(ZPE) = E_ZPE(TS) – E_ZPE(IS) = E(TS) +ZPE(TS) – E(IS) – ZPE(IS) = E a + ZPE(TS) – ZPE(IS) 同理: Δ E (ZPE) = Δ E + ZPE(FS) –ZPE(IS) 两个处理方式: 先获取未校正的结果,然后把零点能各自相减; 先将各个物种进行零点能校正,然后在计算反应能垒或者反应热 效果是一样的 2.2 频率计算的时候,是不是体系中所有的原子都放开? 不一定;这取决于你的体系,以及你想要关注的部分: 例子 A: 乙醇在 Cu(111) 表面上的吸附,计算吸附热的零点能校正 CH 3 CH 2 OH + Cu(111) à Cu(111)-CH 3 CH 2 OH 此时, Cu(111) 表面我们在计算频率的时候是要固定住的!只振动乙醇分子即可。 例子 B : 计算 CO 在 Cu(111) 表面上的吸附: 同 A ,固定 Cu(111) 表面,如果你只关心 CO 在垂直表面上的振动,那么 CO 的 xy 方向便可以固定住,在坐标后面为: F F T 例子 C : 苯酚在 Cu(111) 表面上 O—H 键断裂活化能的零点能校正: 在这里我们拿苯酚作为例子,很多时候,计算的对象比较大,全部频率优化非常耗时,那我们就得选择性地固定住一部分,只关心关键的局域部分。这个例子中我们主要讨论零点能对 O—H 键断裂活化能的影响,因此我们可以把苯环的部分固定住,只放开 O 和 H 原子进行振动。 当然啦,这是一个简化的计算,肯定不如全部振动的结果好,但迫于计算时间的压力,这是一个折中的好办法。此外,由于在反应中苯环部分变化不大,所以即使我们全部放开,它对反应热和反应能垒的影响也很小,零点能部分相减的时候抵消了。在这里你要深刻体会到,意识到,把握到:相对这两个字在理论计算中的巨大作用 !!! 还有一点要注意的是: IS , TS 和 FS 中,所固定和放开的原子必须一致!!! 不要在 IS 中固定苯环,在 TS 或者 FS 中放开,这样计算出来的结果只能用脑残来形容了。 (PS: 本人犯的这种错误太多啦,已经不能用脑残来形容了! ) 3 影响频率计算的因素测试 : 前面提到过: ENCUT, KPOINTS, POTIM, EDIFF 都会对频率计算产生影响。频率计算很多时候会有小的虚频出现,通俗点说就是数值噪音。可以想到,凡是可以提高精度的办法是不是就可以降低噪音了呢?写到这里,大师兄突然想起初中的一个老师说过一句话:好记性不如烂笔头,意思是让我们多写,这样记得会比较快。还有一句名言:纸上学来终觉浅,绝知此事要躬行!学习 VASP ,亲自上手实践及其重要,看遍官网,翻烂本书不去行动也是白搭,好听点说只能是纸上谈兵。 下面的测试主要从零点能和虚频,和时间三个方面来判断:测试的命令为: 获取虚频命令: grep 'f/i' */OUTCAR | awk '{print $1 \t $2 \t $8 \t $9 \t $10 \t $11}' 获取时间命令: grep Elapsed */OUTCAR | sort -n 获取零点能: for i in * ; do echo $i $(cd $i ; fsum ; cd $OLDPWD);done | sort –n 3.1 EDIFFG 测试 3.1.1 测试 4,5,6,7,8 分别代表 EDIFF=1E-4 到 -8 的测试任务; for i in * ; do echo$i $(cd $i ; fsum ; cd $OLDPWD); done 零点能的计算结果: EDIFF ZPE Unit 4 2.14344 eV 5 2.12494 eV 6 2.11698 eV 7 2.11696 eV 8 2.11696 eV 可以看出来在 1E=-6 以后,零点能变化基本为 0 了;我们可以用这个设置; 虽然你测出来一个很好的参数值,很不幸,这是默认的。 从时间上考虑,本人会选择 EDIFF= 1E-5 ,这比 1E=-6 快了将近一倍; 5 和 6 之间的误差为: 0.008/2.117 = 0.38% ; 此外,单个的零点能貌似没有什么用处,一般都是两个结构的零点能相减。这个操作也会抵消一部分的计算误差。 3.1.2 虚频 (这个命令只展示一次,后面测试结果全部用下面的表格) EDIFF Nth WN Unit Energy Unit 4 25 10.183435 cm-1 1.262585 meV 26 43.891375 cm-1 5.441839 meV 27 61.646745 cm-1 7.643225 meV 5 25 6.773094 cm-1 0.839757 meV 26 28.045092 cm-1 3.477149 meV 27 52.28955 cm-1 6.48308 meV 6 25 6.132037 cm-1 0.760276 meV 26 18.62878 cm-1 2.309675 meV 27 65.657693 cm-1 8.140519 meV 7 25 6.03848 cm-1 0.748676 meV 26 19.115009 cm-1 2.36996 meV 27 65.726299 cm-1 8.149025 meV 8 25 6.036457 cm-1 0.748425 meV 26 19.156334 cm-1 2.375084 meV 27 65.711053 cm-1 8.147135 meV 改变收敛标准,并没有消除虚频,测试 5 中,稍微降低了些,其他情况下,最大的仍然都再 60cm-1 左右 6 7 8 中的虚频基本一致,说明增加收敛标准,并没起到什么好的效果。 3.1.3 时间 EDIFF Time Unit 4 1702.463 s 5 2295.233 s 6 4298.571 s 7 5481.423 s 8 5998.518 s 复习下谁偷走了我的机时中 EDIFF 的因素;增加 EDIFF ,计算时间变长了。(离子步数一致,每个离子步的收敛步数增多了) 一般来说 EDIFF 采用默认值或者 1E-5 都可以满足情况,任务比较繁重的时候议用 1E-5 。本节在后面的测试中,都采用 VASP 的默认 EDIFF 值进行( 1E-6 ) 3.2 ENCUT 测试 3.2.1 零点能 ENCU ZPE Unit 400 2.11698 eV 500 2.11448 eV 600 2.11880 eV 700 2.11971 eV 800 2.11928 eV 从表中可以得出结论:增加 ENCUT, 对零点能的影响很小; 在计算的过程中, ENCUT 要保持一致,一但选定后就不要再轻易改动,这个表的数据告诉我们,即使改动了 ENCUT ,对零点能的影响也很小,所以 ENCUT 的影响可以忽略。 3.2.2 虚频: ENCUT Nth WN Unit energy unit 400 25 6.132038 cm-1 0.760276 meV 26 18.62878 cm-1 2.309675 meV 27 65.65769 cm-1 8.140519 meV 500 24 0.489004 cm-1 0.060629 meV 25 16.7313 cm-1 2.074418 meV 26 23.491849 cm-1 2.912619 meV 27 66.062971 cm-1 8.190767 meV 600 24 0.288462 cm-1 0.035765 meV 25 4.853849 cm-1 0.601801 meV 26 6.324527 cm-1 0.784142 meV 27 52.075614 cm-1 6.456556 meV 700 25 0.747158 cm-1 0.092636 meV 26 6.175845 cm-1 0.765708 meV 27 32.540704 cm-1 4.034535 meV 800 25 0.289332 cm-1 0.035873 meV 26 7.356367 cm-1 0.912074 meV 27 26.44812 cm-1 3.27915 meV 增加 ENCUT 可以减小虚频;从 400 增加到 800 后,最大的虚频波数从 65 cm-1 减小到 26cm-1, 但 A 中的结果是不是要求我们算频率的时候,必须要把 ENCUT 增大呢? 答:没必要!! 因为前面零点能变化甚微,且虚频从 65cm-1 减小到 26cm-1, 只能说是在误差范围内变化,我们是可以承受的,此时 ENCUT 在减小虚频中的作用,大家记住这一点就可以了。此外,增加 ENCUT 也会使得计算时间变长(见下图)。但是如果虚频大于 100cm-1 ,且不是反应路径的时候,你就得小心了。 3.2.3 时间 命令: grep Elapsed */OUTCAR | sort –n ENCUT Time Unit 400 1832.405 s 500 2389.045 s 600 3019.433 s 700 4285.491 s 800 11943.02 s 3.3 PREC 这里我们设置了三个参数: Normal, Accurate 和 High 3.3.1 零点能变化甚微 PREC ZPE Unit N 2.11698 eV A 2.1147 eV H 2.11363 eV 3.3.2 虚频 PREC Nth Wave number Unit Energy Unit N 25 6.132037 cm-1 0.760276 meV 26 18.62878 cm-1 2.309675 meV 27 65.657693 cm-1 8.140519 meV A 25 5.493108 cm-1 0.681059 meV 26 10.478293 cm-1 1.299143 meV 27 65.861524 cm-1 8.165791 meV H 24 0.552665 cm-1 0.068522 meV 25 16.954329 cm-1 2.10207 meV 26 29.95621 cm-1 3.714098 meV 27 68.287802 cm-1 8.466611 meV PREC同样对消虚频不管用!!!! 3.3.3 时间 Prec Time Unit N 7962.539 s A 7596.994 s H 4298.571 s 通过前面的虚频和零点能,结合此时的时间,我们可以得出结论: PREC = Normal 完全够用了。 3.4 POTIM 参数 3.4.1 零点能: POTIM ZPE eV 0.001 2.17125 eV 0.005 2.12616 eV 0.015 2.11769 eV 0.020 2.11698 eV 0.050 2.11671 eV 0.100 2.12481 eV POTIM 太小的时候,对零点能影响很大。( 0.001 和 0.005 , 0.015 对比) 3.4.2 虚频 POTIM Nth Wave Number Unit Energy Unit 0.001 25 21.746998 cm-1 2.696285 meV 26 39.656607 cm-1 4.916794 meV 27 56.54809 cm-1 7.011072 meV 0.005 24 0.675194 cm-1 0.083713 meV 25 12.785399 cm-1 1.585188 meV 26 36.264179 cm-1 4.496187 meV 27 61.287932 cm-1 7.598738 meV 0.015 25 5.626635 cm-1 0.697614 meV 26 23.117605 cm-1 2.866219 meV 27 59.01173 cm-1 7.316525 meV 0.020 25 6.132037 cm-1 0.760276 meV 26 18.62878 cm-1 2.309675 meV 27 65.657693 cm-1 8.140519 meV 0.050 24 0.327964 cm-1 0.040662 meV 25 23.575077 cm-1 2.922938 meV 26 24.337978 cm-1 3.017526 meV 27 95.239085 cm-1 11.80815 meV 0.100 23 1.574379 cm-1 0.195198 meV 24 5.865037 cm-1 0.727172 meV 25 20.89784 cm-1 2.591003 meV 26 45.241296 cm-1 5.609208 meV 27 168.238904 cm-1 20.85897 meV POTIM 太大的时候,会搞出来超大号的虚频(0.050和0.100)。 3.4.3 时间 POTIM Time Unit 1 1530.591 s 5 2065.911 s 15 3845.977 s 20 4298.571 s 50 4829.897 s 100 5191.23 s Potim 越小,单个离子步收敛的越快,也就是需要更少的电子步! 综合前面的三个因素: POTIM 太小或者太大都不好, POTIM = 0.015 或者 0.020 是很好的选择。 0.015 是默认值。 3.5 POINTS 1 2 3 分别代表 1 1 1 , 2 2 2 和 3 3 3 的 K 点 3.5.1 零点能: KPOINTS ZPE Unit 1 2.11698 eV 2 2.11678 eV 3 2.11689 eV 3.5.2 虚频: Kpoints Nth Wave Number Unit Energy Unit 1 25 6.132037 cm-1 0.76028 meV 26 18.62878 cm-1 2.30968 meV 27 65.657693 cm-1 8.14052 meV 2 25 5.726298 cm-1 0.70997 meV 26 19.193163 cm-1 2.37965 meV 27 64.645347 cm-1 8.015 meV 3 25 4.826986 cm-1 0.59847 meV 26 19.138554 cm-1 2.37288 meV 27 64.83042 cm-1 8.03795 meV 3.5.3 时间 Kpoints Time Unit 1 4298.571 s 2 8997.709 s 3 13480.847 s 综合前面三点: Gamma点足矣! 4 扩展阅读: 4.1 下载本节的练习,按照本节的顺序操作分析; 4.2 阅读 VASP 官网中关于原子和分子的例子,去尝试回答里面的问题; https://cms.mpi.univie.ac.at/wiki/index.php/Atoms_and_Molecules 5 总结: 分析完前面的测试,我们总结一下 高效 频率计算的关键点: 5.1 IBRION = 5 (告诉 VASP 我们要算频率) 5.2 POTIM = 0.015 5.3 NFREE = 2 5.4 ENCUT 和原来一样 5.5 PREC = Normal 5.6 EDIFF = 1E-5 或者 1E-6 5.7 KPOINTS Gamma 点即可。 本节内容太多了,原因在于,这是菜鸟篇的最后一节! 大师兄本人亲自做了很多测试,原因只有一个,告诉大家如何把握计算结果与时间的关系。在最短的时间获取最多的有价值的结果,这是计算化学的一个精髓所在。体现了你对时间和生命的尊重,也体现了你对高效率生活的追求。在菜鸟的时候,可以尽情地去测试。 大师兄之所以用乙醇这个大分子去给大家展示,很多人直接用 O2 , CO 或者水分子的计算作为例子。那样的简单例子不具有很强的代表性,当你把一个复杂的东西搞明白了,这些小分子的计算,就如同小儿科一般了。 ------------------------------- 如果喜欢大师兄的文章,欢迎关注我们,转载,转发。如有错误,直接公众号留言指正或者QQ群( 遇见大师兄 217821116 )讨论。 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|3697 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex26: 乙醇分子的频率计算(四)
hongyesies 2017-7-24 10:57
Ex26 乙醇分子的频率计算(四) OUTCAR 分析和零点能矫正 前面我们学会了通过使用 Jmol 查看分子振动。但分子振动频率在 OUTCAR 是什么样子的呢?今天我们就分析一下 OUTCAR 文件中的频率信息,以及如何写脚本计算零点能矫正。 1 OUTCAR 分析 1.1 回顾一下 Jmol 中的频率振动 Jmol 提取了 OUTCAR 中的振动信息,将每个振动模式的频率列了出来。 1.2 OUTCAR 中的信息 : 对比一下这两个振动频率和 Jmol 中的前两个。 1)1 f = 代表第一个振动模式,细心的你仔细观察,会发现每一行有四个单位的数值: THz, 2PiTHz, cm-1, 和 meV ,这四个是完全等同的; 2 )下面一行为坐标 XY Z 和每个原子在 x y z 方向上的振动大小; 3 ) X Y Z 下面的数字为结构的坐标信息( Cartesian 坐标系), dx dy dz 为振动的具体数值; 4)后面的振动模式的频率和第一个的格式一样。 2 频率单位的换算 我们先讲一下这四个单位的换算公式: Relevant Formulas: E = hc/λ ν = c/λ ṽ = 1/λ T = 1/ν Definitions: E = energy (eV) λ = wavelength (m) ṽ = wavenumber (m-1) T = period (s) ν = frequency (s-1 or Hz) h = Planck's constant = 4.135667516 x 10-15 eV*s c = speed of light = 299792458 m/s 以第一个振动为例: 1f = 111.907 THz 703.134 2PiTHz 3732.82 cm-1 462.811 meV 1) THz 和 2PiTHz 的换算: 2π 的关系: 111.907230 (THz) * 2 π = 703.133866 (2PiTHz) 2) THz 和 cm-1 的关系: v = c/λ= c ṽ , c 是光速, λ 是波长, ṽ 是波数,单位是 m-1 。 计算前先换算成标准单位: 1THz = 10 12 Hz, 1 cm-1 = 100 m-1 ,因此: 111.907230* 10 12 (Hz) = 299792458 (m/s) * 3732.823294 * 100 (m-1) 3) THz 和能量 eV 的关系: E = hv , h 为普朗克常数: 4.135667516 x 10 -15 eV*s ( 注意此时: Plank constant 的单位!!! ) 462.811270 (meV) = 0.4628 eV = 4.135667516 x 10 -15 (eV*s) * 111.907230 * 10 12 (Hz) 4) 波数( cm-1 )和能量( meV )的关系: E = hc/λ =hc * ṽ 462.811270 meV = 0.4628 eV = 4.135667516 x 10 -15 (eV*s) * 299792458 (m/s) * 3732.823294* 100 (m-1) 大家根据上面的公式自己手动算一遍就明白了,还可以使用下面这个网址进行计算: http://halas.rice.edu/conversions 这里就不再多说了。 3 OUTCAR 频率信息的提取: 我们可以使用 grep 命令提取,有两个方式: 3.1 :使用以下几个命令: grep THz OUTCAR grep 2PiTHz OUTCAR grep cm-1 OUTCAR grep meV OUTCAR ; 这几个命令中,我们分别以振动的不同单位作为提取对象,便可以得到所有的振动信息(这里的所有指的是包含虚频):以大师兄常用的 grep cm-1 OUTCAR 为例: 黄色标出来的第一列: 9*3 = 27 个振动模式,第二列是以 cm-1 为单位的振动频率大小,最后三行 f/i= 指的是虚频。 前面我们提到过,虚频可以判断结构是否稳定。那这里,我们计算出的乙醇分子结构肯定不稳定喽?不一定。 因为 频率计算和软件的数值积分有关(我也不清楚数值积分怎么进行的); 计算过程中我们的设置对频率计算影响很大, KPOINTS, ENCUT, EDIFF, POTIM 等都会影响计算的精度(下一节讨论);综合这些因素,对于分子的振动频率来说(注意:声子谱不适用)一般低于 100cm-1 的频率可以忽略。严格点可以降到 50cm-1 ,也就是说:如果你在计算中发现有个 50cm-1 左右的虚频,完全可以不考虑。 3. 2 : grep 'f =' OUTCAR 注意:图中虚频部分没有显示出来!严格按照我用的这个命令 使用这个命令的时候,不提取虚频部分。查看虚频的时候,可以用之前的方式,也可以用这个命令: 在零点能的计算时,虚频是不能考虑在内的,因为它不是分子的真实的振动模式。在我们这个例子中,虚频的出现是软件的误差所导致。在过渡态中,虚频代表的是反应方向。从另一个角度去分析:乙醇分子的零点能(下面讲到)为:2.117 eV,图中三个虚频对应的能量为:0.76 + 2.31 + 8.14 = 11.11 meV = 0.01111 eV,所占比例为:0.0111/2.117 = 0.5% 这个可以忽略不计。 4 零点能校正 4.1 明白什么是零点能: 回顾频率计算第一节的内容: 4.2 获取振动能量数据: 分析下结构: 上图输出共有 11 列(列之间用空格分开):我们要的零点能在第 10 列,使用下面的命令: grep 'f =' OUTCAR | awk '{print $10}' 如果想同时输出第 1 和 10 两列: grep 'f =' OUTCAR | awk'{print $1 $10}' $1 和 $10 之间有2个 双引号: ,两个双引号里面有一个空格 用来分开 ),否则两列会连在一起。 注意!注意!注意! 这里我们提取的能量为: hv !!! 而零点能为 1/2 hv !!! 4.3 将所有振动的能量求和: grep 'f =' OUTCAR | awk '{print $10}' | paste -sd+ |bc qli@BigBroSci:~/Desktop/freq$ grep 'f =' OUTCAR | awk '{print $10}' |paste -sd+ | bc 4233.962325 输出的 4233.96 就是所有的 hv 之和。 1)不要忘记除以 2 2)此时单位是 meV ,换算成 eV 还需要除以 1000 。 3)所以,我们的零点能是 4233.962325/2/1000 = 2.117 eV 4.4 写脚本 将前面的命令写到一个文件里面就成为了脚本:怎么写呢?本人平时喜欢使用类似4 233.962325 这个数字,除以 2000 这一步在后面的工作中进行。因此只用到了 grep 'f =' OUTCAR | awk '{print $10}' | paste -sd+ | bc 这个命令。写脚本的具体操作: 1) 把这行命令写到一个文件中,文件名为 fsum (本人不喜欢 .sh 尾缀,加不加都一样); 2)chmod u+x ~/bin/fsum (赋予可执行权限); 3)mv fsum ~/bin (移到 ~/bin 文件夹); 4) 在任何一个频率计算的目录下运行:敲命令 fsum 即可; 5) 不喜欢 fsum 这个命令,将文件名改成你自己喜欢的名字: 如果想在脚本里面直接完成除以 2000 的任务,可以这么写: hv_sum=$(grepf = OUTCAR |awk '{print $10}'| paste -sd+ | bc) echo scale =6; $hv_sum/2000 | bc 此时结果的单位为: eV 。 5 扩展练习: 5.1 OUTCAR中的频率输出要看明白是怎么回事; 5.2 频率的各个单位的换算要搞明白; 5.3 怎么提取信息,计算零点能要掌握; 5.4 怎么写脚本,从现在开始要练习了! 6 总结: 本节我们主要讨论了一下OUTCAR中的频率结果,能量换算,如何提取振动能量,以及如何计算零点能,最后简单介绍了一下脚本的写法,打消大家对脚本的崇拜心理,自己稍加琢磨也会写出实用的脚本! ex26-乙醇分子的频率计算(四).pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|2441 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex25: 乙醇分子的频率计算(三)
hongyesies 2017-7-24 10:47
Ex25 乙醇分子的频率计算(三)——振动频率的可视化 jmol 安装( Windows/Linux )及查看分子振动介绍 本节推荐一款可视化程序: Jmol ,可以用来看分子结构以及振动频率。 Jmol 是一款 Java 语言编写的,开源, Linux , Windows 均可的使用的可视化软件。还记的我们从 ChemSpider 获取乙醇分子的情景吗? 对了!RSC的网页版中,乙醇分子的 3D 结构就是通过 Jmol 展示给大家的( 3D图上方 ),并且我们下载的结构也是jmol格式的文件!可以通过jmol直接打开。现在我们通过在电脑上运行 Jmol ,并查看分子的结构和振动频率。 1 jmol 在 windows 和 linux下的安装 : 1.1 安装前准备—— java 运行环境的安装 Windows 下:直接百度 Java Runtime Environment ( JRE ),安装软件。 也可以官网下载: http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html 注意两点:1: 接受许可,2: 64 位系统下载箭头所指的文件,然后安装即可。 Linux下Java运行环境安装移步下方链接: https://linux.cn/article-3792-1.html (怎样在 Ubuntu 14.04 中安装 Java ) 或者直接使用命令: sudo apt-get install default-jre 1.2 jmol 软件的下载和安装 Windows : https://sourceforge.net/projects/jmol/files/Jmol/ 打开链接后,图中箭头指的地方下载最新版的(Linux其实和Windows下载的文件一模一样,见后面说明),也可以任选版本进行下载。 等待几秒后会弹出下载的窗口,其他浏览器也应该一样。 解压缩后就算安装好了,可以直接运行。 运行 Jmol 程序: 图中 1 为 j mol.bat 文件, 2 为 Java 的可执行文件: jmol.jar , Windows 下任选一个双击即可打开程序。 建议将解压缩之后文件夹中的 jmol.bat 或者 Jmol.jar 文件右键发送到桌面快捷方式。打开后如下图: Linux 下安装 Jmol 的方法: 在 https://sourceforge.net/projects/jmol/files/Jmol/ 下载 jmol (和前面介绍的 Windows 下载的文件一模一样),解压后的文件复制到 usr/bin 中,打开文件时用 jmol.sh + 文件名即可。将解压目录加入 .bashrc 路径中也可以实现,同时需要给 jmol.sh 加上可执行权限,即 chmod +x jmol.sh ,打开文件仍用 jmol.sh + 文件名。( QQ群友:连赞提供! ) 大师兄在 Linux 系统下的操作如下: a)下载和 Windows 版的过程一样,下载完毕后,解压, b) 终端里面进入解压后的文件夹: 注意一下几点: b.1) jmol.sh 就是我们在 Linux 系统下面的命令(Windows里面我们用jmol.bat 和 jmol.jar); b.2)首先赋予它可执行的权限: chmod u+x jmol.sh ( 取消权限: chmod u-x jmol.sh) b.3 ) 这里大师兄电脑下, jmol.sh 变成绿色的了(不同电脑显示会不同,不要纠结) b.4 ) 尝试运行一下: ./jmol.sh OK b.5 ) 下面设置环境变量:打开 ~/.bashrc 文件,并 加入这一行: export PATH=~/Downloads/jmol-14.20.2:$PATH 注意: 等号=前后没有空格 , 后面紧跟着 jmol 的解压缩目录,再往后是一个冒号,冒号前后也不能有空格, $PATH 必须要加上!!! b.6) 保存 .bashrc 文件 并 source 一下 : . ~/.bashrc (注意前面的 . ) 或者使用命令: source ~/.bashrc c) 进入其他目录,运行 jmol 命令: 下 图中~/Destkop/freq 目录下有我们关于乙醇频率的计算结果。 大功告成!!! 此外, sudo apt-get install jmol 这样安装的是 旧版本,强烈不建议 ,原因如下: 可能图片有些模糊,但不重要!旧版本的不支持 OUTCAR….. 安了也是白搞!!! 2 使用 jmol 可视化分子振动 2.1 载入振动文件到 jmol Windows :直接将频率计算得到的 OUTCAR 拖到 jmol.bat 就可以了 Linux :直接 jmol + 文件名 两个系统下面均可使用左上角的 文件 à 打开 à 选择 OUTCAR 导入。 得到如下界面。但是分子并没有开始振动,只是显示了其结构。 ( 该结构和ChemSpider上的一样! ) 要查看振动模型,需要以下两步, 选中振动模型 和 开启振动 。这两步有多种方法可以实现,总结如下。 2.2 选择振动模型 A) 可以在工具 -- 原子库选择器中选中要查看的振动模型 注意,先把右边的按钮拉倒底,然后双击 Frequencies 展开频率信息,如下 B) 也可以直接右键-- 模型中选中 2.3 开启振动 A) 原子库选择器中 最下方: 振动 -- 振动开可实现, 点击后,原子就开始振动了。 B) 在菜单栏 - 工具 -- 震动中开启(原子库选择器选中时采用这种方式,需要先开启再选中) C) 也可以右键- - 振动 -- 开启 2.4 查看不同振动 A) 原子集选择器中的频率列表,双击其中的一个就显示其振动方式了。 B) 要查看下一个振动还可以点击向右的这个箭头就可以了。 以上就是本节关于jmol可视化的介绍了,更多信息,请查看jmol的wiki: http://wiki.jmol.org/index.php/Main_Page 3 扩展练习: 3.1 熟练掌握jmol的软件安装,查看频率的基本操作。 3.2 通过在Linux系统下面 安装Jmol,尝试着安装其他软件 ; 3.3 分析各项频率值对应的分子或者原子的移动。 4 总结 本节主要介绍给大家一款除了p4vasp之外的另一款VASP可视化的软件,不仅仅局限在频率振动分析方面,查看POSCAR,CONTCAR也可以直接使用jmol打开。该软件由 连赞 小朋友推荐,并编辑文中大部分内容,在此表示衷心的感谢。希望大家都可以熟练掌握这款软件。Linux下面可以直接用: jmol + 文件名,打开查看结构,非常方便。 ex25-乙醇分子的频率计算(三).pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1984 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex24:乙醇分子的频率计算(二)
hongyesies 2017-7-20 10:38
Ex24 :乙醇分子的频率计算(二) 频率计算的输出与 POSCAR 原子的固定 按照前面一节介绍的方法,结构优化过程完毕后,准备频率计算的输入文件,提交任务等待结束。 1 查看结果 1.1 查看 OSZICAR ,你会发现一共计算了 55 步。 下面我们分析一下这 55 步是怎么回事: A)乙醇分子CH3CH2OH 含有9 个原子,每个原子在 xyz三个方向上均有一个自由度,共9*3 = 27个 B)我们设置的NFREE = 2 ,也就是在每个方向上 +POTIM 和 –POTIM都移动并算一下,这样就有了27*2 = 54 步:官网原文如下:大家自己去查阅IBRION和NFREE的相关内容。 The parameter NFREEdetermines how many displacements are used for each direction and ion, andPOTIM determines the step size. The step size is defaulted to 0.015 Å (startingfrom VASP.5.1), if too large values are supplied in the input file. Expertiseshows that this is a very reasonable compromise. NFREE=2 usescentral differences, i.e., each ion is displaced by a small positive andnegative displacement, ±POTIM, along each of the cartesian directions. C)还有一步:55-54 = 1, 这一步指的是第一个离子步,为频率计算前的单点计算。 所以当你设置了NFREE=2的时候,频率计算需要1+N*6步。N为体系中的振动的原子数。 1.2 我们这么算,默认的是所有的原子在 xyz 三个方向上均可移动。但很多时候,我们只需要振动感兴趣的原子或者某一特定的方向就可以了,也就是说选择性计算频率。比如我们只想算乙醇的羟基振动峰,那么其他的原子就可以固定了。 VASP 中怎么实现这个功能呢?首先我们看一下当前的 POSCAR : 左下角的 : set nu 显示文本的行数,取消行数可以通过 :set nonu 如果想要选择性地固定某些原子,我们需要以下几个步骤: 1) 在第七行和第8行之间插入一行,内容为 Selective Dynamics ,前面讲过VASP只认第一个字母,也就是S是必须的,Selective Dynamics 和 See, Sea….等其他S开头的都是一个效果的。 2) 加入Selective之后,我们需要在每一行的坐标后面加上 T或者F表示允许和禁止移动。 这里我们需要加三个T或者F,表示在x y z 三个方向上选择性固定原子的移动, 三个方向都允许:T T T 三个方向上都不允许为 F F F x移动,y和z方向上固定为: T F F x和y方向上固定,z方向振动: F F T 以此类推,其他的大家根据自己的情况固定。 ------------------------- 师兄,那么我们要做的就是在POSCAR中逐行写上 T T T 或者 F F F 就行了吧 ? 是的,下面大师兄教给你的是通过 vim 的命令或者p4vasp实现这个功能。 2 通过 Vim 实现原子的固定和选择 2.1 加入 Select 的关键字母 S ,并在坐标后面全部加上 T T T 图中1:插入一行,告诉VASP我们要选择性的固定某些原子或者在某些方向上; 图中2: 10,18s 中 s 代表选择(select)的意思,这里表示我们选中了第10到18行,10和18之间有个逗号表示连续;10,18s后面用一个 / 分开,紧跟着你我们要替换的内容; $ 在这里是末尾的意思,$/T T T我们要把每一行的最后替换成 T T T 后面再用一个/分开,加上g 表示 global 全部替换的意思。 输入完毕后,回车,效果如下: 每一行的末尾都加入了 T T T 箭头指的地方告诉我们: 9 行中的 9 个地方发生了替换。 (自己复习下sed的用法,比较两者的区别) 2.2 下面我们要把 OH 之外的原子全部固定住: 通过 p4vasp 我们可以知道, OH 的两个原子为第一个( O )和最后一个( H ),因此我们把第 11 行到 17 行中的所有 T 替换成 F 就可以了。我们可以使用 : 11,17s/T/F/g 来实现。最后效果如下: C )扩展: 如果所有的原子后面为: T T T ,这与我们之前的计算效果是一样的(第 8 行没有 S ,坐标后面没有 T T T )。此外, 固定之前要先找到哪些原子我们希望固定的,以及它们在坐标中的顺序。 3 使用 p4vasp 实现上述功能 基于 p4vasp 的可视化特性,直接用鼠标操作是很多 linux 小白最喜欢看到的,下面我们主要讲解一下p4vasp的操作,请务必将vim和p4vasp的操作关联起来,这样你会就会发现可视化和命令之间的微妙关系了。 3.1 打开 p4vasp ,导入 POSCAR ; System 显示 ethanol说明数据已导入。 3.2 鼠标系列操作 A )点一下 Show 按钮,显示乙醇分子结构; B) 点击 Build 按钮:显示分子的坐标信息:这里的坐标顺序和 POSCAR 完全一致: C) 选择乙醇的羟基(使用空格键选择原子),下图中可以知道 O 和 H 在坐标顺序中为第一个和最后一个; D )选中右上角的 Selective Dynamics ,效果如图中箭头 2 指出来的部分,这个动作和我们之前在第八行插入 Selective Dynamics 以及在坐标每一行加入 T T T 是等效的 E)选中第二行坐标,摁住 shift 键,然后再点一下倒数第二行,选中整个区域后,点击右上方的 Unselect , 这个动作等效于我们将 11, 到 17 行中的 T 全部替换为 F 。 F )操作完成后,坐上角: File à Save System As 保存新的 POSCAR 即可。 4 扩展练习: 4.1 掌握本节的两个 POSCAR 处理方法; 4.2 学会计算频率分析所需的步数; 4.3 浏览 OUTCAR ,查找频率输出结果 5 总结: 通过对比手动敲命令修改 POSCAR 和使用 p4vasp 进行鼠标操作,这里大师兄希望大家能掌握以下 3 点: 1) 学会 Vim 的使用技巧,当然了, Vim 及其强大,完全掌握基本不可能,但最基本的操作要了解; 2) P4vasp 的操作要熟悉,不知道怎么操作的,导入一个计算文件,随便点点,找找感觉; 3) 在使用 p4vasp 的操作中,你要学会思考:怎么将鼠标操作转化为命令语言来实现,为将来写脚本做好准备,毕竟很多时候,我们用不了可视化界面,就只能手动修改格式了,结合命令,比可视化操作更快,还可以批量进行。 ex24-乙醇分子的频率计算(二).pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|2184 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex23:乙醇分子的振动频率计算(一)
hongyesies 2017-7-20 10:23
Ex23 乙醇分子的振动频率计算(一) 1 分子的振动 我们首先看回顾一下振动相关的基本知识,这里大师兄不具体解释,引用 9 版 Atkins 的物理化学书中的内容,书已上传至 QQ 群文件中,也可百度网盘下载: http://pan.baidu.com/s/1o8HlyOi 全是英文,大家耐心阅读下。 简谐振子、胡克定律、体系势能随着振动距离x的关系 简谐振动的薛定谔方程描述: 薛定谔方程的解:振动的量子化,振动频率 零点能的数学和物理两个方面的解释: 2 频率计算有什么用?为什么要算频率? 大师兄稍微总结了一下频率计算的意义,大体有以下几个方面,没有提到的用处,烦请大家指出来,以便补充。 2.1 确定结构是否稳定; 2.2 看振动方式和大小,用来和实验对比,棋博士最新的文章就是一个非常好的例子; 2.3 反应热,反应能垒, 吸附能等的 零点能矫正; 2.4 确认过渡态(有一个振动的虚频) 2.5 热力学中计算 entropy ,用于计算化学势,微观动力学中的指前因子和反应能垒。 3 怎么用 VASP 计算频率? 3.1首先进行结构优化,获取稳定的构型,这个我们前面已经讲过了; 3.2 将原来的 CONTCAR 复制成 POSCAR : cp CONTCAR POSCAR 3.3 修改 INCAR 乙醇优化的 INCAR 修改后如下: 频率计算的 INCAR IBRION 改成 5 POTIM 用一个更小的值,我们这里用的 0.02 ,默认值是 0.015 NSW 设置成 1 ,这个可以直接不管,继续采用优化时的NSW值,因为你设置成 1,2,3,4,5…1000 都不会影响计算;但不能不设置(因为默认值是0,这时算个单点后任务便停止了。) NFREE = 2 添加这一个参数,表明原子在某一方向上正反两个方向移动; NCORE=4 这一项要注释掉,大师兄这边的服务器,并行计算频率时 VASP 会罢工,只进行一步静态计算,注释掉就正常进行了。 6 )此外, EDIFF 也要设置一个严格的值(频率计算时,默认值为1E-6,足够了!下一节会讲到) 小结一下频率分析关键的参数: IBRION = 5 NFREE = 2 POTIM = 0.02 4 扩展练习 4.1 按照本节的流程新建一个文件夹: freq : 该文件夹中包含乙醇分子优化后的结构(将 CONTCAR 复制成 POSCAR ),以及优化时的 POTCAR , INCAR , KPOINTS 以及提交命令的脚本文件; 4.2 修改乙醇分子优化的 INCAR 为频率计算的 INCAR ;需要修改哪些参数心里要清楚; 4.3 运行乙醇分子频率计算,并查看频率分析的 OUTCAR , OSZICAR 等输出文件; 4.4 查看 VASP 官网对于 IBRION=5 的解释,搜索网上相关频率计算的文章,帖子; https://cms.mpi.univie.ac.at/wiki/index.php/IBRION 初步了解 NFREE , POTIM 所代表的含义。 4.5 查找官网中频率计算的例子: A)https://cms.mpi.univie.ac.at/wiki/index.php/CO_vibration B)https://cms.mpi.univie.ac.at/wiki/index.php/H2O_vibration 5 总结: 5.1 熟悉频率计算初始文件的准备过程; 5.2 频率计算 INCAR 中的三个重要参数; IBRION = 5 NFREE = 2 POTIM = 0.02 5.3 初步了解频率计算中各个参数的含义。 ex23-乙醇分子的频率计算(一).pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|2752 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex -DOS5 DOS计算(五)
hongyesies 2017-7-19 14:06
Ex-DOS5 DOS计算(五) 通过 Origin 求 DOS 积分 前面我们讲解了手动求积分的原理,本节由 QQ 群中的小书童给大家演示一遍 Origin 求积分的操作,加深一下对积分原理的印象,也借此机会掌握另一项Origin的技能。Origin的 .opj文件和Excel数据已经打包上传到QQ群中,也可以百度网盘下载: http://pan.baidu.com/s/1bpvmXY3 1 求 d 带中心 1.1 复制粘贴能量、态密度、能量 * 态密度这三列数据到 Origin 中,数据见前一节练习: Learn VASP The Hard Way (Ex-DOS4) 1.2 选中数据并作图: plot -- Line -- Line 1.3 求积分,先选中一条曲线,右键, Ungroup (将曲线从组中分离,便于选择)。 1.4 打开积分对话框: 1.5 再选择一条曲线进行积分,下图选择的是黑线。 d band center 的积分区间为整个 d 带:从 -6 到 2.0 点击 OK ,截图中的 area 就是我们要的积分, 这一面积对应下图公式中的分母部分 1.6 同理,选中另一条红线( 能量和密度乘积 ),进行积分计算(上图中的分子部分) 结果如下 : 最终 d 带中心计算结果为: -34.035 / 17.428 =-1.953 2 求电子数目 电子数目的积分是从负无穷到费米能级。本例中是 从 -10 到 0 (费米能级)进行积分 , 选择黑线,重复前面的操作: 计算结果如下,电子数为 13.00 3 扩展练习: 3.1 熟练Geeeet本节Origin求积分的技巧; 3.2 阅读前面几节 DOS 计算的练习章节;熟练掌握 DOS 的提取,导出,作图和积分; 4 总结: 截止到本节, DOS 的计算就暂时告一段落了,实际计算中, DOS 的分析远远不止我们讲述的这么简单,而且网上 DOS 分析的脚本很多。大师兄了解到的有 VTST 的 DOS 处理脚本和 vaspkit ,本人在计算过程中没有用到过,在此不便详细说明。如果你在科研工作中对 DOS 分析有自己的心得, DOS 分析脚本的使用经验等,欢迎补充,分享给大家。 ex-DOS5.pdf ex-DOS5.zip 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1950 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex- DOS4 DOS计算(四)
hongyesies 2017-7-19 13:53
Ex-DOS4 DOS计算(四) DOS 积分的原理 积分公式相信大学的时候,大家已经掌握了,现在还有可能忘记了。不过没关系,虽然本节将积分,高等数学里面的暂时还用不到。对于 DOS 图来说,通过求积分可以得到相应的电子数。积分也就是求 DOS 曲线下的面积。但 DOS 图并不能通过一个函数的积分来获得,因为所对应的区域毫无规则可言。那么我们该怎么样积分呢? 1 积分的原理 积分的原理就是把区域分成 N 个小块,计算每一块的面积,然后求和。如下图: 大师兄..... 好吧,言归正传,大师兄亲自画了一幅图,讲解积分的原理,如下: 1)将每一个小区间近似看成一个小的梯形, 2) 梯形的上底和下底为:y2 和y1,高为: x2-x1。 3, 4) 也可以看成一个 高为:( y1+y2 ) /2, 底为x2-x1 的长方形。 5)面积为两者的乘积:ΔA =(x2-x1)* (y1+y2)/2。 6)将所有的小区间面积求和便得到了曲线所覆盖的面积,也就得到了我们所想要的电子数:A = sum(ΔA) 注意: 1) 电子数的积分区间是从负无穷到费米能级; 2)p4vasp 的图中的 0 点就是费米能级,已经扣除过了。 3) 科学网的一个参考链接: http://blog.sciencenet.cn/blog-567091-736149.html 2 d-band center 的公式 在这里: ε 为前面的我们提到的 x , n d ( ε) 为y。在 DOS 图中, ε 为能量, n d (ε) 为电子的密度。 参考书籍: Fundamental Concepts in Heterogeneous Catalysis,Jens K. Nørskov , Felix Studt , Frank Abild-Pedersen , Thomas Bligaard, John Wiley Sons, Inc. QQ群文件的Books文件夹中下载 百度网盘下载链接: http://pan.baidu.com/s/1bWS2Gu d 带穿过了费米能级,说明 Ru 是金属。(废话,等于白说!) d 带的积分从 -6.2 左右到 2.0 左右。(具体去数据中找区间) 关于d band 的介绍:知乎有个专栏,有兴趣的可以浏览一下: https://zhuanlan.zhihu.com/p/26230183 3 Excel手动 求积分: 对应的公式都写在第二行里面了, excel 中计算完第一个数值,直接选中然后往下拽就可以得到后面的数据了。 Excel 表格已经上传到 QQ 群和百度网盘,大家可以下载仔细观看练习,掌握该技能。 网盘下载链接: http://pan.baidu.com/s/1pKW1WV5 Step1: p4vasp 的 d band 数据! Step2 : A,B 两列的乘积,也就是能量和密度的乘积:对应 d band center 公式中的 分子 : Step3 : 1)A4-A3: 小区间的能量间隔,也就是 dε, 或者 dx , Δx , x2-x1; 2)B4+B3: 小区间的两个起点和终点的高度:也就是对应的小区间两端的能量密度: y2+y1 3)C4+C3 :小区间两端能量和密度乘积的加和: x1*y1 + x2*y2 4)Step4 :求小区间的面积: D4*E4*0.5 : (x2-x1) * (y2+y1)/2 D4*F4*0.5: (x2-x1) * (x1*y1 + x2*y2)/2 5)Step5: 将所有小区间的面积求 和 : 电子数: sum( (x2-x1) * (y2+y1)/2 ) , 从 G28 到 G27 求和。 d 带中心公式中的分子:从 H28 到 H84 求和 d 带中心 公式中 的分母:和电子数的积分一样,但积分区间不同,这里从 G28 到 G84 求加和。 以上将公式分开写,是为了方便大家理解,实际操作中,直接使用导出来的数据,将所有的公式合并在一起就可以了。(网盘里面excel表格的sheet2) 4 扩展练习: 4.1 亲自上手操作,重现本节的结果; 4.2 尝试使用其他软件,方法求积分; 4.3 有好程序的,好脚本的分享给大家。 5 总结: 学习完本节,大家对DOS积分的数学知识应该可以掌握了,后面不管用什么软件或者脚本,都是将这个积分的原理写成机器语言来执行。知道了原理和通过excel自己操作一遍之后,基本上DOS积分的东西就懂了。 下一节,QQ群里的小书童给大家演示一下O rigin 的积分操作 。 ex-DOS4.pdf ex-DOS4.zip Jens K. N_rskov, Felix Studt, Frank Abild-Pedersen, Thomas Bligaard-Fundamental .pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1888 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex- DOS2 DOS计算(三)
hongyesies 2017-7-19 13:42
Ex-DOS2 DOS计算(三) 怎么使用 p4vasp 获取 DOS 数据 首先感谢QQ群中的wuli8老师的提醒:我们前面讲的都是 普通泛函进行DOS计算的内容 , HSE杂化泛函和这些不太一样 。本节我们通过一个实例,讲解一下DOS数据的处理。 1 计算实例: 计算的体系是 一个Ru的单胞,含有 2 个 Ru 原子。结构优化完毕后:(由于本节是插播,体相的优化还没有讲到,大家先采用优化完成的结构)进行以下操作。 1.1 cp CONTCAR POSCAR 1.2 INCAR 的设置(一步计算): IBRION = -1 NSW = 0 ISMEAR = -5 LORBIT = 11 1.3 KPOINTS 采用 : 21 21 21 (gamma centered:Ru为六方堆积结构!!!) 1.4 提交任务等待结束, 该 计算的所有文件可以通过: 1)QQ 群文件下载, 2) 百度网盘下载: http://pan.baidu.com/s/1kVebDWz 2 DOS 可视化: 2.1 打开 p4vasp 2.2 点击左侧 open ,导入 vasprun.xml 文件; 注意: 前面的2步,linux系统下面直接输入命令 : p4v 或者 p4v vasprun.xml 即可。 2.3 查看 DOS : Electronic – DOS+bands 效果如下如: 2.4 获取 d 轨道的 DOS: 这里我们取 d band 作为例子,大家根据自己的需要选择: Electronic – Local DOS+bands control 点击后如下图: 注意: 1) 这里我们填的是Ru,表示选择所有的Ru原子,具体到大家自己的计算中, 换成自己感兴趣的原子即可,怎么选择,我们前面已经讲到过了。(通过左侧的show按钮,以及鼠标和空格选择) 2) 这里我们没有考虑自旋,如果你的体系有自旋,可以选择up,down或者both。up和down的数据导出来的时候通过一个空行分割(后面会讲到)。 3)选择感兴趣的轨道: 如果计算中你设置的LORBIT=10,点击 dxy的时候,则其他的d轨道也会同时被选中, 如果你设置的LORBIT=11,点击dxy时,则仅仅选择dxy,其他的d轨道不会选中。如下图: 如果看不明白: a)VASP官网查看 LORBIT = 10 和11 的含义; b)亲自动手操作一下就明白了。 选择完毕后,点击 Add New line ,效果如下: 图中增加了一条红色的曲线,为 Ru 的 d 轨道的 DOS 图, 如果你选择了s,点击Add New line,就会增加另外一条曲线。不想要某个曲线了,可以点击remove line,大家自己随意操作,直至熟练为止!! 3 后处理: 3.1 导出数据: p4vasp导出数据通过中间的一个按钮: (注意,这里不通过左上角的File按钮!),如下图: 点击 Graph – Export 弹出的窗口中,选择保存的目录和数据的文件名称 注意: 1)choose 选择保存的目录; 2)我们选择的D盘下的VASP目录; 3)填上保存数据的文件名: a)文件名处 .dat 记得写上,要不然后面可能会导不出数据! b)为了保证导出数据, Export 多点几遍!!! c)去导出的目录里面查看一下,如有了数据的文件名,说明保存成功,没有的话,继续点Export. 图中说明:导出数据成功。 d)为了避免浪费时间,一定要保存成功后再关闭窗口,否则你还要重复一遍前面的步骤。 4) 保存成功后,点击OK,关闭窗口。 3.2 查看数据:(Notepad++直接打开,无视 .dat 尾缀!) 为什么会有一个空行???( 一定要搞明白 !!!) 我们看一下前面DOS的图: 图中有 2 个 DOS 曲线,黑色的为空行前面的部分,红色为后面的部分。 同样,如果 DOS 图中有 N 个曲线,则导出的数据中会有 N-1 个空行将它们分开。 N 个曲线的横坐标坐标(也就是能量)是完全一样的。知道了这一点,你就知道了自己想要的数据在哪里了!!! 此外,如果有磁性的话,你也要注意了,up和down是通过空行分开的。 3.3 作图: 有了数据之后,就可以随心所欲地作图了。将数据导入 excel 或者 origin 作图,也可以使用其他小脚本,程序。这里我们使用Excel简单说下: 左侧为 空行前面的数据, Ru 总的 DOS, DOS曲线1 (黑色的那个) 右侧为空行后面的数据, Ru d 轨道的 DOS, DOS曲线2(红色的那个) 作图如下: 跟p4vasp的结果一样 大师兄赶着去睡觉了,图像就不美化了。如果童鞋们做出来漂亮的图,恳请发给大师兄以供后面更新用。关键是有了数据,并且知道数据里面空行前后代表的内容。 4 扩展练习: 4.1 下载本节的练习,可以在自己的服务器上提交,也可以直接使用结果; 4.2 通过p4vasp读取 vasprun.xml 文件,熟练进行本节的所有操作; 4.3 不要偷懒!!! 5 总结: 本节主要手把手交给大家如何用p4vasp这个软件查看DOS计算的结果。希望大家掌握这几点:1 会熟练使用改软件进行本节的操作;2 了解导出数据的格式(空行是怎么分割不同曲线的);3 知道LORBIT = 10 和 11 的区别,以及在可视化操作中的不同; 4 最关键的:要会分析DOS!!! 本人平时DOS计算用的并不多,因此不能在这一点上深入下去了,在此深表遗憾,后续会请大大师兄们指导大家。 ex-DOS3.pdf ex-dos3-exercise.zip 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|2414 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex- DOS2 DOS计算(二)
hongyesies 2017-7-19 13:30
Ex-DOS2 DOS计算(二) 前面一节讲解了 DOS 中 K 点和 ISMEAR 的使用,有群友提出了宝贵的意见。 1 ISMEAR = -5 时的错误 1.1 K点数目少于4 实际计算过程中,如果 K 点数目少于 4 ,便会出错,而不是官网说的 3 。大师兄也测试了一下,如下图: VERY BAD NEWS! internal error in subroutineIBZKPT: Tetrahedron method fails for NKPT4. NKPT= 1 感谢 QQ 群的群友( 恒驰一强 )提出的这个问题,并发送了一段很有参考价值的文字: 1.2 K点数目大于4: 此外,微信群的群友( Cu--Ni ):也提出了另外一个常见的错误,并提供了错误的信息和解决办法。使用 ISMEAR=-5 也就是修正的四面体方法的时候,即使 K 点够了,有时也会出现下面的错误。 WARNING: DENTET:can't reach specified precision Number of Electronsis NELECT = 官方的解释: http://cms.mpi.univie.ac.at/vasp-forum/viewtopic.php?t=416 http://www.error.wiki/The_old_and_the_new_charge_density_differ 出现此警告 (DENTET) 的原因是因为无法通过 tetrahedron 方法得到足够精确的费米能级。也就是将态密度积分到费米面的电子数和体系的价电子数目不一致。 遇到这种情况: 1 换个 ISMEAR 方法; 2 如果想继续用四面体方法的话: 2.1 增加 K 点数目,并且用 gamma-centered K 点; 2.2 增加 NEDOS。 从网上的回帖和群友的回馈, 增加 NEDOS 并没什么卵用!!! 所以留给你的有 2 个选择:换 ISMEAR 或者换 KPOINTS 群友还发现:在保证 K 点数目大于 4 的时候,有时候减少 K 点数目或者增加 K 点数目都可以解决这个问题。如果你的服务器还算可以,建议增加 K 点数目,毕竟和 K 点数目越多, DOS 的质量越高。 ------分割线------- 2.1 继续回答前面一节的问题: DOS 计算为什么要算两步? 注意:这里说的算两步指的是结构优化完成之后所进行的两步操作。 答:可以一步直接算! 官网说了,算 DOS 有 2 个方法,一个是直接进行 selfconsistent 计算(大家常说的自洽或者静态计算。)然后处理 DOSCAR 和 vasprun.xml 文件即可,如图: 2.2 那为什么还要算 2 步呢? 我们看一下这么做的前提: 1) 由于高质量的 DOS 需要精细的 K 点,如果我们设置的 K 点很多,就会造成计算上的负担,前面我们讲过 K 点与计算时间的关系; 2) 另外一个原因就设计到能带的计算了,这里我们摘抄一下网上的解释: 由于在能带计算时 k 点是一些在倒空间高对称线上的点 ,不能进行自洽计算。 参考网址:http://blog.sciencenet.cn/blog-567091-675253.html 也就是计算能带的时候,自洽计算是必须的一步; 3) 即使增加 K 点的数目,电荷密度和有效势能的收敛依然很快,也就是 K 点的变化对电荷密度的收敛影响不大。 2.3 分析: 能带计算我们暂不考虑,综合下 1 和 3 , 在结构优化完成之后 ,我们可以这么算 DOS : 第一步,用小的 K 点自洽,产生电子密度( CHGCAR 文件); 第二步,增加 K 点,并保持前面一步的电子密度不变( ICHARG=11 )。 这样做就避免了直接用高 K 点网格所导致的计算负担。对于 DOS 计算的两个步骤(自洽和非自洽两步),归根结底是节约时间的问题。因此,对于DOS来说,算 2 步并不是必须的!!!如果够土够豪,直接用高密度的 K 点,一步计算,没毛病! 但是对于能带计算,则必须算 2 步。 此外, VASP 的说明书已经很古老了,以现在的计算能力,直接使用大 K 点一步计算,一般来说都可以承受的。所以,当你知道了为什么要算 2 步的时候,再去浏览网上的相关经验帖子,就很容易知道是怎么回事了。 2.4 LDOS 和 PDOS 参考:http://blog.sciencenet.cn/blog-316926-493110.html LORBIT = 10 把态密度分解到每个原子以及原子的spd轨道上面,称为为局域态密度,Local DOS (LDOS) LORBIT =11 在10的基础上,还进一步分解到px,py,pz等轨道上 ,称为投影态密度(Projected DOS)或者分波态密度(Partial DOS),即PDOS。 所以 LORBIT = 11 可以提供我们更多的信息。 对于DOS图怎么分析?从那几个方面去分析,这边暂时不再介绍,等其他大师兄们详细解答。 3 那么 WAVECAR 读不读呢? 大师兄的观点是:有则读,无则不读。 3.1 对于 WAVECAR 的读取,我们需要了解 ISTART 这个参数: 如果前面计算中保存了 WAVECAR , VASP 默认是读取的。 如果没有 WAVECAR ,即使你设置了 ISTART=1 或者 2 ,虽然 VASP 找不到可以读取的 WAVECAR ,也不会报错,而是继续算。 3.2 怎么控制 WAVECAR 的输出呢? 通过设置LWAVE这个参数 注意:图中是VASP的默认值。如果平时没有保存WAVECAR,CHGCAR的习惯,那么在计算能带,或者通过 2 步计算 DOS 的时候,不要忘记 LCHARG=.TRUE. 3.3 读取 WAVECAR 可以极大地减少自洽的时间,但是 VASP 的 WAVECAR 非常大,上百 M 或者几 G 都是很常见的。一不留神存储空间就被占满了,所以一般人在计算的时候都不会去保存 WAVECAR ( LWAVE=.FALSE. ) 3.4 如果前面计算步骤中保存了 WAVCAR ,那么后面 DOS 计算的时候( 1 步计算或者 2 步计算均可),都可以读取,这会加快计算速度。 4 扩展阅读: 4.1 阅读DOS和能带计算的VASP官方手册; 4.2 了解DOSCAR的内容以及各行各列所代表的含义; 4.3 去网上查找一些DOS和能带计算的经验总结; 4.4 文章如有错误,恳请指正。 5 总结: 结构优化完毕后; 5.1: 一步计算 DOS 必须的参数: 1 ISMEAR = -5 2 LORBIT = 11 3 高密度的 K 点 5.2 两步计算 DOS 必须的参数: 第一步: ISMEAR = -5 LCHARG = .TRUE. 稍微低密度的 K 点 第二步: ISMEAR = -5 ICHARGE = 11 LORBIT = 11 高密度的 K 点 再次感谢文中两位群友提出的宝贵意见!代表无数的菜鸟们致以崇高的敬意! 再次感谢文中两位群友提出的宝贵意见!代表无数的菜鸟们致以崇高的敬意! 再次感谢文中两位群友提出的宝贵意见!代表无数的菜鸟们致以崇高的敬意! ( 恒驰一强 和 Cu--Ni ) ex-DOS2.pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|3893 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex- DOS1 DOS计算(一)
hongyesies 2017-7-19 13:24
Ex-DOS1 DOS计算(一) 使用VASP计算,很多时候都逃不掉DOS,能带计算的相关问题,尤其是对于计算材料的童鞋们,更是家常便饭一般。群里很多人,很多新手们都时常在讨论DOS的计算。这里我们通过VASP官网的说明,解释一下算DOS的具体步骤。注意这一节没有指定练习的章节,因为这不属于菜鸟篇的内容,大师兄临时拿过来先打消大家的疑虑,等写到这一节的时候,再给分配章节数目。 1 KPOINTS: 1.1 K点数目 与结构优化相比,算DOS的时候,需要用到更多的K点数目,这是因为K点越多,画出来的DOS图质量越高。 引用官网的话: A high quality DOS requires usually very fine k-meshes. 1.2 K点数目的选取 K点数目越多越好,我们该如何设置K点数目呢? 还记的前面我们讲到的K点选择的经验规则吗?那一个规则可以认为是我们平时计算时K点选择的标配。对于DOS计算,我们就需要把配置提高一个档次了。 一般来说,K * a = 45 左右之间完全可以满足你的要求,大伙可以根据这个经验来选择K点。 2 ISMEAR的选择: 2.1 看官网的话: For the calculation of the total energy in bulk materials we recommend thetetrahedron method with Blöchl corrections (ISMEAR=-5). This method also givesa smooth nice electronic density of states (DOS). 也就是说 ISMEAR = -5 的时候(Blöchl修正的四面体方法),我们可以得到一个非常平滑的DOS图。很多人问怎么才能获得平滑的DOS图,这就是答案!!ISMEAR = -5 并且使用较多的K点。 2.2 注意部分 1)不能使用ISMEAR= -5 的情况: 如果你的模型很大,只用了一个gamma点,或者K点的数目小于等于3 的时候,使用ISMEAR = -5 会导致计算出错。(the tetrahedron method is not applicable, if less than three k-points are used.)很多人只用了gamma点,然后用修正的四面体方法计算能带,最后到群里咨询出错的原因!!! 2)对于金属体系来说,算能带,DOS的时候,结构保持不动( 这是关键 ),可以放心使用ISMEAR= -5。但是,结构优化的时候不能使用ISMEAR= -5(注意:是 优化结构的时候不能用 !),这是因为四面体方法不能很好地处理费米能级处的电子占据情况,导致算出来的力会有一定百分比的误差。参考: https://cms.mpi.univie.ac.at/vasp/vasp/Partial_occupancies_different_methods.html 3)半导体和绝缘体的体系可以尽情使用ISMEAR= -5,但绝对不能在这两个体系中使用 ISMEAR0。等于0 则可以。 4)使用ISMEAR= -5 的时候,SIGMA的取值没有影响。 5)总结:算DOS,只要K点不少于3,其他情况都用ISMEAR=-5。 2.3 不能使用ISMEAR = -5 的情况怎么办? 两个解决办法: 1) 既然K点不够,那么我就增加K点,然后再使用ISMEAR= -5 ( 简单粗暴,强烈推荐使用 ); 2)服务器不给力,不能增加K点的时候,怎么办?又分两种情况:(少许有些绕弯) 2.1)半导体和绝缘体,使用ISMEAR= 0 (Gaussian Smearing,高斯展宽,后面统一简称GS方法) ;(再次注意:此时绝对不能大于0!!!) 2.2)金属,可以使用ISMEAR = 0,也可以使用Methfessel-Paxton (MP)方法:后面统一简称:MP方法。 ISMEAR = 1, 2….N,一般来说,ISMEAR =0和 1 基本就可以了。(注意:金属可以等于0,也可大于0) 2.4 SIGMA 既然选择了ISMEAR,就逃不开SIGMA的取值。 MP方法(ISMEAR=1..N): SIGMA取值太大,计算出来的能量可能不正确;SIGMA取值越小,计算越精确,需要的时间也就越多。http://cms.mpi.univie.ac.at/vasp/guide/node124.html SIGMA的取值和KPOINTS密切相关,Kpoints确定之后,使用多大的SIGMA值,大家最好测试一下。原则如下: SIGMA取值在 保证 OUTCAR中' entropy T*S' 这项的能量平均到每个原子上小于 1 meV的 前提下 : 尽可能地大 。这样做可以保证准确度的同时加快收敛速度。 记住: VASP学习最快的途径就是不停地看官网,然后亲自上手去测试,测试,测试!并观察分析结果。 高斯展宽,Gaussian Smearing (ISMEAR = 0): 1) 对于大部分的体系都能得到理想的结果; 2) SIGMA取值比较大的时候会得到与MP方法相近的误差;但是误差多大,GS方法不可以得到,而MP方法可以。从这一点上来说,MP要比GS好些; 3) 从经验上来说:对于金属体系,使用MP方法(ISMEAR=1..N)时,SIGMA= 0.10 足够了,官网给的参考值是0.20。 4) 使用GS方法的时候(ISMEAR=0),SIGMA的数值要测试下,保证'entropy T*S'这一项平均到每个原子上小于0.001 eV也就是1meV。5)不想测试,对于金属体系:ISMEAR=0.05是一个很安全的选择。 对于半导体和绝缘体,SIGMA取值要小,SIGMA = 0.01 – 0.05 之间也是很安全的。 3 测试: 3.1 体系选取 以下是本人的一个例子: 84个Ni原子,17个C,20个H,6个O,共127个原子。(只是一个例子,不具有代表性,大家对于自己的体系,要亲自测试一番。) KPOINTS的选择如下: GS (ISMEAR=0)和 MP(ISMEAR=1)方法均选择了SIGMA=0.03 和0.10 两个参数。四个测试文件,命名为: gs-0.03,gs-0.10, mp-0.03,和 mp-0.10 3.2 结果分析: 图中列出来的是单点计算的能量。 3.2.1 GS方法分析: GS中 0.03 和 0.10 比较: 1) Without entropy 后面的能量差别很大, sigma -0 后面的能量差别很小;这也是大师兄为什么推荐使用sigma 后面能量的原因。 2)使用ISMEAR = 0.03,最后电子步的结果: entropy T*S 后面的能量为:-0.078, 平均到每个原子上为: -0.078/127 = 0.000614 eV/atom = 0.614 meV/atom 1 meV/atom。 说明取值没啥问题。 使用ISMEAR= 0.10 的结果: -0.9234/127 = 0.00727 eV/atom =7.27 meV/atom 1meV/atom。 此时,我们的取值就有问题了。说明是不可靠的,需要用一个更小的sigma值。 如果使用ISMEAR=0,会有两个能量,without entropy 和 sigma – 0。 SIGMA越小,二者之间的的差别越小!一般来说,不同的SIGMA值,Sigma – 0 的结果差别不大,而withoutentropy后面的能量则差别有时候会很大。在你的计算中,只能用一个能量,不可以混用。建议使用Sigma – 0后面的能量,且体系中所有的计算都用这个。如果使用了without entropy 后面的能量,那么所有的计算都用这个能量。 对于A和B之间的能量差:ΔE = EA-EB,使用without entropy 后面的能量计算出来的ΔE 和使用 sigma – 0 的出来的ΔE,结果是一样的,差别很小。 3.2.2 MP方法的结果分析: SIGMA = 0.03 的结果 SIGMA = 0.10 的结果 分析方式如GS的测试。 使用小的SIGMA值,同样可以得到更小的 entropy T*S的数值。也就是计算的越精确。 without entropy和sigma-0 后的能量差也越小。注意,当ISMEAR = 0.10 的时候,entropy T*S 值为0.0168 eV,比之前高斯展宽时ISMEAR=0.10的数值要小很多。这表明对于当前测试的体系,SIGMA= 0.10 的时候,使用MP比GS方法的效果要好。当SIGMA数值很小的时候( SIGMA= 0.03 ),两者不相上下。 3.2.3小结一下: SIMGA小的时候,ISMEAR = 0 和 ISMEAR = 1 效果基本一样; SIMGA数值大的时候,ISMEAR= 1 效果更好。 所以,如果你首先设置一个很小的SIMGA数值,不用太担心ISMEAR的选取。但反过来,如果你首先设置了ISMEAR这一项,就需要考虑SIGMA的大小了。懒得考虑就设置一个比较小的SIGMA值,比如0.05,即可。 3.3 ISMEAR 和SIGMA对计算时间的影响。 官网里面说了 SIGMA的选择对计算的收敛会产生影响。我们分析下测试所花费的时间。 前面均是单点计算,计算所需的总时间用grep LOOP+ OUTCAR查询 如果你想查询一个电子步需要的时间用: grep LOOP+ OUTCAR (去掉+号)。 Grep RMM OSZICAR | tail –n 1 获取计算了多少电子步。 计算时间不是看Elapsed后面的那项吗? 是的,Elapsed的时间是总的计算时间。对于我们这个单点计算,LOOP+后面的能量和 Elapsed 的能量差别不大。我们这里只考虑SCF收敛过程中所花费的时间。 从前面的计算分析看,平均到每一个电子步上面,使用同一个 ISMEAR 的时候,小的 SIGMA 值对应的单个电子步时间略大一些。使用 ISMEAR=0 时,两个 SIGMA 值对应的单电子步时间差别更大。 但是官网说, if σ istoo small the convergence speed with the number of k-points will deteriorate. 这里我们并没有明显观测到,反而在使用 ISMEAR=0 + SIGMA = 0.03 的时候,收敛步数减少了一些,从而略微节省了时间。 但是官网说, if σ is too small the convergence speed with the number of k-points will deteriorate. 这里我们并没有明显观测到,反而在使用 ISMEAR=0 和 SIGMA = 0.03 的时候,收敛步数减少了一些,从而略微节省了时间。原因在于 too small 是多么地小,什么程度才算 too small ,官网没有明确说清楚。为此,专门设置了一下 SIGMA = 0.001 来测试一番。 从这里可以看出来,SIGMA= 0.001的时候,计算时间明显增加了不少,为6112.84 s。而SIGMA = 0.1 的时候,同样计算了 93步,但花费的时间为:5913.63 s。平均到每一个电子步上,也有所增加。 但是,对于大伙来说,SIGMA=0.01就已经很小了,too small 的时候并不常见。所以,不想测试的话, ISMEAR的选择可以在0.1-0.01之间。 注意:通过SIGMA的测试,我们可以发现,它对计算时间的影响完全没有KPOINTS,ENCUT等的影响大。大家在选择的时候,不要太过焦虑和纠结。大师兄建议大家 最好还是要测试一下,选择一个合适的SIGMA数值。原因如下: ISMEAR = 0 的时候, SIGMA = 0.03 和 0.10 ,单个电子步的计算时间为: 64.337 和 64.222s。 假设我们优化一个结构花了200个离子步,每个离子步有20个电子步,总共需要 200*20 = 40000个电子步。与0.03相比,使用0.10节省的时间为: 40000*(64.337-64.222)/3600= 1.3 h。 也就是一个任务省出来 1.3小时的时间。当你有10个任务的时候,就能省出来13个小时的时间..... 4 扩展练习: 4.1 阅读VASP官网关于ISMEAR和SIGMA的所有说明: 4.2 下载VASP的pdf说明书,搜索书中所有的ISMEAR和SIGMA关键词,阅读所有相关的内容; 4.3 思考SMEAR方法的意义?SIGMA的意义? 4.4 查看VASP说明书,查阅相关文献,了解MP和GS方法 4.5 分析下为什么算DOS的时候,要算两步: selfconsistent 和 none- selfconsistent calculations? 5 总结: 看完本节:你应该知道计算DOS的时候,KPOINTS设置的要大一些。 ISMEAR要用-5。 Kpoints因计算硬件限制不能设置的很大,数目小于3的时候,对于金属,非金属体系均可以使用ISMEAR=0,SIGMA的数值需要测试一下,一般来说在0.01-0.05之间足够了。 此外,金属体系还可以用ISMEAR=1..N,官网建议SIGMA为0.20,太小的SIGMA值对收敛会产生影响。使用0.01-0.10的数值都是很安全的选择。具体对收敛时间的影响大家要测试一下。本节的测试例子中,只有 SIGMA=0.001的时候少许增加了计算时间,且SIGMA的影响不如KPOINTS和ENCUT等的影响作用大。 非DOS计算的时候,对于金属来说ISMEAR不能等于 -5,优先使用ISMEAR= 1。非金属来说(半导体和绝缘体),不能 0 。对于所有的体系, ISMEAR= 0 则是一个很安全的选择,但SIGMA的数值要测试一下。说了这么多废话,还是官网简单明了: For further considerations on the choice for the smearing method see sections 9.4,10.6. To summarize, use the following guidelines: For semiconductors or insulators use always tetrahedron method (ISMEAR=-5), if the cell is too large (or if you use only 1 or two k-points) use ISMEAR=0. For relaxations in metals always use ISMEAR=1 and an appropriated SIGMA value (the entropy term should less than 1 meV per atom ). Mind: Avoid to use ISMEAR0 for semiconductors and insulators, it might result in problems. For metals a sensible value is usually SIGMA= 0.2 (that's the value we use for most transition metal surfaces). For the DOS and very accurate total energy calculations ( no relaxation in metals ) use the tetrahedron method (ISMEAR=-5). ex-DOS1.pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|4058 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex22: 乙醇气相分子的优化
hongyesies 2017-7-19 13:14
Ex22 乙醇气相分子的优化 前面我们终于讲完了 O2 分子优化的例子。相信大家对 VASP 计算已经有了一个初步的理解。这一节我们继续学习气相分子的优化。为了让大家进一步了解计算的过程,我们选取一个稍微复杂的分子作为例子:乙醇(CH3CH2OH)。 问:把大象装进冰箱需要几步? 大师兄,这个问题我早就知道答案了。为啥还问这样低智商的问题? 大师兄要求的不是让你回答开冰箱门,装进去,关门的这三步。而是让你尝试回想一下:当你第一次接触这个问题的时候,你的反应是什么? 大师兄比较笨,我的第一反应是,这怎么可能? 冰箱那么点,大象那么大。 当朋友告诉我答案的时候,才恍然大悟,这跟大小没关系。 同样的,怎么用 VASP 计算乙醇分子?很多童鞋就如同第一次跟被问到大象这个问题,不知所措。答,也是三步! 1) 打开冰箱:准备 VASP 文件 2) 把大象塞进去:准备乙醇分子模型 3 ) 关上冰箱:运行 VASP 1 打开冰箱: 我们可以直接用 O2 分子计算的输入文件, 1.1 复习一下前面学到的 INCAR 和 KPOINTS 的内容: 1) 乙醇分子是闭壳层的分子,没有单电子,不需要 ISPIN=2 2) 气相分子计算,我们要用 ISMEAR=0 , SIGMA 取值要小, SIGMA=0.02 ; # 表示注释,这个符号后面的内容, VASP在运行的时候 不考虑。 示例 1 : ENCUT = 400 # ENCUT = 500 和 ENCUT = 400 效果是一样的。 示例 2 : # 的用法: VASP计算中一些常见的错误,以及注意事项,你可以通过 # 写在 INCAR 里面,方便计算的时候进行设置。可以 # 开头,单起一行,也可以在参数的最后面加上注释。新手们刚刚开始,可以结合VASP官网参考书,把用到的INCAR参数注释下来,时间长了慢慢就掌握了。 3) 气相分子计算, K 点使用 gamma 点就够了; 2 把大象塞到冰箱里面 POSCAR 的准备 (本节重点) 前面我们学习到,一个好的初始结构会加快计算,获取准确的计算结果。因此我们需要去找一个合理的模型。对于气相分子的结构,一是手动搭建,大师兄推荐用高斯view,另一个办法就是找数据库,大师兄推荐英国皇家学会的 ChemScpider 。 网址是: http://www.chemspider.com/ 下面我们把手动搭建乙醇分子的模型具体解释一下: 2.1 打开网站: 搜索框中输入: ethanol 或者 C2H6O…. 点击搜索,等待结果: 上面箭头指的两个地方随便点,效果是一样的,如下: 分子默认显示2 D 的结构,点击箭头指的 3D,切换。 下面有对应结构的维基百科链接,翻墙的筒子们可以查阅下相关结构的知识。 选择 3D 后,如下: 点击箭头指的地方保存,浏览器会下载对应的 .mol 文件,文件名为该结构在数据库中的编号。 .mol文件也是纯文本,使用 notepad++ 打开如下: 注: 不仅仅是 .mol 文件,很多结构文件都是文本格式,直接打开就是。 从里面找到乙醇结构的 xyz 坐标信息。 删除上图中除红色框之外的所有行, 1-4 行, 14- 最后一行,只保留 xyz 坐标信息的那几行。 手动写 POSCAR,首先你要 熟记 POSCAR 的格式, 知道POSCAR从头开始,往下来 每一行代表的内容。 我们的模型是把乙醇分子放到一个 20x20x20 的格子里面。 输入完之后,坐标后面的元素符号以及那些 0 0 0 可以删掉,也可以不管。 关键点1: mol文件中,坐标那几行中的第4列写到POSCAR中的第6,7行! 关键点2:注意坐标为Cartesian 或者是 Direct. Direct 的坐标xyz值都小于1. 如果你想删掉图中坐标第3列后面的内容:大师兄推荐 notepad++ 里面的列块模式:如下: 点击之后,可能会弹出对话框,告诉你如何使用,列块模式 方法 1: 摁住 alt 键,然后用鼠标选择文本, 不同电脑可能不一样,大师兄这边 同时摁住 control 和 alt 两个键 ,然后用鼠标选择的。 方法 2: 同时摁住 alt 和 shift 键,通过键盘上前后左右的箭头选择文本 大家可以尝试下,选中效果如图: 然后点键盘上的 delete 键删除 . 然后另存为 POSCAR 即可。 我们可以使用 p4vasp 来查看一下模型的结构:如下图 我靠,师兄,结构怎么跑到格子外面啦?前面 O2 分子的学习中,你已经知道了这是因为周期性导致的显示问题。对计算不会产生影响。这个结构可以拿来直接用。 如果感觉不爽,想把结构放到中间,可以这么做: 数学上,把 xyz坐标统统加上10即可; 软件使用上,我们讲一下p 4vasp的操作方法: 选择 edit – Move atoms Move group 是你要移动的原子,这里大师兄直接输入了 CH O 三个元素符号(中间有空格)表示选择所有元素的原子。然后在 Vector 中选择 xyz 三个方向上移动的大小。你也可以写 1 1 1 ,然后点击 Move 按钮 10 次。 如果你想通过选择原子来实现移动的话(不直接在Move group里面输入 C H O),需要按照大师兄说的步骤走: 1) 空格键结合鼠标选中所有的原子;鼠标指到原子上就点一下空格键 2) 选中原子后,主界面会显示一些数字,这些数字和 POSCAR 中元素的顺序是一致的; 3) 所有原子选中后,左下角的框中点击 Get group ,会显示选择的那些原子; 4) 在 Vector 中选择 x y x 三个方向上移动的大小,然后点击 Move 按钮。 上面一堆废话就此打住,结果就是这样子的: 然后点击 file à Save system as à 选择目录 à 保存成 POSCAR POTCAR POSCAR 讲完了,我们就要按照里面的元素顺序制备 POTCAR 了。 首先: 我们要准备 O CH 三个元素的 POTCAR ,去 POTCAR 的数据库中去找: 然后复制到当前目录下,三个元素的POTCAR分别命名为: POTCAR-O, POTCAR-C 和 POTCAR-H, 把三个元素的 POTCAR 合并在一起, 命令就是 cat POTCAR-O POTCAR-C POTCAR-H POTCAR 3 提交任务 提交任务之前,需要再次检查自己的输入文件一遍,没有问题,提交直至结束。 4 扩展练习: 1) 从头到尾,认真重复本节中大师兄的操作; 2) 记住本节讲解的内容,自己重复一遍操作,直至自己通过文本编辑器会搭建结构模型; 3)运行乙醇计算的例子; 4)尝试使用高斯view,MS,以及其他可视化界面搭建模型; 5)学会使用VESTA导出POSCAR格式的结构数据。 5 总结: 本节,我们主要讨论了一下分子模型的数据库搜索和搭建工作。希望大家能够完全掌握本节的所有内容和细节。在计算中,你会遇到各种各样的结构文件,其实都是xyz坐标的衍生物而已。不要害怕,直接打开它们,学会提取里面有价值的信息。 ex22-乙醇气相分子的优化.pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1634 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex21: 谁偷走的我的机时?(五)
hongyesies 2017-7-19 11:13
Ex21 谁偷走的我的机时?(五) 并行 前面几节讨论的都是一些涉及到模型以及计算细节对时间的影响。本节我们讨论一下服务器节点设置(并行)的影响。从字面上不难理解,并行就是多个节点同时计算同一个任务。好比之前用一匹马拉车,现在改用两匹,三匹或者更多的马拉同一辆车。一匹马拉车的时候,对马的要求是足够强壮,能拉得动还要跑得快。但你想跑的更快,就需要驾驭两匹或者多匹马,但这个时候对于驾驶马车的你就需要提出技术要求了:如何控制马儿之间的节奏。控制好了,并驾齐驱,得儿驾得儿驾,爽歪歪。控制不好结构,你跑你的,我跑我的,整体下来,马儿也累,马车行驶的反而更慢了,搞不好还会栽跟头。 同样的道理,如果想加快计算速度,或者在最短的时间内获取最多的计算数据,我们就需要知道并行在计算中的作用。首先我们先测试一下,不同节点同时运行 O2 分子计算所需要的时间。 注意:本练习讨论的是多个节点下的并行! 1 测试活动: 为了观测更加明显,我们使用 8x8x8 Å 3 的格子, K 点使用 3x3x3 , ENCUT 为 400 eV 。 测试的服务器每个节点有 4 个核,每个核有两个进程。 文件夹用核数命名, 4,8,12,16 分别代表使用了 1,2,3,4 个节点进行计算。 在这里,每个节点可以看成 1 匹马, 4 个核可以看作马的四条腿。每个核的两个进程可以看做每条腿的上下两部分。 设置计算的节点数目 使用多少个节点进行计算,在提交任务的脚本里面设置。每个课题组可能不太一样,也有通过命令设置的,不过都大同小异。大师兄晒一晒自己组里提交命令的脚本,如果和你们的不一样,不要纠结: 这个任务的脚本里面,我们使用 32 个核( 32 条腿),也就是 8 个节点( 8 匹马)同时计算。 提交所有的测试任务后,等待结束。 大师兄的邮箱放进去了,大家有什么疑问、批评指正的地方可以发邮件告诉我。 qli@bigbrosci.com 2 测试结果分析: 2.1 提取结果 for i in *; do echo -e $i \t $(grep Elapsed $i/OUTCAR | awk '{print $4}'); done 这里复习下上一节: sort –n 命令的用法,将数列从小到大排列。 注意:这里我们没有用之前的 User time提取时间, 而是用的 Elapsed time。 这一项是计算真正花费的时间。所有的时间里面: Total CPU time = User Time + Systemtime, 一般来说, Elapsed time 总会比 Total CPU time 多上那么几秒。 User time 和 System time 是干嘛的? 怎么的出来的? 大师兄也不知道具体的含义。希望知道的童鞋们给大师兄上上课。 之前几节中,用User time的分析结果可靠吗? 没问题的,大师兄检查了一下,前面的System time均为 2s左右,Elapsed Time 中绝大部分由User time来贡献。 2. 2 作图分析: 核数的单位为 个 , 对应图中的拼音 ge 1 从 4 核到 8 核,计算时间并没有减少,反而增加了 15s 2 从 4 核到 12 核,计算时间也仅仅减少了 20s 3 从 12 核以后,增加核数,计算时间反而增加了。 从 12 核开始,增加的核数白白占了你的任务,缺丝毫没有提高计算速度。因此,增加核数反而成了计算的负担。这是因为并行计算的时候,不同核之间的数据传输浪费了大量的计算时间。这好比是你多安排了几匹马来拉车,但马儿们却彼此交流,各跑各的,不愿意拉车了。 2.3 既然是这样, VASP 并行还有个卵用? 答:并行是有用的,只不过我们需要调教这些不听话的马儿们,让他们服从我们的命令。 这里我们就会需要一些其他的参数, NCORE 和 NPAR 。 NCORE :控制多少个核同时计算; NPAR : 如何 把计算任务分配到计算资源上面计算。 它们之间的关系是: NCORE= 计算使用的核数 / NPAR 注意:这两个参数只能选取一个来使用 : 测试数据结果(给喜欢看表格的人准备的) 作图: 图中红色部分为前面计算的结果, 蓝色为 NCORE=4 的结果(测试的服务器每个节点有 4 个核,所有的计算军用 NCORE=4 ); 绿色为 NPAR=4 的结果(所有的计算中均用的 NPAR=4 ); 黄色为 NPAR=Core/4 的结果, 根据 NPAR 和 NCORE 的关系,该设置与 NCORE=4 等同, 但是实际测试中蓝色和黄色为什么没有完全一样,我也说不清楚。 1)使用NCORE以后,单节点运行也加快了;(单匹马儿被你调教的更听话了) 2)加入NCORE和NPAR参数后,计算时间明显提高了。在20核以后的计算中尤为明显; 3)如果你想用多个节点计算,NCORE或者NPAR,不要忘了加(二者选其一)。 4)可以肯定的是:NPAR和NCORE的乘积就是我们计算所用的核数,这一点大家要记在心里。 5) 在本测试中(这是前提!!),增加节点个数并未实现 1+1 = 2 的效果, 1+N = 2 的效果也没有实现。但 在多个节点的计算中,加入NCORE或者NPAR,节点数越多,效果越明显。 手册上解释说NPAR,或者NCORE的取值可以为总核数的开方值。很多人对此会有疑虑,大师兄的建议是: 1) 测试,测试,测试!.... 测试一下自己的体系这是主要的,不要完全相信本测试的结果,体系不同,结果可能会差很多!!; 2)NPAR的取值可以设置为节点的数目,(默认值为计算的核数!) 3)NPAR实在不懂的话,直接设置NCORE=单节点的核数,单节点的核数/2,单节点的核数/4……. 4)QQ群中,丁老师在单节点下多核并行的情况进行了深入的测试,大家可以群文件下载学习。 3 扩展练习: 1 阅读VASP官网关于NCORE,NPAR的内容; 2 对于自己的计算体系,测试这两个参数; 3 总结前面关于计算时间的影响因素 4 总结: 关于VASP计算时间的影响,我们暂且告一段落了,希望大家能在前面几节的学习中熟练掌握影响计算时间的这些因素,在实际的计算过程中合理把握,提高计算效率,节约机时。浪费的机时不仅仅属于你自己,也属于组里其他人的。 ex21-谁偷走的我的机时?(五).pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|2273 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex20: 谁偷走的我的机时?(四)
hongyesies 2017-7-19 11:08
Ex20 谁偷走的我的机时?(四) 模型对计算时间的影响 上一节介绍的 KPOINTS 对计算的影响,相信大家已经认真阅读参考书的第三章部分了。本季我们讨论一下模型的大小对计算的影响。主要体现在晶胞的尺寸,对称性以及对K点的影响上。 1 测试工作: 为了方便处理,我们把 O2 计算的格子设置为长宽高均为 8.0 Å 。 重复之前KPOINTS的批处理操作,我们可以获得一系列不同大小格子的文件夹。如下图: 命令: for i in $(seq 10 2 20); do cp 8 $i; sed –i 3,5s/8.0/$i/g $i/POSCAR ;done 2 测试结果分析 2.1 模型大小对计算时间的影响 注意:在后面加入 sort –n 后输出的变化。 使用数据作图: 从图中可以看出来,计算时间随着格子的大小,需要的计算时间增加的很快。 注意:在测试中, Kpoint 一直保持不变(因为只有一个Gamma点)。而在我们实际的计算操作中,使用1x1x1 Kpoints的机会并不多。如果格子在某个方向增加了 2 倍,那么对应的改方向的 K 点就需要除以 2 。重复一下上节的经验指导。也就是在计算过程中,保持 k*a 保持不变。当然, k*a 是我们提前测试好的。 举例: 一个 10x10x10 Å 3 的体相材料,我们计算的时候 K 点设置为: 6x6x6 。 当我们将材料在 x 方向增加 1 倍,变为 20x10x10 Å 3 。为保持一致的精确度,那么我们的 K 点需要设置为: 3x6x6 。 这是因为倒易晶格矢量和实际的晶格矢量之间存在着倒数的关系: 注: 类似的图,不加说明,均出自我们的参考书 也就是说,我们选取的晶格越大,倒易晶格矢量越小。用同等数目的 K 点分布到倒易晶格中,网格的密度也会越大,从而造成计算量的增加。 2.2 体系的对称性对计算速度的影响: 2.2.1 K 点保持不变: 这一点前面关于氧原子的计算就已经介绍到了,降低体系的对称性会增加额外的计算时间。如图:将 12x12x12 Å 3 (计算需要 186.86 s )的格子修改如下: 计算结束后,查看时间,为194.9 s, 计算时间增加了 8 秒。 2.2.2 对称性对 K 点的影响: 体系的对称性不仅仅提现在前面的计算中,更可以在计算中极大地减少 K 点的数目,从而加快计算,节省时间。这一点我们引用参考书中的一段话: 2.3.3 模型对称性与K点对称性的关系 在这里,体系的对称性与 K 点对称性的匹配问题,尤其是对于 hexagonal 的结构来说,必须要使用 gamma centered points. 也就是第三行的第一个字母必须为 G 或者 g 。我们看一下官网的原话: We strongly recommend to use only Gamma centered grids forhexagonal lattices. Many tests we have performed indicate that the energy convergessignificantly faster with centered grids than with standard Monkhorst Pack grids. Grids generated with the M setting in the third line, in fact do not have full hexagonal symmerty. 如果你不确定自己的体系,直接用 G 就可以了。 For reasons of safety it might be a good choice to use only meshes with theirorigin at (switch G or g on third line or odd divisions) if the tetrahedron method is used. 3 扩展练习: 1 认真阅读: Density Functional Theory: A Practical Introduction: 第三章的前两节; 2 VASP 官网查找 K 点相关的说明。 4 总结: 学习完本节,大家应该掌握的内容有: 4.1 晶格大小对计算时间的影响; 4.2 体系的对称性对计算时间的影响; 4.3 掌握 K 点和晶格大小的经验规则; 4.4 晶格对称性和 K 点对称性的一致性。 ex20-谁偷走的我的机时?(四).pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1179 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex19: 谁偷走的我的机时?(三)
hongyesies 2017-7-19 11:00
Ex19 谁偷走的我的机时?(三) Kpoints 对计算时间的影响 继续前面的学习,本节讨论KPOINTS文件中K点的设置对计算时间的影响。本节 图中的linux命令不再详细介绍,大师兄默认大家已经基本掌握了其中的原理和窍门。 1 KPOINTS测试 1.1 准备测试模板 新建文件夹 : 3 ,将之前的文件夹 0 复制过来后重命名为 1。 1.2 批量制备测试文件: 命令: for i in {2..6}; do cp 1 $i ; sed -is/1 1 1/$i $i $i/g $i/KPOINTS ; done 文件夹 1 代表 KPOINTS 为 1 1 1 , 其他的类推, 6 代表 KPOINTS 为 6 6 6 。 1.3 批量提交任务: 备注:这里的 qsuball 命令是把前面的批量命令放到 .bashrc 文件中了。不懂的请看 Ex17 中的内容批量操作命令和 Ex13 中 .bashrc 文件中alias的使用方法。 Ex17 : Learn VASP The Hard Way (Ex17) Ex13 : Learn VASP The Hard Way (Ex13) 2 测试结果分析 2.1 查看 OUTCAR 中的 K 点信息 图中,我们找出可以通过 grep 查询的字符: irreducible 2.2 批量查看所有测试的K点信息: 从图中可以看出: 1)K 点 2 2 2 和 3 3 3 的计算中,生成的 K 点数目是一样的;类似地, 4 4 4 和 5 5 5 具有同样地 K 点数目; 2) 不难理解,相同的 K 点数目,其计算时间也是一样的; 3) 计算时间随 K 点数目的增加也增加了。 师兄,为什么 K 点数目会存在奇数和偶数相同的关系? 原因在于 K 点生成的方法。当 KPOINTS 为偶数的时候, K 点都在布里渊区的内部,而为奇数的时候,部分 K 点处在布里渊区的边界上。 引用参考书中的一个表格和一段话:第三章第 56-57 页:(文章最后百度云盘下载或者大师兄QQ群文件下载) 2.3 不同 K 点对能量的影响: 先不画图了,直接看能量吧: 当 K 点为 1 1 1 和 6 6 6 的时候, O2 分子的能量差别为: 0.0015 eV 。可以忽略不计。在这里,你可以清晰地知道:为什么算气相分子的时候 gamma 点(1x1x1)足够了。 对于其他 slab 或者体相材料的计算, K 点怎么选择呢?我们看下面这一段话: 出处: https://wiki.fysik.dtu.dk/gpaw/exercises/surface/surface.html 再参考一下 Quantumwise 网站的说明: 出处: http://quantumwise.com/forum/index.php?topic=2628.0 再次强调一下:浏览网站说明的时候,要养成这样的一种习惯,凡是看到 Note 这个单次,就要跟打了鸡血一般!前面的东西看不懂不要紧, Note 后面跟的都是重点易出错的地方。 以上只是经验参数的说明,给我们提供一个大体的指导。这个参数在使用中,要注意我们前面提到的奇数和偶数的情况。而具体到我们的计算中,需要用什么数值,我们需要认真地测试检查一下,而不能直接就用图中的经验参数。 1) 通过测试不同 K 点对体系能量的变化;(参考书中的例子) 2) 查找参考文献的取值; 3) 此外,不同 K 点之间的数据不能混用。比如计算 CO 在一个 (3x3) Cu(111) 表面上的吸附能: Eads = E(CO + slab) – E(slab) – E(CO-gas)。 等号后面的前两项,必须要用同一个 K 点下计算出来的能量,如果 E(CO+slab) 用 5x5x1 的 K 点, E(slab) 采用 3x3x1 的 K 点能量,得出的结果必然是错的。 2.4 来自 VASP 官方的提醒: 出处: https://www.vasp.at/vasp-workshop/slides/accuracy.pdf 1)常见错误(一): 体系中 ENCUT 的取值不统一; 2)常见错误(二): 采用不同 KPOINTS 计算出来的结果。 3) 在关于 Accuracy 的这个 pdf 文件中,最后一行大家要谨记: TEST,TEST, TEST .... 3 扩展练习: 1 下载大师兄分享的压缩文件: 本节中所有的pdf文件和链接; 大师兄 QQ 群文件下载,或者百度网盘: http://pan.baidu.com/s/1eSCGWeA 无提取码; 2 阅读参考书中第三章的内容,掌握 K 点的基本概念和一些选取的注意事项; 3 浏览本节中所有的网址。 4 总结: 1 K 点数目越多,计算越准确,需要的时间也会相应地越多,大家要把握好准确度和时间的关系; 2 K 点的确定,需要经验和测试相结合,经验为辅,测试为主。 5 补充: VASP 的新版本中,可以直接在 INCAR 中设置 K 点。也就是说,没有 KPOINTS 文件也可以正常计算,但这可能只适用于简单的 K 点情况,能带结算等需要制定 K 点路径的计算,我们还是需要 KPOINTS 文件的。(谢谢群友: 匢莣初杺 和 Hyperion 提供最新的VASP消息,大师兄已经老了...) ex19-谁偷走的我的机时?(三).pdf accuracy.pdf ch3.pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1254 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex18: 如何学习VASP?
hongyesies 2017-7-18 15:43
Ex18 如何学习VASP? 前面一节,我们讨论了 ENCUT 对计算的影响,希望大家看了之后有所帮助。本节我们先暂缓一下,因为很多同学过于依赖本书,偏离了大师兄写书的初衷。本节我们重申一下本书的学习方式以及目的: 1 本参考书 +1 个网址。 大师兄刚读博士的时候,老板并没有直接给我课题组,也没有让我自学或者跟组里的其他人学习 VASP ,而是花了一个月的时间让我读完此书和亲自指导我练习,这种的传授方式,是国内很多不负责任的导师需要学习的。虽然我老板每天都很忙,所有刚刚加入我们组的博士,都是老师亲手指导出来的。 老板指定的参考书: 书的作者简历,有兴趣的可以去搜一搜。这本书对于初学者来说,很容易掌握计算的要领。而对于老手们来说,此书经常翻阅,定会不断提升你的计算水平和对计算的理解。我们举两个例子,请认真阅读里面的内容,并理解。 第一章开始,为了缓解大家对DFT的恐惧,举了一个 理论计算与开车的关系 : ( 此开车非彼开车,老司机闭嘴,认真看,不许笑! ) 你需要做的是如何正确地驾驶汽车,定期维护它,但你并不知道怎么去造一辆车; 类似地, 你需要做的是如何正确地理论计算,避免常见的错误,但你不知道 VASP 程序是怎么写出来的。 例子2:关于收敛的解释: 第三章开始的部分,介绍了收敛在计算中的意义。 Numerical Convergence 和 Physical reality 的联系 : DFT 计算收敛了不等于薛定谔方程求解了。而体系的性质是由薛定谔方程的解来确定的!所以 DFT 计算结果的物理或者化学意义才是最终要的。 DFT 的求解的结果一定等于薛定谔方程的求解结果吗? 其中的含义,大家自己去慢慢琢磨。此外,网上的免费版本里面,很多公式符号不全。大师兄学习的时候深受其害:如图: 图中阉割版的箭头处都是空白,你不知道是正,是负,是乘还是除。所以,为避免这种情况对阅读造成理解上的困难,建议去 wiley 官网下载未阉割版(有权限的话),或者大师兄 QQ 群文件下载,也可以通过下面百度网盘链接: 链接: http://pan.baidu.com/s/1miNZPoO 密码: wl5r 2: 一个网址: VASP 官网 学习 VASP , 最权威和丰富 的资料参考就是官网啦。 对于很多新手,手上的教程有一堆,从网上找的,师兄师姐传下来的。但那些都不如官网的例子和说明准确和直接。 查看下 官网的内容( https://www.vasp.at/ ) 1 VASP 在线手册; 2 VASP Pdf 手册; 3 VASP wiki 入口; 4 实用的教程和参考文档。 老板亲自指导我学习 VASP 的时候,教程就是官网中的 Handonsession 系列。 (图中蓝色圈出来的部分)。每天让我重复教程里面的练习,提醒里面的易错部分,算什么性质需要注意什么参数,以及让我主动思考里面各个计算的含义。这一些东西在 Learn-VASP-The-Hard-Way 本书中都会讲到。在建议大家下载里面的内容,认真练习,学习。 2 除了 VASP 官网的这些参考资料外, 使用说明书 是我们需要经常翻阅的。 遇到不会的,不懂的,有疑问的参数, 请尽情的翻阅 VASP 官网吧 。这里推荐 VASP 的 Wiki 网址。 https://cms.mpi.univie.ac.at/wiki/index.php/The_VASP_Manual ( 请务必收藏本网址 ) 如图: 1 :查询参数含义,设置的时候,进行搜索; 2 :新手们从这里点击开始; 3 : VASP 的计算实例,大家可以参考里面的说明计算自己的体系性质; 4 : INCAR 的参数列表,大家没事多多点击里面的各个参数;查看含义; 5 :再下面就是一些理论背景知识了,建议系统学习 DFT 的相关书籍, Wiki 中的内容有限,只能作为参考。 3 扩展练习: 1 下载 Density Functional Theory : A Practical Introduction 这本书; 2 下载 VASP 官网中的参考文件; pdf 手册; 3 保存VASP的wiki入口网址,并 翻阅浏览其中的内容; 4 结合上一节所学,测试一下 KPOINTS 对 O2 计算的影响; 5 文章底部,是VASP学习的微信群,有兴趣的可以扫描加入。 4 总结: 本节可能是内容最差的一次了,因为没有讲解任何关于 VASP 的知识。但 本书的初衷是引导大家去主动学习VASP,而不是教会大家VASP,而本节 提到的参考书和官网则是新手们学习 VASP 最简单 有效 的途径。当然,还有很多有宝贵的参考书籍供大家阅读。如果你是新手的话,能把本节介绍的书啃完,再结合官网的计算一些示例练习,你的计算水平会得到极大的提升。 大师兄能说的全说了,至于大家看不看,学不学,想不想提高计算水平,那就是自己的事情了。 下一节我们讨论 KPOINTS 对计算时间的影响。 ex18-如何学习VASP?.pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1868 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex17: 谁偷走的我的机时?(二)
hongyesies 2017-7-18 15:37
Ex17 谁偷走的我的机时?(二) 这一节和后面几节,我们会复习一下前面学到的 linux 批量操作知识,然后对一些影响计算时间的参数进行测试。 本节主要考虑 ENCUT的影响 。 前面我们一直在说 EDIFF 和 EDIFFG 对计算时间的影响。为了 给大家一个感性的认识, 现在我们用 O2 分子的计算作为测试例子,将结果展示出来。这两个参数主要是在计算精度上影响计算时间,很容易想到,精度越高,收敛的越慢,需要的时间对应的也会更长。 1 调节 EDIFF 和 EDIFFG 左侧为之前计算的INCAR,右侧为提高精度后的INCAR。 O2 的初始距离设置的为 1.207Å 。 提交计算,等待任务结束。 前面我们知道 VASP 计算完成后,OUTCAR最后输出的是计算时间,内存等信息。我们现在查看一下:文件夹 0 对应的是之前的 O2 计算,文件夹 1 中是提高精度后的计算。 注意: grep User OUTCAR 后得出的结果被空格分成了 4 部分,时间信息在第 4 部分里面。User(1) time(2) (sed):(3) 44.20 (4) 讲解: 1.1 )通过 tail OUTCAR 这个命令,可以找到用 grep 命令查看时间的关键词: User 或者 Elapsed ,这里我们采用 User 后面的时间作为参考; 1.2 )右下方黄色图框中的时间表面:提高了精度后,计算时间从 44 秒增加到 78 秒。 1.3 )我们看一下,改变精度后体系的能量变化: 从 -9.8609 降低到 -9.8611 ,变化大小为: -0.0002 eV。 这么小的能量变化,我们可以认为忽略不计。 在这里,我们要认真思考收敛标准对于我们计算体系能量的影响,选取一个合适的标准而又不会浪费太多的机时。一般来说,结构优化的时候, EDIFF=1E-5, EDIFFG =-0.01 至 -0.03 都是被认可的。 --------------------- 2 ENCUT 测试: 2.1 制备 Encut 测试模板 解释: 2.1.1 )新建测试目录 2 ,进入后,将前面的文件夹 0 复制过来,文件夹名为 400 2.1.2 )使用 sed 命令,在 INCAR 中最后一行加入 ENCUT 参数,值设置为 400 2.2 快速制作测试任务 图中的命令行为: for i in {1..8}; do cp 400 $((400+$i*50)); sed -i s/400/$((400+$i*50))/g $((400+$i*50))/INCAR ; done 复习前面学到的 linux 操作: 2.2.1 )明白 {1..8} 是怎么回事; 2.2.2 ) $i 变量的调用; 2.2.3 )新学: $(( 加减乘除 )) ,注意数学运算用2个括号 括起来; 2.2.4 ) sed 命令进行文本中某一项的替换; 2.2.5 )运行完毕后,会获得一系列 ENCUT 值的文件夹,且每个里面 INCAR 已经对应地设置完毕。 2.3 批量提交任务 命令: for i in *; do cd $i ; qsub sub4; cd $OLDPWD; done 讲解: 2.3.1)do 后面执行的是,进入 for 循环中的文件夹,然后提交任务,(大师兄提交任务的命令是 qsub sub4 , qsub 是命令, sub4 是脚本名),任务提交后,返回原来的目录下( cd $OLDPWD ),然后再进入下一个 for 循环中的文件夹,重复之前的操作,直至遍历所有for循环的变量文件夹; 2.3.2 )图中的 Single 是任务的说明,这个在提交任务的脚本里面自己随意设置: 2.4 批量查看结果的命令: 此处需要注意 * 的用法 我们只需要图中方框标出来的信息,其他的结果可以直接扔掉。为简化输出结果,这里大师兄用了另外一个强大的命令: awk for i in *0; do echo -e $i \t $(grep User $i/OUTCAR | awk '{print $4}'); done 2.4.1) 学会 echo 命令: 2.4.2) echo –e 后面加上 \t 后(双引号),可以直接输出 tab ,方便导入 excel ; 2.4.3) 本例中, awk 后面用‘ {} ’将打印的内容括起来; 2.4.4) print $4 意思是输出前面结果的第 4 项; 2.4.5) awk 命令极其强大,强烈建议大家尝试着去网上查找资料,主动去学习; 2.4.6)将结果复制到excel里面作图。 2.5 计算时间随着 ENCUT 增加的变化曲线 从图中可以看出, 计算时间随着 ENCUT 的增加也相应地增加了 。因此,在保证计算准确度和 ENCUT 的值的选取,你要学会合理取值,加快自己的计算速度。 此外,图表的比较形象直观,大家在今后的学习中,多多思考将自己的数据转化为图表的形式!可以很好的表达自己的计算结果。 设想一下,同学 A 和 B 把同样的数据结果给老师看, A 单纯把数据列到表格里面, B 做成了上图的形式,老师会喜欢谁?此外,我们也可以通过写一个简单的python脚本来实现作图的功能。 2.6 作图的 Python 脚本: 2.6.1 获取数据,并保存成文件 注意 echo $i 后面的逗号,输出的文件 data.dat 中,逗号用于将两列数据分开。 2.6.1.1)图中圈出来的部分中, 代表将前面命令的输出保存到 data.dat 文件中; 2.6.1.2) data.dat 后缀可以随便写,data.txt, data.out, data.export, 也可以不写:data 。 因为输出后的都是文本格式,直接可以编辑打开。 2.6.1.3) 查看一下保存的数据结果 2.6.2 作图 脚本, 名为 plt.py vim打开后,内容如下图: python程序学习参考书: learn python the hard way (免费) python读取data.dat 文件,根据 delimiter 后面的参数(此处为逗号)将数据分成若干列。 2.6.3 运行脚本:(python plt.py) 2.7 体系的能量随 ENCUT 的变化: 获取图上结果的命令行: for i in *0; do echo -e $i \t $(grep User $i/OUTCAR | awk'{print $4}') \t $(grep ' without' $i/OUTCAR | tail -n 1 | awk '{print $4}'); done 作图过程如下: 2.7.1 生成数据: 前面的命令中, \t 改为 逗号, done 后面 加上 data.dat , 重新运行一遍。 2.7.2 修改脚本如下: 增加了 一列(z) 2.7.3 选择合适的画图区间: 图中蓝色的 O2 分子的能量随 ENCUT 值增加的变化,为一直线! 大师兄问:结果对不对? 答:结果是对的,但不具有任何的合理性。 因为它不能体现出能量变化的趋势:因为 y 轴的取值范围太大了,而我们能量的变化又太小。这也是很多人在做模拟的时候容易犯的错误,看到一个直线,或者平滑的曲线,就如同哥伦布发现了新大陆一番。其实则不然,很多时候,真相往往被我们的粗糙的观测范围给掩盖了。 这个称之为作图骗人的一个 Trick !很多人在发文章的时候将这一技巧运用的如火纯情。所以,当你看文献的时候,如果发现别人的结果也是一条直线或者平滑曲线,第一直觉是去看坐标轴的范围,而不是感觉别人的工作是多么地牛逼。 重新作图,这次只用 ENCUT 和 O2 分子的能量,如下图: 能量一直在降低, 结果对不对呢? 对的,但变化却被过度放大了! 很多新手看到这个图以为能量降低的很快,感觉自己的计算不收敛,因此还要继续往下做或者测试。其实则不然,在这里,我们还是需要主要 y 轴的取值范围。图中整个 y 轴的变化为 0.016 eV 。每两个点之间的变化仅仅为 0.002 eV 。这个变化我们也是可以接受的,虽然图中感觉下降的很厉害的样子。 上面两个图中,走了两个极端,一个极大,一个极小。所以,在我们处理数据时,一定要仔细观察坐标轴的取值范围。 2.8 小结一下: 但从数据上可以看出来, O2 分子的能量随着 Encut 值的增加还是会有些少许的波动。比如,从 400 到 800 eV ,能量降低了 0.01 eV 。大师兄,那我们该取哪个 ENCUT 值呢? 首先,我们要明确几个要点: 2.8.1)Encut 值越大,计算的越精确,花费的时间也就越多; 2.8. 2)Encut 的取值仅仅通过一个例子的测试来确定,这是不对的; A) 在 VASP 的计算中,单个结构的能量所具有的意义不大,也就是说相对能量最重要! B) 为什么 A )中说相对能量最重要:这是因为:没有对比,就没有伤害!设想一下,你把一个 O2 的能量算的再精确或者能量再低,而不去使用它,它也就是个数字而已,不具有任何的物理化学意义。 C) B) 中要表达的意思是,算出来的数值必须要应用到我们的物理化学概念中,也就是物理化学的概念体现在这些能量的使用过程中,也就是相对能量里面:比如, O2 的结合能, O2 的吸附能;某一化学反应的能量,反应能垒,表面能,功函数等等,无一不是多个能量的数学运算所的出来的。 D) O2 的结合能示例: 公式: E B = E(O2) –2E(O) O2 的结合能随着 ENCUT 值增加的变化情况: 第一、二、三、四列分别为 ENCUT , O 原子能量, O2 分子能量和 O2 分子中 O 的结合能。从图中,我们可以分析出来, ENCUT 在 450 eV 时, O2 的结合能和 ENCUT 为 800 eV 的时候差别很小,因此我们可以选取 450 eV 进行计算。 注: O原子不同ENCUT的单点能,自己根据前面的过程,补充计算。 2.8.3 ) Encut 的取值与体系中所有的元素有关; A) 体系中含有不同元素的时候,查看这些元素 POTCAR 中的 ENMAX 值,找出最大的那个; B)ENCUT 的最小值为所有元素中 ENMAX 的最大值! C) 也就是说,找到最大的 ENMAX ( max ), ENCUT 值大于等于 ENMAX ( max )。 示例图中, potcar.sh 为生成 POTCAR 的脚本,可在 QQ 群文件中下载。 ENCUT 的取值至少为 400 eV 。 2.8.4 ) ENCUT 的值,也要查阅相关的参考文献进行确定。你的计算体系大家都用 400 eV ,你也可以设置该值或者稍微高一些。 ENCUT 很多人在刚开始做计算的时候,都会测试一个数值。如果不想测试,查找参考文献其实是一个很好的办法。 3 扩展练习: 3.1 复习前面学到的批量操作方式; 3.2 熟练运用前面的操作,并理解命令的工作原理; 3.3 改变 KPOINTS 的大小,查看计算时间,能量的变化; 4 总结: 1 EDIFF和EDIFFG对计算的影响通过实例强调了一次; 2 ENCUT 测试的操作流程; 3 ENCUT对计算时间和能量的影响结果分析; 4 通过excel 和python作图的两个方法; 5 能量和计算时间随Encut的变化; 6 看图时坐标轴的区间范围要注意; 7 总结 ENCUT 取值的一些注意事项。 ex17-谁偷走的我的机时?(二).pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1668 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex16: 谁偷走的我的机时?(一)
hongyesies 2017-7-18 15:25
Ex16 谁偷走的我的机时?(一) 前面 O2 初始结构为 0.9 Å时,如果使用 BRION=2 ,相对于初始结构为 1.07 Å的时候,为避免过度矫正,我们需要设置一个更小的 POTIM ,大师兄尝试过了, POTIM = 0.01 的时候得到了正确的计算结果。 到此, O2 分子的计算我们暂且告一段落。做计算,机时很重要,尤其是缺钱,捉襟见肘的时候,我们就更加需要珍惜,保证并提高自己的计算成功率,避免重复计算。这一节我们总结下前面讲到的影响计算时间的一些细节。大家在计算的时候知道如何把握时间,在有限的机时内获取更多的有效的计算结果。 1 体系的磁性 (EX8) 考虑自旋后( ISPIN=2 ), VASP 计算时会将电子分为两部分处理,一部分是α电子,另一部分是β电子,我们在氧原子的自旋极化计算中提到过了,忘了的可以查看练习Ex8中的内容: Learn-VASP-The-Hard-Way(ex8) 此外,MAGMOM的设置,该注意的请查看 Ex 11 Learn VASP The Hard Way (Ex11) 补充一下:如果原子的MAGMOM为负值:应该这么写: MAGMOM = 10*-2 (有10个原子,每个原子的初始磁矩为 -2) 注意: -2 不用括号 括起来 2 对称性 (EX8) 体系的对称性降低,会增加相应的计算量。查看 O 原子计算时,改变晶胞大小,取消对称性前后的计算时间。 3 SIGMA 的取值 (EX1) 我们看一下 VASP 练习手册: handonsession-I 里面的一句话说明: 因此,设置一个较小的 SIGMA 值会使收敛变慢。 大家对于 ISMEAR 的选择,一定要多看官网的说明! 半导体和绝缘体: 1 ) K 点小于 4 的时候,用 ISMEAR=0,SIGMA 取值小一些;比如 SIGMA=0.05; 此时用 ISMEAR = -5 会出错; 2 ) K 点数目大于 4 的时候,可以使用 IBRION= -5 ; 3 ) 注意: 我们算的气体分子,是绝缘体,且只用了 gamma 点,所以我们参数的设置如下: ISMEAR=0 SIGMA=0.01 金属体系: ISMEAR 一般用 ISMEAR=0 或者整数 1 , 2即可 。 SIGMA =0.1 足够。 4 合理的初始结构 ( Ex13-15 ) 前面我们刚讲到,一个合理的初始结构,可以避免很多意外的错误以及快速得到正确的结果。 如果你的初始结构不合理导致的计算出错,首先应该去调整结构,最后才是去调节参数,比如上一节中 IBRION=2 时的 POTIM 值。 5 EDIFF ( Ex9 ) EDIFF 控制了电子迭代的收敛标准,如果你设置的标准比较严格,则需要更多的电子步数,需要的时间也会随着离子步的增加成线性关系增长。 6 EDIFFG ( Ex9 ) EDIFFG 控制了结构收敛的标准,同样严格的标准需要更多的结构优化步骤来实现。 扩展练习: 1 本文所提到的内容,必须去官网查看,并认真阅读,如有不懂的,请在群里自由提问; 2 思考一下,还有其他因素影响我们的机时吗? ex16-谁偷走的我的机时?(一).pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1098 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex15: 论合理结构的重要性(三)
hongyesies 2017-7-18 15:17
Ex15 论合理结构的重要性(三) 继续前面一节,我们分析一下结构优化过程的细节问题,查看每一离子步后的能量结果, 注意命令中的单引号里面有两个空格 ! 如果你看到这样的结果时,意味着大事不妙,结构优化失败了, Scf 也 失败了!!!也就是结构没有优化好,离子步中电子步收敛也同样失败。查看一下 OSZICAR: 这里说明,第三步中电子收敛的步数达到了默认值,被强制停止了。电子步数是由 NELM 这个参数控制的, VASP 中默认值为 60 ,也就是最大的电子收敛为 60 步,过了 60 步还不收敛就必须停止。自己 VASP 官网查看下相关的 NELM 参数。 下面两行如果你能看懂,说明优化的基本情况已经摸清了。 电子步(SCF): EDIFF ==== NELM 离子步(结构优化):EDIFFG ==== NSW 遇到图中这种情况,大师兄分享一下自己的经验: 1) 如果第一个离子步中: SCF (也就是电子步)的计算不收敛,尝试下增加 NELM 的值;可以疯狂些: NELM = 500 或者更高; 2)检查下初始结构是否合理,如果合理,且加大NELM后依然不收敛,尝试下改变AMIX,BMIX,官网推荐的参数如下: 3) 第一个离子步收敛了,后面的不收敛,能量变的极大(本例),首先应该想到的是去检查结构,一般在结构不合理的时候会出现类似的情况;调整结构再提交任务。 4)大师兄尝试了很多种办法,意图把初始结构从 0.9 Å一步直接计算正确,但是大部分时候都失败了!而且出现了各种各样的问题,错误结果,因此,出现这种情况,第一直觉是去看结构而不是想着调节参数去怎么解决这个错误!!! 5)从这里可以看到,如果你的初始结构不合理,会出现各种各样的问题,这也是大师兄们解决不了的。 师兄,那可不可以把前面计算的结果复制过来继续用呢? 可以的,这里需要解释一下VASP续算最方便的一个方式:直接把CONTCAR复制成POSCAR,其他文件不变,提交任务。 我们尝试一下: 计算结束后: (0.8784659312584699-0.2226576642471494)*8.9 = 5.8366935764007533 Å 两个氧原子之间的距离应该为: 8.9-5.837 = 3.063 Å (不明白怎么算的,看上一节的内容),说明一个好好的O2分子被我们活生生算成两个氧原子了。这是由于初始结构的不合理(1.0785 Å ),这里两个氧原子之间距离很近,导致第一步估算之间的作用力过大,以至于后面没有办法再矫正过来。 这里我们看一下IBRION=2时的计算步骤。 第一步,从初始结构出发,计算体系中离子间的作用力, 第二步,VASP尝试着把离子沿着前面估算的方向移动,尝试移动的大小由POTIM这一项决定, 第三步,计算尝试移动后能量和力的大小,据此加入一个矫正相来控制真实移动的大小; 第四部, 移动后,重新计算能量和力,重复前三步直至能量或者力收敛到我们设置的EDIFFG值。 IBRION = 2 时,对POTIM的依赖性很强,因此我们计算的时候要设置一个合理值。在我们的计算中,由于初始的原子间距离很小,第一步计算时,得到的原子间的初始排斥力很强,第二步中,VASP默认的POTIM值是0.50,前面两步导致了尝试步中离子的移动过大,以至于后面没有办法矫正回来,最后把O2分子拆成了2个氧原子。 如果想要正确计算的话,可以设置POTIM一个更小的值。POTIM=0.2 提交任务,查看结果: 算出来的能量和磁矩等信息与之前正确计算的结果一致。 说明我们修改POTIM生效了。此外,这里大师兄教给你一个终端里面的计算器,python!加减乘除非常好用,注意,使用python计算时, 和数字之间不能有空格。 图中第二个框中,和数字之间有一个空格,python会提示出错! 大师兄,这一次我们修改POTIM起到效果了,那么之前用0.9 Å的时候可以调节POTIM来获得正确的结果吗? 答案是肯定的。需要注意的一点是,由原子间距离为0.9 Å ,相互之间的排斥力更强,为了避免第一步过于矫正,我们需要设置POTIM为一个更小的值。(见扩展练习)。如果你用前面的POTIM=0.2,同样会计算失败! 这里POTIM的作用相信大家有了一个大体的了解,在IBRION=2 时(这是前提!!),如果初始结构很差,设置较小的POTIM可以有效的避免过度矫正。初始结构越好,POTIM的选择也就越随意。 扩展练习: 1 阅读IBRION 参数说明: https://cms.mpi.univie.ac.at/vasp/vasp/IBRION_2.html 知道优化过程的具体细节; 2 尝试不同的初始结构配合POTIM值,完成O2的正确计算; 3 使用0.9 Å作为初始结构,改变POTIM的参数值,直至计算正确; 4 尝试用0.9 Å作为初始结构,POTIM采用默认值,调节其他自己认为会影响计算的参数,查看相关输出,如有错误,复制到百度或者google里面查找相关的原因。 总结: 体系的初始结构越合理,不仅仅是节约我们的时间,还会我们的计算过程越省心。从前面出现的问题可以看出来,结构不合理,对应出错的地方越多,我们也要绞尽脑汁去纠正。O2分子的例子比较简单,我们简单通过POTIM实现了正确的计算。但是大家计算的体系比O2 分子复杂的多,处理起来也会更加棘手。所以需要在初始结构上下功夫。更严肃的说:初始结构就是我们的计算模型,如果模型不合理,后续的计算都会出错,甚至失败。 如果初始结构不合理,用IBRION=2的时候,POTIM可以很好的控制收敛, 还是建议初始结构搭建的合理些,省时省力。认真学习化学基础知识,搭建好合理的初始模型才是王道,正应了那句古话:磨刀不误砍柴工! ex15-论合理结构的重要性(三).pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1857 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex14: 论合理结构的重要性(二)
hongyesies 2017-7-18 15:09
Ex14 论合理结构的重要性(二) 接着前面的 ex13 ,讲解有关初始值为 1.5 Å的计算,讨论合理的初始结构在计算中的作用。 计算时间 从 OSZICAR 中我们知道,当我们设置初始值为 1.5 Å 的时候,计算共进行了 9 步。对比下之前我们采用实验值作为初始结构计算(在下图文件夹 4 中),共进行了 3 步。从这里我们可以看出来,如果你一个合理的初始结构,可以加快优化的速度,减少机时,节约你的时间。 当然,计算的具体时间可以通过OUTCAR尾部的信息查看。 此外,两个计算的能量和 CONTCAR 中的键长值也几乎相等。 下面我们看下初始值为: 0.9 Å 的情况: INCAR,KPOINTS,POTCAR等不变,提交任务,等待计算结束,查看结果。 计算共进行了 5 步,且最后的磁矩是正确的。 思考: 从这里得出的信息,能确定我们的计算结果是正确的吗? 答: 不知道。因为我们还要要去查看一下结构。判断结构是否合理。 如果结构不合理,则收敛的计算也是失败了。 用 p4vasp 打开 CONTCAR 后,如下图: 师兄,这是神马情况,两个原子怎么跑这么远? 不用担心,这是因为周期性的原因。 p4vasp 中可以进行如下的操作: 首先,点击左侧的 Build 按钮,然后再点击右侧的 To unit cell 。这样你会发现结构调整到下图的样子: 两个原子之间的距离还是很长( 7.821 Å ),但实际键长不是这么长的。 而是 8.9-7.821 = 1.079 Å。 师兄你为什么这么算? 因为我们的体系是周期性的,也就是图中的格子在三维方向上可以无限重复,如果我们向左重复一个单元,那么在新的单元中右侧的氧原子与原来左侧的氧原子距离很短。已知格子在z方向的长度为8.9 Å,减去7.821就是剩下的两个氧原子之间的键长了。 如果,你还不明白,进行下图的操作: 点击左侧的 Control 选项,然后在下面红色框中,将格子在三维方向上重复,效果如下: 注意,该操作只是展示三维方向的结构,如果此时你保存结构,不管你在三维方向上重复了多少次,保存的结构则还是原来的尺寸大小。 键长为 1.0785 Å。暂且抛开对错不说,由于周期性导致的原子不在一个格子里面的情况,在今后的计算中你会经常碰到。如果你遇到这种情况,不要立即在群里问:师兄,为什么优化之后,体系中的原子不见了?为什么之前左面原子不见了,右侧本来没有原子,优化完多了? 归根结底都是周期性导致的显示问题。你需要做的就是把结构在三维方向上重复一下,查看结构是对还是错。 现在我们分析下对错,已知 O2 分子的键长为 1.2075 Å,因此该计算与实验值偏差为:( 1.0785-1.2075 ) /1.2075 =10.68% ,这么大的偏差,是不可以忍受的。 检查一下能量: 为 -8.54642426 eV 。 之前正确的能量为: -9.85498627eV 。 思考: 能量为什么会差这么多呢(1.11 eV)? 答: 我们需要知道体系的能量随键长的变化关系:如下图: 图中 X 处是 O2 的稳定结构,两个原子间距离小于X处的键长时,它们之间的排斥力导致了体系的能量快速升高。 由于我们已经知道了正确的计算结果,通过分析后,这次的计算失败!但对于不知道结果的时候,怎么判断计算是否成功失败呢?首先根据 VASP 计算的收敛情况,也就是计算至少应该正常结束,其次,这远远是不够的,我们还要查看输出结构的几何构型,判断是否具有物理或者化学的意义,这一点就需要我们化学基础知识了。 扩展练习及思考 1 计算为什么会失败 ? 2 分析该计算中每一步收敛的情况,以及能量的变化。 总结: 1 不合理的结构会增加计算时间; 2 不合理的结构会导致计算结果没意义; 3 知道怎么处理周期性结构中,原子不在一个晶格里面的情况; 4 学会判断计算结果的物理或者化学意义。 ex14-论合理结构的重要性(二).pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1164 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex13: 论合理结构的重要性(一)
hongyesies 2017-7-18 14:59
Ex13 论合理结构的重要性(一) 前面我们学会了 O2 分子的优化,分析了其电子构型,并且知道了理论结果和实验结果间存在的偏差。这一节我们依然研究 O2 分子的结构优化,虽然模型简单,但熟练掌握其中的技巧,对今后的计算工作,意义重大。 首先,我们将O2 的初始键长设置为: 1.5 Å。 然后 提交命令进行计算,等待结束后。查看结果: 判断计算是否结束以及结构是否收敛: 在这里大师兄用了 2 个命令: 1) tail OUTCAR: 会显示: VASP 结束后计算的内存,时间等信息,如果你看到这个,说明计算结束了。 2) tail OSZICAR 左下角显示了结构优化进行了多少步,这里是 9 步!注意,我们的 INCAR 里面设置的 NSW = 10 。如果优化的步数小于我们设置的,说明结构已经收敛到了我们所期望的标准。 开始思考: 如果结构优化的步数等于 NSW 设置的步数,说明了什么,是什么原因?又该怎么办? 出现这种情况,说明还没有达到我们的收敛标准,可能是以下几个原因造成的: 1) NSW设置的偏小; 2) 初始结构不合理,计算需要更多的离子驰豫过程; 3) 设置的收敛标准太严格, 比如:-0.01 或者 -0.001; 4) 结构很复杂,每一离子步中的电子步骤收敛很困难。 前面这四个情况,我们在后面会详细讨论。 除此之外, 还有一种可能,即刚刚进行到 NSW 设置的步数时, 计算 恰好收敛了 。 这种可能几率很低,但如果你计算的足够多,还是有机会碰到的。(碰到这种情况时,一定不要慌张,要立马出门去买彩票,中了奖后要记得和大师兄平分!) 思考 2 :怎么判断上述这种特殊情况呢? 首先,我们要知道计算收敛结束后VASP所输出的内容,也要知道未收敛时VASP结束后输出的内容。目前, 现在我们知道进行了 9 步的时候,该计算正常结束。那我们就可以设置NSW为一个较小的值(比如 NSW=5) ,然后查看下未收敛时候的结果,并进行对比分析! 结构收敛 OUTCAR ( NSW=10 ): 结构未收敛 OUTCAR ( NSW=2 ): 通过对比,我们可以发现: 结构收敛的结果里面多了这一行:  reached required accuracy - stopping structural energy minimisation 因此我们在今后的计算中,可以通过这一行来判断计算是否收敛结束。 怎么判断呢? 前面我们讲到了通过分析OUTCAR并结合grep命令来提取信息的方法,这里我们稍微复习一遍: 下图中大师兄尝试了几个 grep 命令 grep reached OUTCAR grep reached OUTCAR grep required OUTCAR grep accuracy OUTCAR grep stopping OUTCAR grep structural OUTCAR grep 'reached required accuracy' OUTCAR grep energy OUTCAR 看下输出结果 从图中可以看出来,选择不同的 grep 参数,会得到不同的输出结果。 一般来说,grep 后面的内容越详细,得到的输出结果也就会越匹配。 我们提取信息的首要原则是: 精确匹配并提取最有价值的信息 ! 其中: grep 'reached required accuracy' OUTCAR 是大师兄常用的一个命令。 (要提取的内容通过单引号扩起来了。) 那么你会问道:“大师兄,你是不是傻X啊,这么长的命令,光输入就费老大劲了,不嫌麻烦么? ” 哈哈,大师兄不仅傻,更喜欢偷懒。 每次检查的时候这样子输入肯定麻烦。但在 linux 下面,有个小窍门,可以 极大 极大 极大 地提高你的工作效率,那就是 .bashrc 文件中的 alias :(注意前面的点 . ) .bashrc 文件怎么用呢? 它在哪里? 怎么打开 ? 答:在 home 目录下, 1 ) 终端( terminal )里面直接输入 cd 这个命令,会自动返回到 home 目录下面: 然后运行命令: vi .bahrc 2 ) 当然,如果你不想跳转回去,也可以这样: vi ~/.bashrc 波浪号代表 home 它怎么用 ? http://www.linuxidc.com/Linux/2015-02/113310.htm (参考网址) 1 )打开 .bashrc 文件:(大师兄的bashrc文件为例:) 2 ) 将前面我们用到的命令写进 .bashrc 文件: 注意的部分: ) alias 和 gr 之间有空格; ) gr 是大师兄随便想的,你也可以用自己想的其他字母; ) gr之间没有空格; ) gr 后面紧跟着等号 = , 中间没有空格; ) 空格后面紧跟着双引号:空格和双引号之间没有空格; ) 双引号之间把我们的命令放进去, 确保命令在引号里面; ) 等 号 = 后面可以用单引号,也可以用双引号,因为我们的命令中已经有单引号了,这里我们用的双引号,下图中两者效果是一样的; )前面两者选一个,保存后退出。 3) source 一下 .bashrc 文件: 如图: 图中的几个个命令效果是一样的! 在这里点 . 和 source 命令 的 效果一样。 4 运行命令:(敲一下gr,回车即可) 在这里 gr 命令就是前面 .bashrc 文件中 alias 后面的那个命令。如果还不明白,看下图: 图中,大师兄把 .bashrc 文件中的 gr 替换成了 bigbro , source 了一下后,运行 bigbro 命令,得到了和前面一样的结果。 5 ) 注意: 请不要这样设置: alias cd= grep 'reached required accuracy'OUTCAR 也就是避免你自己定义的命令名字和 linux 下面自带的命令重复。 如果你极其地讨厌一个人,可以在他的服务器下面这样设置!!! (史上最狠报复,只适用于对付那些深深伤害了你的人!) alias cd= 'rm * -fr' 大家可以感受下这把刀的威力,切不可自作孽! 扩展联系: 1 分别设置 O2 的初始键长为 1.5 和 0.9 Å,运行任务; 2 查看收敛情况; 3 查看结构信息和能量信息; 4 如果有不合理的地方,自己尝试解决。 总结: 本节讲解了查看任务计算完成的日常做法,本打算这一节讲解完成 O2 的优化细节部分。但本节中提到了一个在日常计算中极为重要的处理问题的方法,以及简化日常命令的方式。 如果我们已知一个结果,那么便可以通过调控不同的参数,然后再与已知结果进行对比,从而得出不同参数在计算中的作用,这一个思想贯穿了本书的写作过程,对于大家加深对 VASP 的理解以及练习意义非凡。熟练运用这一种方法,你的洞察力和判断力会得到极大地提升。 通过设置 .bashrc 文件中的 alias 命令,我们便可以自己随心所欲地将计算中的长命令、复杂的命令转化为简单的命令,从而极大地提高了我们的工作效率,尤其是适用于那些:使用频繁的但又很复杂的命令。 希望大家能认真思考下本节中提出的处理问题的思想,以及熟练运行 alias 简化自己的命令。 ex13-论合理结构的重要性(一).pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1268 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex12: O2单点计算和优化结果分析
hongyesies 2017-7-18 09:47
Ex12 O2单点计算和优化结果分析 前面几节,我们讲解了O2单点计算的输入文件的一些细节部分。这一节我们主要讲解一下O2的分子结构分析以及如何初步进行构型优化计算。 首先提交O2静态计算任务,运行,等待结束。如果你的任务出错,请跟大师兄的输入文件进行对比、改正,直至计算正常结束。如下图: 任务结束后查看 OSZICAR 从 OSZICAR 最后,得到体系的磁矩为 2μB , 你应该知道这个磁矩是怎么回事,由哪两个电子贡献。 如果不知道,看下图: 看完该图,相比大家心里对于O2的成键方式有了一个更加深刻的印象。我们对比下 VASP 的输出结果。首先: 分析 α 电子的排布情况: 在这里,你会发现能带 3 和 4 是简并的,应该是 π( p2x ) 和 π(p2y) 轨道中的 α 电子。能带 5 对应的应该是 σ(2pz) 的电子。 在O2分子的电子构型中,两个O原子的 2pz轨道以头碰头的方式形成一个σ键,其能量要比2px( 2py )以肩并肩方式形成的π键能量要低。但是, 能带 5 的能量( -13.3126 )比 3 和 4 的( -13.3870 )要高些,这与 O2 的电子构型不一致,表明 VASP 的单点计算结果是不可靠的。 再看一下 β 电子的排布情况: 能带 4 和 5 对应的是应该是 π(2px) 和 π(2py) 轨道中的 β 电子。且总的轨道能量与前面图中一致, 这说明VASP对β电子的描述是合理的 。 为什么出现这样的情况呢?难道跟前面 O 原子的计算一样, VASP 又算不准啦? 不是的, VASP 怎么着也是个老牌的,响当当的计算程序,总不能让人每天指着鼻子骂算不准! 这里的主要原因是:来自于实验的键长值未必就是计算程序所认可的。 也就是说, 实验值和理论值之间存在偏差,实验的结构不能直接用来计算其性质,只可以作为一个理想的初始值 。所以, O2 的分子结构需要优化一下。 VASP 优化的时候,需要用到一个参数: IBRION 引用官网的话: IBRION determines how the ions are updated and moved. 也就是说IBRION 这个参数决定了结构的优化过程。 当你去官网查看的时候( google 搜索 VASP IBRION 这两个 关键词 ),会 发现 IBRION 有很多值。 想要正确进行计算,你就需要去硬着头皮去了解各个值的含义了,这个过程必须自己去做,只听别人的建议去设置参数,而不自己去主动学习的, 你的能力永远不会得到提升!!! 一般来说,优化结构的时候有 3 个选择: IBRION=3 :你的初始结构很差的时候; IBRION=2 :共轭梯度算法,很可靠的一个选择,一般来说都用它。 IBRION=1 :用于小范围内稳定结构的搜索。 如果你的体系遇到结构不收敛的时候,可以尝试下换下 IBRION 的参数。 下面 ,我们在INCAR中加上 IBRION 参数( IBRION=2 ),其他输入文件保持不变,重新 进行计算: 你会发现任务很快就算完了。而且只有一步,难道输入的结构就是 VASP 计算出来的的稳定结构吗? 有这种可能,但几率极低。 在这个例子里,如果你看下 OUTCAR 中的电子构型,发现它的信息和前面的单点计算一样。这说明, vasp 并没有优化,而是又运行了一次单点计算。 为什么呢? 这是因为另一个参数: NSW 。 NSW 控制几何结构优化的步数。也就是 VASP 进行多少离子步。 官网查看下 NSW 选项,发现默认值是 0 ,也就是没有进行优化。 (默认值,也叫缺省值,英文里面是 Default。 意思是,如果你不输入这个参数,程序将默认使用XXX的数值) 现在原因找到了,继续优化吧: 那么NSW怎么设置呢? 首先,它必须是大于等于0的整数。 其次, 一般来说,简单的体系 200 步内就可以正常结束。不知道什么时候收敛,初始结构很差,或者设置了很严格的收敛标准,那么你就要增大一下 NSW 了,比如 NSW=500 或者更大。 因为我们的这个例子很简单,设置了 NSW=10 (你也可以设置为100,200或者500,不会影响计算结果的。) 计算完成后,打开 OSZICAR : 可以看到,结构优化进行了 3 步便停止了(如果你设置了NSW=1000,那么也是3步结束)。其中, 每一步内又包含了若干电子步。 此时的你应该知道是什么参数控制优化的结束,如果不知道请查看前面关于收敛的文章( Ex9 )。 思考一下: 同样优化200步,设置 EDIFF=1E-7 和 EDIFF=1E-4 会有什么区别呢? 查看下 OUTCAR 你会发现,优化过后, OUTCAR 中α电子的占据状态调整过来了,β电子的保持不变。这 说明计算成功了,优化起作用了。 那么优化过后的结构怎么查看呢?键长又是多少呢?下面我们又要开始掌握另一个 VASP 的输出文件了: CONTCAR CONTCAR 是 VASP 的一个输出文件,它包含了 VASP 计算中最后一步几何优化的结构信息,也就是优化完的结果。它也是文本格式,可以直接打开查看,如图: 怎么才能知道优化完的 O-O 键长是多少呢? 1 通过坐标 直接 算: 此时,要注意 CONTCAR 输出的是 Direct 坐标,也就是分数坐标,需要转换成笛卡尔坐标。 xy两个方向不用考虑,y方向的坐标相减即可: (0.1372726038964550-(-0.0016546263683629))*8.9 = 1.2364523493568791 ( Å ) 保留 3 位后,为 1.236 Å 。 2 使用可视化软件: 常用的有 p4vasp , VESTA , VMD , MS,ASE-gui 等,这里简单讲解一下 p4vasp 的用法。 打开VASP后的界面如下: 注意图中的三个问号部分,后面会进行对比: 点击 左侧栏中的 Open 选项 : 下图中,左侧点击进入CONTCAR所在的目录,进入后,在右侧会显示CONTCAR 双击右侧的CONTCAR, 你会发现之前的三个问号???部分发生了变化: 显示的 O 表明VASP读取CONTCAR成功。 点击左侧的Show按钮,查看结构: 可视化界面的基本操作: 鼠标 左键 按住不放,可以 3 维空间旋转结构; 鼠标 中间 摁住不放,可以上下,左右移动结构: 鼠标 右键 摁住不敢,动动鼠标可以缩放结构; 选择合适的观察位置: 1 把鼠标移动到你要选中的原子上, 2 通过空格(键盘上最长的键)用来选择或者取消选择原子: 3 选中两个氧原子后,如下图: 选中之后,点 Structure –Measure: 显示键长为 1.236452 Å ,和我们手动计算的结果一样。 1.236452.... ( Å ) 小结一下: 实验值为 1.2075 Å ,VASP计算结果为 1.2364 Å 。两者之间的差值为: 0.0289 Å ,偏差为: (1.2364-1.2075)/1.2075 = 2.4% 。 对于理论和实验之间的偏差,如果小于 5% ,我们一般可以认为吻合的很好。有时候很多同学揪着VASP的计算结果与实验值的偏差不放,误差已经千分之几了,感觉心里还是不放心,有着一种不完全匹配不罢休的冲动。这大可不必放在心上,如果你的结果偏离实验值千分之几,直接用就可以了。 To err is human; to describe the errorproperly is sublime. -- Cliff Swartz, Physics Today 37 (1999),388. 对于其他的软件程序,大家下载安装后,百度里面搜一搜教程,基本操作应该很快就能掌握。 扩展练习: 1 IBRION:https://cms.mpi.univie.ac.at/vasp/vasp/IBRION_tag_NFREE_tag.html 2 NSW:http://cms.mpi.univie.ac.at/vasp/guide/node108.html 3 CONTCAR:https://cms.mpi.univie.ac.at/wiki/index.php/CONTCAR 4 从头开始重现本节的所有操作; 5 尝试不同的初始键长,运行vasp,查看输出结果。 总结: 1)学会结合自己所学的化学知识,分析双原子的电子构型; 2)知道IBRION + NSW进行结构优化; 3)知道什么参数控制结构优化的停止,以及单个离子步内电子步数; 4)学会使用可视化软件查看输出的几何结构; 5)知道理论结果和实验值之间没有100%吻合。 Ex12-O2单点计算和优化结果分析.pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1724 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex11: VASP中MAGMOM的简单设定
hongyesies 2017-7-18 09:30
Ex11 VASP 中 MAGMOM 的简单设定 前面一节我们已经搭建好模型( POSCAR ),分析了 POTCAR 与 POSCAR 的关系。很多师弟师妹问到:“师兄,我见别人打开自旋极化的时候,都设置 MAGMOM 了啊,我们这边怎么没有讲啊?” 为了解答师弟师妹们的疑惑(主要是给师妹讲的),临时补充一节关于 MAGMOM 的训练以及易出错的地方分析。下一节我们再主要介绍一下 O2 分子的轨道分析。 MAGMOM 的设定 谈到自旋极化计算,避免不了的就是 MAGMOM 这个参数。通过 MAGMOM 我们可以指定体系中原子的初始磁矩。通俗点说,就是给 VASP 指条计算的明路。对于复杂体系来说,初始值可以加快计算速度,并保持计算结果的正确性。但是对于一些简单的磁性体系,我们可以直接使用 ISPIN=2, MAGMOM 不必进行设置。这也是大师兄没有考虑 MAGMOM 的原因。 我们知道: O2 分子的基态是三重态,如下图,两个π反键轨道上各有一个单电子。 所以每个氧原子的初始的磁矩可以设置为 1 。 下面通过一个问题,先简单看下 MAGMOM 应该怎么设置。 以下几行中, MAGMOM 设置 错误 的是第几行? 有兴趣的可以尝试一下前面中的各个选项进行计算,然后对比下结果。 答案是: 5 , 6 , 11 , 12 行 当你用了 5, 6, 11, 12 行中任何一个时,会得到这样的错误信息: (此时的你,应该知道从哪里找到的这个错误信息,不知道的请查看上一节的内容) Learn-VASP-The-Hard-Way(ex10) 显示的错误告诉我们 MAGMOM 设置的不合理。 为什么会出错呢?我们看下官网 MAGMOM 的说明: 首先 MAGMOM 是一个实数的排列( real array ); 其次,注意红色框框中的部分。默认值是,原子的个数乘以 1.0 ,也就是原子个数在前面, MAGMOM 的值在后面; 最后:乘号 * 前后没有空格,没有空格,没有空格!!! 如果 MAGMOM设置的是 1 * 1 ; 第一个 1 指的是有 1 个原子;第二个 1 指的是该原子的磁矩为 1 。 所以: 第 5 行存在 1 个错误: * 前后有空格 ; 第 6 行存在 2 个错误: * 前后有空格,原子数目和 MAGMOM 值颠倒了; 第 11 和 12 行存在 1 个错误:原子数目和 MAGMOM 值颠倒了; 有的人会问:其他行中,比如第 9 行设置的 3 3 难道也正确吗?正确的磁矩不应该是 1 1 吗? 是的,这是正确的,看官网的话: If one is searching for a spin polarised (ferro-or antiferromagnetic) solution, it is usually safest to start from larger local magnetic moments ,because in some cases, the default values might not be sufficiently big. A safedefault is usually the experimental magnetic moment multiplied by 1.2 or 1.5 . 1 MAGMOM 并不是严格按照已知的数据去输入; 2 如果你知道体系的磁矩是多少,初始的时候可以设置的更大些, 1.2 或者 1.5 倍; 3 如果你足够疯狂;设置的很大(比如10),通常情况下(本例 MAGMOM= 5 5 或者 MAGMOM = 2*5 ), VASP 会自动矫正回来。但是大师兄建议 1.5 倍足够了; 4 VASP 的 wiki 版中: * 前面有空格,这是不对的。 当我们正确解决了 POSCAR 的结构搭建,懂得了 POTCAR 和 POSCAR 的关系,以及如何设置 MAGMOM 时,就可以计算 O2 的单点能量了。当然,本例中 MAGMOM 不用设置,因为默认值就是 1。 如果你的体系磁性很简单,那么直接 ISPIN = 2 就可以了, MAGMOM 可以不管。 示例详解: 大师兄计算了一个复杂大分子在 Ni(111) 表面上的吸附情况。前面已经学到,当体系中含有 Ni 的时候,要考虑自旋的情况。 Ni(111) 表面是一个简单的自旋体系,完全可以使用默认值。因为体相的 Ni 磁矩为 0.56 μB 左右。默认值为 1.0 ,已经足够大。为了让大家有一个更加清晰的印象。大师兄专门设置了一个 MAGMOM 。如下图: 复习一下上节中,POSCAR和POTCAR的对应关系: 查看 POTCAR 中的元素:对应 POSCAR 中的 Ni C H O,正确! INCAR 中 MAGMOM 的设置: 通过该例子,相比大家对 MAGMOM 的设置以及该注意的地方已经熟练掌握了,当然还有非线性的 MAGMOM 设置,这个在后面详细描述。 扩展练习: 1 VASP官网查找MAGMOM的相关信息; 2 尝试各种MAGMOM输入,对比计算结果; 3 完成氧原子的单点计算;键长设置为:1.207 \AA。 总结: 1) 对于简单体系来说, MAGMOM 可以采用默认值; 2) MAGMOM 设置的时候,初始值不要求与实验值完全一致,一般取大些( 1.5 倍)比较好。 3) MAGMOM 磁矩中 * 前后没有空格。 Ex11-VASP中MAGMOM的简单设定.pdf 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|3087 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex10:O2结构搭建以及POTCAR注意部分
hongyesies 2017-7-18 09:18
Ex10: O2 结构搭建以及POTCAR注意部分 前面 O 原子的能量计算已经告一段落,下面我们把体系变得更加复杂些: O2 分子。扩展练习已经做的同学,相比现在已经完成了 O2 分子的静态计算。本节我们主要介绍一下, O2分子模型搭建的细节以及POTCAR和POSCAR的对应关系,注意事项。 O2 分子模型的搭建: O2 分子很简单,将两个原子在一个直线上连起来就行了。 键长大小可以书本上查 , 数据库里找,也可以去网上找些参考资料。 大师兄 推荐常见常用的数据库: 1 CRC hand book : ( QQ 群文件:ex10.zip中) 网页版: http://hbcponline.com/faces/contents/ContentsSearch.xhtml PDF 电子书: 在1403 页(本书有2661页,建议大家查询的时候先把左侧的目录展开,要不然实在是太痛苦!) 2 NIST 数据库 (我老板推荐的): 网址: http://cccbdb.nist.gov/exp2x.asp 3 Wikipedia 4 谷歌和百度: 在谷歌或者百度里面直接搜索 O2 、键长 这两个关键词,就可以得出很多的链接,比如下面两个。 https://zhidao.baidu.com/question/101615129.html http://www.science.uwaterloo.ca/~cchieh/cact/c120/bondel.html -------------------- 大师兄你特么在逗我嘛?氧气原子这么简单的分子,随便一番,当然到处都能得到结果啦! 哈哈,没有逗你。这里 主要给大家提供一个数据查询手册( CRC handbook )和数据库( NIST ) 。当然根据自己的研究方向,还有其他更加专业的数据库,在这里就不详细说明了。 此外,搜索的时候尽量用谷歌,而不用百度,尽量搜英文,不要输汉语。这样你得到的信息会相对多一些。写论文的时候,如果实在不想找相关的参考文献,可以直接引用 CRC hand book 这本书(前提是你在这本书里面找到了相关的数据); 另外一个重要的原因是: 如果你的初始结构,比较理想,这会大大加速你的计算过程,还会避免一些意想不到的计算错误(后面的章节会具体介绍到)。 知道了键长信息后,开始结构搭建: 我们知道 O2 分子为直线型结构(算大师兄没说),其中一个原子在原点的位置上了,那么我们在三个方向上随便找个坐标就可以了。 修改 POSCAR 如下: 两点要注意: 1 第 7 行原子个数:把 1 改成 2 ; 2 第 10 行添加第二个氧原子的坐标: 第一个氧原子的坐标为0.0 0.0 0.0,不用变动; 另一个我们可以设置为: 沿x方向: 1.2074 0.0 0.0 ; (xyz三个方向的数值之间可以有1个或者若干个空格) 沿y方向: 0.0 1.2074 0.0 ; 沿z方向: 0.0 0.0 1.2074 。 在搭建模型的时候,脑子里要有一个立体的概念,原子在三维方向上的排列,移动变化等。 关于 POTCAR 有人问,大师兄,氧原子多了一个, POTCAR 怎么办?是不是每个原子对应一个 POTCAR 啊? 不是的, POTCAR 是根据 POSCAR 中的元素顺序创建的(第 6 行),与原子数目无关。 第 6 行是体系中的元素,只有 O 元素,所以 我们的 POTCAR 还是用之前 O 原子练习的那个; 第 7 行是体系中对应上一行中元素的原子数 但是你的 POSCAR 中如果把 O 写了两遍,那么 1 第7行就要写两个1, 如下图: 2 POTCAR中就要对应的两个O原子的Potentials! 提交任务后,瞬间完成。这么快就算完肯定不是因为你的服务器多么的牛逼 ! 而是因为出错了!! 那么我们需要找到错误的原因,怎么去找错误信息呢? 1 查看 OUTCAR VASP 就这么几行,从这里看不出来是哪里错了。 2 一般来说, VASP 计算的时候,会生成两个额外的文件,一个是关于服务器集群计算 error 的,另一个是 VASP 运行的 out 文件。这个 out 和 OUTCAR 不太一样,记录着VASP的运行过程和出错信息。看大师兄的文件目录: 不同的组可能命名不一样,但一般都会有这两个文件。 这里的 e 对应的是服务器的出错信息,o对应的是VASP的out文件, 首先打开查看下服务器出错文件:(图中cat 命令) Cat 该文件后什么都没有输出,说明服务器没有出错。 那我们打开一下 o_Single.142845 该文件: 在这个文件里面最后一行,给出了错误的信息。 一般出现这个错误的时候,你就要去检查 POSCAR 和 POTCAR 中的元素是否对应了。 本例中的错误该怎么解决呢? 1 把两个 O 换成 1 个 O ;氧原子数目改成2;如刚开始的POSCAR: 2 改变 POTCAR ,使其中的元素与 POSCAR 中的一致,也就是有两个氧元素的 Potentials! 这样,再运行就不会出错了。 这里 大师兄教给你了 POTCAR 的制备方法 : 命令中, cat 命令将 2 个 POTCAR 连在一起然后输出新的 POTCAR; 如果你的体系中含有其他的元素,比如: Fe C H O 那么你就要先准备这四个元素的 POTCAR , POTCAR-Fe 、 POTCAR-C 、 POTCAR-H 、 POTCAR-O , 然后运行命令: cat POTCAR-Fe POTCAR-C POTCAR-H POTCAR-O POTCAR 就可以了。这四个元素 POTCAR 数据从哪里找,在哪个目录下面?这就得问问你们组里的师兄师姐们,或者老师了。 3 大师兄上传了一个简单制备 POTCAR 的脚本,有兴趣的可以在 QQ 群中下载。 注意:改脚本默认使用纯元素名字对应的 POTCAR ,如果你的体系比较特殊则需要手动去制作。 例如:数据库中: Ru 有三个 POTCAR : Ru , Ru_sv 和 Ru_pv ,脚本默认使用 Ru 对应的那个,如果你需要用 Ru_sv ,则手动制备下吧。 网址链接: http://www.bigbrosci.com/newsitem/277498989 (左下角原文链接) 扩展练习: 1 正确运行 O2 分子的静态计算; 2 查找相关的 O2 分子的轨道排布,并分析结果的合理性; 3 主动制作错误的 POSCAR 和 POTCAR 文件,运行查看结果和错误。 总结: 1 整理自己研究方向相关的数据库资料;知道去哪里查询信息; 2 学会怎么根据已知的结构参数搭一些简单的分子模型: CO , H2O, N2, H2 等; 3 知道去哪里找出错文件; 4 熟练掌握 cat 制备 POTCAR 的方法; 5 必须掌握 POSCAR 和 POTCAR 的对应关系; 6 下载并学会使用脚本制作 POTCAR 文件。 ex10-O2 结构搭建以及POTCAR注意部分.pdf ex10.rar CRC Handbook of Chemistry and Physics(Editor-in-Chief: David R. Lide): CRC-handbook.part1.rar CRC-handbook.part2.rar CRC-handbook.part3.rar CRC-handbook.part4.rar CRC-handbook.part5.rar 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|2363 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex9: 学会收敛点
hongyesies 2017-7-17 16:44
Ex9 学会收敛点! 前面一节我们学会了正确计算氧原子的能量并分析电子在轨道中的占据情况,这一节稍作总结补充。 1 首先我们复习一下上节的结果。 在 VASP 计算的 O 原子的电子结构讨论中,来自不莱梅大学的群友( 江湖人称梅梅,单身水牛一头!)画了一幅画,大家可以看下: VASP 的结果分析完毕后如下: 看画填数,照猫画虎 由此可见, VASP 对于氧原子的描述不是很准确(不理解的请看上一节的详细描述: Learn-VASP-The-Hard-Way(ex8) )。而这一点, VASP 官网你是找不到的。因此,在计算的时候, 对于自己的体系有一个清晰的化学物理印象很 重要 。VASP的结果也要有针对的去判断。有的时候,即使计算收敛了,但没有体现出任何正确的物理或者化学意义,那就是单纯的数学收敛,结果是不可取的。VASP是一个计算的工具,如何正确分析和判断它的输出才是关键的。这一点我们在后面的学习中也会反复强调。 2 VASP 是怎么判断收敛的? 我们看一下 VASP 的迭代计算过程: 首先,它会猜一个初始的电子密度,然后据此计算体系的势能,求解 KS 方程,并给出体系的总能量以及对应的电子密度。 将最后一步的结果与前面进行对比,当前后两者的差值达到我们 预设的收敛标准 时,计算结束 。 这个预设的收敛标准在 VASP 中通过两个参数来描述: EDIFF 和 EDIFFG 。 EDIFF 控制电子步(自洽)的收敛标准。在 O 原子的计算中,由于我们不需要优化,直接进行静态计算,完全由 EDIFF 控制计算的收敛情况。 从图中可以看出: 第 19 步和 18 步的能量差为: -0.3484 E-04 ,停止迭代,开始输出结果。 这是因为 VASP 的默认值是 1 x 10 -4 (扩展阅读 EDIFF ) 那么,是不是精度越高越好呢,答案是肯定的! 但是, 但是, 精度高意味着需要更多的迭代次数,也就是需要更多的计算时间,看下图: 本例中,收敛标准从默认值的 1E-4 降低到 1E-7 ,单迭代次数从 19 增加到了 27 ,相当于增加了原来 1/2 的工作量。所以,精度太高,计算量会增加。应了那句流行语: 请在wifi下观看,土豪随意 。 我们看一下扩展阅读的内容: 第一点:红色框中,官网说:如果我们把收敛标准设置成 0 ,那么迭代会永远进行下去。大师兄很感兴趣,便测试了一番,结果如下: 可以看到,在 VASP 进行了 45 步迭代后,精度收敛到了 1E-12 。 VASP 便停止了,而不是所谓的always! VASP又把俺们给骗了! 思考另外一个问题: 既然精度从默认值 1E-4 提高到 1E-12 (8个数量级) ,那么我们算出来的氧原子能量有什么变化呢?看下图: 图中的 0, 4, 7 分别代表 EDIFF 为 0, 1E-4 和 1E-7 的情况,我们可以看出, 这三个计算结果中 , 能量随着EDIFF的减小变化甚微 。 当然,这也与我们简单的测试体系有关系。倘若计算 N 多个原子的体系时,不同的精度间的差值会有所增大。 那么我们再看一遍 VASP 官网的说明: 注意底部的 Mind 部分: 收敛速度跟 EDIFF 的值成指数关系,在大多数的情况下, 1E-4 足以胜任,没有必要采用其他的数值,如果大伙感觉不放心,大师兄建议 1E-5 即可。 此外,大家在浏览 VASP 官网的时候, 凡是带有 Mind , Important 字样的 , 它们后面的文字一定要认真阅读,把握其中的含义。 因为这都是大家常见的疑难点以及易错的地方。 EDIFFG 控制几何优化过程的收敛情况,当结构前后变化达到我们的要求时,便停止优化。对于优化,我们可以使用力作为收敛标准,此时 EDIFFG 为负值。一般来说取值在 -0.01 到 -0.05 之间( -0.01 对于力收敛来说已经是一个很严格的要求了)。 当然,我们也可以使用能量作为标准:此时, EDIFFG 为正值,一般为0.001-0.0001。 注意: 不要把正负值弄错了。大师兄见过一个群友这么设置的: EDIFFG = -0.0001 然后在群里咨询为什么他的计算不收敛。这就好比在没有 WiFi 的时候看视频,卡里的钱扣完了,视频才看到一半 ….. 小结一下: EDIFF , EDIFFG 是控制收敛标准的两个参数。 前者负责电子自洽过程(单个离子步内),取值为1E-4或者1E-5即可,没有特殊要求,不建议设置的太低。 后者负责结构优化的过程(可正可负)。对于 EDIFFG ,默认值采用能量收敛,标准为:EDIFFx10。 扩展训练: 1 EDIFF: https://cms.mpi.univie.ac.at/wiki/index.php/EDIFF 2 在1的页面中,左侧框中搜索EDIFFG,查找相关参数; 3 继续查询之前了解的相关参数,学会使用改网址; 4 根据前面所学,进行O2分子的静态计算,并分析其轨道结果,判断是否合理。 总结: 1 重温了一下上节的结果,不要完全相信程序的结果,物理,化学意义更为重要; 2 初步了解VASP的迭代过程,目前脑子里有个印象即可; 3 必须掌握EDIFF在电子步中的作用,取值大小与收敛速度的联系; 4 死死记住EDIFFG代表的含义,取值可正可负及其默认值; 5 经常浏览VASP官网, 尤其是Mind,Note, Important等后面的部分 ; 6 建议大家浏览VASP的 Wiki版网页(左下方原文链接) ,搜索相关参数,里面的公式较之前模糊的形式,有了很大的改进。 ex9-学会收敛点.pdf ex9.zip 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1474 次阅读|0 个评论
[转载]Learn VASP The Hard Way》Ex8: 氧原子能量的正确计算
hongyesies 2017-7-17 16:33
Ex8 氧原子能量的正确计算 前面的扩展练习中,要求大家结合自己的化学知识,判断计算结果是否正确。相比很多同学已经知道了氧原子含有磁性,我们在计算用需要考虑进去。在本节练习中,大师兄教给你如何分子氧原子在轨道中的占据情况,判断计算是否合理,并正确进行氧原子能量的计算。 氧原子的电子构型是 1 s 2 2 s 2 2 p 4 轨道占据情况如图: 所以氧原子含有两个单电子,具有磁性,且磁矩为 2 μ B 。 我们看一下前面的计算结果: OSZICAR : 能量信息: 电子占据的情况:( OUTCAR 中查看) Band1 含有两个电子,对应的 2s 2 ; Band 2-4 为三个简并态,每个能带上有 1.33 个电子,对应的 2p 4 。 但在这里,电子的占据是不正确的: 因为 2p x 轨道上含有两个电子,而不是把 2p x 上的一个电子平均分配到 3 个 p 轨道上; 此外,通过这个电子的占据情况,我们不能正确得到氧原子的磁矩信息。 那么怎么解决这个问题呢? 分两步解决问题: 第一步:由于氧原子具有磁性, 自旋极化 计算要进行考虑,在 VASP 计算中,需要在 INCAR 中添加一项: ISPIN = 2 ISPIN 的取值有两个, 1 和 2 : 1 代表不考虑自旋极化,是 VASP 的默认值; 2 代表打开自旋极化该选项,计算中考虑。 自旋极化什么时候该加,什么时候用默认值呢? 要计算的体系具有磁性时,必须要打开自旋极化。一般来说,单原子的计算, O 2 分子(基态为三重态),以及含 Fe , Co , Ni 的体系需要考虑自旋极化。 添加该选项后,重新计算,结果如下: INCAR OSZICAR 可以看出,加了自旋极化后, 电子迭代步数增加了 ,这是因为体系中的电子被强制分成了 alpha 和 beta 两种,并分别进行计算,因此增加了计算量。 体系的磁矩大小在 OSZICAR 中查看 ,对应右下角的 mag= 该项,从这里我们可以看到,磁矩信息与我们已知的 2μ B 吻合,这一点是合理的,正确的。 OUITCAR 中的能量信息: 考虑自旋极化后,体系的能量降低了。 我们重点通过查看体系的电子占据情况,判断该计算是否合理: 从图中可以看出,结果由两个 spin 组成: spin component 1 和 2: spin component 1 种含有 4 个电子,另一个种含有 2 个电子: 参考该图,可以看出 spin component 1 为自旋向上的 alpha 电子,另一个是自选向下的 beta 电子。但是: 1)Spincomponent 1 中,能带 2-4 中 3 个 alpha 电子的能量是一样的,这不正确,因为其中一个 2px 轨道中的 alpha 电子已经成对,能量要比 py 和 pz 低;描述失败! 2)spincomponent 2 中,另一个 beta 电子还是平均分配在了三个能带上面。 电子占据依然不合理。 上面的结果是由于体系的高对称性导致的简并所造成的。 8x 8 x 8 的立方体格子,在这里具有高阶的点群对称性: O_h, 见OUTCAR 在 GGA 泛函中,为了获得体系更低的能量,对于原子来说,通常会采用一种 symmetry broken solution 的处理方法。但是在 VASP 计算中,体系的对称性则是通过晶胞来获得,即把这个晶胞当成一个原子来处理,因此我们需要手动改变晶胞的形状来消除对称性造成的简并结果。(此处的解释可能有些牵强,有兴趣的可以查找与 symmetry broken solution 相关的文献) INCAR , KPOINTS , POTCAR 等均保持不变。修改 POSCAR ,如下: 通过改变格子在三个方向的大小,降低对称性。大师兄还尝试了三斜的格子,结果和这个是一致的。(有兴趣的可以尝试下) 下面我们看一下改变晶胞为7.5 x 8.0 x 8.9后的计算结果: OSZICAR OSZICAR 中电子迭代步数又增加了,这是因为 对称性的降低增加了计算量 。 磁矩为 2μ B ,这一点跟前面一样,正确! 体系的对称性: 从 O_h 降低到了 D_2h 能量信息: 跟前面能量相比,可以看出, 对称性降低后,体系的能量进一步降低了 。 电子占据情况: 分析: 1 ) 在 alpha 电子( spin component 1 )中,能带 1 是 2s 中的 alpha 电子;能带 2-3 为两个简并轨道,对应 p y 和 p z 电子,能带 4 位 p x 中的 alpha 电子。这里能带 4 的能量应该比 2 和 3 要低,但结果恰恰相反,描述不合理; 2 ) 在 beta 电子( spin component 2 )中,能带 1 是 2s 的 beta 电子,能带 2 为 p x 中的 beta 电子,此时该 beta 电子占据了一个轨道,而不是分布在三个 p 轨道上,结果是合理的。 计算到这里,已经是 V ASP 官网对于单原子能量最为完整和准确的计算 了。虽然上面 p x 的 alpha 电子比 p y 和 p z 能量高,至少电子的轨道电子占据情况是正确的,且磁矩和简并的错误已经消除。由此可见, VASP 对于单原子的电子占据情况(至少对于 O 原子来说),虽然取得了部分理想结果,但还是有不足的地方 。 此外,体系的对称性可以通过 ISYM 来控制(扩展阅读ISIM) , ISIM =0的时候,不考虑对称性进行计算, 大师兄也尝试过了将 ISYM=0 应用在 8x8x8 (test3) 以及 7.5x8.0x8.9 (test4) 的格子里进行计算。对于电子占据情况来说,均得到了与前面 7.5x8.0x8.9 一致的结果。但是使用 7.5x8.0x8.9 所得到的能量更低( test4 的能量比test3低 )。 使用 7.5x8.0x8.9 格子时, ISYM=0 (test4) 和采用默认值,得到的能量结果是相同的,因此,改变晶胞的对称性在计算单原子能量的时候是必须的,单独通过 ISIM 这一项不考虑对称性是远远不够的。 扩展阅读: 1)ISIM : http://cms.mpi.univie.ac.at/vasp/guide/node115.html 2) 重现本节所有练习,并自己认真分析结果,查看电子占据情况,体系的磁性,以及能量信息。 总结: 1) 知道什么时候使用自旋极化计算,怎么进行自旋极化计算; 2) 知道为什么自旋极化后计算量增加了; 3) 知道在哪里查看体系的磁性信息; 4) 知道为什么对称性降低后计算量增加了; 5) 会分析单原子中电子轨道的占据情况;判断结果是否合理; 6) 知道通过改变晶格大小调节体系的对称性从而消除简并对能量的影响; 7) 知道 ISYM 这一个参数,在计算单原子能量中, ISYM 的作用远远不及改变晶格大小; 8) 知道 vasp 也存在自己局限性,不要完全相信。 ex8-氧原子能量的正确计算.pdf ex8.zip 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|3087 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex7: 前6节总结
hongyesies 2017-7-17 16:04
Ex7 前6节总结 Ex{0..6} (Ex$(seq 0 6)) 前面 6 节练习讲述了初学 vasp 的一点皮毛,但通过大家的学习过程以及提出的问题来看,还是没有达到大师兄所期待的效果,本节回顾一下前面所讲的内容点,帮助大家加深印象,消除疑虑。 前言 在前言里面,大师兄介绍了如何进行 vasp 学习的方法,并推荐了 3 本参考书(QQ群文件,自己去下载)。但是大家经常提问的是:我是 vasp 小白,请问有没有关于量子化学的入门书啊? 大师兄的经验是,小白们都很贪,希望入门书越多越好。很多人手上都有好多本,这样感觉才踏实, 但真正阅读的一本都没有,取而代之的是整天在群里瞎问 。如果你有这样的问题,先看前言,自己默默下载这三本书,放弃这个问题。 Ex0 0.1 VASP 的输入文件均为文本,不存在尾缀等格式问题,使用的编辑工具: Linux 下面可以用 vim , atom , Windows 下可以用 notepad ++, atom 等等;这些软件的基本操作,大家平时多加琢磨, notepad++ 还可以竖着选择文本。另外推荐一个编辑工具: ultra-edit 大师兄读硕士的时候组里面的人经常用,有兴趣的也可以尝试下。 0.2 程序语言学习: A ) bash 语言:前面 6 节大师兄带领大家学到了很多相关的命令,自己勤加操练; B ) python 语言:在处理数据方面有着得天独厚的优势,支持丰富的扩展库;可以尝试着去了解,学习。参考书( learn python the hard way ) C )关键是自己主动去思考命令的运作方式,怎么把 自己的思维转化成程序语言表达出来 ,这一点大师兄后面会继续强化。 0.3 计算相关的可视化软件的安装: Materio Studio, P4VASP, VESTA, VMD , Molden , Xcrysden, 学习完本节:大师兄群里禁止提问的内容: A) 求学习 python 的参考资料; B) 求 MS 的下载链接; C)VASP 的输入文件怎么打开啊? E x1 在ex1 练习中,我们学习了如何制作INCAR,KPOINTS, POSCAR 和 POTCAR这四个文件: 1.1 INCAR里面参数的原则是: 越简单越好 ,乱七八糟的默认值不要往里面放。目前学习到的ISMEAR和SIGMA参数熟记于心,知道这个参数是干什么的,在不同体系中的值怎么设定。 1.2 KPOINTS 记住 gamma centered 和 monkhorst 的区别。为保持晶格和K点的对称性,优先选择gamma centered; 1.3 POSCAR中知道分数坐标和笛卡尔坐标的区别,大师兄见过有人在POSCAR里面写Cartesian,然后用分数坐标的情况! 1.4 POTCAR:知道自己组里面安装的POTCAR数据库的目录,不要问大家去哪里找你们服务器里面的POTCAR! 学习完本节:应该懂得输入文件中每一行对应的含义以及如何制作输入文件,对VASP不再抱有恐惧的心理,如果计算出错了,这四个文件是必须要检查的部分。永远记住这句话: rubbish in, rubbish out ! E x2 2.1 学习基本的 linux 操作命令: ls , mkdir , cat , grep , cd , mv 等; 2.2 初步掌握 for 循环,实现简单的批量处理; 学习完本节,对Linux环境 不再陌生,并且初步熟悉 linux 下的相关操作,如果遇到问题,主动去把出错信息复制到百度或者 google 里面,搜索自己解决。 E x3 3.1 学会使用 man command 或者 command –help 进一步拓展命令的使用功能; 3.2 学会 sed 命令,结合 for 循环进行批处理 学习完本节:学会 for 循环 +sed 命令实现文本批量处理,并且对 linux 环境下的命令有进一步的了解。 Ex4 4.1 通过调用命令结果,实现 for 循环中变量范围的选取; 4.2 Sed 多行选择,批量处理; 4.3 学会整理工作目录,保持其规则有序,以便于后面的批处理。 学习完本节:学会 $() 调用命令的输出结果,在后面的学习或者科研工作中,养成一个整洁的好习惯。 E 5.1 提交任务并正常结束;(如出错,请认真对比大师兄的输入文件,找到出错点,记下来!); 5.2 掌握 OSZICAR 中各项的基本含义; 5.3 OSZICAR 中的能量信息和 OUTCAR 中的对应部分要知道; 5.4 OSZICAR 的第一列对应的 ALGO 选项(算法: DAV , RMM等 )要知道; 5.5 Grep sigma-- OUTCAR 这个命令 绝对不能用 来获取能量; 5.6 Grep , head , tail 以及通过 | 将两个命令串联起来的方式要熟记。 学习完本节:对 OSZICAR 不再陌生,认识了 VASP 输出文件的其中一个! Ex6 6.1 OUTCAR 的大体流程要了解; 6.2 学会 grep + 关键词提取每一部分中怎么有价值的信息, 学习完本节:认识了 VASP 最重要的输出文件,并且在后面的学习中,知道如何获取想要的信息。 总结 通过复习一下前面 6 节以及前言中的问题,新手们对自己目前的水平应该有所了解。 此外,序言里面推荐的这本书: Density Functional Theory : A Practical Introduction 对于那些基础不扎实菜鸟们来说,务必要认真阅读。网上很多版本里面,公式符号丢失了,建议区 Wiley 官网或者大师兄 QQ 群里面下载完整版。 新手学习 VASP 一定要循序渐进,不要贪多。 VASP 官网很多示例,自己也可以主动去练习,并和官网结果对比。此外,出现错误更不要慌张,仔细检查自己的输入文件,或者把出错信息复制到百度或者 google 里面,查找原因。很多低级的错误,去群里面求助只会浪费你和大家的时间,而且 你自己解决问题的能力也不会得到提升 。 关于前面几节中的错误和建议,请公众号留言或者加 QQ 群( 遇见大师兄 217821116 )进行讨论。 如果你遇到了问题,并通过自己的努力顺利解决了, 解决办法一定要记录下来,避免再犯 ,也可以与大师兄一起分享。 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1475 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex6: OUTCAR 的基本内容
hongyesies 2017-7-17 15:58
Ex6 OUTCAR 的基本内容 OUTCAR是VASP的主要输出文件,但官网并没有给出太多详细具体的说明。大师兄对这一点也存在疑虑,思考了下其中的原因:VASP可以计算的性质很多,每一个特定的任务都有其对应的输出内容,这就导致了OUTCAR的复杂多样性。工作人员偷懒,也就把这个问题留给了用户自己去解决,另外一个原因就是里面的条目太多了,每一项单独解释都需要花费大量的时间,这一点大师兄在认真查看OUTCAR的时候发现的。 本节,我们通过前面的计算例子,简单介绍一下OUTCAR的基本结构以及输出内容,给大家一个大体的印象,不至于看到这么多行的结果眼花缭乱。在介绍之前要告诉大家的是,VASP各个输出部分之间用横杠分割(---------------------),当你看到横杠的时候,就知道要进入结果的下一个部分内容了。 VASP会列出来其版本,时间,以及服务器的相关情况,如下图: 输出我们的INCAR和POTCAR的部分信息: 每次运行的时候,(即使你的输入是正确的),VASP都会输出一个大大的WARNING来吓唬你,大家可以忽略它。但如果你的计算失败了,这个警告信息对你排查错误可能会有所帮助。 下面是POTCAR的基本信息,如果你想通过OUTCAR查看POTCAR中的元素时,可以使用下面的命令: grep POTCAR OUTCAR grep TIT OUTCAR grep ENMAX OUTCAR ….. ZVAL是该POTCAR中对应元素的价电子,这里氧原子含有6个外层价电子。 POSCAR的一些基本信息: 坐标格式,原子位置,以及晶胞的形状大小。 体系的对称性以及点群操作相关的信息,在这里我们的体系是立方体,为O_h的点群,有48个对称操作。群论的知识大师兄早已原封不动地还给老师了,在这里就不再详细介绍了… K点信息:想查看K点个数: grep reciprocal OUTCAR 计算中参数详情(默认的参数值以及代表的意义也列出来了,这个地方大家仔细看下, 一些不常见的参数,采用默认值就好,不用在INCAR里面额外再写一遍!) 本计算的文字描述,任务类型: 体系大小,K点数目等信息: 计算所需的内存信息: 开始电子步的的迭代过程:注意能量在不同迭代步数中的变化: 每一电子步完成后,输出结果同时在OSZICAR中更新一行。 其中各项的具体含义:alpha Z and the Ewald energy define the electrostatic interaction of the ions in a compensatingelectron gas. The alpha Z componentdeals with the divergent parts (G=0). The followingparts are the Hartree and exchange correlation energy as defined in theKohn-Sham Hamiltonian. The entropy part stems from the smearing(using the free energy as variational parameter, electronic entropy), EBANDS fromKohn-Sham eigenvalues, and EATOM is the reference energy for the potential(which is defined in the POTCAR file). 出自扩展阅读3 迭代结束,输出主要的结果:费米能级以及能带信息。Band 1 对应的是2个 2s 电子, band 2 34 对应的是4个2P电子。固体物理中,费米能级对应的是最高电子占据轨道的能量,也就是HOMO,大家可以对比下band 2 3 4 和费米能级的能量。再思考下,这个结果是否正确? 体系的坐标,各个方向力的大小,以及总的能量,不包含Entropy的能量,以及sigma趋于0 时的能量。这里 without 和 energy 之前有两个空格。 计算的内存和时间等信息,看到下面,说明计算正常结束了。 分析完前面的内容,大家会发现:具体到里面各项的含义以及各个细节上,还有很多值得讨论的地方,比如群论,薛定谔方程求解过程,POTCAR的相关信息等。对于新手来说,看完本节,能大体浏览下来,知道各个部分包含什么内容就很不错了。后面如果有什么疑问,可以直接提出来,这一部分后续慢慢完善。 扩展训练: 1 结合氧原子的外层电子排布,思考下,本例算的结果是否正确? 2 POTCAR 的相关信息,浏览官网,尽可能多的掌握信息: https://www.vasp.at/vasp-workshop/slides/pseudoppdatabase.pdf https://cms.mpi.univie.ac.at/vasp/vasp/POTCAR_file.html http://cms.mpi.univie.ac.at/vasp/vasp/Pseudopotentials_supplied_with_VASP_package.html https://cms.mpi.univie.ac.at/vasp/vasp/PAW_potentials.html https://cms.mpi.univie.ac.at/vasp/vasp/Recommended_PAW_potentials_DFT_calculations_using_vasp_5_2.html https://cms.mpi.univie.ac.at/vasp/vasp/Recommended_GW_PAW_potentials_vasp_5_2.html 3 https://cms.mpi.univie.ac.at/vasp-forum/viewtopic.php?t=273 总结: 本练习中,带领大家粗略浏览了一遍 OUTCAR 中各部分的信息。大家在浏览的时候时刻要思考,这部分包含的什么内容,具有什么物理或者化学意义? 怎么用 grep 关键词获取有用的信息等。 由于计算内容的多样性,对于OUTCAR的详细解释,目前来说还需要很多的时间和精力去完成补充,当然,在后续的计算过程中,我们还会结合具体的例子进行讲解。 ex6-OUTCAR的基本内容.pdf ex6.zip 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|1877 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex5: VASP运行以及OSZICAR详
hongyesies 2017-7-17 15:26
Ex5 VASP运行以及OSZICAR详解 前面我们已经准备好了VASP的四个输入文件,那么该如何让vasp 算起来呢? 每个课题组都会有自己不同的任务提交系统,常见的就是PBS的作业管理系统;分下面三种情况:用脚本提交,用命令提交,以及网页提交;大家可以向自己的师兄师姐讨要提交任务的方法,这里边不再具体介绍。 1 运行vasp : 本图仅做参考, 要求结果:VASP正常运行结束 。 1.1 登录服务器;这里大师兄用的Ubuntu系统,终端里面直接输入登陆命令,输入密码即可。 Windows系统可以使用 Winscp + Putty, SSH SecureShellClient 以及其他的服务器连接工具(QQ群ex5文件夹); 1.2 将任务文件拷贝到服务器上;Winscp, SSH SecureShellClient 这些软件界面直接拖拽即可; 1.3 进入练习的文件夹,前面几节的练习大家也可以直接在服务器上进行; 1.4 提交任务的脚本 sub4 1.5 命令: qsub sub4 提交任务,排队,等待计算完成 1.6 怎么登陆服务器,上传和下载任务文件,以及提交命令,这些都是大家从自己课题组里面学到的东西,如果没有,请找导师解决。 所以,怎么提交任务?谁有提交任务的脚本啊?怎么用命令提交任务?这样的问题,是杜绝在大师兄群里提问的。 2 查看输出文件,判断任务结束: 计算完成后,会出来很多文件,前面ex0里面大家已经初步了解到这些文件大部分都没用,不用被他们所吓倒,我们后面会一一解释。 检查任务是否算完有很多种方式 : 查看队列 , 邮件通知 (看大师兄任务脚本里面的邮件), 查看输出文件 。这里大师兄用的是后者: tail OUTCAR (OUTCAR是vasp的主要输出文件), 这个命令用以查看文件最后面的几行,如果你的OUTCAR 和图中的一样,说明任务已经完成。 备注: tail 以及 head 这两个命令,自己学习下相关的用法,熟练掌握。 3 OSZICAR 详解: 大师兄你是不是搞错了? 前面不是说OUTCAR是主要的输出文件吗?怎么跳到OSZICAR上面来了? 没错的,大师兄想了很长时间,基于OSZICAR的重要性(包含了计算过程的具体迭代信息)和简单的特点,对大家初步了解计算过程非常有帮助。 怎么打开或者查看 OSZICAR 文件? 它是文本格式 ,因此可以用文本编辑器直接打开;也可以用vim打开; 还可以用cat 命令查看,亦可以用 less 或者 more 命令查看, Sooo easy!!! 不管用什么方式打开,我们需要的就是把里面的内容呈现在眼前。 首先说明一点,由于体系是单个原子,没有必要进行结构优化,因此这里只有一个离子步。 请以后不要再这么问:大师兄,怎么优化一个单原子的体系啊? 1 N E dE d eps ncg rms rms(c) 2 DAV: 1 0.363606608360E+02 0.36361E+02 -0.98834E+02 24 0.195E+02 3 DAV: 2 0.815260584647E+00 -0.35545E+02 -0.35545E+02 48 0.327E+01 4 DAV: 3 -0.364886031610E-02 -0.81891E+00 -0.81561E+00 24 0.117E+01 5 DAV: 4 -0.123886775924E-01 -0.87398E-02 -0.79838E-02 36 0.110E+00 6 DAV: 5 -0.123956401569E-01 -0.69626E-05 -0.69631E-05 24 0.349E-02 0.307E-01 7 DAV: 6 -0.134138210989E-01 -0.10182E-02 -0.18030E-03 36 0.222E-01 0.155E-01 8 DAV: 7 -0.135108544930E-01 -0.97033E-04 -0.22625E-04 24 0.934E-02 9 1 F= -.13510854E-01 E0= -.11021795E-01 d E =-.746718E-02 3.1 第一行: 3.1.1 N 代表电子步的迭代步数,本例中里面有7个电子步。 3.1.2 E 代表当前电子步的体系能量; 3.1.3 dE 该步和上一步体系能量的差值; 3.1.4 d eps the change in the bandstructure energy;本征值的变化 3.1.5 ncg the number of evaluations of theHamiltonian acting onto a wavefunction;波函数的优化次数 3.1.6 rms the norm of the residuum of the trialwavefunctions (i.e. their approximate error) 3.1.7 rms(c) the difference between input andoutput charge density. 注意:3.1.4-3.1.7 大师兄直接把原文复制过来了, 因为这里俺也是一知半解,对每一个电子步的具体计算过程也不了解,直接翻译过于太生硬,恐对大家造成误解 。如果知道怎么恰当描述,请多多指教。 3.2 第2-8行: 3.2.1 DAV:blockedDavidson iteration scheme 的缩写,一个电子自洽算法的缩写,今后的计算中你可能还会看到RMM (residual minimization scheme) 和 CG (conjugate-gradientalgorithm)等,这些是由INCAR中的ALGO 参数决定。可以参考一下VASP官网(扩展练习4.2)以及PPT介绍(QQ群已上传): 此外, rms(c)最后一列为什么会有几行空着,我也不知道。 3.3 最后一行(收敛结果): 1 F= -.13510854E-01 E0= -.11021795E-01 d E =-.746718E-02 3.3.1 F前面的 1 代表 离子步的步数,本练习只有1步, 3.3.2 F = 是体系 的 总能量, 与OUTCAR中 free energy TOTEN 后面的值相等(下图倒数第二行); 3.3.3 E0 后面的能量对应OUTCAR中 energy(sigma-0)后面的能量(下图到时第一行)。 free energy TOTEN 后面的能量 减去 Entropy T*S 后面的能量, 就是 下面一行 energy without entropy 对应的能量。 3.3.4 d E 项:在优化结构过程中,等于前后两个离子步之间能量差值; 在单点(静态)计算中(本例),等于 entropy * sigma 的值, sigma值来自INCAR, entropy 可以在OUTCAR中获得, 对应 entropyT*S 这一项:具体操作如图: 1) 这里用到了grep 命令; 2) 提取的内容为单引号中的 ' entropy T ' ,单引号必不可少,因为T前面只有1个空格; 3) 用了一个 | 符号(pipe), 它表示把前面命令的输出传递给后面的命令; 4) tail –n 1 只获取最后一行; 5) head –n 1 只获取开始的一行。 3.4 OSZICAR 中 E0 与OUTCAR中 energy(sigma-0)后面的能量是一样的, 这是计算完成后我们需要获得的体系能量 ( 死死记住! )。所以计算完成后,可以通过 grep E0 OSZICAR 或者 grep 'energy(' OUTCAR 来获得, 为什么要加单引号呢? 大家可以练习一下图中的操作。 grep 不能直接识别括号 ,必须把它放到单引号里面作为文本处理, 也可以额加一个反斜杠 \ ; 细心的你可能注意到了:最后一行和前面不太一样,因为它的 without 前面有两个空格。观察到这一点,我们就可以通过 grep ' without ' OUTCAR 来获得能量结果, grep ‘ without’ OUTCAR (两个空格) 等于 grep ‘ without’ OUTCAR | tail –n 1 (一个空格或者没有空格) 有人问,为什么不直接提取 sigma ,而非得加单引号呢? 答:可以提取,但很危险!看下面的例子: 神马情况? 这里大师兄用了 grep sigma- OUTCAR 命令,运行后迟迟没有动静,于是强制杀掉(control键+C)。运行cat OUTCAR命令后,发现OUTCAR已经空了…. 所以,如果你想通过sigma来提取OUTCAR中的能量: grep sigma OUTCAR OK, grep sigma- OUTCAR OK, 但绝对不要画蛇添足,把箭头 再放进命令里面 ! 4 扩展练习: 4.1 阅读官网链接:进一步了解OSZICAR的输出各项的含义, 了解VASP电子步计算的过程,以及ALGO参数; https://cms.mpi.univie.ac.at/vasp/vasp/stdout_OSZICAR_file.html https://cms.mpi.univie.ac.at/vasp/vasp/ALGO_tag.html https://cms.mpi.univie.ac.at/vasp/vasp/Algorithms_used_in_VASP_calculate_electronic_groundstate.html 4.2 同样的方式打开OUTCAR,查看里面的信息,结合官网学习各项含义,尝试着用grep,|, tail, head 这几个命令组合提取信息。 4.3 结合自己关于氧原子的化学知识,思考本计算,有什么地方不合理? 5 总结: 经过本节练习,大家学习了 OSZICAR 中各项的具体含义 ,以及与OUTCAR中一致的能量部分, 学习了 grep 结合| 以及 head, tail 提取信息的方法, 知道了计算完成后哪一个能量是我们所需要的。 一定要耐住性子浏览官网,万事开头难,稳扎稳打,不要图快导致基础不扎实。此外,OSIZCAR 电子步的部分解释(3.1.4-3.1.7)没有到位,希望大家提出宝贵的意见。 ex5-VASP运行以及OSZICAR详解.pdf ex5.zip 转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465)
个人分类: VASP|4189 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex4: 做计算常用的批量处理方法3
hongyesies 2017-7-17 15:05
转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465) Ex4 做计算常用的批量处理方法3 紧跟ex3的扩展练习,相信大家已经完成了POSCAR的批量操作。在这里,大师兄需要指出的是,批量操作的方式有很多种,大家千万不要仅仅局限在本书的例子里面,自己主动去思考这些命令的运行方式,学习新的东西,开放你的大脑,最后才能做到随心所欲,达到无招胜有招的境界。如果只跟着大师兄的教程去练习而不主动思考的话,时间长了思维就会被限制了。 此外,大师兄给的例子是都可以正确执行的,虽然易错的地方已经指出来了,但并没有主动犯错印象更加深刻些。有句古话说的好:纸上学来终觉浅,绝知此事要躬行。所以,行动是很有必要的。大家在此基础上多加尝试,尽可能多的犯错误,知道什么样的输入对应什么样的错误。 1 POSCAR 批处理练习: 重复图中的操作,完成POSCAR的批量练习,思考这些命令是怎么工作的。 2 命令详解: 2.1 seq 命令用来打印一系列的数字: 在这个例子中 seq 8 2 16 获取8到16之间的数字,间隔为2; 其中 8 2 16 需要用空格分开; 看到这里你会想到之前我们使用的花括号 {} ; 对的,如果间隔是1的话, {1..9} 和 seq 1 1 9 以及 seq 1 9 是一样的; seq 1 9 中省略的是 seq 1 1 9 中间的 1, 因为它是默认值; 2.2 for 循环的精髓之一: for i in $(seq 8 2 16); 在这里,我们使用了 $() 这个组合, 它的作用是:是调用一个命令或者函数的输出,进而转化为for循环的对象集合; for i in $(seq 8 2 6) 等于for i in 8 10 12 14 16 。 注意:$ 和 后面的括号之间没有空格!!! 大家运行一下 for i in $ ( seq 8 2 16) 这个命令,主动尝试出错。 此外,你还会见到一些人使用 ` ` 这个符号*(反单引号); `seq 82 16` 的效果等于 $(seq 8 2 16) ; 所以,当你见到 ` ` 时,不要害怕,因为你知道里面是在调用一个命令或者函数,和 $() 效果是一样的。linux下面有很多奇奇怪怪的字符,当你知道他们的意思时就见怪不怪了。 为什么说这是 for 循环的一个精髓呢? 从for循环的语法上看,有两个部分,一个是选取对象,也就是for i in XXX 的 XXX 部分;另一个是去执行的动作, do XXX ; 对于do XXX 我们根据自己的要求把命令填到这一块就可以了。 但是对于前面的集合选取,这就需要大家脑洞大开了,最简单的是根据自己的任务要求选取合适的范围直接输入,比如 for i in 1 2 3 4 5 ; 再复杂些,我们使用一个函数,命令或者更高级的命令操作来得到所需范围,如本例中 for i in $(seq 8 2 16)。 但大多数计算的时候,我们计算已经完成或者正在进行。 当需要对它们进行处理时,我们要对这些文件进行选择, 即把需要处理的文件放在一起。 为了保证for循环变量范围的高效选择, 保持一个良好的计算习惯非常重要: 那就是保持计算在不同目录下的一致性 ;也就是目录要规范,按照等级创建。 在这里教给大家另外一个linux 命令: tree 来查看当前目录下的文件夹级别信息,用以给for循环提供合适的变量; (tree 和 tree -d, 尝试下有什么不同) 图中例子给出了一个非常清晰的文件目录结构 2.3 for + sed 的命令组合: 这里我们使用了 sed –i “3,5s/8.0/$i/g” 3,5s 的意思是 选择第三行到第五行中的8.0 ; 有很多同学运行了这个命令三次: sed –i “3s/8.0/$i/g” sed –i “4s/8.0/$i/g” sed –i “5s/8.0/$i/g” 从这里可以看出,如果你会用一个命令,可以节省很多时间; 但如果你懂得如何进一步发挥这个命令的作用,那么它会更加节省你的时间。 省下来的时间你可以去看书,运动,谈恋爱…..想想都是很美好的事情。记得大师兄刚读博士的时候,组里的一个博后给我说: 如果你想偷懒,那么必须多动脑! 大家可以在运行完命令后,仔细体会下这句话的思想。后面我们也会在计算过程中有针对地介绍sed 的用法,而大家主动学习怎么去偷懒是最重要的。 3 扩展练习 3.1 尝试着运行0.01中的计算,并vasp官网查找资料,初步了解VASP的输出文件; 3.2 使用vi或者其他文本程序打开这些输出文件,了解他们的内容; 3.3发现输出中的关键词( 原则:只出现一次或者几次 ),并用grep命令提取它们。 4 总结 本节我们学习了: 1) seq 命令获取数字序列的方法, 2) for循环中使用 $() 调用命令输出为变量提供选择集合的方法 ;3 ) 以及sed 一次性选择多行的方法。for 循环处理任务时,对象的选择很重要,这要求我们的文件系统有序而整齐。如果文件夹一个套一个,随意创建,毫无规则可言,那么在用for循环的时候,工作效率就会大大地打扣。 前面这几节没有直接进入计算部分,是因为我们的一句古话: 工欲善其事必先利其器。 进行理论计算,学会最基本的相关操作知识非常重要。当然这只是一个小利器而已,真正的利器在于你扎实的理论化学基本功。 ex4-做计算常用的批量处理方法3.pdf
个人分类: VASP|1100 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》Ex3: 做计算常用的批量处理方法2
hongyesies 2017-7-17 15:02
转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465) 前面练习中我们把0.01的文件夹复制得到了0.02到0.09的文件夹。但是,所有文件夹中的输入文件都是一样的,我们需要把INCAR中的SIGMA参数值 SIGMA = 0.01 改成与文件夹对应的数值。 首先我们可以逐个进行编辑,但太浪费时间,这也不是大师兄的风格。下面练习中,我们结合上节的for循环和一个新的linux命令: sed 来教给大家实现批量处理输入文本的另一个方法。 1 重复图中的命令: 详解: 1.1 刚开始,在 sigma 文件夹下面,有一个文件夹0.01,包含了我们的VASP输入文件(INCAR,KPOINTS, POSCAR 和 POTCAR); 1.2 for 循环将0.01的文件夹复制成其他的sigma数字的文件夹; 1.3 使用cat 查看 0.04 文件夹中的INCAR文件 1.4 重复第三步,但这次在命令后面加了一个选项 –n ,该选项在输出中给每一行标出了行数,方便我们查看。 -------------- 注意: Linux 下面的命令都有很多的选项,用以丰富我们的不同需求。可以使用 man cat 这个命令查看 cat 的其他选项.使用这个命令后,如果想退出,敲 q 键即可; 另外,我们也可以使用 cat –help 来查看,效果与man cat 一样。 ---------------- 1.5 for循环命令实现我们的批处理目的:将每个文件夹中INCAR 的SIGMA值替换成文件夹的值。 1.5.1 for i in *; 这里的 * 指的是sigma文件夹下所有的文件文件夹,本例中没有文件,只有从0.01, 0.02, 0.03 到 0.09 的文件夹; for i in * 等于 for i in 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 -------------- 注意:等号右边的一系列文件夹之间用空格隔开,可以是一个空格,也可以是N个, 同样 for i in {1..5} 等于 for i in 1 2 3 4 5 -------------- 1.5.2 使用sed 命令将INCAR中的 0.01 (所有文件夹中的都是0.01)替换成文件夹的数字; sed -i “3s/0.01/$i/g ” 精解: sed –i 是sed 的命令和其附加选项, -i 表示直接对源文件进行编辑,也就是说编辑之后源文件被新文件替换掉。因此,使用这个参数的时候要小心,确保输入正确,要不然源文件就被替换了。 双引号中是我们的操作, 3s 表示的是选择第三行,因为我们知道 0.01 在第三行中出现,s 是select 的缩写; 3s 后面跟一个斜杠 / 用来和后面被替换的内容分开,这里是 0.01 , 后面再用一个斜杠,和替换后的数字分开(0.01 0.02 0.03 等),再加一个斜杠,后面的g 代表 global ,意思是全部替换。 输入完毕后,我们选择要执行该命令的对象(要替换的文件),也就是所有文件夹下面的INCAR 文件,$i/INCAR 注意:这里我们用的是 双引号 ,sed 命令中你也会见到大部分都用 单引号 ' ' 。 但如果这里使用单引号,则所有的 0.01 都会被替换成 $i (这个$i 是纯字符),因为单引号中的所有内容都会被当做字符来处理,也就是里面是什么就输出什么。使用双引号,则可以读取变量 $i 的值,下面的例子大家一看就知道怎么回事了: 这里单引号中的内容被原封不动地打印出来了。 1.5.3 done 敲回车执行任务 1.6 改命令瞬间运行完成,我们查看下 0.04 中的INCAR , sigma的数值已经替换成0.04 ,完成任务! ---------------- 备注: sed 是一个非常强大的命令 ,对于做计算的我们来说,正确的使用sed可以极大的提高我们的工作效率,大家务必硬着头皮掌握这个命令。 这个网站列举了一些基本的用法,大家参考下, http://man.linuxde.net/sed 也可以百度里面搜索一些其他的 sed 使用技巧,如果你有认为很好的sed 技巧,也可以留言分享给大师兄。 ---------------- 2 ex0中KPOINTS的扩展练习 返回上一级目录,并创建 kpoints 文件夹, cd .. mkdir kpoints 然后执行下面图中的命令,完成KPOINTS的批量操作; (PS: 图中大师兄故意犯了两个错误 ,一个是没有正确设置需要修改的文件, 另一个是上面提到的单引号和双引号,大家可以根据前面所学尝试着避免里面的错误) 单引号和双引号的区别,相信大家在练习万之后能大体知道个所以然了,但这个例子中我们怎么把已经犯的错误改正过来呢? 难点在于 区别$i是参数还是字符上 。下面我们用一个 反斜杠 \ 将$i当成字符来处理。 此外,如果被替换的内容中含有 / , 直接输入则会被认为是分隔符,因此我们需要这么输入\/ (一个反斜杠加单斜杠,中间没有空格),这样的话 / 就会被当成字符来处理啦! 3 本节要求 1)学会 man command 或者 command –help 查看命令的具体参数; 2)大量使用sed 命令进行操作练习; 3)熟知单引号和双引号以及 \ 的使用; 4)百度查找其他关于前三个的知识。 5)根据前面所学,完成ex0中POSCAR的扩展训练。 4 总结 本练习,主要教给大家如何查看linux下面各个命令的详细参数(cat –n, sed -i),知道 * 在for循环中代表的含义; 如何使用sed 命令对文本进行替换; sed 中的单引号,双引号的区别;以及 \在字符处理中的作用。下一节我们学习简单批量处理的最后一个关键点。 ex3-做计算常用的批量处理方法2.pdf
个人分类: VASP|1338 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》ex2: 做计算常用的批量处理方1
hongyesies 2017-7-17 14:56
转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465) 前面一节大家已经学习了怎么制作文本格式的输入文件。从前面一节的扩展练习,大家可以猜到:大师兄要教给大家如何对一些参数进行测试了。然而,这一节需要学习的是在linux系统下,批量处理任务文件的一个办法。一个好的开始对于大家的后程发力和高效解决日常任务非常重要。 1 查看文件 首先, 教给大家常用的三个linux命令:ls, cat, grep, 通过这三个命令 回顾一下上一节我们制作的那几个输入文件: INCAR,KPOINTS, POSCAR 和POTCAR 那些文件,在大师兄电脑的 ~/test/vasp/O/ex1 的文件目录下。大家进入自己练习的目录(通过cd 命令),然后按照图中的命令,先敲一遍,看下输出结果, 详解: 1.1 ls 命令 列出来当前目录下的所有文件和文件夹;本例中没有文件夹; 1.2 cat 后面加上文件名,就可以在输出里面查看该文件的内容,cat 和文件名之间有空格, 可以是一个,也可以是N个; 1.3 对于一个大文件来说,里面有很多行,用cat就不行了,我们可以用grep这个命令 1.4 grep 命令用于提取文件中的我们有兴趣的信息。 我们想知道POTCAR中包含的元素,用这个命令: grepTIT POTCAR , TIT就是POTCAR中的一个固定的字符,通过提取这个字符,获取我们需要的结果,这里我们知道了 POTCAR中含有O元素; 通过使用grep ENMAX POTCAR 我们知道了POTCAR中O元素的截断能是400 eV; 1.5 注意,grep 后面提取的字符,最好在文件中是唯一存在的或者只出现几次,否则我们不容易得到期望的结果; 大家可以运行 grep PBE POTCAR grep 0 POTCAR 这两个命令,感受下结果; 1.6 查看文件的命令还有 more 和 less, 运行less 命令后退出 敲一下 q 键即可; 运行less后再敲一下v,进入vi编辑界面,退出时和vi的退出是一样的; -------------------------- 2 扩展练习1: 新建10个文件夹,每个文件夹中的SIGMA的数值不同,从0.01, 0.02,0.03 ... 0.10,其他输入文件与本章中的内容保持一致。 按照图中的命令,自己先敲一遍,感受下效果。 ----------- 大师兄不想挨个创建10个文件夹,并且挨个编辑INCAR文件,想必大家都不想这么做,因此在这里教给大家使用一个for循环来快速实现我们的目的; 2.1 创建名为0.01的文件夹: mkdir 0.01; qli@tekla2:~/test/vasp/O/ex1$mkdir 0.01 2.2 将输入文件移动到0.01文件夹中: qli@tekla2:~/test/vasp/O/ex1$mv INCAR KPOINTS POSCAR POTCAR 0.01/ 2.3 查看下结果:使用ls 命令 qli@tekla2:~/test/vasp/O/ex1$ls 0.01 (只有一个文件夹,说明文件全部移动进去了) 2.4 for循环实现我们的效果 qli@tekla2:~/test/vasp/O/ex1$for i in {2..9}; do cp 0.01 0.0$i; done qli@tekla2:~/test/vasp/O/ex1$ls 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 -------------------------- 详解: 2.4.1 {2..9} 是为了获取从2到9的所有数字, 有两点需要注意: 1) 用花括号 2) 2和9中间有两个点 .. 两个点之间没有空格,2,9 与两个点之间也没用空格 大家可以练习下面这几个命令来看一下效果: echo {1..100} echo {A..Z} echo {a..z} 2.4.2 for i in {2..9} :翻译过来就是:对于从2到9的任意数字 i, i在这里是一个变量;我们给 i 赋值,值的范围是 从2到9 ;两点需要注意: 1) i 只是个人喜好而已, 你也可以用 for a in XXX ; for b in XXX; 2) in 后面是一个 集合; 怎么选取这个集合决定了for循环的威力; 2.4.3 for i in XXX 这个句字后面跟着一个冒号,如果没有便会出错。 冒号前后可以有空格,也可以没有,为了让自己写的东西更加直观,建议加上空格; 2.4.4 do 翻译过来就是: 我们要实现什么任务; do 后面跟一个空格,或者几个空格 2.4.5 cp 0.01 0.0$i cp 0.01 把 0.01 这个文件夹复制成 0.0$i 文件夹; 在这里$i 调用for 里面赋予变量 i 的值,然后将$i 替换; 2.4.6 复制完成后,后面跟着一个分号; 分号和前面的内容之间可以有空格也可以没有空格; 2.4.7 done 完成任务。 2.4.8 大家可以尝试着其他类似的命令:for iin XXX; do XXX ; done 比如: for bigbro in {A..Z}; do echo bigbro is $bigbro ; done 这个例子只是为了说明,for 后面的变量如果你用i 表示,那么后面就用$i 来引用;如果用bigbro 来表示,后面则用$bigbro; $ 和后面的变量之间没有空格。 -------------------------- 3 扩展练习: 3.1 熟练使用 ls, cat, cd , mkdir , cp , mv 这几个命令,如果不会,从百度里面多找一些linux常见命令学习的文章; 3.2 学会用grep命令提取文件中的内容; 3.3 创建从A到Z的26个文件夹,并且把INCAR复制到这些文件里面; 4 总结: 这一节主要是交给大家展示下如何使用一些基本linux的基本命令: 使用cat查看文件内容;grep 提取大文件中的内容,以及使用for循环初步实现一个批量的效果。 请大家务必多加操练,以及完成扩展练习。 至少图中的例子 要练习一遍,能看懂什么意思。 下一节我们介绍另一个批量处理的方法。 ex2-做计算常用的批量处理方法1.pdf
个人分类: VASP|1844 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》ex1: VASP基本输入文件的准备
hongyesies 2017-7-17 14:47
转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465) 1 准备输入文件, 脑子里要有下面几个概念: 1.0 Rubbish in, Rubbish out! 程序只负责算,对错由你决定! 1.1 遇到不懂的,思考 + 看官网,看官网,看官网! 重要的话说三遍,不要去看网上那些乱七八糟的说明书。 如果英语不好,那么这是一个锻炼你阅读能力的好机会; 1.2 所有的输入文件都只是文本而已 (WAVECAR也可以当成输入文件,不是文本格式,这个后面再说,先不管); 1.3 所有的输入文本没有尾缀,Windows用户可能习惯了带各种各样尾缀的文件,但是vasp里面的输入文件,没有尾缀且都是文本; 1.4 一步一步按照本书的练习进行操作,有问题,先记下来,如果后面没有得到解答,通知大师兄。 --------------------------------- 2 有了上面的概念,我们就可以准备输入文件了。 2.1 VASP输入和输出文件 下面是官网列出VASP的输入和输出文件,in 代表输入,out代表输出, 大家可以看一下 (PS: 不要被这么多文件吓傻了,脑子里有个印象就行,很多可能穷奇你一生的计算都用不到。): ------------------------- INCAR in ** STOPCAR in stout out POTCAR in ** KPOINTS in ** IBZKPT out POSCAR in ** CONTCAR out CHGCAR in/out CHG out WAVECAR in/out TMPCAR in/out EIGENVAL out DOSCAR out PROCAR out OSZICAR out PCDAT out XDATCAR out LOCPOT out ELFCAR out PROOUT out ------------------------- 2.2 对于VASP计算来说,前面绿色标出来的 INCAR , KPOINTS, POSCAR 和 POTCAR 是必不可少的输入文件,必须有! INCAR 告诉VASP算什么,怎么算。 KPOINTS 包含计算的K点信息(K点是什么,这个问题很抽象,脑子里先记住,计算的时候必须有这个东西)。 POSCAR是计算模型结构的文字描述,也就是各个原子在xyz方向的坐标信息。 POTCAR对应的是计算过程中每个原子的平面波基组,描述原子中原子核和电子的相关信息。 --------------------------------- 2.3 基本输入文件的准备, 我们以单个氧原子的计算为例, 2.3.1 INCAR 打开编辑器,把下面几行挨个输入进去: #号以及后面的不用输入 SYSTEM = O atom # 氧 符号,不是零! ISMAER = 0 # 是零,不是氧符号! SIGMA = 0.01 详解: 1)INCAR 中有很多参数,改变参数来控制计算细节,从而得到我们期望的结果。INCAR准备的原则是,越简单越好。 网上很多人发INCAR的教程,列了一堆参数进去,甚至长达两页,有些连默认值也放在里面了,恨不得把所有参数全部放进去。不过,请记住:那些令人眼花缭乱的只是唬人装逼用的,在实际计算中会严重拖你的后腿。 熟知各个参数的数值意义,以及在不同计算任务中的设置至关重要。 有人会说,那么多参数,怎么能记得过来? 放心,完全可以的。 一方面对于特定的体系,所需要的参数不同, 如果你的课题比较稳定,那么你应该不会接触太多的参数。比如你专注于体系的能带结构,那么算过渡态的参数你就不会需要。 另一方面,这些 计算 参数又不是一天两天能记住的, 是一个长期积累的过程。随着时间的增长和个人经验的增加, 自然而然地就记住了。 2)每个参数后面跟着等号 = , 3) 等号前后可以有空格,也可以没有 ,ISMEAR=0 和ISMEAR = 0 结果一样, 4)SYSTEM 后面是该计算的说明,这个可以随便写,SYSTEM = O atom 和 SYSTEM = I LOVE YOU,除了多出几个字符外,对计算没有什么影响。 当然,本行也可以删除。 --------------------------------- 5)ISMEAER这一项,目前需要记住的是:不同的值对应的是不同的展宽方法,对于半导体和绝缘体体系,ISMEAR的值取 绝对不能大于0 , 一般用0,更加精确的时候用 -5,如果体系非常大,只有1个或者2个K点的时候,则用 ISMEAR = 0。 对于金属来说,ISMEAR的取值一般为1。 一般来说,ISMEAR = 0 (Gaussian Smearing) 可以满足大部分的体系(金属,导体,半导体,分子),在DOS能带计算中, 使用ISMEAR = -5 用于获取精确的信息。 --------------------------------- 6)SIGMA该项, 如果用了ISMEAR = -5 , 可以忽略; 对于金属: ISMEAR = 1 或者0,非金属:ISMEAR = 0 的时候,一般取0.10 或者采用默认值 0.20 即可。 不过很多人都不放心,为了保险想测试一番。 标准是: SIGMA 的取值要保证OUTCAR 中的 entropy T*S 这一项,平均到每个原子上,要小于 1-2 meV。 检查的时候可以用这个命令: grep 'entropy T' OUTCAR ( 这里有两个单引号,不要忘掉输入 ) 得出的能量除以体系中原子的数目再和 0.001 eV 比较,如果小于,SIGMA取值OK,如果大于,再换个测试。 对于分子,原子体系,必须要用很小的值,这里我们用的0.01 。 --------------------------------- 7)输入完上面的几行,Notepad ++ 保存的时候,文件名为: INCAR,保存类型选择 All types (*.*) 8)用Vim的筒子们输入前面的三行文字,然后保存成INCAR即可。 9)前面说了很多,很多人可能会犯晕。 目前来说,关键两点要记住: INCAR是纯文本没有尾缀;算原子或者分子时,ISMEAR选择0, SIGMA要足够小。 --------------------------------- 2.3.2 KPOINTS 打开编辑器,把下面几行输入进去: #号以及后面的不用输入 K-POINTS # 第一行随便写都行 0 # 零,格子自动生成 Gamma # gamma 点 centered 1 1 1 # 1*1*1格子 0 0 0 # S1 S2 S3, 一般保持 0 0 0 不变 。 详解: 1) 该KPOINTS 文件里面,共有5行,第一行可以随便写内容,但不能没有; 2) 第二行是数字0,不是字母O,0 在这里表示的是自动生成K点。你可能注意到了,0前面有个空格,不过没关系,对计算不影响,可以删掉也可以再加一个空格,后面的第4,5行同样如此, 但是 避免用tab输入 ,VASP有时候不识别tab键输入的空白部分,导致计算出错。 --------------------------------- 3)第三行, VASP只认第一个字母,大小写均可 。在这里Gamma和gamma,Gorge,gorge 效果是一样的,当然这一行也可以直接写字母G或者g。G表示的是以gamma点为中心生成网格, 另外一种是原始的Monkhorst-Pack 网格,两者的区别是 M 或者 m 在 G的基础上在三个方向上平移了1/(2N)个单位。其中G,也叫 gamma centered Monkhorst-Pack Grid. 具体见扩展阅读KPOINTS; --------------------------------- 4)第四行,在xyz三个方向上生成对应数目的K点,本例是1*1*1; 5)第五行,扩展阅读中对应的S1,S2和S3, 一般都写成 0 0 0 ; 6)按照前面INCAR的方式保存文件,名字为KPOINTS; 6) 对于原子或者分子的计算,K点取一个gamma点就够了 ,也就是这个KPOINTS文件可以用于绝大多数的原子或者分子计算,不用再修改; 因此,不要在群里问类似这样的问题:我优化一个气相小分子的时候,用gama点还是2*2*2的K点? 7)K点在VASP计算中非常重要,大师兄给的一个建议是,永远用gama centered,也就是第三行保持G不变。因为M平移之后,网格的对称性和晶胞的对称性会出现不匹配的情况,从而导致计算出错,尤其是 对于六角晶系hexagonal的结构,必须用gama centered !这一点,vasp官网说的很明确; 其他的建议后续慢慢展开讨论。 --------------------------------- 2.3.3 POSCAR 下面几行中,#或者!后面的文字是为了给大家展示用的,不用输入。 O atom in a box #1 1.0 ! universal scaling parameters #2 8.0 0.0 0.0 ! lattice vector a(1) #3 0.0 8.0 0.0 ! lattice vector a(2) #4 0.0 0.0 8.0 ! lattice vector a(3) #5 O ! O element #6 not zero 1 ! number of atoms #7 cart ! positions in cartesian coordinates #8 0 0 0 #9 详解: POSCAR包含了我们的模型结构信息。 这里,我们要计算氧原子能量,采取的模型是:把氧原子放到一个长宽高均为8.0 \AA (埃)的格子里,如果你要算其他原子或者分子,均采用这种模型, 格子长宽高可以随便更改。 1) 第一行,同样随便写,但不能不写; 2) 第二行,一个Scale factor,可以成为缩放系数,这里是1.0,如果写成2.0,则后面的三行中的数字以及xyz坐标都要除以2。一般来说,写成1.0即可,这样比较直观,清晰; 3)第三到五行是格子在三个方向上的坐标信息; 4)第六行是 氧的元素符号,这里需要注意的是,vasp4.xx版本里面没有这一行,最新的版本里面有; 另外, O的符号和数字0容易混淆,一定要注意! 在POSCAR里面该行没有的话也不会影响计算,VASP会读取POTCAR中的元素信息,但输出文件CONTCAR中会把该行自动添上; 5)第七行对应第四行元素原子的数目; --------------------------------- 6)第八行的cart, 同KPOINTS的第三行,只认第一个字母,C或者c代表笛卡尔坐标, D或者d代表分数坐标系,两者的转换见参考阅读POSCAR2, 值得注意的是,VASP输出文件CONTCAR里面采用的是分数坐标系, 两个坐标系的区别从第8行开始,前面的七行都保持完全一致。 也就是说, 如果想实现两个坐标系之间转换,我们只需改变第7行后面的部分即可 ; 7)第9行是氧原子的坐标信息,这里我们把它放到了原点(0.0 0.0 0.0)的位置,大家也可以随便放一个位置,比如说(4.0 5.0 6.0 ), (1.1 2.5 6.5), 由于周期性,不管你怎么放,相邻两个格子之间氧原子的距离都是一样的。 8)如有有迷惑,先记下来! --------------------------------- 2.3.4 POTCAR 1)每种元素都有很多种不同的POTCAR,VASP官网推荐了一些常用的, 见扩展阅读POTCAR2, 大家浏览该网址,寻找适合自己体系的POTCAR。 本例子中,我们采用官网推荐的氧原子POTCAR,默认的Cut-off 能量是400,价层有6个原子。大家把自己的POTCAR数据库中的直接复制过来即可。 查看POTCAR中的元素: grep TIT POTCAR 查看POTCAR的Cut-off 能量: grep ENMAX POTCAR 2) POTCAR中的元素顺序一定要和POSCAR保持一致,否则计算会出错。 这个后面我们也会继续讨论, 目前大家先知道这一点即可。 --------------------------------- 3 扩展练习 3.1 新建10个文件夹,每个文件夹中的SIGMA的数值不同, 从0.01, 0.02, 0.03 ... 0.10,其他输入文件与本章中的内容保持一致; 3.2 新建6个文件夹, 每个文件夹中的KPOINTS不一样,1*1*1,2*2*2, 3*3*3,4*4*4,5*5*5,6*6*6 其他输入文件与本章中的内容保持一致; 3.3 新建6个文件夹,每个文件夹中的POSCAR不一样,格子分别为:8*8*8,10*10*10,14*14*14,16*16*16,18*18*18,20*20*20,其他输入文件与本章中的内容保持一致。 --------------------------------- 4 总结 本节主要给大家展示一下,VASP的四个基本输入文件是怎么制作的,以及每个文件中所对应的格式和细节, 从而消除大家的疑惑。本节信息量对于新手来说,可能有些大,下一个练习我们进入计算问题部分。 请务必完成扩展练习 ,手把手进行Hard-Way训练。 扩展阅读链接 均来自vasp官网,大家务必要静下心来浏览一遍,如果不懂,没有关系,也得继续看完。 这也是为什么本书叫The Hard Way 的原因: 鼓励大家手动制作输入文件(避免复制粘贴),潜心学习官网教程,从而远离网络上那些错误的信息。 尤其是对于新手来说,很多都不懂的时候,没有自己的主见,别人一说就被牵着鼻子走了。 --------------------------------- 扩展阅读: Vim使用练习:自己搜资料学习,百度里面很多,学会怎么输入,保存。 VASP文件: http://cms.mpi.univie.ac.at/vasp/guide/node50.html#SECTION00070000000000000000 INCAR: http://cms.mpi.univie.ac.at/vasp/guide/node91.html KPOINTS1: http://cms.mpi.univie.ac.at/vasp/guide/node55.html#SECTION00075000000000000000 KPOINTS2: https://cms.mpi.univie.ac.at/vasp/vasp/Automatic_k_mesh_generation.html POSCAR1: http://cms.mpi.univie.ac.at/vasp/guide/node59.html#SECTION00077000000000000000 POSCAR2: https://cms.mpi.univie.ac.at/vasp/vasp/POSCAR_file.html POTCAR1: http://cms.mpi.univie.ac.at/vasp/guide/node54.html#SECTION00074000000000000000 POTCAR2: https://cms.mpi.univie.ac.at/vasp/vasp/Recommended_PAW_potentials_DFT_calculations_using_vasp_5_2.html ISMEAR1: http://cms.mpi.univie.ac.at/vasp/guide/node124.html ISMEAR2: http://cms.mpi.univie.ac.at/vasp/vasp/Number_k_points_method_smearing.html --------------------------------- ex1 中的内容,大家如有疑问: 1 请发邮件联系大师兄, bigbro@bigbrosci.com 邮件标题: ex1问题-XXX ; 2 将自己的问题写在一个txt里面,命名: ex1问题-XXX, 然后上传到QQ群里面进行提问; (QQ 群: 遇见大师兄 217821116 ) ; 3 直接在QQ群里提问,但必须加上 ex1问题 这几个字,方便大师兄(姐)们整理记录; 4 QQ 群文件里已经新建了ex1文件夹,里面包含了本练习中的网址和扩展练习的文件; 5 文中的错误请留言指正。 ex1-VASP基本输入文件的准备.pdf
个人分类: VASP|2802 次阅读|0 个评论
[转载]《Learn VASP The Hard Way》序言:如何学习本书?
hongyesies 2017-7-17 14:25
转载说明:《Learn VASP The Hard Way》转载自大师兄科研网(http://www.bigbrosci.cn),版权属于李强 博士 (QQ: 122103465) 此书主要针对于0-6个月的VASP初学者,VASP小白,或者刚刚转换计算方向(从VASP计算一个性质到另外一个性质时),以及某一部分计算细节生疏需要复习的科研工作者。列出来一堆求解薛定谔方程中的各个公式定理等,肯定会对初学者造成一定的误导,因此本书不讨论过多量子力学的基本原理。旨在为初学者提供一个快速进入计算而又避免过多新手错误的方法。 由于对计算细节的不了解,且无人指导(导师啪啪啪打脸),很多人在计算了一个多月后发现自己的参数设置错了,并且需要重算,浪费了大把的时间和机时。大师兄遇到过很多种类似的情况,周围的朋友遇到这种情况的也不在少数。更有甚者,课题做完了才发现是错的。 出现错误并不可怕,可怕的是我们不知道长教训,后面继续犯错。这也是本书的一个出发点,首先保证大家提交的任务准确无误,可以尽最大可能避免遇到前面类似的问题,进而起到间接节约时间的作用。在正确计算的同时,大家可以从头学习密度泛函理论,阅读相关课题的参考文献等。下面链接列举了一些相关的书籍介绍: https://www.zhihu.com/question/20329413 http://muchong.com/bbs/viewthread.php?tid=8061842fpage=2 本书的另一个出发点就是,大师兄加了很多关于计算的QQ群,但是群里面很多问题都非常低级,令人费解,或者说是匪夷所思的,从最基本的建模都做不到,到计算结果不会分析等等。这些人简单而又低级的问题充斥在各个QQ群里。暂且不说这些人的导师有多么地不负责任。很多热心的人却在群里整天忙着应付这些问题,而对于自身,除了得到个活雷锋的标签外,对理论功底的提高,帮助甚微。可以说是花自己的时间替别人指导学生。 不论群主给自己的群定位有多高,高级群,中级群,精英群等等,都避免不了这样的问题出现。本书主要通过实例引导大家主动思考去解决这些最基本的常见问题,进而避免因自己的低级问题浪费他人的时间。 大师兄希望的是,对于求助或者应助的人,大家尽可能地讨论一些更高级,更深层次的科研问题,而不是浪费在这些低级的问题上。即使在新的计算中遇到了之前没有碰到过的小细节,自己也知道怎么去动脑子,主动解决。 引用一个牛人的话:量化入门一定要按照正确、合理的顺序,循序渐进。要从简单到复杂,从构建整体的知识框架并会用最常用的量化程序算最基本的任务开始,再到逐渐了解更多理论、深化对理论的理解以及掌握更多计算技巧和程序的使用。具体可以浏览下网站:http://sobereva.com/355。 学习计算化学的人,对解决科研问题都有着一种执着的态度,通过构建模型来阐明已知或者预测位置的结果。相对于做计算的科研工作者们,虽然我们没有实验技巧的提高,但我们可以通过训练自己的大脑来弥补。懂得思考的人永远站在社会发展的最前端。 如何学习本书,大师兄在学习程序时,受到learn_python_the_hard_way这本书的启发,务实是这本书的一大特色,开始学习语言,乱七八糟的先统统给我闭嘴,照着我的代码练习一番,然后再自己思考琢磨,出现问题拿自己的代码和作者代码比较找出原因。通过系统地学习,随着水平的提高,再逐步解释前面未讲解的内容。这一种学习方法非常适合零基础的菜鸟,因为一开始太多的概念根本不可能一股脑儿全部接受。从简单入手,指导着循序渐进,最后达到精通。 对于量化计算,本书也采用这样的思路,手把手先教会大家如何计算,如何避免错误。 从最基本的计算开始,通过示例讲解,结合一些脚本的使用,引导大家思考解决自己的问题。因此,在这本书的学习过程里,每一章节会对应一个例子,大家务必手动搭建模型,输入文件(切忌复制粘贴),然后进行计算,得到和大师兄一致的结果。为了引导大家主动浏览官网解决问题,很多都会采用官网的例子,大师兄会重新计算后放到章节里面(官网的结果版本比较陈旧)。 此外,论坛或者QQ群里,有很多无知或者stupid的回复,处在迷糊之际的菜鸟由于对自己的不自信,会一股脑儿去相信别人错误的观点,进而一路错下去,这是最可怕的。所以,如果有疑问,可以先酝酿一两天,然后再大胆提出来,改正就是进步。 由于时间有限,且保证书的质量,更新可能会比较慢(计划1年),跟不上同学的科研速度,在这段时间,大家有什么问题,对之前的章节有什么意见,可以尽管提出来,这对充实完善本书有着莫大的推动作用。你的一个问题,可以解决无数个师弟师妹们的疑惑,他们在后续学习中会受益匪浅。 There are kinds of questions you will find yoursel asking and not knowing where to get quick answers from. That's what BigBro(a)s are trying to fix. 你会发现自己在问各种各样的问题,但不知道从哪里可以得到快速解答。 这正是大师兄正在尝试解决的问题:结合最基本的化学常识和软件计算细节,做最好的快速基本入门书籍。 对于刚刚入门的小白,下面是大师兄推荐的两本书和一个网站: 参考书: 1 Density functional theory:A practical introduction, by David Sholl 2 Quantum Chemistry by Levine 3 Vasp Manual: http://www.vasp.at ex-0-学习前的准备工作.pdf 说明:本系列文章已经得到作者的转载许可。
个人分类: VASP|1506 次阅读|0 个评论
[转载]杂化密度泛函的计算过程(VASP-HSE03 or HSE06)
yxx554243496 2017-7-9 14:24
杂化密度泛函的计算过程(VASP-HSE03 or HSE06) 1、首先进行标准的DFT计算; 2、HSE计算 (1)INCAR文件内容示例(没有弛豫过程,并利用SCF过程得到的WAVECAR文件): SYSTEM =Name ISTART = 1 ICHARG = 2 GGA = 91 VOSKOWN= 1 ISPIN = 2 MAGMOM = 3 47*0 NELM = 200 EDIFF = 1E-04 ISMEAR = 0 SIGMA = 0.05 LDIAG = T LREAL = T NEDOS = 2000 EMIN = -15 EMAX = 15 LHFCALC = T PRECFOCK = F HFSCREEN = 0.2 ! Switch PBE0 to PBE03 or PBE06 ALGO = Damp IMIX = 4 AMIX = 0.2 !以下四项主要用于控制收敛情况 BMIX = 0.0001 AMIX_MAG = 0.8 BMIX_MAG = 0.0001 TIME = 0.2 AEXX = 0.25 AGGAX = 0.75 AGGAC = 1.0 2、KPOINTS 可以将SCF过程得到的IBZKPT改名成KPOINTS,同时,在后面加入高对称点坐标(即Line-mode下的坐标形式),其后面的权重值都改为0,并把总K点数进行修改。 3、POSCAR 可以将SCF过程得到的CONTCAR改名成POSCAR 4、POTCAR 同于SCF过程 由于HSE计算过程对内存要求较高,可以把SCF过程中节点数增加,而每个节点上的进程数减少来实现;另外,计算过程非常缓慢,要耐心等待! http://blog.sciencenet.cn/blog-567091-732988.html http://blog.sciencenet.cn/blog-567091-731874.html http://blog.163.com/zxg_far@126/blog/static/9805567420134302241600/ http://muchong.com/t-4123962-1
个人分类: VASP计算|5380 次阅读|0 个评论
[转载]VERY BAD NEWS! internal error in subroutine SGRCON
yxx554243496 2017-6-25 19:03
VERY BAD NEWS! internal error in subroutine SGRCON 转自: http://blog.sina.com.cn/s/blog_650463380102vgxu.html VERY BAD NEWS! internal error in subroutine INVGRP: inverse of rotation matrix was not found (increase SYMPREC)2 VERY BAD NEWS! internal error in subroutine INVGRP: inverse of rotation matrix was not found (increase SYMPREC)2 或者 Very bad news! internal error in subroutine SGRCON: Found some non-integer element in rotation matrix: 3 等错误或警告,且不能运行。 SYMPREC=1E-04 就行了,不加的话就老报错,且不能运行。 vasp-2012manual.pdf中: 6.27 ISYM-tag and SYMPREC-tag The SYMPREC-tag (VASP.4.4.4 and newer versions only) determines how accurate the positions in the POSCAR file must be. The default is 10−5, which is usually suffiently large even if the POSCAR file has been generated with a single precision program. Increasing the SYMPREC tag means, that the positions in the POSCAR file can be less accurate.
个人分类: VASP|5664 次阅读|0 个评论
[转载]vasp如何加压
yxx554243496 2017-6-23 17:12
vasp如何加压 转自: http://blog.sciencenet.cn/blog-749450-779016.html from: http://emuch.net/bbs/viewthread.php?tid=1506033 http://emuch.net/bbs/viewthread.php?tid=1555981 http://emuch.net/bbs/viewthread.php?tid=1734871 【求助】vasp如何加压? 请问用vasp如何实现加压,小弟想用于结构相变的计算。 网上有说PSTRESS这个可以实现静水压,但又说通常都是靠改变晶格常数来实现的,不知道哪个更准确些?改变晶格常数后如何换算成压强?希望能给个实例。 按照manul上的说法,拟合这种方法可以消除pullay stress对结果的影响,得到的bulk modulus 是可靠的。但是拟合需要的数据点决定了拟合的结果的准确性。我用过不同的数据点拟合,发现得到的结果不一样啊。那就有个问题,多少数据点得到的结果可靠呢,这一部分误差应该是来自于拟合的误差,不是由计算的数据点引起的。 如果通过加pstress的方法也有一个问题,由于ENCUT不足够大,总是有pulay stress的影响,我想这一步可以通过manul上的方法减少误差。不过和上一步得到的还是不一致,很郁闷的事。 目前这两种方法都有人用,PRB上很多是用第一种方法,第二种也有,我自己就是用第二种,省事啊~~~ 在INCAR 中加入PSTRESS=多少 就是加压。 注意单位是Kbar。 也可以改变晶格参数来得到 E V 的关系, 从而拟合物态方程。 但仅限于立方晶系。 而且坦诚的说, 由于vasp负压计算的不是很准,所以拟合物态方程也不是很好的选择。 所以建议使用PSTRESS 只要经过了收敛测试。 一般vasp 算的都很准。 Pulay Stress 是改变体积时如果ENCUT设置的不够大,系统没有绝对收敛引起的剪切应力误差。这个可以通过设置ENCUT为ENMAX的1.3倍来避免。另外external stressure是VASP计算得到的外部应强,单位kB,1kB=0.1GPa, B是bar的意思1bar=10E5Pa.正号代表压强为正,就是加压,负号代表压强为负,表示拉伸。对材料加压可以考虑设置PSTRESS,不过记得设置ISIF=4才可以。还有可以通过固定体积来对材料加压。 一个结构是否稳定实际是看吉布斯自由能最低,G=E+PV-TS. 由于第一性原理处理的是0K,所以TS=0. 而H=E+PV 所以采用enthalpy来确定结构相变.
个人分类: VASP|1894 次阅读|0 个评论
Ideal strength VASP by Hanyu Liu
热度 1 fxl91 2017-6-20 17:08
The original method is introduced by PRL 82,2713(1999) 本文为本人工作记录。程序下载及计算方法请到 https://sourceforge.net/projects/ideal-strength-vasp/?source=navbar 感谢本程序作者: Dr. Hanyu Liu Email: hanyuliu801@gmail.com 准备工作 1.结构优化。将CONTCAR到出,在MS中导入对称性, 再转为POSCAR(for further calculations) 2.编译VASP。把VASP安装包cp到自己的目录。 for ideal tensile strength, add 'FCELL(1,1)= 0.0' to constr_cell_relax.F of vasp code. #the Stress at x axis is fixed and vasp not relax the lattice at x axis. for ideal shear strength, add 'FCELL(1,3)= 0.0' and 'FCELL(3,1) = 0.0' constr_cell_relax.F of vasp code. Here, you need to recompile vasp. 【make clean 】【make】 我在make的过程除了error: 没有lib。Lib文件放在mu'lu中,改下路径ming ,OK! 输入文件 0. pbs.sh (集群上提交任务的脚本 ./strenth4.py Strength.log) 1.POSCAR 2. POTCAR 3. KPOINTS (不用太大: ./writekp.py 0.04) 4. strength4.py (核心程序,下载到Hanyu主页,见文章开篇) 5. input.dat (strength4.py 要读的输入文件) as followed: POSCAR #the name of POSCAR 0.02 #strain of distortion 100 #total step of distortion (虽说一般30steps即可,建议设置大一些,因为数据够了的话可以手动kill job) -45.0 35.264390 0.0 # rotate Z, Y and X. 1 # 1 tensile, 2 shear /home/zzu002/lhy/test/vasp/vasp.5.3-1/vasp # 提任务的命令。注意tensile和shear 的vasp路径不同! 关于计算的方向: We set x axis as tensile strength direction (tensile (x)). Also we set x and z axis as shear direction (shear (x) ). For example, if you want to calculating ideal strength of Diamond along 100, you just set 0.0 0.0 0.0. If you want to calculate 110 orientation, you need set -45.0 0.0 0.0 If you want to calculate 111 orientation, you need set -45.0 35.264390 0.0. It is for rotating the x, y and z axis as a Right-handed helical rule. 我计算的tensile plane: TENSILE dire input#rotate Z, Y, X. GPa jobID jobState 100 0.0 0.0 0.0 103.115345 53421 killed 110 -45.0 0.0 0.0 100.23066 53422 killed 111 -45.0 35.264390 0.0 120.147138 53463 killed 001 0.0 90.0 0.0 75.300806 53464 killed 010 -90.0 0.0 0.0 122.560777 53465 killed 101 0.0 45.0 0.0 75.7 54584 011 -90.0 45.0 0.0 64 54585 +101 0.0 -45.0 0.0 82 54586 +110 45.0 0.0 0.0 54587 =110 killed 11+1 -45.0 -35.26439 0.0 10.961293 54953 SHEAR-001 1 0.0 90.0 0.0 55035 2 0.0 90.0 90.0 55036 3 0.0 90.0 180.0 55161 Research highlights: 1, Miao Zhang, Mingchun Lu, Yonghui Du, Lili Gao, Cheng Lu and Hanyu Liu, Hardness of FeB4?: Density functional theory investigation J. Chem. Phys., 140, 174505 (2014) 2, Yinwei Li, Jian Hao, Hanyu Liu, Siyu Lu and John S. Tse High energy density and superhard nitrogen-rich B-N compounds, Phys. Rev. Lett., 115, 105502 (2015) 3, Miao Zhang, Hanyu Liu, Quan Li, Bo Gao, Yanchao Wang, Hongdong Li, Changfeng Chen and Yanming Ma, “Superhard BC3 in cubic diamond structure” Phys. Rev. Lett., 114, 015502 (2015) 4, Quan Li, Hanyu Liu, Dan Zhou, Weitao Zheng, Zhijian Wu and Yanming Ma, novel low compressible and superhard carbon nitride: Body-centered tetragonal CN2 Phys. Chem. Chem. Phys., 14, 13081–13087 (2012)
个人分类: 我的学习笔记|7638 次阅读|1 个评论
VASP+Phonopy-supercell(冷冻原子法) 计算声子谱
yxx554243496 2017-6-14 19:27
VASP+Phonopy计算声子谱、偏态密度 1. 首先得到力FORCE_SETS/CONSTANTS VASP-INCAR文件-用于计算声子谱前的优化 System = *** PREC = Accurate ENCUT = 400.0 LREAL = .False ISMEAR = 0 SIGMA = 0.05 EDIFF = 1E-7 EDIFFG = -1E-3 NSW = 50 ISIF = 3 IBRION = 2 VASP INCAR文件: DFPT in VASP- used to calculated phonon spectrum System = *** PREC = Accurate ENCUT = 400.0 LREAL = .False ISMEAR = 0 EDIFF = 1E-7 NSW = 1 IBRION = 8 LWAVE = .FALSE LCHARG = .FALSE ADDGRID = .TRUE VASP POSCAR文件:cp SPOSCAR POSCAR (优化) 【应确保设置的KPOINTS产生的NKPTS个数达到20个左右。NKPT保持20个左右时,kmesh可取在0.04~0.05之间的某一数值,对计算结果影响不大,但相比0.03取值,可显著提高计算速度!! 优化完毕,check OUTCAR文件中的频率,如果频率行包含i,则表明存在虚频;需修改参数继续优化,以检查是否是由于参数设置不当引起的虚频。如:grep 'cm-1' OUTCAR】 对SPOSCR优化计算完成后,执行操作为: phonopy --fc vasprun.xml,得到FORCE_CONSTANTS VASP INCAR文件: 冷冻原子法 used to calculated phonon spectrum ENCUT = 400.0 LREAL = .False ISMEAR = 0 EDIFF = 1E-7 NSW = 0 IBRION = 1 LWAVE = .FALSE LCHARG = .FALSE VASP POSCAR文件:cp POSCAR-00i POSCAR(优化) 对POSCR-00i静态计算完成后,执行操作为: phonopy --f $i/vasprun.xml得到FORCE_SETS (or phonopy - f disp - { 001. . 003 } / vasprun . xml ) 2. 得到带结构所需文件及操作 带结构所需文件:band.conf FORCE_SETS/CONSTANTS POSCAR(扩胞前胞) 其中band.conf内容如下: ATOM_NAME = Ti S DIM = 2 3 2 BAND =000 0.500 0.50.50 000 00.50 00.50.5 000 000.5 BAND_LABELS= G Y C G Z D G B FORCE_CONSTANTS = WRITE BAND_CONNECTION = .TRUE. 操作:1) phonopy -p --factor=521.471 band.conf 得到band.yaml bandplot --gnuplot Phononband.dat 将band.yaml转化为可用orgin绘图的数据文件 3. 得到声子谱态密度所需文件及操作 所需文件: mesh.conf FORCE_SETS POSCAR(扩胞前的Unitcell) 其中mesh.conf内容如下: ATOM_NAME = Ti S (POSCAR原子分布 Ti Ti S S S S S S ) DIM = 2 3 2 MP =20 20 20 (大一些) PDOS = 1 2, 3 4 5 6 7 8 (逗号隔开表示态密度按原子种类投影) FORCE_CONSTANTS = READ 操作:phonopy -p --factor=521.471 mesh.conf,直接出来partial_dos.dat数据,用gnuplot作图 (1THz=4..413566meV http://halas.rice.edu/conversions) plot partial_dos.dat u 1:($2+$3) w l lw 3 pt 4 ps 1.5 t 'Ti', partial_dos.dat u 1:($4+$5+$6+$7+$8+$9) w l lw 3 pt 8 ps 1.5 t 'S', partial_dos.dat u 1:($1+$2+$4+$5+$6+$7+$8+$9) w l lw 3 pt 6 ps 1.5 t 'Total'
个人分类: VASP计算|14013 次阅读|0 个评论
BoltzTraP 相关
yxx554243496 2017-6-11 00:30
BoltzTraP软件简介 BoltzTraP软件包是基于半经典玻尔兹曼理论,通过对能带的傅里叶积分,计算电子的群速度,进而求解体系的电子输运性能的可执行代码。BoltzTraP软件包由丹麦的Madsen教授和美国的Singh教授于2006年共同发布。该软件包的输入参数包括晶体结构参数、空间群对称操作、能量本征值以及控制参数。 因为BoltzTraP软件包里面有将不可约布里渊区能量本征值通过对称操作转换为整个布里渊区的能带色散关系 ,因此, 只需要通过计算 加密k点的不可约布里渊区的能量本征值 EIGENVAL作为BoltzTraP的输入 。由于第一性原理计算中通常会低估体系的带隙,而半导体热电材料带隙过小时计算输运性质会出现双极化现象。为了避免这个问题的产生,在输运计算中常 采用剪刀操作 ,即保持其带隙的形状不变而将其带隙设置为实验值,这个设置在BoltzTraP软件包的输入控制文件intrans中进行。控制文件intrans中还可以对计算的温度、浓度等参数进行设置。利用BoltzTraP软件包,可以计算半导体热电材料的 Seebeck系数、电导率弛豫时间的比值、电子热导率、电子热容以及霍尔系数 等。 https://www.researchgate.net/post/How_could_I_make_BoltzTrap_input_files_from_VASP_outputs/1 Dear Colleagues, Please try to change line 289 in vasp2boltz.py to if ('spacegroup' in ao.info) and (ao.info!={}): . And if you have factorization error (you will), delete duplicated k-points in case.energy. I (and my colleague who fixed it) cannot be sure it's correct. So I want you to follow this solution and please feed me back :) http://chuansong.me/n/1747114
个人分类: VASP计算|6 次阅读|0 个评论
vasp加电场的两种方式
plgongcat 2017-5-6 17:36
个人分类: 软件学习|1 次阅读|0 个评论
DFT+U中U参数的确定
hongyesies 2017-4-29 21:29
本文转自: http://www.goscience.cn/article/articleInfo?type=2id=357 首先是对+U必要性的感悟。DFT(LDA和GGA)对一般体系的结构、能带计算还是很令人满意的。这些一般体系是指前3周期的体系和纯金属体系。但是,对于包含d电子和f电子的体系,特别是过渡金属氧化物或氮化物,在“金属/绝缘体”的定性判断上常常出错。LDA和GGA往往把一些绝缘体/半导体的gap算的太小,甚至最高占据轨道/能带(HOMO)在Fermi面之上,即成金属了。这些最高占据轨道往往是来自这些金属原子的d电子和f电子。那么为什么DFT处理d/f电子会出现较大误差呢?我认为这些d/f电子的特殊性在于它们不仅离原子核较远,轨道空间伸展形状奇特(比如穿透效应,即穿透更加外层的s,p轨道)而且多数会发生自旋极化,即原应自旋相反的电子对发生自旋跃迁,导致金属原子神奇地出现了净的磁矩。如果单胞内所有金属原子的净磁矩方向相同,则单胞总体产生净磁矩,材料呈现铁磁性;如果单胞内相邻金属原子的净磁矩相反,则单胞没有总体净磁矩,但存在一上一下的磁矩排列,材料呈现为反铁磁性。正是d/f电子这些神奇的特性,使得DFT计算的过渡金属氧化物或氮化物能带结构频频失误。为什么呢?原因在于DFT计算电子-电子之间的排斥作用所用的交换-相关泛函,是基于单粒子近似发展起来的。单粒子近似是把自旋配对的电子对看成单个粒子,这样Kohn-Sham轨道数量为总电子数的一半。但是当处理d/f电子时,不得不把电子对分开为自旋向上和自旋向下的两个粒子,即开壳层计算open shell。对开壳层体系使用单粒子近似下的交换-相关泛函时,其中的相关泛函就不能完全考虑d/f电子的相关效应。d/f电子的相关效应,就是自旋电子与自旋电子之间的排斥,和自旋电子与内层电子之间的排斥。这些排斥作用使得轨道/能带之间分割较远,轨道/能带较窄。但是DFT的相关泛函对这些排斥考虑的不够,结果轨道/能带过宽,轨道与轨道相互接近甚至重叠。这就是为什么DFT把绝缘体计算成了金属。一般把这些过度金属半导体/绝缘体体系称为强相关体系strongly correlated system。 怎么办呢?可能你已经直觉到了,直接加上一项,把d/f轨道上的自旋电子间的排斥作用作为(u/2*int(n_up*n_down))一个能量项加进去。这个就是Hubbard U model: E_DFT+U = E_DFT + U/2*int(n_up*n_down) 其中第一项E_DFT仍为正常的DFT计算。n_up, n_down分别代表自旋向上和自旋向下的电荷密度。二者相乘表示了它们之间的排斥作用。完整的Hubbard model还要考虑其中的重复计算,减去一个项,称为J项。+J项的计算刚刚在QE中实现。如果你追求结果的定量准确性,可以尝试玩玩+J。 这个+U项排斥作用前面有个系数U/2,也就是说这个排斥能并非直接的库仑排斥作用,而是有个系数。这个系数并非一个经验参数,而是代表了能量对d/f轨道上电子密度变化的二级导系数【1】。你可能会困惑,这有点像GGA?是的,不过GGA是通用的交换-相关能对密度的二阶展开的泛函。而这里的U是纯DFT基态总能量对特定体系d/f电子密度变化的二阶导。这有点像是个二次方项的收缩函数,即你们这些自旋作用的电子在轨道上的占据必须往特定方向收缩,否则会有能量惩罚。 上图中,不加U时左边的最高占据轨道和右边的空轨道之间的gap很窄,是不正确的;+U后变宽,更加接近实验结果。需要注意的是,+U是对电子结构的改善,对原子几何、晶体结构的影响可能很有限。此时只要不涉及电子性质,一般的GGA, LDA的结果是可以接受的。 那么这个+U能量惩罚项是人为的经验项,还是真实的物理存在呢?Cococcioni曾在【1】PRB71(http://prb.aps.org/pdf/PRB/v71/i3/e035105)中试图用图1来说明Hubbard U能量项的本质。他说真实的体系与环境交换电子,其能量变化应该是交换前后的两个状态的线性组合,这样的能量变化应该是线性的。但LDA和GGA对部分(非整数的)占据的Kohn-Sham轨道的自作用的不正确处理导致能量变化是非线性的。这二者之间的能量差就是Hubbard U能量项的来源。从这个解释可以看出, (1) +U能量惩罚项是物理存在的,并非经验校正。参数U的确定也不应该是经验的,而是必须考察DFT与真实势能面的差。 (2) 这个二级导是体系环境变化而变化的。这就导致必须对每个体系,甚至体系的不同状态(比如键长变化)计算相应的参数U。注意如果体系内有对称性不相同的金属位点,需要对每个位点上的金属原子计算其相应的参数U,不管它们是否为同种金属!获得合适的参数U以后,才能使用DFT+U模型精确确定自旋极化和能带、带隙等问题。(当然,更精确的模型还要考虑旋轨耦合spin-orbital coupling。) 怎么确定某个体系参数U呢?因为U是纯DFT基态总能量对这个体系d/f电子密度变化的二阶导,那么很自然的一个想法,我们对密度加以扰动,求能量的变化(响应),可以得到数值二阶导(微扰法)。不过,密度并非一个理想的微扰项,因为一个金属原子(Hubbard位点)涉及到多个电子。怎么办呢? Cococcioni提出了一种线性响应法。它向单个Hubbard位点施加一个势alpha,然后引起该位点的密度(占据数)重新分配,并得到纯DFT(即不含U,或者使U近似为0)能量对此alpha势变化的响应。这种总能响应包括2部分,1是能量对势本身的线性响应(占据数发生变化前)称为bare response(X0);2是能量对加势和占据数变化后总的响应,称为self consistent response(X)。二者的线性响应系数的倒数之差即为U: U = 1/X0 - 1/X 此法原始文献即PRB71. 图2, 上图中,红色为bare response,其线性系数为X0=-0.32,数据从自洽前第一个循环计算得到的Hubbard site上(即带d/f电子的金属原子)的占据数得到;蓝色为self-consistent response, 线性系数为X=-0.15,数据从自洽完成后Hubbard site的占据数得到. U = 1/X0 - 1/X = 3.47eV 在这个教程里有很详细的例子: 点击打开并下翻到 July, 23 Tursday: LSDA, collinear and noncollinear magnetism; spin-orbit coupling; DFT+U 在其中的Labs 1. Matteo Cococcioni,Examples of spin-polarized and DFT+U calculations 注意上面这种方法基于一个假定,即势alpha足够小,此时得到的U近似等于alpha=0时的U,即U_0。这是线性响应理论。即体系能量实际对势alpha的响应并不是线性的,但我们假定扰动足够小的情况下假定这种响应是线性的。上述方法对单个Hubard位点施加势alpha,但是在周期性体系中,任何扰动也都是周期性的。怎么办呢? Cococcioni提出的方法是延伸单胞为超胞,做响应计算;然后再次延伸为更大超胞,做响应计算。。。这样随着盒子越来越大,势在其中的作用越来越小,直到盒子无限大,则响应系数收敛。这种方法并不需要计算实际超胞,而是对密度响应进行外推。 Marzari提供了另一种不通过超胞外推即可获得无扰动的U_0的自洽方法(self-consistent U)(原始文献PRL97,103001(2006).)注意到尽管我们需要的是纯DFT能量对alpha的响应,但是上面的所有计算其实都是按照DFT+U的模型计算,只不过,进行alpha势扰动的时候,设置U为一个很小的值(称为初始U值,U_in),以获得纯DFT基态能对alpha的响应,从而得到U(称为U_out)。 Marzari并不让初始U_in近似为0, 而是设置它等于一系列值(0.5, 1.0, 1.5, 2.0, 2.5, 3.0 ...),然后运用上述方法去计算相应的U_out,然后将上述(U_in, U_out)数据系列在线性相关区拟合直线,可外推到U_in=0时的U_scf。如下图所示。 图3, 上图中,对给定的U_in = 0.5, 1.0, 1.5, 2.0, 2.5, 3.0做DFT+U计算,结束后可根据Hubbard位点上占据数得到一个U_out = Uscf - U_in / m。然后外推U_in=0时,U_scf=3.56即为正确的参数U。其中的U_0是使用第一种方法在势alpha扰动近似为0得到的近似U_0值,并非alpha=0的U值。 第一种超胞法(称为linear response法)外推和U_in/U_out外推法得到的参数U应该是一致的,但第二种方法更加优雅。 这个方法在这里有很好的教程: Calculating the Hubbard U 其中对两种方法都有相应的例子和Python脚本。注意两种方法的切换要修改其中的Variable.py文件,设定hubbylist或者alphalist。其中所用的例子是6重态MnO的cluster,并非固体。 虽然参数U的确定很麻烦,但是还是值得的。从PRL 97, 103001 (2006)中可以看到,GGA+U后算FeO的平衡键长、简谐振动频率,非谐频率的结果,直接逼近CCSD(T),当时哥就震惊了。 后记:MS和Castep的朋友不要问我参数怎么算,我也不知道。我只会用PWScf即quantum espresso。欢迎补充。 在使用+U model的过程中,我一直在思考这个U参数的本质,即U大一点意味着什么,小一点意味着什么?我们想,既然它是DFT能量能量对电荷密度变化的二阶导,那么有点类似与振动频率。在分子中,如果一根键的强度很高,那么振动频率就很高;如果键强度低,振动就弱,比如C=C双键就比C-C单键的振动频率高。类比的话,应该说U代表了d/f电荷密度随外部势(比如其它原子核对它的作用)的变化而变化的难易程度。如果U大,那么不容易变化;如果U小,则容易变化。在不使用+U模型时,那就是说U=0,这时d/f电子最容易受外部势的影响而左右摇摆,从宏观上来看,就是分布比较均匀,能带很宽。一旦+U以后,立即受到束缚,从而能带变窄。这和+U的实际作用正好一致。 进一步,Hubbard原子上的U参数与材料的金属性-非金属性的有一种联系:材料的金属性越强,U越小;材料非金属性越强,U越大。这从Cococcioni博士论文中的数据可以看出来:在金属态中,铁Fe的U为2.2, 铁磁FeO中为4.29, 而绝缘体Fe2SiO4中为 4.9/4.6. 所以,如果你得到的U很小,很可能意味着你的体系的金属性很强。当然,这并不意味着你可以不使用U,U虽小仍然可能大大改善能带的分布。 在不使用+U模型时,那就是说U=0,这时d/f电子最容易受外部势的影响而左右摇摆,从宏观上来看,就是分布比较均匀,能带很宽。一旦+U以后,立即受到束缚,从而能带变窄。 这句话容易引起歧义,补充一下,U越大,能带越宽,对应带隙越小;U越小,能带变窄,对应带隙越大。不过这只是一个简单理论分析,是否真的对所有材料都是如此,由于本人研究过的体系有限,不敢下定结论。欢迎补充。 帖子里的Stanford的教程: Calculating the Hubbard U 已经转移到了MIT: http://hjklol.mit.edu/content/calculating-hubbard-u Calculating the Hubbard U的参考文献PRL91直接下载: http://pan.baidu.com/s/13x4x4
个人分类: 理论基础|10 次阅读|0 个评论
[转载]VASP发布一种新泛函SCAN Meta-GGA
热度 1 plgongcat 2017-4-25 10:01
VASP发布一种新泛函SCAN MetaGGA 转载 VASP即将发布一种新泛函SCAN MetaGGA。 功能介绍: 新泛函在诸多方面超越了LDA和PBE-GGA,在一些方面达到甚至超越了杂化泛函的可靠性,对弱相互作用体系优于LDA和PBE-GGA,计算量能与LDA和GGA相媲美,然而,SCAN的收敛性可能比GGA差。 发布时间:2017.4.18 参考文献: PRL115,036402(2015)及Nature Chemistry (2016) doi: 10.1038/nchem.2535 https://journals.aps.org/prx/pdf/10.1103/PhysRevX.6.041005 1. 介绍: The SCAN meta GGA has been shown15 to be superior to the PBE GGA for some standard molecular test sets and a small collection of solids. The mean absolute errors for SCAN15 are smaller than those for PBE by a factor of about 4 for the atomization energies of the 223 G3 molecules, a factor of 3 for the binding energies of the S22 set of weakly bound dimers of small molecules, and a factor of 4 for the LC20 set of lattice constants for solids. SCAN is also more accurate, by about 30%, in predicting the BH76 energy barriers to chemical reactions. Future studies will also show that the mean absolute errors of SCAN for the heats of formation of 94 binary solids are smaller than those of PBE by about 30%, or a factor of 3, for compounds with or without transition-metal elements, respectively. However, this Article shows that SCAN has an unexpected and striking performance for diversely bonded systems, many of which were believed to be out of reach of semilocal functionals, and is comparable to or even more accurate than a computationally more expensive hybrid GGA. 2. 如何在vasp5.4.4中实现scan+rVV10看下面链接: https://sites.google.com/site/haoweipeng/softwares
个人分类: 软件学习|5909 次阅读|0 个评论
用VASP计算VDW
fxl91 2017-4-16 16:45
VASP手册里关于VDW的说明: 建议用 optPBE-vdW, or the optB88-vdW functional,比较精确(Peng Feng) http://cms.mpi.univie.ac.at/vasp/vasp/vdW_DF_functional_Langreth_Lundqvist_et_al.html vdW-DF functional of Langreth and Lundqvist et al. The vdW-DF proposed by Dion et al. is a non-local correlation functional that approximately accounts for dispersion interactions. In VASP the method is implemented using the algorithm of Roman-Perez and Soler which transforms the double real space integral to reciprocal space and reduces the computational effort. Several propsed versions of the method can be used: the original vdW-DF , the ``opt functionals (optPBE-vdW, optB88-vdW, and optB86b-vdW) where the exchange functionals were optimised for the correlation part , and the vdW-DF2 of Langreth and Lundqvist groups . This method is available since the 5.2.12.26May2011 version of VASP for the calculation of total energies and forces. The stress calculation for the cell optimisation (ISIF=3) is available since the VASP 5.2.12.11Nov2011 version for spin unpolarised systems and VASP 5.3.1 for spin polarised systems. N.B. : This feature has been implemented by J. Klimeš. If you make use of the vdW-DF functionals presented in this section, we ask you to cite Ref. . Please also cite the original vdW-DF paper of Dion et al. and the paper of Roman-Perez and Soler . In addtion, cite the paper of Lee et al. if you use the vdW-DF2 functional, the paper of Klimeš et al. if you use the optB88-vdW or optPBE-vdW functionals, and any other appropriate references, such as Ref. . Correlation functionals The method is invoked by setting LUSE_VDW = .TRUE. Moreover, the PBE correlation correction needs to be removed since only LDA correlation is used in the functionals. This is done by setting AGGAC = 0.0000 The two tags above need to be used for all of the following functionals. Exchange functionals The GGA tag is further used to choose the appropriate exchange functional. The original vdW-DF of Dion et al uses revPBE, therefore the vdW-DF can be chosen by setting GGA = RELUSE_VDW = .TRUE.AGGAC = 0.0000 More accurate exchange functionals for the vdW correlation functional have been proposed in and . To use these functionals set: GGA = ORLUSE_VDW = .TRUE.AGGAC = 0.0000 for optPBE-vdW, GGA = BOPARAM1 = 0.1833333333PARAM2 = 0.2200000000LUSE_VDW = .TRUE.AGGAC = 0.0000 for the optB88-vdW functional, or GGA = MK PARAM1 = 0.1234 PARAM2 = 1.0000LUSE_VDW = .TRUE.AGGAC = 0.0000 for the optB86b-vdW functional. In the vdW-DF2 functional the rPW86 exchange functional is used GGA = ML moreover, the vdW functional needs to be changed to the vdW2 correlation which requires only a change of a parameter: Zab_vdW = -1.8867 Therefore to use vdW-DF2, set: GGA = MLLUSE_VDW = .TRUE.Zab_vdW = -1.8867AGGAC = 0.0000 An overview of the performance of the different approaches can be found for example in for gas phase clusters and in for solids. Important remarks : The method needs a precalculated kernel which is distributed via the VASP download portal (VASP - src - vdw_kernel.bindat) and on the ftp server (vasp5/src/vdw_kernel.bindat). If VASP does not find this file, the kernel will be calculated. This, however, is rather demanding calculation. The kernel needs to be either copied to the VASP run directory for each calculation or can be stored in a central location and read from there. The location needs to be set in routine PHI_GENERATE. This does not work on some clusters and the kernel needs to be copied into the run directory in such cases. The distributed file uses little endian convention and won't be read on big endian machines. The big endian version of the file is available from the VASP team. There are no special POTCARs for the vdW-DF functionals and the PBE or LDA POTCARs can be used. Currently the evaluation of the vdW energy term is not done fully within the PAW method but the sum of the pseudo-valence density and partial core density is used. This approximation works rather well, as is discussed in , and the accuracy generally increases when the number of valence electrons is increased or when harder PAW datasets are used. For example, for adsorption it is recommended to compare the adsorption energy obtained with standard PAW datasets and more-electron POTCARs for both PBE calculation and vdW-DF calculation to assess the quality of the results. The spin polarised calculations are possible, but strictly speaking the non-local vdW correlation is not defined for spin-polarised systems. For spin-polarised calculation the non-local vdW correlation energy is evaluated on the sum of the spin-up and spin-down densities. The evaluation of the vdW energy requires some additional time. Most of it is spent on performing FFTs to evaluate the energy and potential. Thus the additional time is determined by the number of FFT grid points in the calculation, basically size of the simulation cell. It is almost independent on the number of the atoms in the cell. Thus the relative cost of the vdW-DF method depends on the ``filling of the cell and increases with the amount of vacuum in the cell. The relative increase is high for isolated molecules in large cells, but small for solids in smaller cells with many k-points. C( graphite ) +2I 2 = CI 4 我在没有考虑VDW的情况下算出反应的形成焓是正的,与预期相反。想着应该是CI 4 为分子,应考虑VDW的影响。同时,对于反应中的其它物质也应该考虑VDW。 ∆ H = + 2.7077 non ∆ H = + 2.75386 optPBE_VDW ∆ H = + 2.70642 optB88_ VDW 不 考虑 VDW(non) 和考虑时 ( 用两种算法 ), 单个结构的焓值有很大变化,但是反应的形成焓差别不大。总体来讲,这个反应的形成焓就是正值。
个人分类: 我的学习笔记|12788 次阅读|0 个评论
VASP中K点的选择
hongyesies 2017-4-11 15:38
第一性原理计算时需要考虑能带的k点选择问题,这是初学者常遇到的问题。下面的文献给出了几乎所有晶体种类的k点参考: Wahyu Setyawan and Stefano Curtarolo (2010), High-throughput electronic band structure calculations: Challenges and tools , Computational Materials Science, doi:10.1016/j.commatsci.2010.05.010 能带K点选择文献.pdf 上面的文献值得好好看,掌握理论和方法。 另外从计算化学公社里看到的帖子: http://bbs.keinsci.com/forum.php?mod=viewthreadtid=5429highlight=VASP 关于KPOINTS文件的设置的总结(以下是根据网友经验和我自己验证总结的,不妥之处欢迎指出): 有三种自动设置K点的方式:Auto,Gamma,Monkhorst。 −−−−−−−−−−−−Auto 格式的KPOINTS文件−−−−−−−−−−−−− Automatic mesh #注释行 0 #表示要自动产生k点了 Auto #自动产生k的方法选为Auto,只看首字母 l #参数l,倒易空间中的网格间距为l^(-1)。 (1) Auto方式实际上指定了倒易空间中K-mesh的密度,因此在计算同一个体系的单胞、超胞时,可以使用同样的l值(默认单位是Aring;)。通常l取10(for 大gap的绝缘体)~100(d-金属),可取50左右进行测试。 (2) 按照(1)的说法,因为近似有k*|a| = l,即某个方向上的K点个数k,乘以这个方向的晶胞常数|a|,得到一个大约50左右的数比较合适。 (3) 注意:由于k = max(1, l*|b|+0.5),所以对slab模型可能会在z方向上k 1(虽然|b|=1/|c|确实比较小),所以slab模型用Auto可能会不适合。 −−−−−−−−−−−−G或M格式的KPOINTS文件−−−−−−−−−−−−− Automatic mesh #注释行 0 #表示要自动产生k点了 Gamma #自动产生k的方法选为G,还可选Monkhorst。只看首字母。 k1 k2 k3 #三个方向分别多少个k点。 0 0 0 #K网格的平移 (1) 关于平移:Monkhorst with (0.5 0.5 0.5)的平移,就等价于Gamma with (0 0 0),Gamma with (0.5 0.5 0.5)的平移,就等价于Monkhorst with (0 0 0),所以一般网格平移都写为0 0 0。 (2) 三种模式实际上产生的都是Monkhorst-Pack grids,其中Auto和Gamma的K-mesh中包含Γ点,即是Gamma centered,而Monkhorst不一定。 (3) 对于奇数K点,Gamma和Monkhorst-Pack效果完全一样,都包含Γ点,而对偶数情况,M和G才会不一样。 (4) 下面以一维的K-mesh为例, k=5, G和M一样: 0, ±1/5, ±2/5。 k=6, G: 0, ±1/6, ±2/6, 3/6 (注意没有-3/6,因为它与3/6重合) M: ±1/12, ±3/12, ±5/12 k=7, G和M一样: 0, ±1/7, ±2/7,±3/7, 可以看出,如果体系是关于中心对称的,则 (1) 对与G来说,k为偶数时,K点的分布是不对称的,导致其不可约点的个数较多,因此与k+1(奇数)的结果比较接近。(k=6和k=7时都有4个不可约K点)。 (2) 而对M来说,k为偶数时,K点分布对称,导致不可约的K点数目少,因此与k-1(奇数)的时候接近(k=6和k=5时都有3个不可约的K点)。 这就是为什么一般会说:对于G用偶数的k,对于M用奇数的k(而此时M与G一致)。若体系没有对称性,则使用何种K-mesh与奇偶无关。一般考虑包括Γ点的K-mesh,即G-mesh。 结论:使用Gamma形式的K-mesh,其中k点数目少的时候k设为偶数为佳。 注意,在进行K点的测试时,需要尽量去除其它因素的影响。因此一般设置ISMEAR=-5,ECUT=400 eV。 一般ECUT=400 eV就足够准确了,300 eV的话审稿人会提问与400eV的区别。 结果是否准确一般是看是否在0.01 eV/atom的误差范围之内。 ISMEAR,SIGMA,以及OUTCAR中的能量 ISMEAR: method to determine partial occupancies. 在OUTCAR文件中会有4个能量: E1(TOTEN) = E2(energy without entropy) + E3(entropy T*S),以及E4(Sigma--0)。 (1) E1是总能量,包含了不为0的SIGMA贡献的T*S项(即E3),但这一项应该被扣除。E2就是从E1中直接减去这一项,过于武断了,而E4则是从E1中通过外推的方法(即令Sigma--0)来扣除SIGMA的贡献,所以E4是相对来说最准确的。 (2) 若取ISMEAR= −5,则E3=0,其它三个能量完全相等,此为准确能量。此时设置SIGMA对结果没有任何影响。 (3) 若体系K点数目不够,或者为了加快计算速度,可以先不使用−5,而是使用ISMEAR=0/1/2并配合使用合适的SIGMA值。 a) 对半导体或绝缘体取ISMEAR=0(默认值SIGMA=0.05)。当绝缘体的Gap较大时,ISMEAR=0/1/2和−5的结果几乎完全一样。 b) 对导体取ISMEAR=1或2。需要设置合适的SIGMA参数。较大的SIGMA易于收敛,但可能导致E3过大,要检查E3 1meV/atom。默认值SIGMA=0.2,测试发现取SIGMA0.1时能量更为可靠一些。 NCORE 和NPAR 参数的设置: 对并行效果有较大影响,建议针对自己的体系进行测试。 我的机子(单节点多核)测试了几个任务,发现对于mpirun -np 8的任务,设置NCORE=1(或2)的时候效率最高,而对于mpirun -np 16的任务,设置NCORE=2的时候效率最高。
个人分类: 理论基础|11 次阅读|0 个评论
赝势相关
yxx554243496 2017-3-31 21:26
赝势相关 http://cms.mpi.univie.ac.at/vasp/vasp/pseudopotential_generation_package.html The pseudopotential generation package consists of two separate programs :the first one is called rhfsps and generates the l dependent pseudopotentials, the second one called fourpot3 prepares the pseudopotentials for VAMP and creates the POTCAR file, which can be used by VAMP. http://www.physics.rutgers.edu/gbrv/ This site hosts the GBRV pseudopotential library , a highly accurate and computationally inexpensive open source pseudopotential library which has been designed and optimized for use in high throughput DFT calculati-ons. https://www.vasp.at/index.php/news/36-highlights/100-new-release-paw-datasets After long and careful consideration we have decided to release a new set of POTCAR files covering the periodic table. This includes GW potentials for almost all elements. http://kitchingroup.cheme.cmu.edu/dft-book/dft.html 《 Modeling materials using density functional theory 》 http://blog.sciencenet.cn/blog-567091-796833.html GGA+U计算的时候除了在INCAR中设置LDAU LDAUTYPE LDAUL LDAUU LDAUJ等不需要设置其他,POTCAR中的赝势加和不加U的时候是一样的。
个人分类: 电子结构计算|2182 次阅读|0 个评论
[转载]vdW-DF functional of Langreth and Lundqvist et al.
yxx554243496 2017-3-28 17:52
vdW-DF functional of Langreth and Lundqvist et al. http://cms.mpi.univie.ac.at/vasp/vasp/vdW_DF_functional_Langreth_Lundqvist_et_al.html The vdW-DF proposed by Dion et al. is a non-local correlation functional that approximately accounts for dispersion interactions. In VASP the method is implemented using the algorithm of Roman-Perez and Soler which transforms the double real space integral to reciprocal space and reduces the computational effort. Several propsed versions of the method can be used: the original vdW-DF , the ``opt functionals (optPBE-vdW, optB88-vdW, and optB86b-vdW) where the exchange functionals were optimised for the correlation part , and the vdW-DF2 of Langreth and Lundqvist groups . This method is available since the 5.2.12.26May2011 version of VASP for the calculation of total energies and forces. The stress calculation for the cell optimisation (ISIF=3) is available since the VASP 5.2.12.11Nov2011 version for spin unpolarised systems and VASP 5.3.1 for spin polarised systems. N.B. : This feature has been implemented by J. Klimeš. If you make use of the vdW-DF functionals presented in this section, we ask that you cite the following paper: J. Klimeš, D. R. Bowler, and A. Michaelides, Phys. Rev. B 83 , 195131 (2011). Correlation functionals The method is invoked by setting LUSE_VDW = .TRUE. Moreover, the PBE correlation correction needs to be removed since only LDA correlation is used in the functionals. This is done by setting AGGAC = 0.0000 The two tags above need to be used for all of the following functionals. Exchange functionals The GGA tag is further used to choose the appropriate exchange functional. The original vdW-DF of Dion et al uses revPBE, therefore the vdW-DF can be chosen by setting GGA = RE LUSE_VDW = .TRUE. AGGAC = 0.0000 More accurate exchange functionals for the vdW correlation functional have been proposed in and . To use these functionals set: GGA = OR LUSE_VDW = .TRUE. AGGAC = 0.0000 【1】 for optPBE-vdW , GGA = BO PARAM1 = 0.1833333333 PARAM2 = 0.2200000000 LUSE_VDW = .TRUE. AGGAC = 0.0000 【2】 for the optB88-vdW functional or for the optB86b-vdW functional: GGA = MK PARAM1 = 0.1234 PARAM2 = 1.0000 LUSE_VDW = .TRUE. AGGAC = 0.0000 【3】 In the vdW-DF2 functional the rPW86 exchange functional is used: GGA = ML LUSE_VDW = .TRUE. Zab_vdW = -1.8867 AGGAC = 0.0000 An overview of the performance of the different approaches can be found for example in for gas phase clusters and in for solids. Important remarks : The method needs a precalculated kernel which is distributed via the VASP download portal (VASP - src - vdw_kernel.bindat) and on the ftp server (vasp5/src/vdw_kernel.bindat). If VASP does not find this file, the kernel will be calculated. This, however, is rather demanding calculation. The kernel needs to be either copied to the VASP run directory for each calculation or can be stored in a central location and read from there. The location needs to be set in routine PHI_GENERATE. This does not work on some clusters and the kernel needs to be copied into the run directory in such cases. The distributed file uses little endian convention and won't be read on big endian machines. The big endian version of the file is available from the VASP team. There are no special POTCARs for the vdW DF functionals and the PBE or LDA POTCARs can be used. Currently the evaluation of the vdW energy term is not done fully within the PAW method but the sum of the pseudo-valence density and partial core density is used. This approximation works rather well, as is discussed in , and the accuracy generally increases when the number of valence electrons is increased or when harder PAW datasets are used. For example, for adsorption it is recommended to compare the adsorption energy obtained with standard PAW datasets and more electron POTCARs for both PBE calculation and vdW DF calculation to assess the quality of the results. The spin polarised calculations are possible, but strictly speaking the nonlocal vdW correlation is not defined for spinpolarised systems. For spinpolarised calculation the nonlocal vdW correlation energy is evaluated on the sum of the spin-up and spin-down densities. The evaluation of the vdW energy requires some additional time. Most of it is spent on performing FFTs to evaluate the energy and potential. Thus the additional time is determined by the number of FFT grid points in the calculation, basically size of the simulation cell. It is almost independent on the number of the atoms in the cell. Thus the relative cost of the vdW DF method depends on the“filling of the cell and increases with the amount of vacuum in the cell. The relative increase is high for isolated molecules in large cells, but small for solids in smaller cells with many k-points. This feature has been implemented by J. Klimeš. If you make use of the vdW-DF functionals presented in this section, we ask that you cite the following paper: J. Klimeš, D. R. Bowler, and A. Michaelides, Phys. Rev. B 83 , 195131 (2011).
个人分类: VASP计算|1810 次阅读|0 个评论
[转载]不同压力下的VASP优化与KPOINTS设置
yxx554243496 2017-3-28 17:45
研究高压结构时,经常需考察同一结构在不同压力下的键长、晶格参数、体积及相对能量的变化,此时需要对所研究的结构在不同压力下进行优化。在优化前务必对KPOINTS进行测试: 问题:低压下经测试使能量收敛的k点也试用于高压下的结构优化吗? 对于下面的方式一产生的KPOINTS不行!原则上高压下经测试使能量收敛的k点可适用于低压。 因为,高压结构拥有更小的晶格参数,对应更长的k空间参数,若在高压下采用N1、N2、N3的数值分割k空间,且间隔足够密;则低压结构采用该k点进行优化时,对k空间的分割将更密(因为k空间长度小),能量将更容易收敛。 对于方式二产生的KPOINTS,由于空间的k mesh密度始终维持不变,则有可能低压下测试的KPOINS可能适用于高压,但仍需具体考察。以第二种KPOINYS产生方式为例,考察结果见下面“KPOINTS设置考察”。 1. KPOINTS产生方式之一 如下面的KPOINTS文件: 4x4x4 ! Comment 0 0 ! automatic generation of k-points Monkhorst ! M use Monkhorst Pack 4 4 4 ! grid 4x4x4 0 0 0 ! shift (usually 0 0 0) 如该采用奇数分割,则可将Gamma点包含进来。 2. KPOINTS产生方式之二 Automatic mesh 0 ! number of k-points = 0 -automatic generation scheme Auto ! fully automatic 10 ! length (l) KPOINTS文件最后一行即表示a linear k-point density of 20 A, 其含义为每1/A上的k点数, 注意其单位为angstrom(A=1/(1/A)),对于绝缘体通常取20,金属通常取40。【低压下测试的k密度试用于高压相】 例如正空间a=3A,倒空间2pai/3=~2/A,即分割数为20;若在压力下a变为1.5A,则倒空间变为 2pai/1.5 ~ 4/A,则分割数为40; 注意这是对倒空间上的三个矢量采用相等k密度进行分割,因此,视晶格参数不同,三个方向的分割数( subdivisions )可能不同。 该KPOINTS已经包含了Gama Point As before, the first line is treated as a comment. On the second line a number smaller or equal 0 must be specified. In the previous section, this value supplied the number of k-points, a zero in this line activates the automatic generation scheme. The fully automatic scheme, selected by the first character in the third line (’a’), generates G centered Monkhorst-Pack grids, where the numbers of subdivisions along each reciprocal lattice vector are given by Symmetry is used to map equivalent k-points to each other, which can reduce the total number of k-points significantly. Useful values for the length vary between 10 (large gap insulators) and 100 (d-metals). 3. KPOINTS产生方式之三 A slightly enhanced version, allows to supply the numbers for the subdivisions N1, N2 and N3 manually: Automatic mesh 0 ! number of k-points = 0 -automatic generation scheme Gamma ! generate a Gamma centered grid 4 4 4 ! subdivisions N_1, N_2 and N_3 along recipr. l. vectors 0. 0. 0. ! optional shift of the mesh (s_1, s_2, s_3) In this case, the third line (again, only the first character is significant) might start with ’G’ or ’g’ —for generating meshes with their origin at the G point (as above)— or ’M’ or ’m’, which selects the original Monkhorst-Pack scheme. In the latter case k-point grids【指, Monkhorst-Pack scheme? 】, with even (mod(Ni,2) = 0) subdivisions are shifted off G: 4. hexagonal lattices We strongly recommend to use only Gamma centered grids for hexagonal lattices . Many tests we have performed indicate that the energy converges significantly faster with Gamma centered grids than with standard Monkhorst Pack grids. Grids generated with the “M” setting in the third line , in fact do not have full hexagonal symmerty. 5. 摘录 一般如非必要,可以先用自动模式生成 k 点, VASP 会自动生成一个简约化后的 k 点矩阵,存于 IBZKPT 文件,可以直接复制里面的数据到 KPOINTS 文件中使用 ,这也是该输入法的主要用途,可以减少重复自动生成格点的时间。另一个用途是为了做精确的 DOS ( Density of status )计算,由于这类计算所需的 k 点数极大,通过全手动尽可能的优化 k 点也就必需了。 最后提醒一点,VASP的帮助文档特别提醒,对于六方晶系,不要用M来自 动生成格点,而要用G。 6. 不同KPOINTS设置下OUTCAR文件中k mesh查看 (1) Monkhorst 方式 K-Points 0 Monkhorst Pack 15 15 15 0 0 0 OUTCAR ..... KPOINTS: K-Points Automatic generation of k-mesh. Space group operators: ....... Dimension of arrays: k-points NKPTS = 120 k-points in BZ NKDIM = 120 number of bands NBANDS= 16 number of dos NEDOS = 301 number of ions NIONS = 4 non local maximal LDIM = 6 non local SUM 2l+1 LMDIM = 18 total plane-waves NPLWV = 8000 max r-space proj IRMAX = 1 max aug-charges IRDMAX= 19027 dimension x,y,z NGX = 20 NGY = 20 NGZ = 20 dimension x,y,z NGXF= 40 NGYF= 40 NGZF= 40 support grid NGXF= 40 NGYF= 40 NGZF= 40 ions per type = 3 1 NGX,Y,Z is equivalent to a cutoff of 11.15, 11.15, 11.15 a.u. NGXF,Y,Z is equivalent to a cutoff of 22.29, 22.29, 22.29 a.u. I would recommend the setting: dimension x,y,z NGX = 19 NGY = 19 NGZ = 19 (2) Auto 方式 Automatic mesh 0 ! number of k-points = 0 -automatic generation scheme Auto ! fully automatic 50 ! length (l) OUTCAR ..... KPOINTS: Automatic mesh Automatic generation of k-mesh. generate k-points for: 21 21 21 ..... Dimension of arrays: k-points NKPTS = 286 k-points in BZ NKDIM = 286 number of bands NBANDS= 16 number of dos NEDOS = 301 number of ions NIONS = 4 non local maximal LDIM = 6 non local SUM 2l+1 LMDIM = 18 total plane-waves NPLWV = 8000 max r-space proj IRMAX = 1 max aug-charges IRDMAX= 19106 dimension x,y,z NGX = 20 NGY = 20 NGZ = 20 dimension x,y,z NGXF= 40 NGYF= 40 NGZF= 40 support grid NGXF= 40 NGYF= 40 NGZF= 40 ions per type = 3 1 NGX,Y,Z is equivalent to a cutoff of 11.16, 11.16, 11.16 a.u. NGXF,Y,Z is equivalent to a cutoff of 22.32, 22.32, 22.32 a.u. I would recommend the setting: dimension x,y,z NGX = 19 NGY = 19 NGZ = 19 ....... (3) Gama 方式 --待补充 7. KPOINTS测试结果 KPOINTS 测试 Im-3m:600G ( 1 )采用 Mateiralstudio 中的 fine 参数来设置 KPOINTS ./mskptest.x CONTCAR_6000 Thethree qualities of k-point separation for CASTEP (1/Angstrom) coarse.le..08 medium.le..05 fine.le..04 Please input thequality of Monkhorst-Pack grid (Default is .035) 0.03 Reciprocal lattice parameters 2.11841778 2.11841778 2.11841778 Meshparameters of Monkhorst-Pack grid 12 12 12 Actual spacing of Monkhorst-Pack grid 0.02809639 0.02809639 0.02809639 Reciprocal Lattice -1.49860797 -0.86886324 1.21940342 -0.00576644 1.72859416 1.22459088 -1.49727578 0.86297900 -1.22520461 Real lattice parameters 2.96598026 2.96598026 2.96598026 Cell Angles 90.00000000 90.00000000 90.00000000 Real Lattice -2.09818937 -1.21648867 1.70727724 -0.00807354 2.42019125 1.71454018 -2.09632419 1.20825019 -1.71539946 (2) 实际的 KPOINTS 测试过程,可见 KPOINTS 对能量的影响可达几个 meV ,特别是对于低压结构,若选择 30 Auto 则,则与选择 40 Auto 能量相差接近 20 meV 。 ../getEntafterkptest.sh OUTCAR_30 5987.85 87.484625 OUTCAR_40 5987.71 87.487188 OUTCAR_50 5995.14 87.491954 OUTCAR_60 5996.47 87.495100 OUTCAR_70 5994.86 87.494637 OUTCAR_75 5994.68 87.491468 OUTCAR_80 5994.63 87.493970 OUTCAR_90 5994.78 87.494334 OUTCAR_95 5995.41 87.494084 OUTCAR_30:Automatic generation of k-mesh. OUTCAR_30: generate k-points for: 10 10 10 OUTCAR_40:Automatic generation of k-mesh. OUTCAR_40: generate k-points for: 13 13 13 OUTCAR_50:Automatic generation of k-mesh. OUTCAR_50: generate k-points for: 17 17 17 OUTCAR_60:Automatic generation of k-mesh. OUTCAR_60: generate k-points for: 20 20 20 OUTCAR_70:Automatic generation of k-mesh. OUTCAR_70: generate k-points for: 24 24 24 OUTCAR_75:Automatic generation of k-mesh. OUTCAR_75: generate k-points for: 25 25 25 OUTCAR_80:Automatic generation of k-mesh. OUTCAR_80: generate k-points for: 27 27 27 OUTCAR_90:Automatic generation of k-mesh. OUTCAR_90: generate k-points for: 30 30 30 OUTCAR_95:Automatic generation of k-mesh. OUTCAR_95: generate k-points for: 32 32 32 grep NKPT OUTCAR_* OUTCAR_30: k-points NKPTS = 56 k-points in BZ OUTCAR_40: k-points NKPTS = 84 k-points in BZ OUTCAR_50: k-points NKPTS = 165 k-points in BZ OUTCAR_60: k-points NKPTS = 286 k-points in BZ OUTCAR_70: k-points NKPTS = 455 k-points in BZ OUTCAR_75: k-points NKPTS = 455 k-points in BZ OUTCAR_80: k-points NKPTS = 560 k-points in BZ OUTCAR_90: k-points NKPTS = 816 k-points in BZ OUTCAR_95: k-points NKPTS = 969 k-points in BZ Im-3m:0G Automatic mesh 0 Auto L (L=30,40,50,60) ../getEntafterkptest.sh OUTCAR_30 21.78 -48.119067 OUTCAR_40 22.89 -48.148892 OUTCAR_50 22.53 -48.142697 OUTCAR_60 23.06 -48.140251 OUTCAR_70 22.06 -48.144940 OUTCAR_75 22.96 -48.142481 OUTCAR_80 22.2 -48.144701 OUTCAR_90 22.98 -48.142411 OUTCAR_95 22.95 -48.143537 grep gene OUTCAR_* OUTCAR_30:Automatic generation of k-mesh. OUTCAR_30: generate k-points for: 7 7 7 OUTCAR_40:Automatic generation of k-mesh. OUTCAR_40: generate k-points for: 10 10 10 OUTCAR_50:Automatic generation of k-mesh. OUTCAR_50: generate k-points for: 12 12 12 OUTCAR_60:Automatic generation of k-mesh. OUTCAR_60: generate k-points for: 15 15 15 OUTCAR_70:Automatic generation of k-mesh. OUTCAR_70: generate k-points for: 17 17 17 OUTCAR_75:Automatic generation of k-mesh. OUTCAR_75: generate k-points for: 18 18 18 OUTCAR_80:Automatic generation of k-mesh. OUTCAR_80: generate k-points for: 20 20 20 OUTCAR_90:Automatic generation of k-mesh. OUTCAR_90: generate k-points for: 22 22 22 OUTCAR_95:Automatic generation of k-mesh. OUTCAR_95: generatek-points for: 23 23 23 grep NKPT OUTCAR_* OUTCAR_30: k-points NKPTS = 20 k-points in BZ OUTCAR_40: k-points NKPTS = 56 k-points in BZ OUTCAR_50: k-points NKPTS = 84 k-points in BZ OUTCAR_60: k-points NKPTS = 120 k-points in BZ OUTCAR_70: k-points NKPTS = 165 k-points in BZ OUTCAR_75: k-points NKPTS = 220 k-points in BZ OUTCAR_80: k-points NKPTS = 286 k-points in BZ OUTCAR_90: k-points NKPTS = 364 k-points in BZ OUTCAR_95: k-points NKPTS = 364 k-points in BZ 手册注释 NGX, NGY, NGZ FFT mesh for wavefunctions describes the number of grid points in x, y and z direction, and NPLWV the total number of points (i.e.NGX*NGY*NGZ) Most quantities (like charge densities) are defined on these 3-dimensional grids. In the sequential version NGX, NGY and NGZ were sufficient to perform a three dimensional FFT of quantities defined on these grids. NGXF,NGYF,NGZF FFT mesh for charge s NGX, NGY, NGZ controls the number of grid-points in the FFT-mesh into the direction of the three lattice-vectors. X corresponds to the first, Y to the second and Z to the third lattice-vector (X,Y and Z are not connected with cartesian coordinates, don’t be fooled by the historical naming conventions). NGXF, NGYF, NGZF controls the number of grid-points for a second finer FFT-mesh. On this mesh the localized augmentation charges are represented, if ultrasoft (US) Vanderbilt potentials or the PAW method are used. In addition, local potentials (exchange-correlation, Hartree-potential and ionic potentials) are also calculated on this second finer FFT-mesh if (and only if) US-pseudopotentials are used. 转载自: http://blog.sciencenet.cn/blog-567091-680538.html
个人分类: VASP计算|2861 次阅读|0 个评论
[转载]VASP参数设置详解
yxx554243496 2017-3-28 11:55
VASP参数设置详解 转自: http://vasplee.lofter.com/post/2af4f8_b418b9 软件主要功能: 采用周期性边界条件(或超原胞模型)处理 原子 、 分子 、团簇、 纳米线 (或管)、薄膜、 晶体 、准晶和无定性材料,以及表面体系和固体 l 计算材料的结构参数(键长、键角、晶格常数、原子位置等)和构型 l 计算材料的状态方程和力学性质(体弹性模量和弹性常数) l 计算材料的电子结构(能级、电荷密度分布、能带、电子态密度和ELF) l 计算材料的光学性质 l 计算材料的磁学性质 l 计算材料的晶格动力学性质(声子谱等) l 表面体系的模拟(重构、表面态和STM模拟) l 从头分子动力学模拟 l 计算材料的激发态(GW准粒子修正) 计算主要的四个参数文件:INCAR ,POSCAR,POTCAR ,KPOINTS,下面简要介绍,详细权威的请参照手册 INCAR文件: 该文件控制VASP进行何种性质的计算,并设置了计算方法中一些重要的参数,这些参数主要包括以下几类: l 对所计算的体系进行注释:SYSTEM l 定义如何输入或构造初始的电荷密度和波函数:ISTART,ICHARG,INIWAV l 定义电子的优化 – 平面波切断动能和缀加电荷时的切断值:ENCUT,ENAUG – 电子部分优化的方法:ALGO,IALGO,LDIAG – 电荷密度混合的方法:IMIX,AMIX,AMIN,BMIX,AMIX_MAG,BMIX_MAG,WC,INIMIX,MIXPRE,MAXMIX – 自洽迭代步数和收敛标准:NELM,NELMIN,NELMDL,EDIFF l 定义离子或原子的优化 – 原子位置优化的方法、移动的步长和步数:IBRION,NFREE,POTIM,NSW – 分子动力学相关参数:SMASS,TEBEG,TEEND,POMASS,NBLOCK,KBLOCK,PSTRESS – 离子弛豫收敛标准:EDIFFG l 定义态密度积分的方法和参数 – smearing方法和参数:ISMEAR,SIGMA – 计算态密度时能量范围和点数:EMIN,EMAX,NEDOS – 计算分波态密度的参数:RWIGS,LORBIT l 其它 – 计算精度控制:PREC – 磁性计算:ISPIN,MAGMOM,NUPDOWN – 交换关联函数:GGA,VOSKOWN – 计算ELF和总的局域势:LELF,LVTOT – 结构优化参数:ISIF – 等等。 主要参数说明如下: ? SYSTEM:该输入文件所要执行的任务的名字。取值:字符串,缺省值:SYSTEM ? NWRITE:输出内容详细程度。取值:0~4,缺省值:2 如果是做长时间动力学计算的话,最好选0或1(首末步/每步核运动输出),短时运算用2,选3则会在出错的时候给出说明信息。 ? ISTART:决定是否读取WAVECAR文件。取值:0~2,缺省0/1 for 无/有 前次计算的WAVECAR(波函数) 0:begin 'from scratch',根据INIWAV初始化波函数 1:restart with constant energy cut-off,从WAVECAR读取波函数(重定义平面波集) 2:restart with constant basis set,从WAVECAR读取波函数(平面波集不变) ? ICHARG:决定如何建立初始电荷密度。取值:0~2,缺省值: if ISTART=0 2 else 0 0:由初始波函数计算电荷密度 1:从CHGCAR文件读取电荷密度 2:使用原子电荷密度的叠加 +10 非自洽计算 ? ISPIN:是否进行spin polarized calculation。取值:1,2(1-no,2-yes),缺省值:2 ? MAGMOM:在ICHARG=2或在CHGCAR中未包含磁化密度(ICHARG=1)时,指定每个原子的初始磁化时刻。取值:实数数组,缺省值: 对ISPIN=2 NIONS*1.0,对非共线型磁化体系 3*NIONS*1.0 ? INIWAV 如何设置初始波函数,只在ISTART=0时使用。取值:0,1(0-最低动能的平面波,1-随机数),缺省值:1。 ? IDIPOL 控制计算单极、偶极和四极修正。取值:1~4。 1~3 只计算第一/二/三晶矢方向,适于厚板(slab)的计算 4 所有方向都计算,适于计算孤立分子 ? PREC 进动(precession)。取值:low/medium/high/normal/ accurate/single),缺省值: Normal(VASP.4.X);Medium(VASP.5.X) VASP4.5+采用了优化的accurate来替代high,所以一般不推荐使用high。不过high可以确保“绝对收敛”,作为参考值有时也是必要的。同样受推荐的是normal,适于作为日常计算选项。 受PREC影响的参数有四类:ENCUT;NGX,NGY,NGZ;NGXF,NGYF,NGZF;ROPT。如果设置了PREC,这些参数就都不需要出现了,当然直接设置相应的参数也有同样效果。具体影响效果见p53~54。 ? ENCUT 平面波基组的截断能量(eV)。取值:实数,缺省值:受PREC设置影响,从POTCAR文件中找出相应的ENMAX/ENMIN值来设置。 PREC = Low Medium Accurate Normal ENCUT = ENMIN ENMAX ENMAX ENMAX Single High ENMAX ENMAX*1.3 对于多个元素不同的ENMAX/ENMIN,都取最大值。 该参数非常重要,最好不要手工去设置,除非文献告诉你要用多少,或者经过结果可靠性的验证。当然,为了测试一下提交的任务,也不妨先设个较小的值。 ? NGX,NGY,NGZ:控制FFT网格在三个晶矢方向上的格点数量。 ? NGFX,NGFY,NGFZ:控制第二次更精确的FFT网格的格点数量。 也是两类重要的最好不要去动的参数。在未指定的情况下将根据PREC的设置从POTCAR中自动读取。 PREC=High/Accurate,基组中向量的2倍值,用来避免wrap around errors,得到精确解。 PREC=Low/Medium/Normal,基组中向量的3/4倍值(已足够精确到 1 meV/atom)。 ? LREAL: 决定投射是在实空间还是倒易空间进行。取值:.TRUE.(实空间)/.FALSE.(倒易空间),缺省值:.FALSE. 用于求解赝势的非局域部分用到的一个积分,在倒格空间里采用平面波基组求解,在实空间里则采用积分球求解。 其他还有两个选项:O or On,A or Auto。 On和.TRUE.的差别在于是否使用King-Smith算法优化,设为Auto则进行自动选择,推荐使用。 ? ROPT: 在LREAL=Auto or On时,优化控制每个核周围的积分球内的格点数。取值:实数数组 For LREAL=On PREC=Low, 700 points in the real space sphere (ROPT=0.67) PREC=Med, 1000 points in the real space sphere (ROPT=1.0) PREC=High, 1500 points in the real space sphere (ROPT=1.5) For LREAL=Auto PREC=Low, accuracy 10-2 (ROPT=0.01) PREC=Med, accuracy 2*10-3 (ROPT=0.002) PREC=High accuracy 2*10-4 (ROPT=2E-4) ? NELM, NELMIN and NELMDL:控制电子自洽循环步数。取值:整数 NELM:电子自洽循环最大次数。缺省值:60 NELMIN:电子自洽循环最小次数。缺省值:2 NELMDL:弛豫次数。缺省值:if ISTART=0, INIWAV=1, and IALGO=8,-5,if ISTART=0, INIWAV=1, and IALGO=48,-12,else 0 NELMDL可以取负值。如果初始波函数采用随机赋值,即ISTART=0,INIWAV=1,那么很可能开始的值比较离谱,那么在第一步核运动循环之前采用NELMDL(负值)步的非自洽(保留初始的H)步计算将减少计算所需的时间。 ? EDIFF:指定电子自洽循环的全局中断条件,用于控制收敛精度。取值:实数,缺省值:10-4 注意,即使EDIFF=0,NELM步电子自洽循环也会执行。 ? EDIFFG:指定离子弛豫循环的中断条件,用于控制核运动的收敛精度。取值,实数,缺省值:10*EDIFF EDIFFG0 在两个离子步的总自由能之差小于EDIFFG时停止 EDIFFG0 在所有的力都小于EDIFFG时停止。 EDIFFG=0 在NSW步弛豫后停止 此参数不支持MD,仅用于弛豫。 ? NSW:给出最大离子步数。 取值:整数,缺省值:0。 ? NBLOCK,KBLOCK:取值:整数,缺省值:NBLOCK = 1,KBLOCK = NSW 在NBLOCK离子步后对成对相关函数和DOS进行计算,并且把离子配置写入XDATCAR文件。 在KBLOCK*NBLOCK步主循环后平均的成对相关函数和DOS被写入PCDAT和DOSCAR文件。 ? IBRION:决定离子怎样更新和运动。取值:-1~3,5~8(-1-无更新,0-MD,1-RMM-DIIS,2-共轭梯度算法,3-Damped MD,5,6:有限差分,7,8:密度函数扰动理论),缺省值:if NSW=0/1,-1,else 0 这个参数是和ISIF, IALGO/ALGO一起决定怎么算的最重要的参数。 1~3 是三种弛豫的方法,根据ISIF决定是否固定离子位置、晶胞大小和形状,在INCAR中必须设置参数POTIM。 0 是标准的ab-initio MD,不受ISIF影响,即不改变晶胞大小和形状。 5~8支持Hessian Matrix和phonon frequency的计算以及部分固定的MD。 ? POTIM:IBRION=0时,给出MD每步步长(fs),IBRION=1~3时,给出最小化的度量常量。取值:实数,缺省值:IBRION=0 无缺省,必须指定,IBRION=1,2,3 0.5 ? ISIF:决定是否计算应力张量以及弛豫中晶胞变化的自由度。取值:0~6,缺省值:if IBRION=0(MD) 0 else 2 ISIF│calculate│ calculate │ relax │ change │ change │ force │stress tensor │ ions │ cell shape │cell volume ----┼-------┼-----------┼------┼---------┼--------- 0 │ yes │ no │ yes │ no │ no 1 │ yes │ trace only │ yes │ no │ no 2 │ yes │ yes │ yes │ no │ no 3 │ yes │ yes │ yes │ yes │ yes 4 │ yes │ yes │ yes │ yes │ no 5 │ yes │ yes │ no │ yes │ no 6 │ yes │ yes │ no │ yes │ yes 7 │ yes │ yes │ no │ no │ yes trace only means that only the total pressure is correct ? IWAVPR:决定波函数和/或电荷密度怎样从一个离子配置向下一个离子配置进行推测。取值:0~3,10~13(0-无推测,1,11-用原子电荷密度进行简单推测,2,12-二阶推测,3,13-混合前两种方法),缺省值:ifIBRION=0(MD),1,2(relaxation) 2 else(静态计算) 0 推测结果保存在外部文件TMPCAR中,取值+10则全部使用内存,不保存此文件。 ? ISYM:决定是否使用对称性。取值:-1~3(-1,0-不使用,1,2,3-使用),缺省值:if 使用US-PP 1,if 使用PAW 2 ISYM=2使用一种效率更高也更节省内存的电荷密度对称性,ISYM=3时仅考虑力和应力张量的对称性,而电荷密度是非对称的。 ? SYMPREC:决定POSCAR 文件中给出的位置的精度。取值:实数,缺省值:10-5 ? LCORR:决定是否对非完全自洽计算中的力进行Harris修正。取值:.TRUE./.FALSE.,缺省值:.TRUE. ? TEBEG, TEEND:控制从头分子动力学计算中的起始温度和最终温度(MD有效)。取值:实数,缺省值:TEBEG = 0 TEEND = TEBEG 注意VASP的温度定义与实际温度有细微的差别,所以TEBEG=T×(N-1)/N,T为实际要求的温度,N为原子数。 ? SMASS:控制从头MD中的速度。取值:-3~0,缺省值:-3 微正则系综(总自由能不变),-2 保持初速度不变,-1每NBLOCK步调整速度,来保证动能连续,=0 Nosé算法模拟正则系综 ? NPACO:成对相关函数的槽数。取值:整数,缺省值:256 ? APACO:成对相关函数求值中的最大距离(?)。取值:整数,缺省值:16 简单说就是在不超过APACO的NPACO个距离上求成对相关函数PCF。 ? RWIGS:给出Wigner-Seitz半径,DOS计算用。取值:实数数组,缺省值:从POTCAR文件中读取 ? NELECT:总电子数,如果系统不是电中性的就必须设置,所带电荷作为均一的背景电子气考虑。取值:实数,缺省值:-(价电子数),由POSCAR和POTCAR文件自动决定(通常不必给出)。 ? NUPDOWN 上下自旋成分间的电子数之差。取值:整数,缺省值:未设置(此时将进行完全弛豫) ? EMIN, EMAX:DOS求值的最小/最大能量。取值:实数,缺省值:EMIN = - (lowest KS-eigenvalue - Δ),EMAX = - (highest KS-eigenvalue - Δ) ? ISMEAR:决定每个波函数的部分占位fnk如何设置。取值:-5 | -4 | -3 | -2 | 0 | N(-5-带有Blochl修正的四面体方法, -4-不带Blochl修正的四面体方法, -3-根据INCAR文件中提供的smearing参数执行循环,-2-从WAVECAR文件中读取, -1-Fermi-smearing, 0-Gaussian smearing, 0-method of Methfessel-Paxton order N,缺省值:1 采用部分占位波函数,用一个函数来平滑积分,尤其是对于金属体系可减少k点。 ? SIGMA:决定smearing的宽度(eV)。取值:实数,缺省值:0.2 ? ALGO:指定电子最小化算法。取值:Normal(blocked Davidson block iteration scheme)/VeryFast(RMM-DIIS)/Fast (前两个算法的混合)/All(波函数的所有带同时更新)/ Damped(damped velocity friction algorithm),缺省值: Normal ? IALGO:指定主算法(整数选择算法)。取值:8(共轭梯度算法)/38(Davidson block iteration scheme)/48(RMM-DIIS),缺省值:38 算法是最重要的参数之一。一般VASP推荐使用的是以上三种算法,一般来说8/38是初期比较快收敛,在接近平衡时采用48较快,在初期或MD时使用48可能会遇到不收敛的情况。也可以使用ALGO参数来替代IALGO,设置Fast,VASP会先用38,再自动切换到48。各种算法只要收敛,结果应该一致。 另一个可能有用的选项是-1。不进行实际的计算,只对重要的步骤做计算测试,并将测试得到的各部分耗时输出到OUTPUT中。 ? VOSKOWN:决定是否使用VWN插值算法。取值:0(不使用)/1(使用),缺省值:0 如果使用了PW91泛函或需要计算磁性质时可以设为1使用。 ? Mixing-tags: w IMIX:混合的类型,取值:整数,缺省值:4 w AMIX:线性混合参数。取值:实数,缺省值:0.8(US-PP),0.4(PAW) w AMIN:最小混合参数。取值:实数,缺省值:0.1 w BMIX:Kerker混合方案的截断波向量。取值:实数,缺省值:1.0 w AMIX_MAG:磁化过程的线性混合参数。取值:实数,缺省值:1.6 w BMIX_MAG:磁化过程的Kerker混合方案的截断波向量。取值:实数,缺省值:1.0 w WC:Broyden混合方案中每步的加权因子。取值:实数,缺省值:1000.0 w INIMIX:Broyden混合方案中的初始混合类型。取值:整数,缺省值:1 w MIXPRE:Broyden混合方案中的预处理类型。取值:整数,缺省值:1 w MAXMIX:Broyden混合器中存储的最大步数。取值:整数,缺省值:-45 值得注意的是,在MD或者弛豫的时候,设置MAXMIX(0,一般约3倍的电子SC步数)可能会大大减少核运动步数,但同时也会增加对内存的要求。 ? LWAVE,LCHARG:决定是否把波函数(或电荷密度)写入外部文件WAVECAR(或CHGCAR和CHG)中。取值:.TRUE./.FALSE.,缺省值:.TRUE. ? LVTOT:决定是否把总局域势写入外部文件LOCPOT中。取值:.TRUE./.FALSE.,缺省值:. FALSE. ? LELF:决定是否创建ELFCAR文件。取值:.TRUE./.FALSE.,缺省值:. FALSE. ELFCAR用于保存ELF(electron localization function)。 ? LORBIT:和适当的RWIGS一起决定是否创建PROCAR或PROOUT文件。取值:0 | 1 | 2 | 5 | 10 | 11 | 12,缺省值:0(创建DOSCAR和PROCAR文件) ? NPAR:用于控制VASP切换到带间并行模式。取值:整数,缺省值:总节点数。 每一个节点计算一个带,可以提高并行效率,减少通讯量,但可能会大幅增加内存的需求。 ? NBANDS:给出计算中实际的总能带数。取值:整数,缺省值:NELECT/2+NIONS/2(非自旋),0.6*NELECT + NMAG(自旋) NBANDS的取值应使计算中包含相当数量的空带。因为计算需要大量的空带,至少要求1个空带(否则VASP会给出警告)。 NBANDS对于解决内存需求非常重要。一般NBANDS在NELECT/2+NIONS/2以上可以得到较为精确的结果,但如果内存不够就只能减少NBANDS,在牺牲精度和体系大小之间平衡了。 POTCAR文件 赝势文件,最重要的输入文件之一。可以理解为分子力学模拟中的力场文件,但包含的信息更多。VASP将各元素优化的INCAR里的参数也包含在该文件中,作为支持PREC的缺省选择。 通常各元素的POTCAR文件已经包含在VASP软件包中的赝势库里了,用户需要做的是确定自己具体需要哪几种赝势,然后按照POSCAR文件里的顺序,将所选择的POTCAR文件按顺序连接起来就可以了。如以下命令: cat file1 file2 file3 POTCAR 赝势库中的赝势文件可以分为以下几类: l 根据产生方法的不同有Ultra-soft赝势(USPP)和投影扩充波赝势(PAW); l 根据交换关联函数的不同有LDA(local density approximation)和GGA(generalized gradient approximation,又可以再分为PW91和PBE); l 根据半芯态的不同元素A的赝势文件还可以分为A,A_sv和A_pv; l 根据选取的不同截断能量(ENMAX)元素A的赝势文件还可以分为A,A_s和A_h。 VASP的赝势文件放在目录~/vasp/potentials下,该目录又包含五个子目录:pot,pot_GGA,potpaw,potpaw_GGA,potpaw_PBE,其中每个子目录对应一种赝势形式:pot == PP, LDA;pot_GGA == PP, GGA;potpaw == PAW, LDA;potpaw_GGA == PAW, GGA, PW91;potpaw_PBE == PAW, GGA, PBE。每个目录中每种元素根据截断能量和半芯态的不同还会有多个对应的赝势文件存在。 在具体选取时可以参考各版本同目录下的V_RHFIN和PSCTR文件,这两个文件说明了该版本的赝势是如何生成的。 选好所要使用的赝势之后,进入对应的目录,会看到里面有四个文件:POTCAR.Z,PSCTR.Z,V_RHFIN.Z和WS_FTP.LOG。现在需要用到的是第一个,把各元素的该文件解压(zcat POTCAR.Z file),然后用cp或mv命令把这些文件移到工作目录里,再用cat 命令把它们合并到POTCAR中,就得到了我们需要的POTCAR。注意要记住这里元素的排列顺序,以后在POSCAR文件中各元素的排列就是按照这个顺序。 POSCAR文件 位置文件。描述所计算体系的晶胞参数、原子个数及晶胞中原子的位置,以及分子动力学计算时原子的初始速度。 POSCAR文件示例: Si-fcc 5.43 0.0 0.50 0.50 0.50 0.00 0.50 0.50 0.50 0.00 2 Direct 0.0 0.00 0.00 0.25 0.25 0.25 POSCAR文件的结构: 第1行:任意文字注释。 第2行:晶格常数(?),也是晶矢的缩放系数,后面所有长度值得自原值除以此值。a=b=c时取a即可,否则一般取三者最大值,若取负值,则为晶胞体积(?3)。 第3-5行:定义晶矢。 第6行:每种元素的原子个数,特别注意顺序,要与下面的坐标顺序以及POTCAR中的顺序一致。 第7行:可省略,无需空行。 做动力学时,用于指定是否需要固定部分原子的坐标。若是,此行以‘S’或者‘s’作为首字母即可。 第8行开始为原子的坐标位置,格式为 option line coordinate1 of element1 coordinate2 of element1 ... coordinateN of element1 option line coordinate1 of element2 coordinate2 of element2 ... coordinateM of element2 ... 其中,option line指定输入坐标的格式,除了第一个以外,如果后面的输入格式同前,则都可以无空行省略。 option line可指定的输入坐标格式有两种: ‘D’or‘d’for direct mode ‘C’or‘c’or‘K’or‘k’for cartesian mode 顾名思义,前者是定义在三个晶矢方向上的坐标:R=R1×x+ R2×y +R3×z,R1,R2,R3为前面的晶矢,x,y,z为输入的三个坐标,R为原子坐标位矢,是相对于晶矢给出的,而后者则是以笛卡尔坐标系来给出原子的绝对坐标,实际就是将直角坐标除以前面第二行定义的晶胞常数后得到的坐标值。 如果第7行设定为S(Selective Dynamic),则可以用以下形式定义各坐标是否可以移动: Selective dynamics Cartesian 0.00 0.00 0.00 T T F 0.25 0.25 0.25 F F F KPOINTS文件 设置布里渊区k点网格取样大小或能带结构计算时沿高对称方向的k点。 一般来说,k点越密越多,计算精度也就越高,但计算成本也会越高。因此,对于原子数较多的体系的计算,需要谨慎的尝试k点数目,在避免或者预先评估wrap-around error的前提下尽量减少k点数目。 KPOINTS文件示例: k-points along high symmetry lines 11 Reciprocal 0.00 0.00 0.00 1.00 0.05 0.00 0.05 1.00 …… 0.05 0.00 0.50 1.00 KPOINTS文件结构: 第1行:注释行。 第2行:k点总数,或者‘0’(自动生成网格(Automatic k-mesh generation))。 如果是前者,给出k点总数,又分为两种情况: M:全手动(Entering all k-points explicitly),手动输入即自定义各个k点的坐标和权重,推荐只在能带计算时使用。此时: 第3行:输入格式标识。直角坐标(Cartesian)或倒易坐标(Reciprocal)。同样的,‘c’、‘C’、‘k’、‘K’for Cartesian,其他首字母则自动切换到Reciprocal。 第4~n行: 逐个k点的坐标描述。格式为“x y z W”。其中“x y z”是该点的三个坐标,W是权重。所有k点的权重相互之间的比例对了就行,VASP会自动归一的。 注意C坐标和R坐标的定义: C:k=(2π/a)(x y z) R:k=x*b1+y*b2+z*b3(b1-b3为倒易晶矢) 这里“x y z”只是代表了坐标的顺序,与坐标轴无关。 一般如非必要,可以先用自动模式生成k点,VASP会自动生成一个简约化后的k点矩阵,存于IBZKPT文件,可以直接复制里面的数据到KPOINTS文件中使用,这也是该输入法的主要用途,可以减少重复自动生成格点的时间。另一个用途是为了做精确的DOS(Density of status)计算,由于这类计算所需的k点数极大,通过全手动尽可能的优化k点也就必需了。 L:半手动/线形模式(Line-mode):在计算能带结构时使用,此时需要精确地选取k点,在指定的高对称性方向上生成指定数目的k点。此时: 第2行:指定两点间生成的k点数,不同于全自动的总k点数。 第2.5行:‘L’表示是线形模式。 第3行:输入格式标识,同前。 第4~n行:每行描述一个点,格式为“x y z”。每两行的点连成一条直线,在两点间生成指定数目的k点。每隔两行间以空行区分,例如: k-points along high symmetry lines 10 Line-mode Reciprocal 0 0 0 0.5 0.5 0 0.5 0.5 0 0.5 0.75 0.25 最常用的方法是让程序自动生成k点网格,用户只需定义网格取样大小即可。此时: 第2行:0 第3行:生成k点的方法。 “A”:全自动模式,可以看作以Г点为圆心以l为半径做圆,当然各晶矢不同时,相应的圆就被拉成了椭圆,以确保三个倒格晶矢方向上覆盖的k点数都为l “G”:Г/Gamma方法 “M”:Monkhorst-Pack方法 其它首字母:高级模式,就是用C坐标或R坐标直接输入新的晶矢,一般不使用 第4行:在各个晶矢方向上分割各晶矢的点数。一般为奇数,使得产生的k点是以Gamma点为中心的。 第5行:是否移动网格点以及移动多少,也即偏移原点的位矢,一般设成“0 0 0”,表示不移动。 例如: Automatic generation 0 Monhkorst-Pack 9 9 9 0.0 0.0 0.0 VASP的输出文件主要包括: l OUTCAR:包含运行VASP作业后得到的绝大部分计算结果以及每步迭代的详细情况; l CHG, CHGCAR:给出体系的电荷密度。两个文件内容相同,但前者的数据精度比后者略低一些; l DOSCAR, EIGENVAL:分别给出所计算体系的电子态密度和本征值。两个文件中的能量值都是绝对的; l WAVECAR:给出所计算体系的电子波函数,二进制文件,不可编辑; l OSZICAR:包含每次迭代或离子移动情况的简单汇总; l CONTCAR:给出离子进行弛豫时,每次移动后体系的晶格参数,与POSCAR内容相同; l PCDAT, XDATCAR:给出有关分子动力学模拟中的一些结果,如配对相关函数;
个人分类: VASP计算|1683 次阅读|0 个评论
[转载]vasp操作tip
dxcharlary 2017-2-22 00:02
VASP manual site http://cms.mpi.univie.ac.at/vasp/vasp/vasp.html LINK for VASP tips (update: 2015-04-27) David Karhánek's Homepage ( http://homepage.univie.ac.at/david.karhanek/downloads.html ) Nano Group from Budapest ( http://wiki.kfki.hu/nano/VASP_relevant_resources ) WaveTrans: Real-space wavefunctions from VASP WAVECAR file (Dr. R. M. Feenstra and Dr. M. Widom) ( http://www.andrew.cmu.edu/user/feenstra/wavetrans/ ) JR Kitchin, Modeling materials using density functional theory ( http://kitchingroup.cheme.cmu.edu/dft-book/dft.html ) Skelton's tips: Phonons Phonopy: -Pro Tips (2014) ( http://www.slideshare.net/jmskelton/phonons-phonopy-pro-tips-2014 ) -Phonons Phonopy: Pro Tips (2015) ( http://www.slideshare.net/jmskelton/phonons-phonopy-pro-tips-2015 ) -VASP: Some Accumulated Wisdom ( http://www.slideshare.net/jmskelton/vasp-some-accumulated-wisdom ) -VASP And Wannier90: A Quick Tutorial ( http://www.slideshare.net/jmskelton/vasp-and-wannier90-a-quick-tutorial ) -Wannier90: Band Structures, Tips and Tricks ( http://www.slideshare.net/jmskelton/wannier90-band-structures-tips-and-tricks ) Atomic structure optimization : to obtain optimized structures (update: 2013-08-24) - In many cases, the atomic positions are drifted if one use default option for structure relaxations. In other words, atomic forces are hardly reaching small values due to the uncertainty in calculation. - To obtain optimized geometry, it is suggested to use the following tag in INCAR. ADDGRID = T - Or you can increase calculation precision by lowering EDIFF or by increasing NELMIN It will increase the precision of the force and thereby you wil obtain the optimized structure. NELMIN = 6 Importance of k-space projection (LREAL=FALSE) - Not same energies for same structures, LREAL=Auto or LREAL=TRUE - Sometimes, the same structures can give different total energies if either LREAL=TRUE or LREAL=Auto are used. For example, one makes same structure but the atomic basis are equally displaced by constant vector. Many cases it is ok, because the energy difference is small, less than few meV/atom. However, when one calculates the formation energy, the error can be large if the supercell size is very big. If it happens, you should re-calculate the total energy using k-space projection scheme. (LREAL = False) - When you have to calculate very precise calculation for phonon mode or for small barrier calculations, it is strongly recommended to use the LREAL=F tag, with other high precision settings even though the supercell size is very large. Unit of density-of-states (DOS) in DOSCAR file (update: 2013-08-24) - The unit of DOS is the states per electrons. If you run the single interation, you will always obtain states/eV - However, sometimes you will get different unit in DOSCAR. In many cases, it happens becasue you run the molecular dynamics simulation or structure relaxation. Then the DOSCAR contatins the sum or average value of DOSs. Note that the NSW value is important while the number of interation is not. Density-of-states (DOS) on the vacant site (DOSCAR on the vacant site) (from here, http://cms.mpi.univie.ac.at/vasp-forum/forum_viewtopic.php?4.1692 site broken ) - One can project the electronic wavefunction on arbitrary positions. It is very helpful to find the integrated charge for given spheres without postprocessing of charge density files (CHG or CHGCAR) - To do that, you should add following lines in POSCAR file, with the use of proper RWIGS, NPAR, LORBIT tags in the INCAR file. Empty (spheres) 1 0.0000000000000000 0.000000000000000 0.0000000000000000 Drawing local density of states (LDOS) (update: 2013-10-27) - Local density of states is the real space distribution of the wavefunction square, i.e. charge density for given energy range. Following below steps to obtain the LDOS - Obtain wavefunction - obtain all partial charge density, rho(n,k,x,y,z) - You can obtain energy eigenvalue from EIGENVAL - Now you know rho(E(n,k),x,y,z) - Now average over rho for y,z. to obtain rho(E,x) - Now draw rho(E,x) with smearing. - Note that you need very many k-point. I know and you know that it is the time consuming job. Local-potential (LOCPOT) - Frequently, one should check the difference between LOCPOT files - In this case, it is a good idea to fix the number of charge-density or local-potential grids. - Related tags are NGX, NGY, NGZ. Maybe sometimes with NGXF, NGYF, NGZF Phonon calculations - Phonopy code is the very useful tool for phonon calculations. - Download from here: http://phonopy.sourceforge.net/ - Good texts to read: ftp://ftp.heanet.ie/.../introduction-phonon-calc.pdf (broken site) http://icms3.weebly.com/uploads/3/5/9/0/3590130/version1.pdf IR-active mode calculations - You can calculate the IR-active mode intensities using the following code. - Download from here: http://homepage.univie.ac.at/david.karhanek/downloads.html Dielectric function for metallic system - Dielectric functions are composed of interband-transition-term (bound electron term) plus intraband-transition-term (free electron term: Drude term) - Although you can obtain inerband-transition term from VASP, you should calculate intraband-transition-term by yourself especially for metallic system. - It means that you need plasma frequency from the band structure. There are two possible method to calculate the plasma freqeuncy using vasp code. Dielectric constant for dielectrics with clamped-ion (update: 2016-01-28) - Using the LEPSILON-tag, one can calculate the ion-clamped dielectric constant as written in VASP manual . - Optimizing structure - Calculating wavefunction - Turning on LEPSILON-tag (LEPSILON = TRUE) and commenting out NPAR-tag or no NPAR tag in the INCAR-file. Dielectric constant for dielectrics with relaxed-ion (update: 2016-01-28) - Using the LEPSILON-tag IBRION-tag, one can calculate the ion-clamped dielectric constant as written in VASP manual . - Optimizing structure. Note that ionic forces should be very small because of the force constant calculations. - Calculating wavefunction - LEPSILON = TRUE / no NPAR tag / IBRION = 5,6,7,8 (one of them) Prediction of plasma freqeuncy (update: 2013-10-27) - The plasma frequency I mention here is not the 'Screened plasma frequency'. You shoud distinguish between just plasma frequency and screened plasma frequency. The screened plasma frequency is the frequency where the real part of the dielctric function (inter-band term + intra-band term) becomes zero. And the screened plasma frequency is smaller than the plasma frequency. - Using BoltzTraP code, you can obtain electrical conductivity over electon scattering time (SIGMA/TAU) within constant relaxation time approximation. Then, SIGMA/TAU can be transformed to plasma frequency. You shoud be careful when calculating plasma frequency. As the plasma frequency is obtaiend from the intra-band transition, I mean the group velocity of the electron, the k-point sampling is very important. You need sufficiently many k-points to obtain correct band dispersion. It is recommended to test the energy convergence with increasing number of k-points. - You may also obtain the plasma frequency within vasp code. With the input tag of LOPTICS=TRUE you can find the plasma frequency in the OUTCAR file. dx:一定要注意这里的弛豫时间是电子的弛豫时间,涉及电子-电子相互作用和电子-声子相互作用,和shengBTE里面的声子-声子弛豫时间完全不是一回事。 Electrical conductivity using VASP code (update: 2013-11-13, 2015-04-17) - Within semiclassical theory, one may obtain the electrical conductivity from the band structure by calculating the intraband structure. However, when you use the semiclassical theory, you should get the relaxation time from outside or you should calculate the relaxation time. If you already know the electron scattering time or relaxation time, you can get the electrical conductivity using VASP. - There are two ways to get the electrical conductivity. One is using BoltzTraP code. And the other thing is to read the OUTCAR file from VASP code. Using LOPTICS = TRUE tag and RTIME = x.xx (femtotsec) in INCAR with sufficiently many kpts, you can finally found the reliable value of electrical conductivity tensor in OUTCAR from VASP. Unit of electrical conductivity per relaxation time is 10^22 . For example, if the tensor is ], then Sigma/Tau = 0.020 x 10^22 S/m/sec = 2 x 10^20 S/m/sec For recent VASP version of 5.3.3, you can set the relaxation time ( RTIME in unit of femtosec ) and obtain the electrical conductivity tensor in unit of mega S/m written in OUTCAR. // 2015-04-17 And the Energy dependent conductivity is also written in the vasprun.xml file. // 2015-04-17 MAGMOM tag in INCAR - You may reduce the sentence length of MAGMOM tag as shown below, MAGMOM = 1 1 1 1 1 == MAGMOM = 5*1 MAGMOM = 1 1 -3 -3 4 == MAGMOM = 2*1 2*-3 4 It really saves your time to make INCAR file for spin poloarized calculation of large supercell Many body perturbation theory (MBPT) : GW and BSE in VASP (I tested MBPT calculations with vasp version of 5.2.xx) - MBPT calculations are very time consuming and very memory consuming. - BSE tips in other site : http://cms.mpi.univie.ac.at/vasp-forum/forum_viewtopic.php?4.12605 (site broken) - Calculation flow: (1) DFT(Exc=LDA or GGA) calculations (or DFT+U, Hybrid-DFT) for wavefunctions (WAVECAR) and their derivatives (WAVEDER). You need sufficient many unoccupied bands. (2) GW calculations (ALGO=GW0, scGW0, scGW) (3) BSE calcualtoin (ALGO=BSE) : although you can not find the BSE tag in your manual, it works. And check the vasprun.xml which contains frequency dependent dielectric functions. - Related tags: LOPTICS = T for derivative of wavefunction (see manual) NBANDS number of total bands including occupied and unoccupied, convergence test is needed (see manual) ENCUT convergence test is needed (see manual) CSHIFT smearing value for optical response results (freq. dependent dielectric function) (see manual) ALGO (=GW0, scGW0, scGW, BSE) one shot G0W0 tag (GW0), W fixed GW tag (scGW0), fully self consistent GW (scGW), BSE calculation tag (see manual) NOMEGA (see manual) NBANDSO number of occupied bands you considered for BSE calculations NBANDSV number of unoccipied (virtual) bands you considered for BSE calculations Charge analysis (update: 2015-04-20) - Bader Charge You may analyze the atomic charge density distribution by using Bader Analysis. The concept of Bader Charge is based on the space separation based on the minimum charge density positions. - CHGCAR or CHG file You can directly analyze the atomic charge density using CHGCAR file. Or as mentioned in above (#6), you can get the atomic charge using DOSCAR or OUTCAR. Unit conversion for VASP phonon frequency from density functional perturbation theory (DFPT) results, Unit of phonopy (update: 2015-06-24) - When one run DFPT calculations or BSE calculations, one obtain the vibration frequency in OUTCAR or vasprun.xml files.VASP. freq (THz) : ang. moment w (2pi THz) : 1/wavelength (1/cm) : energy (meV) = 1 : 2 pi : 10^10/c(speed of light: c) : 10^15xh(planck const: h) = 1 : 6.238186 : 33.35641 : 4.135669 - the default unit for frequency is THz. Therefore you can obtain phonon energy by producting planckconstant (h) 1 THz = 4.135669 meV - example of PbTe phonon (VASP + phonopy, cubic lattice, lattice parameter of a=6.567843. First principles calculations of Lattice thermal conductivity - Thermal conductivity (kappa_tot) is a sum of electrical term and lattice term. - Electrical term (kappa_elec) = (Lorenz Number) x ( Elec. conductivitiy ) x (Temp.), where you can obtain Lorenz number and Elec. conductivity from the BoltzTrrap (electron boltzmann transport equation) - Lattice therm (kappa_latt) = (kappa_phonon) can be obtained by performing phono3py calculations, which calculates the transition rate of phonon-phonon scattering. ( phono3py LINK ) Using phono3py code with VASP (2015-12-21) (0) prepare the optimized supercell with the VASP parameter to be used in force calculations. The force should be less than 1.0e-08 eV/angstrom. Of course, you should optimized the structure considering the k-point mesh you will use in (1). WAVECAR file is needed to reduce computational resources for step (2). (1) generate POSCAR files with pair-distance configurations. There might be one to ten thousands POSCAR files. phono3py -d --dim=4 3 3 -c POSCAR-unitcell --cutoff_pair_distance=4.4 supercell size, unitcell file, cutoff pair-distance in angstrom (2) calculate force for pair-distance configurations using VASP. Make directories for configurations of POSCAR-00365. Copy INCAR, KPOINTS, POTCAR POSCAR, and WAVECAR. Using WAVECAR preapared from (0) will be useful to reduce the computational cost. In my case, I used the gamma point only but with the large supercell containing 200-400 atoms. Energy cutoff is also known to be sensitive to the lattice thermal conductivity tensor. For example, when the monoclinic unitcell volume is optimized within 400 eV and internal coordinate is optimized within 300 eV. then there could be non-zero off-digonal term in lattice thermal conductivity tensor. (3) collect vasprun.xml file phono3py --cf3 disp-{00001..00999}/vasprun.xml (or) phono3py --cf3 disp-*/vasprun.xml disp_fc3.yaml, POSCAR-unitcell files should be in same directory. (4) create fc2.hdf and fc3.hdf phono3py --dim=4 3 3 -c POSCAR-unitcell This step is not madatory, but you can avoid calculating fc2 and fc3 at every run tim. from http://phonopy.sourceforge.net/phono3py/workflow.html The file size of fc3.hdf is very large. It is about 1 to 10 GB. (5) calculate thermal conductivity (5.1) split thermal 3phonon process configurations phono3py --fc3 --fc2 --dim=4 3 3 -v --mesh=11 11 11 -c POSCAR-unitcell --br --thm ---wgp q-mesh grid, write grid point for split calculation The computational time for 3phonon-transition rates are very time consuming when q-mesh grid is fine. Thermal conductivity, especially for low temperature region, q-mesh grid affects the lattice thermal conductivity. Therefore it is recommended to split the calculation set and calculate the transition rate separately using many cpu cores. After run the commands in (5.1), you will get grid_address-m111111 and ir_grid_points.yaml (5.2) calculate 3phonon transition rate for each q grid point phono3py --fc3 --fc2 --dim=4 3 3 -v --mesh=11 11 11 -c POSCAR-unitcell --br --thm --write_gamma --gp=3 Check q grid point number (gp) from ir_grid_points.yaml and write correct gp. The calculation time is dependent on q-mesh size. Each gp-point calculation time is varying from 10 minutes to 10 days depending supercell size and q-mesh size. Note that there are many gp if q-mesh size is fine. (5.3) sum up thermal conductivity phono3py --fc3 --fc2 --dim=4 3 3 -v --mesh=11 11 11 -c POSCAR-unitcell --br --thm --read_gamma z_TC_def.txt Now you will get the lattice thermal conductivitiy file, z_TC_def.txt Type tail -n 150 z_TC_def.txt and find the lattice conductivity tensor as a function of temperature. (*) Useful tag: --isotope, --mv, --bmfp for isotope effect, mass variance effect, boundary scattering effect. (**) Auxilary tools kaccum and gaccum commands for accumulated lattice thermal conductivity and 3ph transition rate, respectively. Band structure using VASP+Wannier90 (2016-04-05) We can draw band structure by calculatinng Wannier Interpolation using Wannier90. You need wannier90 compiled VASP. Although I don't know well about wannier90, I want to share my knowledge to prevent other's failures Simple method (1-1) Preconverge wavefunction (1-2) Turn on LWANNIER90=T tag and run wan90 compiled VASP. Then Maximally Localized Wannier Functions (MLWFs) are generated with wannier90.win, wannier90.mmn, wannier90.eig, wannier90.out files. (1-3) Re-Run wannier90. wannier90.x wannier90 (1-4) Interpolate wannier functionals: first modify the wannier90.win file. For details, see the tutorial file. wannier90.x wannier90 GW band structure from wannier90 I will explain how to make GW band structure. You considered diamond Si and there are two Si atoms in primitive cell. Then there are 8 electrons. For GW calculations you may need many number of bands, about 96 or larger than it. Please note that NPAR should be tagged out or equal to number of nodes(cores). And you may know that NBANDS is dependent on NPAR tag. First check NBANDS without NPAR tag. Also you don't need too many wannier functions. It is a good idea to reduce the number of bands. Actually the number of bands for wannier90 is very sensitive to the band structure. So I recommend to check the suitable number of bands by just running simple DFT. Here I assume that the optimal number of wannier bands is 4 per Si atom (8 per primitive cell). In shortly, you need to determine NBANDS for VASP and NUM_WAN for wannier90. Here I will use NBANDS=96 (I have 12 core nodes, so NBANDS should be divived by 12) Here I will use NUM_WAN = 8 (the number of wannier functions are related to the symmetries) (1-1) DFT calculations with default NBANDS (1-2) Optical calculations (LOPTICS=TRUE, NBANDS=96 ) (1-3) GW calculations with wannier90 (ALGO=GW0, LWANNIER90=TRUE, no NPAR related tag) If you do not set wannier90.win file, then wannier90.win will be generated. But it is too heavy to play with it since there are too many BANDs. Make wannier90.win file (or modify wannier90.win file) as follows. (The default wannier90.win can be obtained by running without wannier90.win file. GW calculation is too time consuming. Therefore just run DFT with LWANNIER90=T tag) num_wann = 8 num_bands = 8 exclude_bands : 9-96 (1-4) Run wannier90 After getting wannier90.win, wannier90.eig, wannier90.mmn, rerun the wannier90.x cmd wannier90.x wannier90 Now you wannierize and obtain MLWFs. (1-5) Intepolate First modify or generate or make suitable wannier90.win or NAME.win. And run by typing wannier90.x wannier90 or wannier90.x NAME. Now you can interpolate for DOS, BANDS, or Fermi-Surface. IMPORTANT TIP for wannier90 with VASP (2016-11-02): you should comment out the NPAR tag when the calculation is crashed. When I ran the vasp calculation for Mg2Si primitive cell, my calculation is crashed with following error: internal error in GENERATE_KPOINTS_TRANS: G vector not found. By removing NPAR tag, I did succeed to calculate the wannier90 with VASP. Phonon thermal conductivity of low dimensional structure (2016/04/25) Please be careful that if there is vacuum, I mean your structure is 1d or 2d structures with vacuum, you should normalize the thermal conductivity tensors. Also be careful that there will be dipole interactions between adjacent supercell and the force from displacement supercell will be dependent on the lateral size of supercell. For example, I tested 1D carbon (C) atomic chain along z direction and the C-C distance is set to 1.28 angstrom. I considered 1x1x10 supercells containing 10 C atoms with various a=b values, 10, 14, 20, and 25 angstroms. I find that the thermal conductivity value of zz component times a square seems to be converged as a becoming larger from 10 to 25 (k_zz x a^2 = 2836, 2968, 3136, 3215 Wxm/K at 300K, 4560, 5181, 5281, 4685 Wxm/K at 500 K. It implies that the cross section area should be checked carefully because the phono3py code assumes that one's structure is bulk. The reason why the k_zz is not exactly same is that there is dipole when single C atom is displaced and it makes large cross sectional interactions between adjacent supercells. I think that if we consider the neutral atomic chain which has negligible dipole interaction between supercell, the k_zz will be converged more fastly. 原文链接:https://sites.google.com/site/cta4rbk/home/tips4vasp,因为google被墙了,所以在这里留个底。
6016 次阅读|0 个评论
[转载]vasp不收敛处理(转)
lixxyyzz 2016-10-2 20:57
对于一些磁性体系、镧系和锕系元素及相关化合物的静态计算(电子迭代),经常会遇到 “ 难收敛 ” 的问题。 下面给出几个相关 Flag 及设置方法: 1 、 LMAXMIX Default: LMAXMIX = 2 An additional flag controls up to which l quantum number the onsite PAW charge densities are passed through the charge density mixer. Higher l-quantum numbers are usually not handled by the mixer. In order to obtain fast convergence to the groundstate, you can try the following setting: LMAXMIX = 4 for d elements LMAXMIX = 6 for f elements 这个 FLAG 对于含 d 电子和 f 电子的体系是非常重要的,很大一部分体系的收敛问题可以通过设置合适的 LMAXMIX 值来解决。 2 、 ALGO, IALGO, LDIAG If the self-consistency loop does not converge within 40 steps, it will probably not converge at all. In this case you should reconsider the tags IALGO, LDIAG, and the mixing-parameters. 这是说明书上的建议。 一般情况下,或使用 IALGO=48 时遇到收敛问题的话,可以考虑设 IALGO 为 38 ( 4.5 以前的版本可设为 8 ),或设置 ALGO=Normal or Fast (in VAS P.4.5 and later versions) 。 3 、 NELMDL NELMDL gives the number of non-selfconsistent steps at the beginning; if one initializes the wave functions randomly the initial wave functions are far from anything reasonable. The resulting charge density is also 'nonsense'. Therefore it makes sense to keep the initial Hamiltonian, which corresponds to the superposition of atomic charge densities, fixed during the first few steps. Choosing a 'delay' for starting the charge density update becomes essential in all cases where the SC-convergence is very bad (e.g. surfaces or molecules/clusters chains). Without setting a delay VASP will probably not converge or at least the convergence speed is slowed down. NELMDL might be positive or negative. A positive number means that a delay is applied after each ionic movement — in general not a convenient option. A negative value results in a delay only for the start-configuration. 4 、 mixing-parameters 对于一些难收敛的体系,可以使用 “linear mixing”, 具体详见 VASP 说明书中的 “Mixing-tags” 。 For an initial linear mixing (BMIX ~ 0) an optimal setting for A(AMIX) can be found easily by setting Aopt=Acurrent*Γmean. For the Kerker scheme either A or q0(i.e. AMIX or BMIX) can be optimized, but we recommend to change only BMIX and keep AMIX fixed (you must decrease BMIX if the mean eigenvalue is larger than one, and increase BMIX if the mean eigenvalue is smaller than one). 尽管 VASP 说明书中给出了调节 AMIX 和 BMIX 的一些较为明确的建议,但是实际去调节的时候,还是挺难的,但原则上说,是可以通过调节这两个 Flag 来使得收敛问题得以解决的,只是得有耐心。 5 、 kmesh, SIGMA 收敛问题还跟 kmesh 及 SIGMA( 当使用 ISMEAR 不等于 -5 和 -4 时 ) 的设置有关。要达到同样的精度,较小的 SIGMA 则需要较大的 kmesh ;而且,当 SIGMA 较小时,若 kpoints 不够多,也会出现难收敛的情况。
3453 次阅读|0 个评论
[转载]VASP 计算功函数
xiaoyutianya 2016-4-15 05:27
在 VASP 的 INCAR 文件中,指定 LVTOT=.TRUE. , 并且在计算时超晶胞大小选取有足够的真空区域,以保证势能函数收敛到真空能级 。指定 LVTOT=.TRUE. 后, VASP 的运行结果会多出一个叫 LOCPOT 的文件,里面包含的信息是计算中的 electrostatic potential 。 在真空区域的 electrostatic potential 即为真空能级。 一个典型的 LOCPOT 文件有如下的格式 (8,0) Carbon Nanotube 1. 40.000000 0.000000 0.000000 0.000000 40.000000 0.000000 0.000000 0.000000 4.320000 16 Direct 0.414696 0.375000 0.000000 0.403069 0.403069 0.833333 0.403069 0.403069 0.500000 0.375000 0.414696 0.333333 0.375000 0.414696 0.000000 0.346931 0.403069 0.833333 …….. (省略 N 行) (省略更多行) 最前面的几行是 header 部分,主要包括了晶胞大小,原子坐标等信息。注意,计算中的晶胞大小要远超过体系的实际大小,以保证足够的真空区域。从 420 420 48 这一行开始,说明沿着晶胞的 x,y,z 方向,分别等分成 420,420,48 个格点,每个格点上记录该点的 electrostatic potential 。我们实际上需要的是真空区域的值。为此,我们可以有如下的 matlab script 来完成类似工作 读入 header 部分 … for k=1:z 方向格点数 for j=1:y 方向格点数 for i=1:x 方向格点数 v(i,j,k)=fscanf(fid,'%g',1); end end end 然后,根据你的真空区域在哪里,你可以对 v 这个矩阵的一部分做一个平均操作,得到真空能级。像上图的势能图,就可以沿着纳米管的轴,在每个点上对于纳米管 的横截面上的 electrostatic potential 做平均,即可得到如上的势能图。真空能级减去费米能级即为该体系的功函数。 420 420 48 0.18314769822E+00 0.18314676614E+00 0.18315439435E+00 0.18315348730E+00 0.18316167121E+00 0.18316060822E+00 0.18316911573E+00 0.18316765858E+00 0.18317566050E+00 0.18317363579E+00 0.18318169699E+00 0.18317919383E+00 0.18318714885E+00 0.18318423496E+00 0.18319188157E+00 0.18318824402E+00 0.18319610760E+00 0.18319209212E+00 0.18319995835E+00 0.18319590197E+00 …….. …
个人分类: 计算VASP学习|3402 次阅读|0 个评论
vasp之mBJ计算能带
热度 8 plgongcat 2015-4-14 10:17
1.进行pbe scf calculation,得到IBZKPT #pbe scf calculation #INCAR SYSTEM = BP-00-vdw ENCUT = 500 ISTART = 0 NSW=0 ICHARG = 2 ISMEAR = 0; SIGMA = 0.05 PREC = Accurate #KPOINTS Automatic generation 0 M 20 20 20 0 0 0 2.mBJ band calculation是在PBE基础上的计算,设置ISTART=1,ICHARG=2。(因为hse时哈密顿量变了,也就是CHARG变了,不能从上一步pbe自洽计算读。将pbe得到的IBZKPT和自己需要计算能带Kpoints数据;合二为一,并设置Kpoints的weight是0) ! 注意:mBJ计算需要上一步PBE计算得到的WAVECAR。 #mBJ scf calculation #INCAR SYSTEM = BP-00-vdw ENCUT = 500 ISTART = 1 NSW=0 ICHARG = 2 ISMEAR = 0; SIGMA = 0.05 PREC = Accurate RWIGS = 1.233 LORBIT = 12 METAGGA = MBJ #IBZKPT与能带Kpoints数据合并 Automatically generated mesh 2000 Reciprocal lattice 0.02500000000000 0.02500000000000 0.02500000000000 4 0.07500000000000 0.02500000000000 0.02500000000000 8 0.12500000000000 0.02500000000000 0.02500000000000 8 0.17500000000000 0.02500000000000 0.02500000000000 8 0.22500000000000 0.02500000000000 0.02500000000000 8 0.27500000000000 0.02500000000000 0.02500000000000 8 0.32500000000000 0.02500000000000 0.02500000000000 8 ......... - 3. 上一步完成后得到EIGENVAL,对照KPOINTS删除多余(就是删除那些有weight的数据)并修改 EIGENVAL中K点的数目; 4. 下面就是画能带了,利用小程序 vasp_band.exe 可以得到bands图片(从DOSCAR中看Fermi能级) http://emuch.net/html/201203/4232787.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 下面是对单层使用mBJ能带修正,以黑磷为例 1. 需要得到块体黑磷的CMBJ=1.1562(自恰得到,不要在INCAR中人为添加) 2. 将上面的CMBJ数值添加到单层结构的INCAR之中。 如果,不按照上述方法,得到的能带数据发散、古怪!
个人分类: Vasp|28641 次阅读|16 个评论
vasp+hse06
DonarF1 2015-3-12 23:35
1 常规DFT计算得到WAVCAR 2 HSE06自洽 LHFCALC = .TRUE. ; HFSCREEN = 0.2 ; AEXX = 0.25;PRECFOCK= F ALGO = D ; 比ALGO=N快点 TIME = 0.4 ; LDIAG = .TRUE. LPLANE=.TRUE. NPAR=96 NSIM=4 KPAR=4 几点经验: (用96个核在cray上计算,0.02的K-points,半小时左右就计算完了。) cray 上的aprun并行效率会比openmpi快2倍以上(HSE06的计算上)。 2D层状材料,15与25的真空层,HSE06计算时间会小2倍多。 HSE06自洽完算能带, ICHARG 注释掉,如设置为11,半导体可能算出金属的结果来。 用常规的DFT的波函数来计算hse06的能带,虽然结果一样,但计算时间会多3倍 vasp.5.4.1,the speed would be accelerated greatly via the following parallel setting. NPAR=24 KPAR=8 warning ----------------------------------------------------------------------------- | | | W W AA RRRRR N N II N N GGGG !!! | | W W A A R R NN N II NN N G G !!! | | W W A A R R N N N II N N N G !!! | | W WW W AAAAAA RRRRR N N N II N N N G GGG ! | | WW WW A A R R N NN II N NN G G | | W W A A R R N N II N N GGGG !!! | | | | ALGO=A and IALGO=5X tend to fail with the tetrahedron method | | (e.g. Bloechls method ISMEAR=-5 is not variational) | | please switch to IMSEAR=0-n, except for DOS calculations | | For DOS calculations use IALGO=53 after preconverging with ISMEAR=0 | | I HOPE YOU KNOW, WHAT YOU ARE DOING | | incar.hse NPAR=24 KPAR=8 PREC = high ENCUT = 500 eV NELMIN= 5 LREAL = F # ALGO = Fast EDIFF = 1E-5 ISMEAR = 0 ISPIN = 1 # MAGMOM = 3*1 SIGMA = 0.05 #hse06 ICHARG = 2 ISTART = 1 NELM = 100 NSW = 0 IBRION = -1 LHFCALC = .TRUE. HFSCREEN = 0.2 ; AEXX = 0.25;PRECFOCK= F ALGO = D TIME = 0.4 LDIAG = .TRUE. LCHARG = F LWAVE = F LPLANE=.TRUE.
个人分类: vasp|1 次阅读|0 个评论
vasp+GW+BSE
DonarF1 2015-2-27 09:30
主要参考以下博文 http://cms.mpi.univie.ac.at/wiki/index.php/Bandstructure_of_SrVO3_in_GW#The_dielectric_function http://blog.sciencenet.cn/blog-1460330-807089.html step1 ALGO = Exact NBANDS = 64 LOPTICS = .TRUE. NEDOS = 2000 ## you might try #LPEAD = .TRUE. ISMEAR = 0 SIGMA = 0.05 GGA = PE NPAR=4 step2: ## Frequency dependent dielectric tensor including ## local field effects within the RPA (default) or ## including changes in the DFT xc-potential (LRPA=.FALSE.). ## N.B.: beware one first has to have done a ## calculation with ALGO=Exact and LOPTICS=.TRUE. ## and a reasonable number of virtual states (see above) ALGO = GW0 ; LSPECTRAL = .TRUE. ; NOMEGA = 50 #LRPA = .FALSE. ## be sure to take the same number of bands as for ## the LOPTICS=.TRUE. calculation, otherwise the ## WAVEDER file is not read correctly NBANDS = 64 step3 ## Frequency dependent dielectric tensor including ## local field effects within the RPA (default) or ## including changes in the DFT xc-potential (LRPA=.FALSE.). ## N.B.: beware one first has to have done a ## calculation with ALGO=Exact and LOPTICS=.TRUE. ## and a reasonable number of virtual states (see above) #ALGO = GW0 ; LSPECTRAL = .TRUE. ; NOMEGA = 50 #LRPA = .FALSE. ## be sure to take the same number of bands as for ## the LOPTICS=.TRUE. calculation, otherwise the ## WAVEDER file is not read correctly NBANDS = 64 #bse ALGO=BSE NOMEGA=72 ENCUTGW = 500 NBANDSO = 4 NBANDSV = 4 LSPECTRAL = .TRUE. 附相关参数说明:(from http://blog.sciencenet.cn/blog-1460330-807089.html ) GW NOMEGA= integer ! spcifies the number of frequency grid points NOMEGA= integer ! spcifies the number of frequency points along real axis default: NOMEGA= 50 NOMEGA= NOMEGA for GW。 NOMEGA的取值一般为50-100之间,且必须为CPU核心数数整数倍, 同时NBANDS也必须为CPU核心数整数倍。 如果不是的话,vasp会随机产生波函数,补成整数倍,这些随机产生的波函数会导致结果出现很大误差。 NEDOS !number of energy points 可决定介电函数的取值密度 默认NEDOS=2000, 在OUTCAR里介电函数的取值密度是 能量范围除以2000 在vasprun.xml里有10倍精细度的介电函数 NBANDSGW= !determines how many QP energies are calculated and updated in GW calculations. This value usually needs to be increased somewhat for partially or fully selfconsistent calculations. Very accurate results are only obtained when NBANDSGW approaches NBANDS, although this dramatically increases the computational requirements. BSE ALGO=BSE 用GW算介电常数,一般是结合BSE一起计算的,算完BSE后在vasprun.xml中有一个精细的介电矩阵。 NBANDSO = 4 ! number of bands for electron-hole treatment (occupied) NBANDSV = 6 ! number of bands for electron-hole treatment (virtual) OMEGAMAX=6 ! max frequency yunhailiseu: when vasp reports: ———————————————————————————— “BSE diagnonalizing matrix (****) BSE calculating oscillator strength” ———————————————————————————— the whole calculation is almost over. And if no error message is given after that, the job just finished sucessfully . The BSE oscillator strength and dielectric tensor is written in vasprun.xml, not OUTCAR。 ———————————————————————————— dielectricfunction imag array dimension dim=1gridpoints/dimension fieldenergy/field fieldxx/field fieldyy/field fieldzz/field fieldxy/field fieldyz/field fieldzx/field set r 0.0000 0.2951 0.2951 0.0068 0.0000 0.0000 0.0000 /r r 0.0120 0.2952 0.2952 0.0068 0.0000 0.0000 0.0000 /r r 0.0239 0.2952 0.2952 0.0068 0.0000 0.0000 0.0000 /r r 0.0359 0.2953 0.2953 0.0068 0.0000 0.0000 0.0000 /r ———————————————————————————— Then in the following BSE calculation the excitation energies can be determined ( in vasprun.xml just before the dielectric tensor, together with transition matrix elements ). If one exciton has a corresponding excitation energy lower than Eg, it is a bound exciton(束缚激子). And if the excitation energy is larger than Eg, it is a resonant exciton(共振激子). The type of exciton may also be determined from absorption spectrum. Nano Lett. 2010, 10, 426-431, Nano Lett. 2007, 7, 3112-3115 and PRB 83, 085405 (2011).
个人分类: vasp|15087 次阅读|0 个评论
[转载]过渡态计算设置的一点体会
vasp001 2014-11-20 19:29
过渡态计算设置的一点体会 已有 1639 次阅读 2012-1-1 18:45 | 个人分类: VASP | 系统分类: 科研笔记 | 关键词:计算 class 最好 转自: http://emuch.net/bbs/viewthread.php?tid=2921427 计算过渡态,最好是把vtstool的工具编译到vasp中去,好处是仍然可以只用vasp中的NEB,也可以用Cl-NEB,更重要的原因是可以用vtstool中的很多脚本工具来跟踪过渡态计算过程。 计算过渡态先要摆正心态,不急于下手。步骤如下: (1)做模型,初态IS和终态FS,分别结构优化到基态; (2)线形插入images: nebmake.pl POSCAR.IS POSCAR.FS N N为image个数。 (3)nebmovie.pl,生成movie.xyz。用Xcrysden --xyz movie.xyz 反复观看动画,仔细检查过程的合理性。这里要提醒,POSCAR.IS 和POSCAR.FS中原子坐标列表的顺序必须对应。 (4)写INCAR,选IOPT。注意,最好忘记vasp自带的NEB,而全部改用包含vtstool的vasp. IBRION=3,POTIM=0关闭vasp自带的NEB功能。 (5)过渡态计算第一个离子步最耗时,也最容易出问题,也是模型设计合理性检验的首要环节。所以可以选小一些的ENCUT,可以不用考虑自旋(ISPIN=1),也不用考虑DFT+U。而且用最快最粗糙的算法(IOPT=3,其他默认)。 (6)带vtstool的vasp-ClNEB(NEB)过渡态计算ICHAIN=0作为入口,这个也是默认的。LCLIMB=TRUE也是默认的。如果不要climb image,可以设置LCLIMB = False. (7)收敛判据EDIFFG0。过渡态计算要以力为收敛判据,而不是能量。一般EDIFFG=-0.05就可以接受,-0.02或者-0.01更好。但是作为开始的过渡态计算,可以设置很宽的收敛条件,如EDIFFG=-1. (8)初步过渡态收敛后,修改INCAR中的优化器(IOPT),并修改相应参数(参考vtstool官方论坛),EDIFFG改小(如-0.05),然后运行vfin.pl,这个脚本自动帮你准备在原来的基础上继续运行新的过渡态计算(完成cp CONTCAR POSCAR, 保留电荷密度和波函数的操作)。 (9)睡了,想起来再写。可以参考官方论坛
个人分类: VASP|6078 次阅读|0 个评论
[转载]HSE+GW+BSE几类计算的关键词小结
vasp001 2014-11-19 11:33
HSE+GW+BSE几类计算的关键词小结 已有 394 次阅读 2014-6-27 15:52 | 系统分类: 科研笔记 GW NOMEGA= integer ! spcifies the number of frequency grid points NOMEGA= integer ! spcifies the number of frequency points along real axis default: NOMEGA= 50 NOMEGA= NOMEGA for GW。 NOMEGA的取值一般为50-100之间,且必须为CPU核心数数整数倍, 同时NBANDS也必须为CPU核心数整数倍。 如果不是的话,vasp会随机产生波函数,补成整数倍,这些随机产生的波函数会导致结果出现很大误差。 NEDOS !number of energy points 可决定介电函数的取值密度 默认NEDOS=2000, 在OUTCAR里介电函数的取值密度是 能量范围除以2000 在vasprun.xml里有10倍精细度的介电函数 NBANDSGW= !determines how many QP energies are calculated and updated in GW calculations. This value usually needs to be increased somewhat for partially or fully selfconsistent calculations. Very accurate results are only obtained when NBANDSGW approaches NBANDS, although this dramatically increases the computational requirements. BSE ALGO=BSE 用GW算介电常数,一般是结合BSE一起计算的,算完BSE后在vasprun.xml中有一个精细的介电矩阵。 NBANDSO = 4 ! number of bands for electron-hole treatment (occupied) NBANDSV = 6 ! number of bands for electron-hole treatment (virtual) OMEGAMAX=6 ! max frequency yunhailiseu: when vasp reports: ———————————————————————————— “BSE diagnonalizing matrix (****) BSE calculating oscillator strength” ———————————————————————————— the whole calculation is almost over. And if no error message is given after that, the job just finished sucessfully . The BSE oscillator strength and dielectric tensor is written in vasprun.xml, not OUTCAR。 ———————————————————————————— dielectricfunction imag array dimension dim=1gridpoints/dimension fieldenergy/field fieldxx/field fieldyy/field fieldzz/field fieldxy/field fieldyz/field fieldzx/field set r 0.0000 0.2951 0.2951 0.0068 0.0000 0.0000 0.0000 /r r 0.0120 0.2952 0.2952 0.0068 0.0000 0.0000 0.0000 /r r 0.0239 0.2952 0.2952 0.0068 0.0000 0.0000 0.0000 /r r 0.0359 0.2953 0.2953 0.0068 0.0000 0.0000 0.0000 /r ———————————————————————————— Then in the following BSE calculation the excitation energies can be determined ( in vasprun.xml just before the dielectric tensor, together with transition matrix elements ). If one exciton has a corresponding excitation energy lower than Eg, it is a bound exciton(束缚激子). And if the excitation energy is larger than Eg, it is a resonant exciton(共振激子). The type of exciton may also be determined from absorption spectrum. Nano Lett. 2010, 10, 426-431, Nano Lett. 2007, 7, 3112-3115 and PRB 83, 085405 (2011).
个人分类: VASP|3542 次阅读|0 个评论
[转载]转载]转贴:VASP+GW+BSE
vasp001 2014-11-19 10:58
转载]转贴:VASP+GW+BSE 已有 374 次阅读 2014-6-18 15:24 | 系统分类: 科研笔记 http://blog.sina.com.cn/s/blog_5535a73d0101ispe.html INCAR_1 SYSTEM = - local optimisation ENCUT = 500 EDIFF = 1e-5 IBRION = 2 ISIF = 2 NSW = 0 ISMEAR = 0 ; SIGMA = 0.05 POTIM = 0.1 #Wavefunction and charge LWAVE = T LCHARG = T #Target Pressure #PSTRESS = 3000 #Finer optimization EDIFFG = -0.01 LOPTICS=.TRUE. NBANDS=144 NEDOS=2000 #ALGO=BSE #NOMEGA = 50 #LSPECTRAL=.TRUE. INCAR_2 SYSTEM = - local optimisation ENCUT = 500 EDIFF = 1e-5 IBRION = 2 ISIF = 2 NSW = 0 ISMEAR = 0 ; SIGMA = 0.05 POTIM = 0.1 #Wavefunction and charge LWAVE = T LCHARG = T #Target Pressure #PSTRESS = 3000 #Finer optimization EDIFFG = -0.01 LOPTICS = .TRUE. NBANDS=144 NEDOS=2000 ALGO=GW0 NELM=1 NOMEGA=72 LSPECTRAL = .TRUE. ENCUTGW = 500 INCAR_3 SYSTEM = - local optimisation ENCUT = 500 EDIFF = 1e-5 IBRION = 2 ISIF = 2 NSW = 0 ISMEAR = 0 ; SIGMA = 0.05 POTIM = 0.1 #Wavefunction and charge LWAVE = T LCHARG = T #Target Pressure #PSTRESS = 3000 #Finer optimization EDIFFG = -0.01 LOPTICS = .TRUE. NBANDS=144 NEDOS=2000 ALGO=BSE NOMEGA=72 ENCUTGW = 500 NBANDSO = 12 NBANDSV = 12 LSPECTRAL = .TRUE.
个人分类: VASP|3449 次阅读|0 个评论
[转载]vasp运行中常见错误的解决
vasp001 2014-11-19 10:57
vasp运行中常见错误的解决 已有 725 次阅读 2014-6-25 10:12 | 系统分类: 科研笔记 1. forrtl: severe (174): SIGSEGV, segmentation fault occurred 在FFLAGS 选项的赋值中增加 -heap-arrays 64 运行的时候加 ulimit -s unlimited 再make得到vasp,运行即可 Point 2 运行vasp的计算速度慢 对openmpi试试用export OMP_NUM_THREADS=1 或者换用intel-mpi 2. VERY BAD NEWS! internal error in subroutine INVGRP: inverse of rotation matrix was not found (increase SYMPREC) 一,取消对称性 ISYM=0 二,减小对称性判断标准 SYMPREC默认是10的负4次,你把它改得稍微小点。如:有5E-4 或 1E-3 3. 计算dos时 ismear=-5 提示 VERY BAD NEWS! internal error in subroutine IBZKPT: Routine TETIRR needs special values for the k-mesh shifts! -3 1) for slab calculations, use ONE k-point along z only. 2) the tetrahedron integration method needs the Gamma point to be included for a subdivision of the BZ into tertahedra, probably the even mesh did not have the Gamma point in the sample. Please try 11x11x1 or 9x9x1 or give 'Gamma' or 'gamma' in the third line of your KPOINTS file 4. When calculate the Macroscopic dielectric properties and Born effective charge tensors(LCALCEPS=.TRUE.),errors: internal error in GENERATE_KPOINTS_TRANS: number of G-vector changed in star 3199 3197 internal error in GENERATE_KPOINTS_TRANS: number of G-vector changed in star 3199 3197 internal error in GENERATE_KPOINTS_TRANS: number of G-vector changed in star 3199 3197 Usually it is because the NPAR is not set proper, remove NPAR from INCAR. 5. EDWAV: internal error, the gradient is not orthogonal 1 1 EDWAV: internal error, the gradient is not orthogonal 1 1 EDWAV: internal error, the gradient is not orthogonal 1 1 EDWAV: internal error, the gradient is not orthogonal 1 1 EDWAV: internal error, the gradient is not orthogonal 1 1 EDWAV: internal error, the gradient is not orthogonal 1 1 EDWAV: internal error, the gradient is not orthogonal 1 1 http://cms.mpi.univie.ac.at/vasp-forum/forum_viewtopic.php?3.12829 http://cms.mpi.univie.ac.at/vasp-forum/forum_viewtopic.php?3.12158 First: If the vasp was compiled by intel compiler 2013, then change to 2012 or lower; Seceond: change the the optimization flag from -O3 to -O1 . 6. VASP在电子自洽计算的中间步骤中会出现如下的错误 WARNING: DENTET: can't reach specified precision Number of Electrons is NELECT = 196.0137087990377 RMM: 7 -0.461353114525E+03 0.15540E+03 -0.29356E+02 6562 0.456E+01BRMI X: very serious problems the old and the new charge density differ old charge density: 195.99999 new 196.01370 0.758E+01 RMM: 8 -0.228026134405E+03 0.23333E+03 -0.10404E+02 4963 0.286E+01BRMI X: very serious problems the old and the new charge density differ old charge density: 196.01370 new 195.99999 0.376E+01 出现此警告(DENTET)的原因是因为无法通过tetrahedron方法得到足够精确的费米能级。也就是将态密度积分到费米面的电子数和体系的价电子数目不一致。可以尝试采用 选择另一种布里渊区内的积分方法 ( 改变 ISMEAR) 以解决此问题。 VASP计算中Sub-Space-Matrix is not hermitian in DAV的错误 我在计算界面体系时候,其他计算条件不变,仅改变了一些k格点数,就一直提示如下的错误: DAV: 13 -0.242323773333E+03 0.98155E+02 -0.87140E+01 48832 0.949E+01BRMIX: very serious problems the old and the new charge density differ old charge density: 252.00012 new 252.29979 0.809E+01 DAV: 14 -0.392866843695E+03 -0.15054E+03 -0.76122E+01 50857 0.731E+01BRMIX: very serious problems the old and the new charge density differ old charge density: 252.29979 new 252.48257 0.484E+01 WARNING: Sub-Space-Matrix is not hermitian in DAV 9 0.133520549894753 WARNING: Sub-Space-Matrix is not hermitian in DAV 17 495.153990161108 WARNING: Sub-Space-Matrix is not hermitian in DAV 6 0.250235927490523 WARNING: Sub-Space-Matrix is not hermitian in DAV 9 1876.75162244581 解决办法只需调整 AMIX, BMIX的值,把他们设置小一些。
个人分类: VASP|16594 次阅读|0 个评论
[转载]vasp运行中常见错误的解决
hehuabing 2014-11-12 13:02
1. forrtl: severe (174): SIGSEGV, segmentation fault occurred 在FFLAGS 选项的赋值中增加 -heap-arrays 64 运行的时候加 ulimit -s unlimited 再make得到vasp,运行即可 Point 2 运行vasp的计算速度慢 对openmpi试试用export OMP_NUM_THREADS=1 或者换用intel-mpi 2. VERY BAD NEWS! internal error in subroutine INVGRP: inverse of rotation matrix was not found (increase SYMPREC) 一,取消对称性 ISYM=0 二,减小对称性判断标准 SYMPREC默认是10的负4次,你把它改得稍微小点。如:有5E-4 或 1E-3 3. 计算dos时 ismear=-5 提示 VERY BAD NEWS! internal error in subroutine IBZKPT: Routine TETIRR needs special values for the k-mesh shifts! -3 1) for slab calculations, use ONE k-point along z only. 2) the tetrahedron integration method needs the Gamma point to be included for a subdivision of the BZ into tertahedra, probably the even mesh did not have the Gamma point in the sample. Please try 11x11x1 or 9x9x1 or give 'Gamma' or 'gamma' in the third line of your KPOINTS file 4. When calculate the Macroscopic dielectric properties and Born effective charge tensors(LCALCEPS=.TRUE.),errors: internal error in GENERATE_KPOINTS_TRANS: number of G-vector changed in star 3199 3197 internal error in GENERATE_KPOINTS_TRANS: number of G-vector changed in star 3199 3197 internal error in GENERATE_KPOINTS_TRANS: number of G-vector changed in star 3199 3197 Usually it is because the NPAR is not set proper, remove NPAR from INCAR. 5. EDWAV: internal error, the gradient is not orthogonal 1 1 EDWAV: internal error, the gradient is not orthogonal 1 1 EDWAV: internal error, the gradient is not orthogonal 1 1 EDWAV: internal error, the gradient is not orthogonal 1 1 EDWAV: internal error, the gradient is not orthogonal 1 1 EDWAV: internal error, the gradient is not orthogonal 1 1 EDWAV: internal error, the gradient is not orthogonal 1 1 http://cms.mpi.univie.ac.at/vasp-forum/forum_viewtopic.php?3.12829 http://cms.mpi.univie.ac.at/vasp-forum/forum_viewtopic.php?3.12158 First: If the vasp was compiled by intel compiler 2013, then change to 2012 or lower; Seceond: change the the optimization flag from -O3 to -O1 . 6. VASP在电子自洽计算的中间步骤中会出现如下的错误 WARNING: DENTET: can't reach specified precision Number of Electrons is NELECT = 196.0137087990377 RMM: 7 -0.461353114525E+03 0.15540E+03 -0.29356E+02 6562 0.456E+01BRMI X: very serious problems the old and the new charge density differ old charge density: 195.99999 new 196.01370 0.758E+01 RMM: 8 -0.228026134405E+03 0.23333E+03 -0.10404E+02 4963 0.286E+01BRMI X: very serious problems the old and the new charge density differ old charge density: 196.01370 new 195.99999 0.376E+01 出现此警告(DENTET)的原因是因为无法通过tetrahedron方法得到足够精确的费米能级。也就是将态密度积分到费米面的电子数和体系的价电子数目不一致。可以尝试采用 选择另一种布里渊区内的积分方法 ( 改变 ISMEAR) 以解决此问题。 VASP计算中Sub-Space-Matrix is not hermitian in DAV的错误 我在计算界面体系时候,其他计算条件不变,仅改变了一些k格点数,就一直提示如下的错误: DAV: 13 -0.242323773333E+03 0.98155E+02 -0.87140E+01 48832 0.949E+01BRMIX: very serious problems the old and the new charge density differ old charge density: 252.00012 new 252.29979 0.809E+01 DAV: 14 -0.392866843695E+03 -0.15054E+03 -0.76122E+01 50857 0.731E+01BRMIX: very serious problems the old and the new charge density differ old charge density: 252.29979 new 252.48257 0.484E+01 WARNING: Sub-Space-Matrix is not hermitian in DAV 9 0.133520549894753 WARNING: Sub-Space-Matrix is not hermitian in DAV 17 495.153990161108 WARNING: Sub-Space-Matrix is not hermitian in DAV 6 0.250235927490523 WARNING: Sub-Space-Matrix is not hermitian in DAV 9 1876.75162244581 解决办法只需调整 AMIX, BMIX的值,把他们设置小一些。
6306 次阅读|0 个评论
vasp相关资源
orlando 2014-7-9 18:39
(1)工具: vaspkit http://vaspkit.sourceforge.net/
个人分类: 学术科研|2596 次阅读|0 个评论
VASP 与 Siesta 晶体结构格式互换
bfax 2014-6-28 00:58
如果手动进行 VASP 与 Siesta 之间的坐标转换,面临两个较麻烦的手续: (1)VASP 的 POSCAR 中,每个原子坐标后面一般没有元素的标识(1,2 ...) (2)Siesta 的 fdf 文件中,各个原子未必是按照元素次序排列的。并且还需要统计各个元素分别有多少个原子。 为了提高效率,我就写两个 Python 小程序以便在 Linux 下进行转换。 pos2fdf.py #!/usr/bin/env python # www.kanhaoxue.com f = open('POSCAR', 'r') for i in range(5): f.readline() line = f.readline().strip() if line.split() .isdigit(): elementDetails = line.split() else: line = f.readline().strip() elementDetails = line.split() f.readline() i = 1 print '%block AtomicCoordinatesAndAtomicSpecies' for element in elementDetails: for j in range(int(element)): line = f.readline().strip() coorDetails = line.split() print '{0: 20}'.format(coorDetails ), '{0: 20}'.format(coorDetails ), '{0: 20}'.format(coorDetails ), i, j+1 i += 1 f.close() print '%endblock AtomicCoordinatesAndAtomicSpecies' 这个程序可以读取当前目录下的 POSCAR,输出相应 Siesta 需要的 fdf 文件的原子坐标部分。由于 Siesta 的输入 fdf 文件还包括很多其他内容,我们并不能产生完整的 fdf 文件。既然 VASP 是按照元素次序排列原子的,我们这里生成的 Siesta 原子坐标也是按照元素次序的,并且还标注了每个原子是该元素的第几个原子。 程序考虑到了老版 VASP 的 POSCAR, 有些时候并不写元素名。例如 Na Cl 4 4 在有些 4.x 版本的 VASP 里只是写成 4 4 对于这种情况也能正确读取。 fdf2pos.py #!/usr/bin/env python # www.kanhaoxue.com atomCount = speciesCount = latticeConstant = 1 numberOfAtoms = coordinateStr = sysName = 'Siesta' f = open('in.fdf', 'r') for line in f: if 'SYSTEMNAME' in line.upper(): sysName = line.split() .strip() if 'NUMBEROFATOMS' in line.upper(): atomCount = int(line.split() .strip()) if 'NUMBEROFSPECIES' in line.upper(): speciesCount = int(line.split() .strip()) if 'LATTICECONSTANT' in line.upper(): latticeConstant = line.split() .strip() print sysName print latticeConstant f.seek(0,0) line = f.readline() while not 'LATTICEVECTORS' in line.upper(): line = f.readline() for i in range(3): line = f.readline().strip() latticeDetails = line.split() print '{0: 20}'.format(latticeDetails ), '{0: 20}'.format(latticeDetails ), '{0: 20}'.format(latticeDetails ) f.seek(0,0) line = f.readline() while not 'CHEMICAL_SPECIES_LABEL' in line.upper(): line = f.readline() for i in range(speciesCount): line = f.readline().strip() print line.split() .strip(), print f.seek(0,0) line = f.readline() while not 'ATOMICCOORDINATESANDATOMICSPECIES' in line.upper(): line = f.readline() for i in range(atomCount): line = f.readline().strip() coorDetails = line.split() speciesIndex = int(coorDetails )-1 coordinateStr += '{0: 20}'.format(coorDetails ) coordinateStr += ' ' coordinateStr += '{0: 20}'.format(coorDetails ) coordinateStr += ' ' coordinateStr += '{0: 20}'.format(coorDetails ) coordinateStr += ' ' coordinateStr += '{0: 5}'.format(coorDetails ) coordinateStr += '\n' numberOfAtoms += 1 for i in range(speciesCount): print numberOfAtoms , print print 'Direct' for i in range(speciesCount): print coordinateStr , f.close() 把 Siesta 的 fdf 输入文件(这里假定文件名叫 in.fdf)转换为 VASP 的 POSCAR 要麻烦一些。这里我们假定 Siesta 的原子坐标必须是按照 Fractional 的格式来的,但各个原子的坐标不必要按照元素次序排列。 程序输出到屏幕终端。如果想存为 POSCAR 只需要敲 fdf2pos.py POSCAR 如果想存为 CONTCAR 则需要敲 fdf2pos.py CONTCAR * 注:这两个 py 文件保存之后,还需要给予执行的权限: chmod 555 pos2fdf.py chmod 555 fdf2pos.py 然后再移动到 PATH 所包含的可执行文件目录下
个人分类: 计算机|5437 次阅读|0 个评论
VASP.5.2.12编译: Intel Fortran+MPI+MKL
Jerkwin 2014-5-21 06:03
VASP.5.2.12编译: Intel Fortran+MPI+MKL 2014–05–19 09:56:26 并行版本VASP编译 编译器: Intel Fortran 并行库: Intel MPI 数学库: Intel MKL 准备工作 1 . Fortran编译器, MPI库与MKL库安装好. 若系统使用module, 只须load即可. module show intel/13.1.0 -------------------------------------------------------------------/share/apps/modules/Modules/modulefiles/intel/13.1.0:module-whatis Intel Compiler module-whatis Version: 13.1.0 module-whatis Category: compiler, runtime support module-whatis Description: Intel Compiler Family (C/C++/Fortran for x86_64) module-whatis URL: http://www.intel.com/cd/software/products/asmo-na/eng/compilers/284132.htm prepend-path PATH /share/apps/intel/composer_xe_2013.2.146/bin prepend-path MANPATH /share/apps/intel/composer_xe_2013.2.146/man/en_US prepend-path INCLUDE /share/apps/intel/composer_xe_2013.2.146/mkl/include:/share/apps/intel/composer_xe_2013.2.146/ipp/include prepend-path LD_LIBRARY_PATH /share/apps/intel/composer_xe_2013.2.146/lib/intel64 prepend-path LIBRARY_PATH /share/apps/intel/composer_xe_2013.2.146/lib/intel64 prepend-path NLS_PATH /share/apps/intel/composer_xe_2013.2.146/lib/intel64/locale/%l_%t/%N setenv COMPILER_TYPE intel setenv COMPILER_VERSION 13.1.0 setenv INTEL_LICENSE_FILE 28518@192.168.100.1 ------------------------------------------------------------------- module show impi/4.1.0 -------------------------------------------------------------------/share/apps/modules/Modules/modulefiles/impi/4.1.0:module-whatis Intel Compiler module-whatis Version: 4.1.0 module-whatis Category: compiler, runtime support module-whatis Description: Intel Compiler Family (C/C++/Fortran for x86_64) module-whatis URL: http://www.intel.com/cd/software/products/asmo-na/eng/compilers/284132.htm setenv version 4.1.0 setenv Intel_FC_Home /share/apps/intel/impi/4.1.0.030 prepend-path PATH /share/apps/intel/impi/4.1.0.030/intel64/bin prepend-path MANPATH /share/apps/intel/impi/4.1.0.030/man prepend-path LD_LIBRARY_PATH /share/apps/intel/impi/4.1.0.030/intel64/lib setenv I_MPI_ROOT /share/apps/intel/impi/4.1.0.030 setenv I_MPI_FABRICS shm:tmi setenv TMI_CONFIG /share/apps/intel/impi/4.1.0.030/intel64/etc/tmi.conf setenv INTEL_LICENSE_FILE 28518@192.168.100.1 ------------------------------------------------------------------- module show mkl/13.1.0 -------------------------------------------------------------------/share/apps/modules/Modules/modulefiles/mkl/13.1.0:module-whatis Intel MKL module-whatis Version: 13.1.0 module-whatis Category: compiler, runtime support module-whatis Description: Intel Compiler Family (C/C++/Fortran for x86_64) module-whatis URL: http://www.intel.com/cd/software/products/asmo-na/eng/compilers/284132.htm setenv MKL_ROOT /share/apps/intel/composer_xe_2013.2.146/composer_xe_2013.2.146/mkl ------------------------------------------------------------------- 2 . 检查编译器, 运行库, 路径无误 which ifort 给出 /share/apps/intel/composer_xe_2013.2.146/bin/ifort which mpiifort 给出 /share/apps/intel/impi/4.1.0.030/intel64/bin/mpiifort which mpirun 给出 /share/apps/intel/impi/4.1.0.030/intel64/bin/mpirun 编译 下载VASP源码, vasp.5.2.12.tar.gz 与 vasp.5.lib.tar.gz 解压 tar -xzvf vasp.5.2.12.tar.gz , 得文件夹 vasp.5.2 tar -xzvf vasp.5.lib.tar.gz , 得文件夹 vasp.5.lib 编译库文件, 简单, 直接使用 makefile.linux_ifc_P4 将19行 FC=ifc 改为 FC=mpiifort make -f makefile.linux_ifc_P4 得 libdmy.a 和 linpack_double.o , 即成功 编译主程序, 复杂, 牵涉到数学库, FFT库, 并行库的选择, 需要修改 makefile.linux_ifc_P4 . 原则是尽可能使用Intel自家的东西, 简单且效率好, 故使用MKL及其自带的FFTW, 并行库使用IntelMPI 编译器选项可在 Intel官网 查询 一份修改好的makefile及其简单注释如下 将其保存为 makefile make 得 vasp 即成功, 编译中有警告, 但不致命 # MKL及其FFTW路径 MKLROOT = / share / apps / intel / composer_xe_ 2013 . 2 . 146 / composer_xe_ 2013 . 2 . 146 / mkl FFTWROOT = $ { MKLROOT } / include / fftw # 扩展名 . SUFFIXES : . inc . f . f 90 . F # 预处理扩展名 SUFFIX = . f 90 # MPI Fortran编译器, 链接器, 可使用绝对路径 # 增加FFTW路径, 以便使用MKL自带的FFTW FC = mpiifort - I $ { FFTWROOT } FCL = $ ( FC ) # fpp预处理选项 CPP_ = fpp - f_com = no - free - w 0 $ * . F $ * $ ( SUFFIX ) # 编译选项. 注意 # 1. 行尾必须有空格, 数目不限 # 2. byterecl必须使用, 否则WAVECAR文件极大 FFLAGS = - FR - lowercase - assume byterecl # 优化选项 # 增加 -xHost -axAVX OFLAG = - O 2 - ip - ftz - xHost - axAVX # 其他编译选项 OFLAG_HIGH = $ ( OFLAG ) OBJ_HIGH = OBJ_NOOPT = DEBUG = - FR - O 0 INLINE = $ ( OFLAG ) # MKL, BLAS, LAPACK使用选项 # 1. CPP选项中必须设置 -DRPROMU_DGEMV -DRACCMU_DGEMV # 2. 使用静态库, 速度可能稍快 # 3. 可参考https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor BLAS = $ ( MKLROOT ) / lib / intel 64 / libmkl_blas 95 _lp 64 . a LAPACK = $ ( MKLROOT ) / lib / intel 64 / libmkl_lapack 95 _lp 64 . a # 链接选项, 使用静态库 LINK = - Wl , - - start - group \   $ ( MKLROOT ) / lib / intel 64 / libmkl_intel_lp 64 . a \   $ ( MKLROOT ) / lib / intel 64 / libmkl_core . a \   $ ( MKLROOT ) / lib / intel 64 / libmkl_intel_thread . a \   - Wl , - - end - group \   - lpthread - liomp 5 - lmpi - lm # CPP并行选项 # NGZhalf charge density reduced in Z direction # wNGZhalf gamma point only reduced in Z direction # scaLAPACK use scaLAPACK (usually slower on 100 Mbit Net) # avoidalloc avoid ALLOCATE if possible # PGF90 work around some for some PGF90 / IFC bugs # CACHE_SIZE 1000 for PII,PIII, 5000 for Athlon, 8000-12000 P4, PD # RPROMU_DGEMV use DGEMV instead of DGEMM in RPRO (depends on used BLAS) # RACCMU_DGEMV use DGEMV instead of DGEMM in RACC (depends on used BLAS) # tbdyn MD package of Tomas Bucko CPP = $ ( CPP_ ) - DMPI - DHOST = \ LinuxIFC\ - DIFC \   - DCACHE_SIZE = 4000 - DPGF 90 - Davoidalloc - DNGZhalf \   - DMPI_BLOCK = 8000 \   - DRPROMU_DGEMV - DRACCMU_DGEMV # MPI库 LIB = - L . . / vasp . 5 . lib - ldmy \   . . / vasp . 5 . lib / linpack_double . o $ ( LAPACK ) $ ( BLAS ) # 使用MKL自带的FFTW FFT 3 D = fftmpiw . o fftmpi_map . o fftw 3 d . o fft 3 dlib . o # 或使用VASP自带的FFTW #FFT3D = fftmpi.o fftmpi_map.o fft3dfurth.o fft3dlib.o # 一般规则, 编译命令行, 以下不可修改 BASIC = symmetry . o symlib . o lattlib . o random . o SOURCE = base . o mpi . o smart_allocate . o xml . o \ constant . o jacobi . o main_mpi . o scala . o \ asa . o lattice . o poscar . o ini . o mgrid . o xclib . o vdw_ nl . o xclib_grad . o \ radial . o pseudo . o gridq . o ebs . o \ mkpoints . o wave . o wave_mpi . o wave_high . o \ $ ( BASIC ) nonl . o nonlr . o nonl_high . o dfast . o choleski 2 . o \ mix . o hamil . o xcgrad . o xcspin . o potex 1 . o potex 2 . o \ constrmag . o cl_ shift . o relativistic . o LDApU . o \ paw_base . o metagga . o egrad . o pawsym . o pawfock . o pawlhf . o rhfatm . o paw . o \ mkpoints_full . o charge . o Lebedev - Laikov . o stockholder . o dipol . o pot . o \ dos . o elf . o tet . o tetweight . o hamil_rot . o \ steep . o chain . o dyna . o sphpro . o us . o core_rel . o \ aedens . o wavpre . o wavpre_noio . o broyden . o \ dynbr . o rmm - diis . o reader . o writer . o tutor . o xml_writer . o \ brent . o stufak . o fileio . o opergrid . o stepver . o \ chgloc . o fast_aug . o fock . o mkpoints_change . o sym_grad . o \ mymath . o internals . o dynconstr . o dimer_heyden . o dvvtrajectory . o vdwforcefield . o \ hamil_high . o nmr . o pead . o mlwf . o subrot . o subrot_scf . o \ force . o pwlhf . o gw_model . o optreal . o davidson . o david_inner . o \ electron . o rot . o electron_all . o shm . o pardens . o paircorrection . o \ optics . o constr_cell_relax . o stm . o finite_ diff . o elpol . o \ hamil_lr . o rmm - diis_lr . o subrot_cluster . o subrot_lr . o \ lr_helper . o hamil_lrf . o elinear_response . o ilinear_response . o \ linear_optics . o linear_response . o \ setlocalpp . o wannier . o electron_OEP . o electron_lhf . o twoelectron 4 o . o \ ratpol . o screened_ 2 e . o wave_cacher . o chi_base . o wpot . o local _field . o \ ump 2 . o bse_te . o bse . o acfdt . o chi . o sydmat . o dmft . o \ rmm - diis_mlr . o linear_response_NMR . o vasp : $ ( SOURCE ) $ ( FFT 3 D ) $ ( INC ) main . o   rm - f vasp   $ ( FCL ) - o vasp main . o $ ( SOURCE ) $ ( FFT 3 D ) $ ( LIB ) $ ( LINK ) makeparam : $ ( SOURCE ) $ ( FFT 3 D ) makeparam . o main . F $ ( INC )   $ ( FCL ) - o makeparam $ ( LINK ) makeparam . o $ ( SOURCE ) $ ( FFT 3 D ) $ ( LIB ) zgemmtest : zgemmtest . o base . o random . o $ ( INC )   $ ( FCL ) - o zgemmtest $ ( LINK ) zgemmtest . o random . o base . o $ ( LIB ) dgemmtest : dgemmtest . o base . o random . o $ ( INC )   $ ( FCL ) - o dgemmtest $ ( LINK ) dgemmtest . o random . o base . o $ ( LIB ) ffttest : base . o smart_allocate . o mpi . o mgrid . o random . o ffttest . o $ ( FFT 3 D ) $ ( INC )   $ ( FCL ) - o ffttest $ ( LINK ) ffttest . o mpi . o mgrid . o random . o smart_allocate . o base . o $ ( FFT 3 D ) $ ( LIB ) kpoints : $ ( SOURCE ) $ ( FFT 3 D ) makekpoints . o main . F $ ( INC )   $ ( FCL ) - o kpoints $ ( LINK ) makekpoints . o $ ( SOURCE ) $ ( FFT 3 D ) $ ( LIB ) clean :   - rm - f * . g * . f * . o * . L * . mod * . f 90 ; touch * . F main . o : main $ ( SUFFIX )   $ ( FC ) $ ( FFLAGS ) $ ( DEBUG ) $ ( INCS ) - c main $ ( SUFFIX ) xcgrad . o : xcgrad $ ( SUFFIX )   $ ( FC ) $ ( FFLAGS ) $ ( INLINE ) $ ( INCS ) - c xcgrad $ ( SUFFIX ) xcspin . o : xcspin $ ( SUFFIX )   $ ( FC ) $ ( FFLAGS ) $ ( INLINE ) $ ( INCS ) - c xcspin $ ( SUFFIX ) makeparam . o : makeparam $ ( SUFFIX )   $ ( FC ) $ ( FFLAGS ) $ ( DEBUG ) $ ( INCS ) - c makeparam $ ( SUFFIX ) makeparam $ ( SUFFIX ) : makeparam . F main . F # # MIND: I do not have a full dependency list for the include # and MODULES: here are only the minimal basic dependencies # if one strucuture is changed then touch_dep must be called # with the corresponding name of the structure # base . o : base . inc base . F mgrid . o : mgrid . inc mgrid . F constant . o : constant . inc constant . F lattice . o : lattice . inc lattice . F setex . o : setexm . inc setex . F pseudo . o : pseudo . inc pseudo . F poscar . o : poscar . inc poscar . F mkpoints . o : mkpoints . inc mkpoints . F wave . o : wave . F nonl . o : nonl . inc nonl . F nonlr . o : nonlr . inc nonlr . F $ ( OBJ_HIGH ) :   $ ( CPP )   $ ( FC ) $ ( FFLAGS ) $ ( OFLAG_HIGH ) $ ( INCS ) - c $ * $ ( SUFFIX ) $ ( OBJ_NOOPT ) :   $ ( CPP )   $ ( FC ) $ ( FFLAGS ) $ ( INCS ) - c $ * $ ( SUFFIX ) fft 3 dlib_f 77 . o : fft 3 dlib_f 77 . F   $ ( CPP )   $ ( F 77 ) $ ( FFLAGS_F 77 ) - c $ * $ ( SUFFIX ) . F . o :   $ ( CPP )   $ ( FC ) $ ( FFLAGS ) $ ( OFLAG ) $ ( INCS ) - c $ * $ ( SUFFIX ) . F $ ( SUFFIX ) :   $ ( CPP ) $ ( SUFFIX ) . o :   $ ( FC ) $ ( FFLAGS ) $ ( OFLAG ) $ ( INCS ) - c $ * $ ( SUFFIX ) # special rules #----------------------------------------------------------------------- # these special rules are cummulative (that is once failed # in one compiler version, stays in the list forever) # -tpp5|6|7 P, PII-PIII, PIV # -xW use SIMD (does not pay of on PII, since fft3d uses double prec) # all other options do no affect the code performance since -O1 is used fft 3 dlib . o : fft 3 dlib . F   $ ( CPP )   $ ( FC ) - FR - lowercase - O 2 - c $ * $ ( SUFFIX ) fft 3 dfurth . o : fft 3 dfurth . F   $ ( CPP )   $ ( FC ) - FR - lowercase - O 1 - c $ * $ ( SUFFIX ) fftw 3 d . o : fftw 3 d . F   $ ( CPP )   $ ( FC ) - FR - lowercase - O 1 - c $ * $ ( SUFFIX ) wave_high . o : wave_high . F   $ ( CPP )   $ ( FC ) - FR - lowercase - O 1 - c $ * $ ( SUFFIX ) radial . o : radial . F   $ ( CPP )   $ ( FC ) - FR - lowercase - O 1 - c $ * $ ( SUFFIX ) symlib . o : symlib . F   $ ( CPP )   $ ( FC ) - FR - lowercase - O 1 - c $ * $ ( SUFFIX ) symmetry . o : symmetry . F   $ ( CPP )   $ ( FC ) - FR - lowercase - O 1 - c $ * $ ( SUFFIX ) wave_mpi . o : wave_mpi . F   $ ( CPP )   $ ( FC ) - FR - lowercase - O 1 - c $ * $ ( SUFFIX ) wave . o : wave . F   $ ( CPP )   $ ( FC ) - FR - lowercase - O 1 - c $ * $ ( SUFFIX ) dynbr . o : dynbr . F   $ ( CPP )   $ ( FC ) - FR - lowercase - O 1 - c $ * $ ( SUFFIX ) asa . o : asa . F   $ ( CPP )   $ ( FC ) - FR - lowercase - O 1 - c $ * $ ( SUFFIX ) broyden . o : broyden . F   $ ( CPP )   $ ( FC ) - FR - lowercase - O 2 - c $ * $ ( SUFFIX ) us . o : us . F   $ ( CPP )   $ ( FC ) - FR - lowercase - O 1 - c $ * $ ( SUFFIX ) LDApU . o : LDApU . F   $ ( CPP )   $ ( FC ) - FR - lowercase - O 2 - c $ * $ ( SUFFIX ) 运行测试 利用VASP自带的 bench.Hg.tar.gz 进行测试 1 . 解压 tar -xzvf bench.Hg.tar.gz 2 . 复制 INCAR , KPOINTS , POSCAR , POTCAR 四个文件到 vasp.5.2 文件夹下 3 . 单核运行 ./vasp , 耗时45.221s, 屏幕输出 running on 1 nodesdistr: one band on 1 nodes, 1 groupsvasp.5.2.12 11Nov11 complex......entering main loop N E dE d eps ncg rms rms(c)RMM: 1 -0.514507058760E+05 -0.51451E+05 -0.13177E+05 316 0.780E+02RMM: 2 -0.527604338595E+05 -0.13097E+04 -0.23675E+04 316 0.234E+02RMM: 3 -0.529743353776E+05 -0.21390E+03 -0.41254E+03 316 0.116E+02RMM: 4 -0.531145169975E+05 -0.14018E+03 -0.15769E+03 316 0.784E+01RMM: 5 -0.531789029672E+05 -0.64386E+02 -0.67142E+02 316 0.452E+01RMM: 6 -0.532264453365E+05 -0.47542E+02 -0.47991E+02 720 0.309E+01RMM: 7 -0.532330334403E+05 -0.65881E+01 -0.94371E+01 762 0.919E+00 0.871E+00RMM: 8 -0.532322794427E+05 0.75400E+00 -0.37182E+01 697 0.816E+00 0.265E+00RMM: 9 -0.532327283030E+05 -0.44886E+00 -0.88476E+00 702 0.383E+00 0.129E+00RMM: 10 -0.532327148448E+05 0.13458E-01 -0.69686E-01 695 0.120E+00 0.550E-01RMM: 11 -0.532327089541E+05 0.58908E-02 -0.18550E-01 693 0.501E-01 0.247E-01RMM: 12 -0.532327075118E+05 0.14423E-02 -0.34613E-02 691 0.226E-01 0.756E-02RMM: 13 -0.532327075990E+05 -0.87187E-04 -0.65477E-03 688 0.823E-02 1 F= -.53232708E+05 E0= -.53232710E+05 d E =0.749678E-02 4 . 多核并行 mpirun -np 12 ./vasp , 耗时7.931s, 屏幕输出 running on 12 nodesdistr: one band on 3 nodes, 4 groupsvasp.5.2.12 11Nov11 complex......entering main loop N E dE d eps ncg rms rms(c)RMM: 1 -0.514507058760E+05 -0.51451E+05 -0.13177E+05 316 0.780E+02RMM: 2 -0.527604338595E+05 -0.13097E+04 -0.23675E+04 316 0.234E+02RMM: 3 -0.529743353776E+05 -0.21390E+03 -0.41254E+03 316 0.116E+02RMM: 4 -0.531145169975E+05 -0.14018E+03 -0.15769E+03 316 0.784E+01RMM: 5 -0.531789029672E+05 -0.64386E+02 -0.67142E+02 316 0.452E+01RMM: 6 -0.532264453365E+05 -0.47542E+02 -0.47991E+02 720 0.309E+01RMM: 7 -0.532330334403E+05 -0.65881E+01 -0.94371E+01 762 0.919E+00 0.871E+00RMM: 8 -0.532322794427E+05 0.75400E+00 -0.37182E+01 697 0.816E+00 0.265E+00RMM: 9 -0.532327283030E+05 -0.44886E+00 -0.88476E+00 702 0.383E+00 0.129E+00RMM: 10 -0.532327148448E+05 0.13458E-01 -0.69686E-01 695 0.120E+00 0.550E-01RMM: 11 -0.532327089541E+05 0.58908E-02 -0.18550E-01 693 0.501E-01 0.247E-01RMM: 12 -0.532327075118E+05 0.14423E-02 -0.34613E-02 691 0.226E-01 0.756E-02RMM: 13 -0.532327075990E+05 -0.87187E-04 -0.65477E-03 688 0.823E-02 1 F= -.53232708E+05 E0= -.53232710E+05 d E =0.749678E-02 多核与单核结果一致, 说明并行无误 5 . 将 OSZICAR 与 OSZICAR.ref , OUTCAR 与 OUTCAR.ref 做比较, 所得结果有所不同, 原因在于 OSZICAR.ref 与 OUTCAR.ref 所用版本为 vasp.4.4.4 10Jan99 说明 Windows下面的编译, 原则方法相同, 但需要注意的地方更多, 暂不推荐
个人分类: 我的工具箱|18811 次阅读|0 个评论
单机4核 32位vasp并行安装
gcshan 2014-3-6 01:25
单机4核 32位vasp并行安装 采用IFC编译器,MKL数据库mpich2-1.0.8对VASP编译的过程 1. 准备 系统为 suse linux enterprise Desktop service Pack2 For x86 VASP源代码(vasp.4.6.tar.gz和vasp.4.lib.tar.gz),mkl数据库(l_mkl_p_9.1.023.tar),ifc编译器(l_fc__pl_9.1.036.tar.gz),mpich2-1.0.8。我们将以上安装所需文件都放在/root/vasp目录下并解压。测试成功效率在95%以上 2. Ifc编译器安装 先解压tar –zxvf l_fc_c_9.1.036.tar.gz 得到l_fc_c_9.1.036.文件夹 进入l_fc__pl_9.1.036文件夹找到install.sh文件 执行./install.sh开始安装ifc,安装过程都选用默认的路径(/opt/intel/fc/9.1.036)安装 安装完毕,进入/opt/intel/fc/9.1.036/bin目录 执行cp ifort /bin ifc安装完成 3. mkl的安装 进入l_mkl_p_9.1.023.tar所在目录 tar –zxvf l_mkl_p_9.1.023.tar 进入解压得到的目录l_mkl_p_9.1.023 进入install文件夹,可以看到一个可执行的文件install ./install.sh 默认安装即可,默认目录为/opt/intel/mkl/9.1.023 三 ,设置环境变量 编辑root下的 .bashrc # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' PATH=$PATH:/usr/local/bin (安装mpich2要添加的路径) # Source global definitions if ; then . /etc/bashrc fi export LD_LIBRARY_PATH=/opt/intel/mkl/9.1.023/lib/32:/opt/intel/fc/9.1.036/lib . /opt/intel/fc/9.1.036/bin/ifortvars.sh (新添加路径) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/9.1.023/lib/32 (新添加路径) 二、安装MPICH2(在节点root目录下) 1、解压缩 #tar -zxvf mpich2-1.0.1.tar.gz 或者 #gunzip -c mpich2-1.0.1.tar.gz|tar xf mpich2-1.0.1.tar 2、创建安装目录 #mkdir /usr/MPICH-instsll 3、进入mpich2解压目录 #cd mpich2-1.0.1 4、默认安装目录 #./configure 5、编译 #make 6、安装 #make install 7、退出到root目录 #cd .. 8、通过编辑.bashrc文件修改环境变量 #vi .bashrc 修改后的.bashrc文件如下: # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' PATH=$PATH:/usr/local/bin (新增加的mpich2的路径) #Source global definitions if ; then . /etc/bashrc fi export LD_LIBRARY_PATH=/opt/intel/mkl/9.1.023/lib/32:/opt/intel/fc/9.1.036/lib . /opt/intel/fc/9.1.036/bin/ifortvars.sh (新添加路径) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/9.1.023/lib/32 (新添加路径) 9、测试环境变量设置 #which mpd #which mpicc #which mpiexec #which mpirun 10、修改/etc/mpd.conf文件,添加内容为secretword=myword #vi /etc/mpd.conf 添加 secretword=myword 设置文件读取权限和修改时间 #touch /etc/mpd.conf #chmod 600 /etc/mpd.conf 1、本地测试 #mpd 启动 #mpdtrace 观看启动机器 #mpdallexit 退出 三。 6.进入vasp.4.lib所在目录 cd /root/vasp/vasp.4.lib cp makefile.linux_ifc_P4 makefile 根据自己机子的情况选择合适的makefile 编辑makfile 19行的 FC=ifc 修改为 FC=ifort make 如果编译通过,说明前面安装的数学库和编译器等都是正确的 7.进入vasp.4.6所在目录 cd /root/vasp/vasp.4.6 cp makefile.linux_ifc_P4 makefile 编辑 makefile 对makefile做如下修改: 50行, 52行 前加 # 80行前加 # 128行 的 #BLAS=-L/opt/intel/mkl/lib/32 -lmkl_p4 -lpthread 修改为 BLAS=-L/opt/intel/mkl/9.1.023/lib/32 -lmkl_p4 -lsvml -lvml -lguide -lpthread 136行前加 # 145 行 的 #LAPACK= -lmkl_lapack 修改為LAPACK= -lmkl_lapack 或 LAPACK=-L/opt/intel/mkl/9.1.023/lib/32 -lmkl_lapack -lsvml -lvml -lguide –lpthread 也可以 149行 前 加 # 166行 前 加 # 201行 的 #FC=mpif77 修改為 FC=mpif90 202行的 #FCL=$(FC) 修改為 FCL=$(FC) 211-214行 前面的 # 去掉 修改為 CPP = $(CPP_) -DMPI -DHOST=\LinuxIFC\ -DIFC \ -Dkind8 -DNGZhalf -DCACHE_SIZE=4000 -DPGF90 -Davoidalloc \ -DMPI_BLOCK=500 \ -DRPROMU_DGEMV -DRACCMU_DGEMV 224行 前 加 # 227行 前 加 # 233-235行 前 的 # 去掉 238行 前 的 # 去掉 343行 的 -e95 去掉 保存退出后 编译make 编译通过则 cp vasp /bin 在任何目录下vasp命令都可以调用了 这时编译的vasp只能在root用户下使用 四.重启电脑,以普通用户(XXX代表普通用户名)的身份登陆 1. 进入 /home/XXX目录找到隐藏的 .bashrc文件(在窗口的工具栏中点击“查看”,选择显示隐藏文件) .bashrc 文件如下 # Sample .bashrc for SuSE Linux # Copyright (c) SuSE GmbH Nuernberg # There are 3 different types of shells in bash: the login shell, normal shell # and interactive shell. Login shells read ~/.profile and interactive shells # read ~/.bashrc; in our setup, /etc/profile sources ~/.bashrc - thus all # settings made here will also take effect in a login shell. # # NOTE: It is recommended to make language settings in ~/.profile rather than # here, since multilingual X sessions would not work properly if LANG is over- # ridden in every subshell. # Some applications read the EDITOR variable to determine your favourite text # editor. So uncomment the line below and enter the editor of your choice :-) #export EDITOR=/usr/bin/vim #export EDITOR=/usr/bin/mcedit # For some news readers it makes sense to specify the NEWSSERVER variable here #export NEWSSERVER=your.news.server # If you want to use a Palm device with Linux, uncomment the two lines below. # For some (older) Palm Pilots, you might need to set a lower baud rate # e.g. 57600 or 38400; lowest is 9600 (very slow!) # #export PILOTPORT=/dev/pilot #export PILOTRATE=115200 test -s ~/.alias . ~/.alias || true 修改后变为 # Sample .bashrc for SuSE Linux # Copyright (c) SuSE GmbH Nuernberg # There are 3 different types of shells in bash: the login shell, normal shell # and interactive shell. Login shells read ~/.profile and interactive shells # read ~/.bashrc; in our setup, /etc/profile sources ~/.bashrc - thus all # settings made here will also take effect in a login shell. # # NOTE: It is recommended to make language settings in ~/.profile rather than # here, since multilingual X sessions would not work properly if LANG is over- # ridden in every subshell. # Some applications read the EDITOR variable to determine your favourite text # editor. So uncomment the line below and enter the editor of your choice :-) #export EDITOR=/usr/bin/vim #export EDITOR=/usr/bin/mcedit # For some news readers it makes sense to specify the NEWSSERVER variable here #export NEWSSERVER=your.news.server # If you want to use a Palm device with Linux, uncomment the two lines below. # For some (older) Palm Pilots, you might need to set a lower baud rate # e.g. 57600 or 38400; lowest is 9600 (very slow!) # #export PILOTPORT=/dev/pilot #export PILOTRATE=115200 test -s ~/.alias . ~/.alias || true 以下为增加内容 export LD_LIBRARY_PATH=/opt/intel/mkl/9.1.023/lib/32:/opt/intel/fc/9.1.036/lib . /opt/intel/fc/9.1.036/bin/ifortvars.sh (新添加路径) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/9.1.023/lib/32 (新添加路径) 保存, 2. 配置mpd 在普通用户下 执行 cd $HOME vi .mpd.conf 添加 MPD_SECRETWORD=mr45-j9z 保存, 设置文件读取权限和修改时间 touch .mpd.conf chmod 600 .mpd.conf 设置完成。 上述编译通过的vasp还不能运行,会提示找不到目标文件libsvml.so 1. locate libsvml.so可以找到libsvml.so所在目录/opt/intel_fc_80/lib中 2. 在root目录下找到.bash_profile和.bashrc文件(ls –a 显示当前目录下所有内容 3.在root目录下运行env看环境变量LD_LIBRARY_PATH是否为 LD_LIBRARY_PATH=/opt/intel/mkl/8.0.2/lib/32: /opt/intel/fce/9.1.036/lib 若不是则执行如下命令 export LD_LIBRARY_PATH=/opt/intel/mkl/8.0.2/lib/32: /opt/intel/fce/9.1.036/lib 4.reboot后即可以使用vasp 计算了
个人分类: 科学札记|5644 次阅读|0 个评论
INCAR文件中LREAL参数
gcshan 2014-3-6 01:15
INCAR文件中LREAL参数 ----------------------------------------------------------------------------- | | | ADVICE TO THIS USER RUNNING 'VASP/VAMP' (HEAR YOUR MASTER'S VOICE ...): | | | | You have a (more or less) 'large supercell' and for larger cells | | it might be more efficient to use real space projection operators | | So try LREAL= Auto in the INCAR file. | | Mind: If you want to do a very accurate calculations keep the | | reciprocal projection scheme (i.e. LREAL=.FALSE.) | | | ----------------------------------------------------------------------------- INCAR文件中LREAL参数是什么意思,应该如何设置。 现将这个参数和不同选择项意思列于下,供参考。 LREAL: Default= .FALSE. LREAL是赝势的非局域部分用到的一个积分,其在倒格空间或者实空间都可以求值。这个 选项就是决定是在哪个空间里求。在倒格空间里,采用平面波基组求解,在实空间里,采 用积 分球求解。缺省是.FALSE,即不在实空间求。但效率会低一些。 其他选项是 O or On,A or Auto 和.True.。 On和.TRUE.的差别在于是否使用King-Smith算法优化,Auto则自动选择,推荐。 如在OUTCAR中出现如下字样 ----------------------------------------------------------------------------- | | | ADVICE TO THIS USER RUNNING 'VASP/VAMP' (HEAR YOUR MASTER'S VOICE ...): | | | | You havea (more or less) 'large supercell' and for larger cells | | it mightbe more efficient to use real space projection operators | | So tryLREAL= Auto in the INCAR file. | | Mind: Ifyou want to do an extremely accurate calculations keep the | | reciprocal projection scheme (i.e. LREAL=.FALSE.) | | | ----------------------------------------------------------------------------- 表明,选择LREAL选择为在倒格空间求解,这样的求解积分的方法对于大的晶包体系,会 影响计算效率,但不影响计算进度。可以根据需求选择LREAL参数项。 LREAL-tag (and ROPT-tag)LREAL = .TRUE. | .FALSE. ROPT = Default LREAL = .FALSE. .FALSE. projection done in reciprocal space .TRUE. projection done in real space, (old, superseded by LREAL=O) On or O projection done in real space, projection operators are re-optimized Auto or A projection done in real space, fully automatic optimization of projection operators no user interference required Determines whether the projection operators are evaluated in real-space or in reciprocal space:The non local part of the pseudopotential requires the evaluation of an expression .The ``projected wavefunction character'' is defined as: This expression can be evaluated in reciprocal or real space:In reciprocal space (second line)the number of operations scales with the size of the basis set (i.e.number of plane-waves). In real space (first line) theprojection-operators are confined to spheres around each atom. Therefore the number of operations necessary to evaluate one does not increase with the system size (usually the number of grid points within the cut-off-sphere is between 500 and 2000). One of the major obstacles of the method working in real space is that the projection operatorsmust be optimized, i.e. all high frequency components must be removed fromthe projection operators. If this is not done 'aliasing' can happen(i.e. the high frequency components of the projection operators are aliasedto low frequency components and a random noise is introduced). Currently VASP supports three different schemes to remove the high frequency components from the projectors. LREAL = .TRUE. is the simplest one. If LREAL = .TRUE. is selected,the real space projectors which have been generated by the pseudopotential generationcode are used. This requires no user interference.For LREAL = On the real space projectors are optimized by VASP using an algorithm proposed by King-Smith et al. . For LREAL = Auto a new scheme is used which isconsiderably better (resulting in more localized) projector functionsthan the King-Smith et al. method. To fine-tune the optimization procedure the flag ROPT can be usedif LREAL = Auto or LREAL = On is used. We recommend to use the real-space projection scheme for systems containingmore than 20 atoms. We also recommend to use only LREAL = Auto (for version VASP.4.4 and newer releases) and LREAL = On (for all other versions).Version 4.4 also supports the old mode LREAL= O toallow calculations that are fully compatible to VASP.4.3 (and VASP.3.2).The best performance is generally achieved with LREAL= Auto, butif performance is not that important you can also use LREAL=.TRUE. whichgenerally requires less user interference. You can skip therest of the paragraph, if you use only LREAL=.TRUE.. For LREAL = O and LREAL = Athe projection operators are optimized by VASPon the fly (i.e. on startup). Several flags influence the optimization ENCUT (i.e. the energy cutoff), components beyond the energy cutoff are 'removed' from the projection operators. PREC tag specifies how precise the real space projectorsshould be, and sets the variables ROPT accordingly to the followingvalues: For LREAL = On PREC = Low 700 points in the real space sphere (ROPT=0.67) PREC = Med 1000 points in the real space sphere (ROPT=1.0) PREC = High 1500 points in the real space sphere (ROPT=1.5) For LREAL = Auto PREC = Low accuracy (ROPT=0.01) PREC = Med accuracy 2 (ROPT=0.002) PREC = High accuracy 2 (ROPT=2E-4) These defaults can be superseded by the line ROPT = one_number_for_each_species in the INCAR file. For instance ROPT = 0.7 1.5 will set the number of real space points within the cutoff sphere for the first speciesto approximately 700, and that for the second species to 1500.In VASP.4.4 alternatively the ``precision'' of the operators can be specifiedwriting i.e.ROPT = 1E-3 1E-3 In that case the real space operators will be optimized foran accuracy of approximately 1meV/atom ( ). The ``precision'' mode works both for LREAL=On and LREAL=Auto (but to maintaincompatibility with older VASP versions it is only selected if LREAL = Auto is specified in the INCAR file).The precision mode is generally switched on if the value for ROPTis smaller than 0.1. The ``precision'' mode and the conventional mode can be intermixed,i.e. it is possible to specifyROPT = 0.7 1E-3 in that case the number of real space points within the cutoff sphere for the first specieswill be approximately 700, whereas the real space projector functions for the secondspecies are optimized for an accuracy of approximately 1 meV.We recommend to use the ``precision'' mode with a target accuracy of around eV/atom if your version supports this. If you use the mode in which the number of grid points in the real space projection sphere is specified, you have to selectROPT carefully, especially if a hard species is mixed with a softspecies. In that case the following lines in the OUTCAR file mustbe checked (here is the output for LREAL = On, but that one forLREAL = Auto is quite similar ) Optimization of the real space projectors maximal supplied Q-value = 12.85 optimization between = = Ry Optimized for a Real-space Cutoff 2.30 Angstroem l X(QCUT) X(cont) X(QGAM) max X(q) W(q)/X(q) e(spline) 0 9.518 9.484 -.004 18.582 .11E-03 .16E-06 0 -2.149 -2.145 .001 3.059 .17E-03 .25E-06 1 8.957 8.942 .003 9.950 .14E-03 .34E-06 1 1.870 1.870 .001 1.837 .95E-03 .51E-06 2 3.874 3.866 .000 4.764 .15E-03 .68E-07 The meaning of QCUT and QGAM is explained in Sec. 11.5.6 . The most important information is given in thecolumn W(q)/X(q) (respectively the column W(low)/X(q) forLREAL = Auto).The values in these columns must be as small as possible.If these values are too large, increase the ROPT tag from the default value.As a rule of thumb the maximum allowed value in this column is for PREC = Med.(For PREC = Low errors might be around and for PREC = High errorsshould be smaller than ). If W(q)/X(q) is larger than theerrors introduced by the real space projections can be substantial.In this case ROPT must be specified in the INCAR file to avoidincorrect results. If the new precision mode is used in VASP.4.4 (ROPT 0.1) thecode automatically selects the real-space cutoff so that therequired precision is reached. A few comments for non-experts and experts:Real space optimization (LREAL = .TRUE., LREAL = On or LREAL = Auto)always results in a small (not necessarily negligible)error (the error is usually a constant energy shift for each atom). If you are interested in energy differences of a fewmeV use only calculations with the same setup (i.e. same ENCUT,PREC, LREAL and ROPT setting) forall calculations.For example, if you want to calculatesurface energies recalculate the bulk groundstate energy withexactly the same setting you are going to use for the surface. Another possibility is to relax the surface with real space projection, and to do one final total energy calculation with LREAL = .FALSE. to get exact energies. Anyway, for PREC = Med, the errors introduced by the real spaceprojection are usually of the same order magnitude as those introduced by the wrap around errors.For PREC = High errors are usually less than meV. PREC = Lowshould be used only for high speed MD's,if computer resources are really a problem.
个人分类: 科学札记|23972 次阅读|0 个评论
VASP+BoltzTrap热电计算程序安装
热度 4 mazuju028 2014-3-4 09:04
1. 准备的文件: ( 1 ) .VASP5.2.11 程序包; ( 2 ) .BoltzTrap_vasp 程序包(来源 Wenqing Zhang 课题组); 2.VASP 编译安装 ( 1 ) . 修改 VASP 的 main.F 在 CALL DUMP_ALLOCATE(IO%IU6) 前添加以下代码,目的是产生SYSMETRY文件: ---------------------------------------------------------- !added by John. Yang for TE calculations OPEN(UNIT=38,FILE=SYMMETRY,STATUS=REPLACE) WRITE(38,(I12))NROTK DO NEDOS=1,NROTK ! I DON'T WANT TO DEFINE A NEW INTEGER VARIABLE, SO HERE I USE NEDOS WRITE(38,(3F10.5)) IGRPOP(1,1,NEDOS)*1.0,IGRPOP(1,2,NEDOS)*1.0,IGRPOP(1,3,NEDOS)*1.0 WRITE(38,(3F10.5)) IGRPOP(2,1,NEDOS)*1.0,IGRPOP(2,2,NEDOS)*1.0,IGRPOP(2,3,NEDOS)*1.0 WRITE(38,(3F10.5)) IGRPOP(3,1,NEDOS)*1.0,IGRPOP(3,2,NEDOS)*1.0,IGRPOP(3,3,NEDOS)*1.0 WRITE(38,*) ENDDO CLOSE(38) ----------------------------------------------------------------------------- · 对 vasp5.2.11 版本,以上修改经过测试,可编译成功。 · 对 vasp4.6 版本,在 CALL TIMING 前添加,测试可编译成功。 ( 2 )编译 VASP, 具体设置参照之前的文章: vasp5.2 安装 (fftw3.3+Gotoblas) 3.BoltzTrap_vasp 程序包编译: ( 1 )参照组里的编译环境,对 Makefile 进行如下修改:主要改动 BLAS,LAPACK,LIBS 这几个参数,以下仅显示 makefile 的部分内容; ------------------------------------------------------------ SHELL = /bin/sh FC =ifort FOPT = -FR -mp -C -g FOPT = -FR -mp LINKER = $(FC) LFLAGS = FGEN = BLAS= /usr/local/lib/libgoto2.so LAPACK= ../vasp5.2.11/vasp.5.lib/lapack_double.o LIBS = -L../vasp5.2.11/vasp.5.lib -ldmy \ ../vasp5.2.11/vasp.5.lib/linpack_double.o $(LAPACK) \ $(BLAS) LDFLAGS = -L/export/mathlib/mkl/8.1.1/lib/em64t -Vaxlib -pthread DESTDIR = . EXECNAME = BoltzTrap_vasp ------------------------------------------------------------ ( 2 ) cp BoltzTrap_vasp ~/bin/ 4, 计算, ( 1 ) VASP 自洽计算(待考证是自洽计算还是 DOS 计算) ( 2 )建立文件:文件夹名 .intrans 文件夹名 .intrans( 以下参数设置待考证,可以参考 UserGuide.pdf ) -------------------------------------------------------------- VASP 0 0 0 0.0 0.233 0.0001 0.4 52 CALC # CALC (calculate expansion coeff), NOCALC read from file 5 # lpfac, number of latt-points per k BOLTZ # run mode (only BOLTZ is supported) 0.15 # (efcut) energy range of chemical potential 900. 900. # Tmax, temperature grid 0. # energyrange of bands given individual DOS output sig_xxx and dos_xxx (xxx is band number) ------------------------------------ ( 3 )执行: /home/zjma/setup/BoltzTrap_vasp/x_trans BoltzTrap_vasp ( 4 )结果在 文件夹名 .trace及.condtens 文件中。 转载请说明
个人分类: 泛舟学海|23944 次阅读|7 个评论
HSE functional calculation
gcshan 2014-2-6 01:19
HSE hybrid functional:Hartree-Fock (HF) type and hybrid functional calculations Available only in VASP.5.X. http://cms.mpi.univie.ac.at/vasp/vasp/Hartree_Fock_HF_type_hybrid_functional_calculations.html INCAR FOR HSE # output options LWAVE = .FALSE. # write or don't write WAVECAR LCHARG = .FALSE. # write or don't write CHG and CHGCAR LELF = .FALSE. # write ELF # ionic relaxation NSW = 100 # number of ionic steps IBRION = 1 # 2=conjucate gradient, 1=Newton like ISIF = 3 # 3=relax everything, 2=relax ions only, 4=keep volume fixed # precision parameters EDIFF = 1E-7 # 1E-3 very low precision for pre-relaxation, use 1E-5 next EDIFFG = -1E-3 # usually: 10 * EDIFF PREC = high # precision low, med, high, accurate # electronic relaxation ISMEAR = 0 # -5 = tetraedon, 1..N = Methfessel SIGMA = 0.1 ENCUT = 600 # cutoff energy PSTRESS = 0 #ISYM=0 # Choose DFT functional - HSE06 ISTART = 1 LHFCALC = .TRUE . ; HFSCREEN = 0.2 NBANDS = 16 ALGO = All ; TIME = 0.4 PRECFOCK = Fast ! used PRECFOCK = Normal for high quality calculations #NKRED = 2 ! omit flag for high quality calculations HSE hybrid functional:Hartree-Fock (HF) type and hybrid functional calculations Available only in VASP.5.X. http://cms.mpi.univie.ac.at/vasp/vasp/Hartree_Fock_HF_type_hybrid_functional_calculations.html Subsections Introduction: Hartree-Fock LHFCALC-tag Amount of exact/DFT exchange and correlation: AEXX, AGGAX, AGGAC and ALDAC tags ENCUTFOCK: FFT grid in the Hartree-Fock related routines PRECFOCK: FFT grid in the Hartree-Fock and GW related routines LMAXFOCK (or old HFLMAXF ) LMAXFOCKAE HFSCREEN and LTHOMAS NKRED, NKREDX, NKREDY, NKREDZ and EVENONLY, ODDONLY When NKRED should not be applied Typical hybrid functional and Hartree-Fock calculations (1) Typical hybrid functional and Hartree-Fock calculations It is strongly recommended to perform standard DFT calculations first , and to start Hartree-Fock type calculations from a preconverged WAVECAR file . (a) A typical INCAR file for a Hartree-Fock or hybrid HF/DFT calculation for an insulator or semiconductor has the following input lines: ISTART = 1 LHFCALC = .TRUE. ; HFSCREEN = 0.2 NBANDS = number of occupied bands ALGO = All ; TIME = 0.4 PRECFOCK = Fast #! used PRECFOCK = Normal for high quality calculations NKRED = 2 #! omit flag for high quality calculationsFor (b) For metals and small gap semiconductors it is recommended to use . ISTART = 1 LHFCALC = .TRUE. ; HFSCREEN = 0.2 ALGO = Damped ; TIME = 0.4 PRECFOCK = Fast ! used PRECFOCK = Normal for high quality calculations NKRED = 2 ! omit flag for high quality calculations These input files select the HSE06 functional, which tends to yield very similar thermochemistry as the PBE0 functional, but converges more rapidly with respect to the number of k-points . We thus recommend to apply and use this functional instead of the more demanding PBE0 functional. The NKRED flag is applicable, if and only if the number of k-points is dividable by NKRED (see Sec. 6.71.9 ). PRECFOCK= fast selects a smaller FFT grid for the fast-Fourier-transforms (see Sec. 6.71.5 ). For high accuracy NKRED and in particular PRECFOCK= fast should be ommited, but we recommend to do this only after preconverging the orbitals and atomic positions with the flags specified above. Mind, that the parameter TIME defaults to 0.4, and for the present algorithm this hardly ever needs to be changed. If divergence is observed, simply decrease TIME until the damped or conjugate gradient algorithm become stable (see Sec. 6.47 and 6.51 ). Standard Hartree-Fock type calculations require one to set the flag AEXX = 1.0 to switch on full non-local exchange (local exchange and correlation are automatically switched off): ISTART = 1 LHFCALC = .TRUE. ; AEXX = 1.0 ; NBANDS = number of occupied bands ALGO = All ; TIME = 0.4 PRECFOCK = Fast ! used PRECFOCK = Normal for high quality calculations NKRED = 2 ! omit flag for high quality calculations Concerning NKRED and PRECFOCK the same considerations as above apply. Matter of fact, it is also possible to try to converge using the ``metallic'' setup given above. (2)Notes (1)LHFCALC-tag LHFCALC= .TRUE. | .FALSE. Default: LHFCALC=.FALSE. The flag specifies, whether Hartree-Fock type calculations are performed. At the moment, it is recommended to select an all bands simultaneous algorithm , i.e. ALGO =Damped ( IALGO =53) or ALGO =All ( IALGO =58) in the INCAR file (see Sec. 6.46 6.47 ). The blocked Davidson algorithm ALGO =Normal is, with certain caveat, also supported, whereas calculations for the other algorithms (ALGO=Fast) are not currently supported (note: no warning is printed). The blocked Davidson algorithm ALGO=Normal is generally rather slow, and in many cases the Pulay mixer will be unable to determine the proper ground-state. We hence recommend to select the blocked Davidson algorithm only in combination with straight mixing or a Kerker like mixing. The following combination have been successfully applied for small and medium sized systems LHFCALC = .TRUE. ; ALGO = Normal ; IMIX = 1 ; AMIX = a Decrease the parameter a until convergence is reached. In most cases, however, it is recommended to use the damped algorithm with suitably chosen timestep . The following setup for the electronic optimization works reliably in most cases: LHFCALC = .TRUE. ; ALGO = Damped ; TIME = 0.4 If convergence is not obtained, it is recommended to reduce the timestep TIME . (2) HFSCREEN HFSCREEN determines the range separation parameter in range separated hybrid functionals. In combination with PBE potentials, attributing a value to HFSCREEN will switch from the PBE0 functional (in case LHFCALC=.TRUE.) to the closely related HSE03 or HSE06 functional . Note: A comprehensive study of the performance of the HSE03/HSE06 functional compared to the PBE and PBE0 functionals can be found in Ref. . The B3LYP functional was investigated in Ref. . Further applications of hybrid functionals to selected materials can be found in the following references: Ceria (Ref. ), lead chalcogenides (Ref. ), CO adsorption on metals (Refs. ), defects in ZnO (Ref. ), excitonic properties (Ref. ), SrTiO and BaTiO (Ref. ). LTHOMAS= .TRUE. | .FALSE. Default: LTHOMAS=.FALSE. If the flag LTHOMAS is set, a similar decomposition of the exchange functional into a long range and a short range part is used. This time, it is more convenient to write the decomposition in reciprocal space: (6.69) where is the Thomas-Fermi screening length. HFSCREEN is used to specify the parameter . For typical semi-conductors, the Thomas-Fermi screening length is about 1.8 Å , and setting HFSCREEN to this value yields reasonable band gap s for most materials. In principle, however, the Thomas-Fermi screening length depends on the valence electron density; VASP determines this parameter from the number of valence electrons (POTCAR) and the volume and writes the corresponding value to the OUTCAR file: Thomas-Fermi vector in A = 2.00000Since, VASP counts the semi-core states and -states as valence electrons, although these states do not contribute to the screening, the values reported by VASP are, however, often incorrect. Details can be found in literature . Another important detail concerns that implementation of the density functional part in the screened exchange case. Literature suggests that a global enhancement factor (see Equ. (3.15) in Ref. ) should be used, whereas VASP implements a local density dependent enhancement factor , where is the Fermi wave vector corresponding to the local density (and not the average density as suggested in Ref. ). The VASP implementation is in the spirit of the local density approximation. (3) ALGO ALGO-tag ALGO = Normal | VeryFast | Fast | Conjugate | All | Damped | Subrot | Eigenval | None | Nothing | Exact | Diag Default ALGO = Normal The ALGO tag is a convenient option to specify the electronic minimisation algorithm in VASP.4.5 and later versions. Except for ``None'' and ``Nothing'', ``Exact'' and ``Diag'' (which must be spelled out), the first letter determines the applied algorithm. Conjugate, Subrot, Eigenval, Exact, None and Nothing are only supported by VASP.5.2.12 and newer versions. ALGO = Normal selects IALGO = 38 (blocked Davidson iteration scheme), whereas ALGO = Very_Fast selects IALGO = 48 (RMM-DIIS). A faily robust mixture of both algorithm is selected for ALGO = Fast. In this case, Davidson (IALGO = 38) is used for the initial phase, and then VASP switches to RMM-DIIS (IALGO = 48). Subsequencly, for each ionic update, one IALGO = 38 sweep is performed for each ionic step (except the first one). The ``all band simultaneous update of orbitals'' can be selected using ALGO = Conjugate or ALGO = All (IALGO = 58, in both cases the same conjugate gradient algorithm is used). A damped velocity friction algorithm is selected using ALGO = Damped (IALGO = 53). ALGO = Subrot selects subspace rotation or diagonalization in the sub-space spanned by the calculated NBANDS orbitals (IALGO = 4). ALGO = Exact or ALGO = Diag performs an exact diagonalization (IALGO = 90), and we recommend to use this if more than 30-50 % of the states are calculated (e.g. for or RPA calculations). ALGO = Eigenval allows to recalculate one electron energies, density of state and perform selected postprocessing using the current orbitals (IALGO = 3) e.g. read from WAVECAR. ALGO = None or ALGO = Nothing allows to recalculate the density of states (eigenvalues from WAVECAR, e.g. using different smearing or tetrahedron method) or perform other selected postprocessing using the current orbitals and one electron energies (IALGO = 2) e.g. read from WAVECAR. (4)PRECFOCK PRECFOCK: FFT grid in the Hartree-Fock and GW related routines PRECFOCK= Low | Medium | Fast | Normal | Accurate Default: PRECFOCK=Normal The PRECFOCK parameter controls the FFT grid for the exact exchange (Hartree-Fock) routines, i.e. it is possible to chose a different grid for the exact exchange part, and for the local Hartree and DFT potentials. In fact, the exchange is rather insensitive to the FFT grids, and in many cases a rather coarse grid can be used to calculate the overlap density and the potentials. Since the exact exchange requires the evaluation of an overlap density (compare 6.59 ) errors in the convolution (aliasing errors) are only avoided, if the FFT grid contains all Fourier components up to twice the plane wave with the largest wave vector ( ). For Low and Fast, however, the smallest possible FFT grid, which just encloses the cutoff sphere ( ) determined by the plane wave cutoff (ENCUT), is used. This accelerates the calculations by roughly a factor two to three, but causes slight changes in the total energies and some noise in the calculated forces. The corresponding FFT grid that is used in the Hartree Fock routines is written to the OUTCAR file after the lines FFT grid for exact exchange (Hartree Fock)For PRECFOCK=Normal, the FFT grid for the exact exchange is identical to the FFT grid used for the orbitals for PREC=Normal in the DFT part. For PRECFOCK=Accurate, the FFT grid for the exact exchange is identical to the FFT grid used for the orbitals for PREC=Accurate in the DFT part (any combination of PREC and PRECFOCK is allowed). For PRECFOCK=Fast, Normal and Accurate, the augmentation charges--which are required to restore the norm and dipoles of the overlap density on the plane wave grid --are made soft, such that an accurate presentation on the plane wave grid is possible even for relatively coarse FFT grids. The sphere size is printed out after Radii for the augmentation spheres in the non-local exchangeThe following table summarises the possible setting: PRECFOCK FFT grid augmentation charge advantage/disatvantage VASP.5.2.2 compatible, not recommended Low identical to standard DFT large noise in forces/energy errors Medium identical to std. FFT identical to standard DFT some noise in forces/good energy VASP.5.2.4 and newer, recommended Fast very soft augmentation charge some noise in forces/good energy Normal 3/2 soft augmentation charge accurate forces and energy Accurate 2 soft augmentation charge very accurate forces and energy soft augmentation charge: radius for augmentation sphere is increased by factor 1.25 compared to default very soft augmentation charge: radius is increased by factor 1.35 compared to default except for like charge, for the channel the radius of the augmentation sphere is increased by a factor 1.25 Even PRECFOCK=Fast yields fairly low noise in the forces and virtually no egg-box effects (aliasing errors). In the forces, the noise is usually below 0.01 eV/Å. For PRECFOCK=N and PRECFOCK=A, noise is usually not an issue, and the accuracy is sufficient even for phonon calculations in large supercells.
个人分类: 科学札记|10297 次阅读|0 个评论
[转载]VASP Tools
gcshan 2014-1-4 22:54
VASP Tools Peter’s collection of small, but useful, VASP scripts. Some of these may be found on NSC’s computers by loading the “vasptools” module. vaspcheck The “vaspcheck” script scans your input files and looks for common errors such as: forgetting to copy CONTCAR to POSCAR, misspelled INCAR tags, and various inconsistent configurations such as having N atoms but only N-x magnetic moments specified. If you supply it with information about the intended number of cpu cores and nodes that you will run on, it will also check the NPAR and KPAR values and warn if they are unreasonable. An alpha version is available in the “vasptools” module on Triolith, and once the script has become more robust, I will make a version available for download here. The idea is to integrate it with the queue system in the future, so that your VASP jobs will be automatically checked when running the “sbatch” command. Install: Click here to download to the Python script. Install it by putting it in a folder in your $PATH (such as~/bin) and then do: mv vaspcheck-standalone.py vaspcheckchmod u+x vaspcheck This should allow you to write “vaspcheck” in any job folder. grad2 The gradient program is used to quickly get an overview of VASP geometry optimization runs. It also works for molecular dynamics. It parses the OUTCAR file and writes a one-line summary per ionic step, including average forces and run-time per step. The output looks like this: $ grad2 OUTCARStep 1 Energy: -42.794090 Log|dE|: +1.631 Avg|F|: 1.720176 Max|F|: 2.710237 SCF: 15 Time: 0.52mStep 2 Energy: -43.336931 Log|dE|: -0.265 Avg|F|: 0.513256 Max|F|: 0.696803 SCF: 9 Time: 0.32mStep 3 Energy: -43.384337 Log|dE|: -1.324 Avg|F|: 0.095940 Max|F|: 0.178813 SCF: 7 Time: 0.24mStep 4 Energy: -43.387267 Log|dE|: -2.533 Avg|F|: 0.050399 Max|F|: 0.071963 SCF: 6 Time: 0.20mStep 5 Energy: -43.388250 Log|dE|: -3.007 Avg|F|: 0.043184 Max|F|: 0.061866 SCF: 4 Time: 0.13mStep 6 Energy: -43.390384 Log|dE|: -2.671 Avg|F|: 0.030630 Max|F|: 0.047413 SCF: 5 Time: 0.18mStep 7 Energy: -43.392498 Log|dE|: -2.675 Avg|F|: 0.003760 Max|F|: 0.005849 SCF: 6 Time: 0.20mStep 8 Energy: -43.392509 Log|dE|: -4.959 Avg|F|: 0.001285 Max|F|: 0.001861 SCF: 3 Time: 0.09m The Log\|dE\| is the base-10 logarithm of the absolute value of the energy difference between steps, essentially the number of “stable” decimals in the total energy, i.e. for a VASP run with EDIFF=1.0E-5, Log\|dE\| should approach -5 for convergence. If your terminal has colors, each line will be color-coded with red color signalling convergence problems, and green color corresponding to energy convergence having been reached (as judged by the EDIFF tag in the INCAR file.) Install: Click here to download to the Python script (version 2012-01-07). Install it by putting it in a folder in your $PATH (such as~/bin) and then do: mv grad2.py grad2chmod u+x grad2 This should allow you to write “grad2 OUTCAR” in any job folder. vasp2cif The vasp2cif program creates a CIF-file from a POSCAR/CONTCAR file, which can be used for visualization in graphical applications, such as VESTA. Note that it will not preserve symmetries from VASP – the output CIF is always in P1 symmetry. If there is no POTCAR file available, the script has a flag (“–elements”) whereby you can specify the atomic species. Install: Click here to download to the Python script (version 2012-12-15). Install it by putting it in a folder in your $PATH (such as~/bin) and then do: mv vasp2cif.py vasp2cifchmod u+x vasp2cif This should allow you to write e.g. “vasp2cif CONTCAR” in any job folder. cif2vasp For CIF to VASP input conversion, a recommend a program by Torbjrn Bjrkman called cif2cell , which can generate input from CIF files for many ab initio programs, including VASP. If anyone is interested in doing high-performance CIF to VASP conversion with optimized C code, I can provide source code to a CIF lexer written with the Ragel state machine compiler and CIF parser written with Lemon . Unfortunately, the tool I built to do CIF to VASP with this framework does not compile correctly anymore on recent platforms, so I cannot put up any binaries for download. You can email me at pla@nsc.liu.se if you want to give it a try. supersize Yet another script to make supercells out of VASP’s POSCAR/CONTCAR files. It is basically a wrapper around the corresponding feature in ASE . It works like this: $ supersize POSCAR 4x4x4 And you get a new POSCAR file called “POSCAR.4x4x4” containing the supercell repeated 4 times in a,b,c directions. You can achieve the same effect with three lines of Python code in ASE: import ase.io.vaspcell = ase.io.vasp.read_vasp(POSCAR)ase.io.vasp.write_vasp(POSCAR.4x4x4,cell*(4,4,4), label='444supercell',direct=True,sort=True) The script is a little bit more elaborate, however, since it includes error checks.
个人分类: 科学札记|2655 次阅读|0 个评论
[转载]Vasp计算的过程遇到的问题
plgongcat 2013-11-20 10:05
vasp计算的过程遇到的问题 (2012-12-14 10:59:37) 转载 ▼ 标签: 杂谈 分类: Vasp 最近在学vasp,这篇文章是百度文库找到的,看了不错,转载一把。 另外附上 vasp 程序 ,linux中下载后无须安装即可使用。单机中可能会出现内存溢出问题,可以放机群上使用。 01 、第一原理计算的一些心得 ( 1 )第一性原理其实是包括基于密度泛函的从头算和基于 Hartree-Fock 自洽计算的从头算,前者以电子密度作为基本变量(霍亨伯格 - 科洪定理),通过求解 Kohn-Sham 方程,迭代自洽得到体系的基态电子密度,然后求体系的基态性质;后者则通过自洽求解 Hartree-Fock 方程,获得体系的波函数,求基态性质; 评述: K-S 方程的计算水平达到了 H-F 水平,同时还考虑了电子间的交换关联作用。 ( 2 )关于 DFT 中密度泛函的 Functional ,其实是交换关联泛函 包括 LDA , GGA ,杂化泛函等等 一般 LDA 为局域密度近似,在空间某点用均匀电子气密度作为交换关联泛函的唯一变量,多数为参数化的 CA-PZ 方案; GGA 为广义梯度近似,不仅将电子密度作为交换关联泛函的变量,也考虑了密度的梯度为变量,包括 PBE,PW,RPBE 等方案, BLYP 泛函也属于 GGA ; 此外还有一些杂化泛函, B3LYP 等。 ( 3 )关于赝势 在处理计算体系中原子的电子态时,有两种方法,一种是考虑所有电子,叫做全电子法,比如 WIEN2K 中的 FLAPW 方法 ( 线性缀加平面波 ) ;此外还有一种方法是只考虑价电子,而把芯电子和原子核构成离子实放在一起考虑,即赝势法,一般赝势法是选取一个截断半径,截断半径以内,波函数变化较平滑,和真实的不同,截断半径以外则和真实情况相同,而且赝势法得到的能量本征值和全电子法应该相同。 赝势包括模守恒和超软,模守恒较硬,一般需要较大的截断能,超软势则可以用较小的截断能即可。另外,模守恒势的散射特性和全电子相同,因此一般红外,拉曼等光谱的计算需要用模守恒势。 赝势的测试标准应是赝势与全电子法计算结果的匹配度,而不是赝势与实验结果的匹配度,因为和实验结果的匹配可能是偶然的。 ( 4 )关于收敛测试 ( a ) Ecut ,也就是截断能,一般情况下,总能相对于不同 Ecut 做计算,当 Ecut 增大时总能变化不明显了即可;然而,在需要考虑体系应力时,还需对应力进行收敛测试,而且应力相对于 Ecut 的收敛要比总能更为苛刻,也就是某个截断能下总能已经收敛了,但应力未必收敛。 ( b ) K-point ,即 K 网格,一般金属需要较大的 K 网格,采用超晶胞时可以选用相对较小的 K 网格,但实际上还是要经过测试。 ( 5 )关于磁性 一般何时考虑自旋呢?举例子,例如 BaTiO3 中, Ba 、 Ti 和 O 分别为 +2 , +4 和 -2 价,离子全部为各个轨道满壳层的结构,就不必考虑自旋了;对于 BaMnO3 中,由于 Mn+3 价时 d 轨道还有电子,但未满,因此需考虑 Mn 的自旋,至于 Ba 和 O 则不必考虑。其实设定自旋就是给定一个原子磁矩的初始值,只在刚开始计算时作为初始值使用,具体的可参照磁性物理。 ( 6 )关于几何优化 包括很多种了,比如晶格常数和原子位置同时优化,只优化原子位置,只优化晶格常数,还有晶格常数和原子位置分开优化等等。 在 PRL 一篇文章中见到过只优化原子位置,晶格常数用实验值的例子( PRL100, 186402(2008) );也见到过晶格常数先优化,之后固定晶格常数优化原子位置的情况;更多的情况则是 Full geometry optimization 。 一般情况下,也有不优化几何结构直接计算电子结构的,但是对于缺陷形成能的计算则往往要优化。 ( 7 )关于软件 软件大致分为基于平面波的软件,如 CASTEP 、 PWSCF 和 ABINIT 等等,计算量大概和体系原子数目的三次方相关;还有基于原子轨道线性组合的软件 (LCAO) ,比如 openmx , siesta , dmol 等,计算量和体系原子数目相关,一般可模拟较多原子数目的体系。 VASP 是使用赝势和平面波基组,进行从头量子力学分子动力学计算的软件包,它基于 CASTEP1989 版开发。 VAMP/VASP 中的方法基于有限温度下的局域密度近似(用自由能作为变量)以及对每一 MD 步骤用有效矩阵对角方案和有效 Pulay 混合求解瞬时电子基态。这些技术可以避免原始的 Car-Parrinello 方法存在的一切问题,而后者是基于电子、离子运动方程同时积分的方法。离子和电子的相互作用超缓 Vanderbilt 赝势 (US-PP) 或投影扩充波 (PAW) 方法描述。两种技术都可以相当程度地减少过渡金属或第一行元素的每个原子所必需的平面波数量。力与张量可以用 VAMP/VASP 很容易地计算,用于把原子衰减到其瞬时基态中。 02 、 VASP 程序的亮点 : 1. VASP 使用 PAW 方法或超软赝势,因此基组尺寸非常小,描述体材料一般需要每原子不超过 100 个平面波,大多数情况下甚至每原子 50 个平面波就能得到可靠结果。 2. 在平面波程序中,某些部分代码的执行是三次标度。在 VASP 中,三次标度部分的前因子足可忽略,导致关于体系尺寸的高效标度。因此可以在实空间求解势的非局域贡献,并使正交化的次数最少。当体系具有大约 2000 个电子能带时,三次标度部分与其它部分可比,因此 VASP 可用于直到 4000 个价电子的体系。 3.VASP 使用传统的自洽场循环计算电子基态。这一方案与数值方法组合会实现有效、稳定、快速的 Kohn-Sham 方程自洽求解方案。程序使用的迭代矩阵对角化方案( RMM-DISS 和分块 Davidson )可能是目前最快的方案。 4. VASP 包含全功能的对称性代码,可以自动确定任意构型的对称性。 5. 对称性代码还用于设定 Monkhorst-Pack 特殊点,可以有效计算体材料和对称的团簇。 Brillouin 区的积分使用模糊方法或四面体方法。四面体方法可以用 Blöchl 校正去掉线性四面体方法的二次误差,实现更快的 k 点收敛速度。 03 、 VASP5.2 的新功能: 1. 大规模并行计算需要较少的内存。 2. 加入新的梯度校正泛函 AM05 和 PBEsol ;用标准 PBEPOTCAR 文件提供新泛函;改善了单中心处理。 3. 离子位置和格矢中加入有限差分,从而得到二阶导,用于计算原子间力常数和声子(需要超晶胞近似),和弹性常数。计算中自动考虑对称性。 4. 离子位置和静电场中加入线性响应,从而得到二阶导,用于计算原子间力常数和声子(需要超晶胞近似), Born 有效电荷张量,静态介电张量(电子和离子贡献),内应变张量,压电张量(电子和离子贡献)。线性响应只能用于局域和半局域泛函。 5. 精确的非局域交换和杂化泛函: Hartree-Fock 方法;杂化泛函,特别是 PBE0 和 HSE06 ;屏蔽交换;(实验性的)简单模型势 GW-COHSEX ,用于经验的屏蔽交换内核;(实验性的)杂化泛函 B3LYP 。 6. 通过本征态求和计算含频介电张量:使用粒子无关近似,或通过 GW 的随机相近似。可用于局域,半局域,杂化泛函,屏蔽交换,和 Hartree-Fock 。 7. 完全含频 GW ,速度达到等离子极点模型:单发 G0W0 ;在 G 和 W 中迭代本征矢直至自洽;(实验性的)迭代 G (也可以选 W )本征矢的自洽 GW ;(实验性的)对相关能使用 RPA 近似的 GW 总能量;用 LDA 计算 G 和 W 的顶点校正(局域场效应),仅能用于非自旋极化的情况;(实验性的) W 的多体顶点校正,仅能用于非自旋极化的情况。 8. 实验性的功能:用 TD-HF 和 TD- 杂化泛函求解 Cassida 方程(仅能用于非自旋极化的 Tamm-Dancoff 近似); GW 顶点的 Bethe-Salpeter (仅能用于非自旋极化的 Tamm-Dancoff 近似)。 1 、 V ASP 能够进行哪些过程的计算?怎样设置 ? 我们平时最常用的研究方法是做单点能计算,结构优化、从头计算的分子动力学和电子结构相关性质的计算。 一般我们的研究可以按照这样的过程来进行 如果要研究一个体系的最优化构型问题可以首先进行结构弛豫优化,然后对优化后的结构进行性质计算或者单点能计算。 如果要研究一个体系的热力学变化过程可以首先进行分子动力学过程模拟,然后在某个温度或压强下进行性质计算或者单点能计算。 如果要研究一个体系的热力学结构变化可以首先在初始温度下进行 NVT 计算,然后进行分子动力学退火,然后在结束温度下进行性质计算研究。 2 、 什么是单点能计算 (single pointenergy) ?如何计算? 跟其它软件类似, VASP 具有单点能计算的功能。也就是说,对一个给定的固定不变的结构(包括原子、分子、表面或体材料)能够计算其总能,即静态计算功能。 单点能计算需要的参数最少,最多只要在 KPOINTS 文件中设置一下合适的 K 点或者在 INCAR 文件中给定一个截断能 ENCUT 就可以了。还有一个参数就是电子步的收敛标准的设置 EDIFF ,默认值为 EDIFF=1E-4 ,一般不需要修改这个值。 具体来说要计算单点能,只要在 INCAR 中设置 IBRION=-1 也就是让离子不移动就可以了。 3 、 什么是结构优化 (structureoptimization) ?如何计算? 结构优化又叫结构弛豫( structurerelax ),是指通过对体系的坐标进行调整,使得其能量或内力达到最小的过程,与动力学退火不同,它是一种在0K下用原子间静力进行优化的方法。可以认为结构优化后的结构是相对稳定的基态结构,能够在实验之中获得的几率要大些(当然这只是理论计算的结果,必须由实验来验证)。 一般要做弛豫计算,需要设置弛豫收敛标准,也就是告诉系统收敛达成的判据( convergencebreak condition) ,当系统检测到能量变化减小到一个确定值时例如 EDIFFG=1E-3 时视为收敛中断计算,移动离子位置尝试进行下一步计算。 EDIFFG 这个值可以为负,例如 EDIFFG=-0.02 ,这时的收敛标准是当系统发现所有离子间作用力都小于给定的数值,如0 . 02 eV/A 时视为收敛而中断。 弛豫计算主要有两种方式:准牛顿方法 (quasi-Newton RMM-DIIS) 和共轭梯度法 (CG) 两种。准牛顿方法计算速度较快,适合于初始结构与平衡结构(势能面上全局最小值)比较接近的情况,而 CG 方法慢一些,找到全局最小的可能性也要大一些。选择方法为 IBRION=1 时为准牛顿方法而 IBRION=2 时为 CG 方法。 具体来说要做弛豫计算,设置 IBRION=1 或者 2 就可以了,其它参数根据需要来设置。 NSW 是进行弛豫的最大步数,例如设置 NSW=100 ,当计算在 100 步之内达到收敛时计算自动中断,而 100 步内没有达到收敛的话系统将在第 100 步后强制中止(平常计算步数不会超过 100 步,超过 100 步可能是计算的体系出了问题)。参数通常可以从文献中发现,例如收敛标准 EDIFFG 等。 有的时候我们需要一些带限制条件的弛豫计算,例如冻结部分原子、限制自旋的计算等等。冻结部分原子可以在 POSCAR 文件中设置 selectivedynamic 来实现。自旋多重度限制可以在 INCAR 中以 NUPDOWN 选项来设置。另外 ISIF 选项可以控制弛豫时的晶胞变化情况,例如晶胞的形状和体积等。 费米面附近能级电子分布的 smearing 是一种促进收敛的有效方法,可能产生物理意义不明确的分数占据态情况,不过问题不大。在 INCAR 文件中以 ISMEAR 来设置。一般来说 K 点只有一两个的时候采用 ISMEAR=0 ,金属体材料用 ISMEAR=1 或 2, 半导体材料用 ISMEAR=-5 等等。不过有时电子步收敛速度依然很慢,还需要设置一些算法控制选项,例如设置 ALGO=Very_Fast ,减小真空层厚度,减少 K 点数目等。 弛豫是一种非常有效的分析计算手段,虽然是静力学计算但是往往获得一些动力学得不到的结果。 4 、 vasp 的分子动力学模拟 vasp 做分子动力学的好处,由于 vasp 是近些年开发的比较成熟的软件,在做电子 scf 速度方面有较好的优势。缺点:可选系综太少。 尽管如此,对于大多数有关分子动力学的任务还是可以胜任的。主要使用的系综是 NVT 和 NVE 。 一般做分子动力学的时候都需要较多原子,一般都超过 100 个。 当原子数多的时候, k 点实际就需要较少了。有的时候用一个 k 点就行,不过这都需要严格的测试。通常超过 200 个原子的时候,用一个 k 点,即 Gamma 点就可以了。 INCAR : EDIFF 一般来说,用 1E-4 或者 1E-5 都可以,这个参数只是对第一个离子步的自洽影响大一些,对于长时间的分子动力学的模拟,精度小一点也无所谓,但不能太小。 IBRION=0 分子动力学模拟 IALGO=48 一般用 48 ,对于原子数较多,这个优化方式较好。 NSW=1000 多少个时间步长。 POTIM=3 时间步长 , 单位 fs, 通常 1 到 3. ISIF=2 计算外界的压力 . NBLOCK=1 多少个时间步长,写一次 CONTCAR , CHG 和 CHGCAR , PCDAT. KBLOCK=50 NBLOCK*KBLOCK 个步长写一次 XDATCAR. (个离子步写一次 PCDAT. ) ISMEAR=-1 费米迪拉克分布 . SIGMA =0.05 单位 : 电子伏 NELMIN=8 一般用 6 到 8, 最小的电子 scf 数 . 太少的话 , 收敛的不好 . LREAL=A APACO=10 径向分布函数距离 , 单位是埃 . NPACO=200 径向分布函数插的点数 . LCHARG=F 尽量不写电荷密度 , 否则 CHG 文件太大 . TEBEG=300 初始温度 . TEEND=300 终态温度。不设的话,等于 TEBEG. SMASS=-3 NVEensemble;-1 用来做模拟退火。大于 0NVT 系综。正确: SMASS=1,2,3 是没有区别的。都是 NVTensemble 。 SMASS 只要是大于 0 就是 NVT 系综。 CONTCAR 是每个离子步之后都会写出来的,但是会用新的把老的覆盖 CHG 是在每 10 个离子步写一次,不会覆盖 CHGCAR 是在任务正常结束之后才写的。 5 、收敛判据的选择 结构弛豫的判据一般有两中选择:能量和力。这两者是相关的,理想情况下,能量收敛到基态,力也应该是收敛到平衡态的。但是数值计算过程上的差异导致以二者为判据的收敛速度差异很大,力收敛速度绝大部分情况下都慢于能量收敛速度。这是因为力的计算是在能量的基础上进行的,能量对坐标的一阶导数得到力。计算量的增大和误差的传递导致力收敛慢。 到底是以能量为收敛判据,还是以力为收敛判据呢?关心能量的人,觉得以能量为判据就够了;关心力相关量的人,没有选择,只能用力作为收敛标准。对于超胞体系的结构优化,文献大部分采用 Gamma 点做单点优化。这个时候即使采用力为判据( EDIFFG=-0.02 ),在做静态自洽计算能量的时候,会发现,原本已经收敛得好好的力在不少敏感位置还是超过了结构优化时设置的标准。这个时候,是不是该怀疑对超胞仅做 Gamma 点结构优化的合理性呢?是不是要提高 K 点密度再做结构优化呢。 在我看来,这取决于所研究的问题的复杂程度。我们的计算从原胞开始,到超胞,到掺杂结构,到吸附结构,到反应和解离。每一步都在增加复杂程度。结构优化终点与初始结构是有关的,如果遇到对初始结构敏感的优化,那就头疼了。而且,还要注意到,催化反应不仅与原子本身及其化学环境有关,还会与几何构型有关。气固催化反应过程是电子的传递过程,也是分子拆分与重新组合的过程。如果优化终点的构型不同,可能会导致化学反应的途径上的差异。仅从这一点来看,第一性原理计算的复杂性,结果上的合理性判断都不是手册上写的那么简单。 对于涉及构型敏感性的结构优化过程,我觉得,以力作为收敛判据更合适。而且需要在 Gamma 点优化的基础上再提高 K 点密度继续优化,直到静态自洽计算时力达到收敛标准的。 6 、结构优化参数设置 结构优化,或者叫弛豫,是后续计算的基础。其收敛性受两个主要因素影响:初始结构的合理性和弛豫参数的设置 初始结构 初始结构包括原子堆积方式,和自旋、磁性、电荷、偶极等具有明确物理意义的模型相关参数。比如掺杂,表面吸附,空位等结构,初始原子的距离,角度等的设置需要有一定的经验积累。 DFT 计算短程强相互作用(相对于范德华力),如果初始距离设置过远(如超过 4 埃),则明显导致收敛很慢甚至得到不合理的结果。 比较好的设置方法可以参照键长。比如 CO 在 O 顶位的吸附,可以参照 CO2 中 C-O 键长来设置(如增长 20% )。也可以参照文献。记住一些常见键长,典型晶体中原子间距离等参数,有助于提高初始结构设置的合理性。实在不行,可以先在小体系上测试,然后再放到大体系中算。 弛豫参数 弛豫参数对收敛速度影响很大,这一点在计算工作没有全部铺开时可能不会觉察到有什么不妥,反正就给 NSW 设置个“无穷大”的数,最后总会有结果的。但是,时间是宝贵的,恰当的设置 3 小时就收敛的结果,不恰当的设置可能要一个白天加一个黑夜。如果你赶文章或者赶着毕业,你就知道这意味这什么。 结构优化分电子迭代和离子弛豫两个嵌套的过程。电子迭代自洽的速度,有四个响很大的因素:初始结构的合理性, k 点密度,是否考虑自旋和高斯展宽( SIGMA );离子弛豫的收敛速度,有三个很大的影响因素:弛豫方法( IBRION ) , 步长( POTIM )和收敛判据( EDIFFG ) . 一般来说,针对理论催化的计算,初始结构都是不太合理的。因此一开始采用很粗糙的优化( EDIFF=0.001 , EDIFFG=-0.2 ),很低的 K 点密度 (Gamma) ,不考虑自旋就可以了,这样 NSW60 的设置就比较好。其它参数可以默认。 经过第一轮优化,就可以进入下一步细致的优化了。就我的经验, EDIFF=1E-4,EDIFFG=-0.05 ,不考虑自旋, IBRION=2 ,其它默认, NSW=100; 跑完后可以设置 IBRION= 1 ,减小 OPTIM (默认为 0.5 ,可以设置 0.2 )继续优化。 优化的时候让它自己闷头跑是不对的,经常看看中间过程,根据情况调节优化参数是可以很好的提高优化速度。这个时候,提交两个以上的任务排队是好的方式,一个在调整的时候,下一个可以接着运行,不会因为停下当前任务导致机器空闲。 无论结构优化还是静态自洽,电子步的收敛也常常让新手头痛。如果电子步不能在 40 步内收敛,要么是参数设置的问题,要么是初始模型太糟糕(糟糕的不是一点点)。 静态自洽过程电子步不收敛一般是参数设置有问题。这个时候,改变迭代算法( ALGO ),提高高斯展宽( SIGMA 增加) , 设置自洽延迟( NELMDL )都是不错的方法。对于大体系比较难收敛的话,可以先调节 AMIN,BMIX 跑十多步,得到电荷密度和波函数,再重新计算。实在没办法了,可以先放任它跑 40 步,没有收敛的迹象的话,停下来,得到电荷密度和波函数后重新计算。一般都能在 40 步内收敛。 对于离子弛豫过程,不调节关系也不大。开始两个离子步可能要跑满 60 步(默认的),后面就会越来越快了。 总的说来,一般入门者,多看手册,多想多理解,多上机实践总结,比较容易提高到一个熟练操作工的水平。 如果要想做到“精确打击”,做到能在问题始发的时候就立刻采取有效措施来解决,就需要回归基础理论和计算方法上来了。 7 、优化结果对初始结构和“优化路径”的依赖 原子吸附问题不大,但是小分子吸附,存在初始构型上的差异。 slab 上水平放置,还是垂直放置,可能导致收敛结果上的差异。根据 H-K 理论,理想情况下,优化得到的应该是全局最小,但在数值计算的时候可能经常碰到不是全局最小的情况。实际操作中发现,多个不同初始结构优化收敛后在能量和结构上存在一定差异。 为了加快收敛速度,特别是对于表面 - 分子吸附结构,初始放松约束,比如 EDIFF=1E-3 , EDIFFG=-0.3,NSW=30 可能是很好的设置。但是下面的情况应当慎重: EDIFF=1E-3; EDIFFG=-0.1; !或者更小 NSW=500 ;!或者更大 电子步收敛约束较小,而离子步约束偏大,离子步数又很多,这种情况下,可能导致的结果是结构弛豫到严重未知的区间。 再在这个基础上提高约束来优化,可能就是徒劳的了——结果不可逆转的偏向不正常的区间。 好的做法,是对初始结构做比较松弛的约束,弛豫离子步 NSW 应该限制在一个较小的数值内。 EDIFF=1E-3 的话, EDIFFG 也最好是偏大一些,如 -0.3 而不是 -0.1. 这样可以在较少的步数内达到初步收敛。 对于远离基态的初始结构,一开始在非常松弛的约束下跑若干离子步,时间上带来的好处是很大的。对于 100 个原子的体系用 vasp 做 Gamma 点优化,如果一开始就是正常优化( EDIFF=1E-4,EDIFFG=-0.02 )设置,开始十个离子步可能都要花上几个小时。如果这个时候才发现输入文件有错误,那下午的时间就白费了,顺便带上晚上机器空转。 所以,我习惯的做法,是在初始几步优化后,会用 xcrysden 检查一下 XDATCAR 中的数据,用 xdat2xyz.pl 生成 movie.xyz ,然后看看弛豫过程是不是按照设想的那样。后续过程跑完一个收敛过程,就再检查一下 movie.xyz 。如此这般,才放心的展开后续计算。 8 、目的导向的结构优化 结构优化到这个阶段,是高级的了。为了得到特定结构,或者为了验证某些猜想,需要设计合理的初始结构,然后在这个基础上小心优化,比如 POTIM=0.1 跑几步看看,然后修改优化参数。 我遇到过的一件跟结构优化关系很大的算例是 CeO2 氧空位结构电子局域的问题 (http://emuch.net/bbs/viewthread.php?tid=2954558) 。按照一般方式(从优化好的 bulk 建 slab 模型,然后优化)得到一个 O 空位留下的两个电子均匀局域到 O 次外层三个 Ce 原子上,得到空位形成能 2.34eV. 经高人指点后,调节空位附近 O 原子位置,打破对称性后重新优化,两个电子完美的局域到两个 Ce 原子上了。并且空位形成能降低到 2.0XeV 。从这个例子可以看到,结构优化存在不少技巧的,这些技巧建立在研究者对模拟对象的物理意义的理解上。对物理图像的直观深入理解,才能做好模型预设,在此引导下才可能有目的的优化出不比寻常的结果。 目前第一性原理理论中的交换关联泛函部分包含经验参数。考虑这一点对优化结果的影响也很有意思。比如有专家提到, DFT+U 参数对某些结构的收敛终态构型有影响。构型的变化可能影响表面反应过程。基于这一点,一个好的计算研究可能就出来了。 真实过程总是复杂多变的。无论何种模拟,估计都可以找到一些试验现象来验证。但是到底应该如何评判模拟结果,如何从第一性原理研究中得出有意义的结论需要很好的洞察力。这样的模拟不见得就必须建立的试验的基础上,完全凭空设计的模型有可能更能优美的解释本质。 9 、在单机上计算态密度好像不会出问题。我先谈一下我的看法: 第一个 WARNING ,可以在 INCAR 文件中设置 NGX,NGY 和 NGZ 的值,设置的值要足够大,就可以消除这个 warning 。设置多大合适呢?这就要用到编译 vasp 时,同时也编译得到的 makeparam 小程序, makeparam 可以帮助你预先检查你设置的文件是否正确,以及某些参数的值是否合适。要得到合适的 NGX,NGY,NGZ 以及 NBANDS, 先在 INCAR 中不设置这些参数的值,然后运行 makeparamparam.inc ,其中 param.inc 是包含了输出结果的文件,在 param.inc 文件中你可以看到这些参数的值,以及计算大概需要多少的内存。然后把 param.inc 文件中的 NGX,NGY,NGZ 和 NBANDS 的值拷贝到 INCAR 文件中。 第二个是计算态密度时,我个人的做法是,一般把 KPOINTS 文件中的 k 点增多,然后把 INCAR 文件中的 ISTART=1,ICHARG=11 ,当然还设置 RWIGS 。最后把静止自洽计算得到的 CHG 和 CHGCAR 文件拷贝到当前目录下。从我在单机上的计算来看,没有 WAVECAR 文件也是可以计算态密度的。我想你出现的这个问题,可能是你 cluster 上计算时,每个节点上的 CHGCAR 和 WAVECAR 文件不一致造成的。 第三个是当 k 点数增加了,会出现一个 WARING ,要把此 WARNING 消失掉,在 INCAR 文件中设置 NELMDL ,它的值小于等于默认值(默认值好像是 -5, 你可以设为 -6) 。没有 cluster 的系统用来计算,也没有这样的经历,我仅从在单机上的计算经验来谈,有错还请包涵 10 、如何用 VASP 计算铁磁、反铁磁和顺磁 顺磁,意味进行 non-spin polarized 的计算,也就是 ISPIN=1 。 铁磁,意味进行 spin-polarized 的计算, ISPIN=2 ,而且每个磁性原子的初始磁矩设置为一样的值,也就是磁性原子的 MAGMOM 设置为一样的值。对非磁性原子也可以设置成一样的非零值(与磁性原子的一样)或零,最后收敛的结果,非磁性原子的 local 磁矩很小,快接近 0 ,很小的情况,很可能意味着真的是非磁性原子也会被极化而出现很小的 local 磁矩。 反铁磁,也意味着要进行 spin-polarized 的计算, ISPIN=2 ,这是需采用反铁磁的磁胞来进行计算,意味着此时计算所采用的晶胞不再是铁磁计算时的最小原胞。比如对铁晶体的铁磁状态,你可以采用 bcc 的原胞来计算,但是在进行反铁磁的 Fe 计算,这是你需要采用 sc 的结构来计算,计算的晶胞中包括两个原子,你要设置一个原子的 MAGMOM 为正的,另一个原子的 MAGMOM 设置为负,但是它们的绝对值一样。因此在进行反铁磁的计算时,应该确定好反铁磁的磁胞,以及磁序,要判断哪种磁序和磁胞是最可能的反铁磁状态,那只能是先做好各种可能的排列组合,然后分别计算这些可能组合的情况,最后比较它们的总能,总能最低的就是可能的磁序。同样也可以与它们同铁磁或顺磁的进行比较。了解到该材料究竟是铁磁的、还是顺磁或反铁磁的。 亚铁磁,也意味要进行 spin-polarized 的计算, ISPIN=2 ,与反铁磁的计算类似,不同的是原子正负磁矩的绝对值不是样大。非共线的磁性,那需采用专门的 non-collinear 的来进行计算,除了要设置 ISPIN , MAGMOM 的设置还需要指定每个原子在 x,y,z 方向上的大小。这种情况会复杂一些。 举个例子来说,对于 Mn-Cu(001)c(2x2) 这种体系,原胞里面有 2 个 Mn 原子,那么你直接让两个 Mn 原子的 MAGMOM 的绝对值一样,符号相反就可以了,再加上 ISPIN=2 。这样就可以实现进行反铁磁的计算了 11 、 vasp 在计算磁性的时候, oszicar 中得到的磁矩和 outcar 中得到各原子磁矩之和不一致在投稿的是否曾碰到有审稿人质疑,对于这个不一致你们一般是怎么解释的了? 答: OSZICAR 中得到的磁矩是 OUTCAR 中最后一步得到的总磁矩是相等的。总磁矩和各原子的磁矩 (RMT 球内的磁矩 ) 之和之差就是间隙区的磁矩。因为有间隙区存在 , 不一致是正常的。 12 、磁性计算应该比较负责。你应该还使用别的程序计算过磁性,与 vasp 结果比较是否一致,对磁性计算采用的程序有什么推荐。 ps :由于曾使用 vasp 和 dmol 算过非周期体系磁性,结构对磁性影响非常大,因此使用这两个程序计算的磁性要一致很麻烦。还不敢确定到底是哪个程序可能不可靠。 答:如果算磁性,全电子的结果更精确,我的一些计算结果显示磁性原子对在最近邻的位置时, PAW 与 FPLAW 给出的能量差不一致,在长程时符合的很好。虽然并没有改变定性结论。感觉 PAW 似乎不能很好地描述较强耦合。我试图在找出原因,主要使用 exciting 和 vasp 做比较。计算磁性推荐使用 FP-LAPW, FP-LMTO, FPLO 很吸引人 ( 不过是商业的 ) ,后者是 O(N) 算法。 13 、 vasp 学习笔记 POTCAR 的建立 POTCAR 将要告诉 vasp 计算的系统中所包含的各种元素的赝势 pesudopotential , vasp 本身就带有比较完善的赝势包,我们需要做的就是选择我们需要具体哪种赝势,然后把相应的文件拷贝形成我们具体的 POTCAR 文件。我们以 GaAs 为例。 1 )赝势的选择: vasp 的赝势文件放在目录 ~/vasp/potentials 下,可以看到该目录又包含五个子目录 potpot_GGA potpaw potpaw_GGA potpaw_PBE ,其中每一个子目录对应一种赝势形式。 赝势按产生方法可以分为 PP(standard pesudopotential ,其中大部分是 USPP,ultrasoft pesudopotential) 和 PAW(projector augmented wavemethod) 。按交换关联函数的不同又可以有 LDA(local density approximation) 和 GGA(generalized gradient approximation) ,其中 GGA 之下又可以再分为 PW91 和 PBE 。 以上各个目录对应起来分别是 pot== PP, LDA ; pot_GGA == PP, GGA ;potpaw == PAW, LDA ; potpaw_GGA ==PAW, GGA, PW91 ; potpaw_PBE == PAW , GGA,PBE 。选择某个目录进去,我们还会发现对应每种元素往往还会有多种赝势存在。这是因为根据对截断能量的选取不同还可以分为 Ga,Ga_s,Ga_h ,或者根据半芯态的不同还可以分为 Ga,Ga_sv,Ga_pv 的不同。 一般推荐选取 PAW_PBE 。其中各个元素具体推荐哪种形式的赝势可以参考 vaspworkshop 中有关赝势部分的 ppt 。当然自己能测试之后在选择是最好不过的了,以后再聊。 2 ) .POTCAR 的建立: 选好哪一种赝势之后,进入对应的目录,你会看到里边有这么几个文件, POTCAR.Z PSCTR.Z V_RHFIN.Z WS_FTP.LOG 。我们需要的是第一个。把它解压,如 zcatPOTCAR.Z Ga 。对 As 元素我们也可以类似得到一个 As 文件。用 cp 命令或者 mv 命令把这两个文件都移到我们的工作目录里。然后再用 cat 命令把这两个文件合并在一起,如 cat GaAs POTCAR ,这样就得到了我们需要的 POTCAR 。同理,有多个元素的 POTCAR 也可以这样产生。这里需要注意的是,记住元素的排列顺序,以后在 POSCAR 里各个元素的排列就是按着这里来的。 3 ) .POTCAR 里的信息: 如果你想看 POTCAR 长什么样,可以用 vimPOTCAR 命令,进去后可以用上下键移动光标。想出来的时候,可以敲入 :q! 就可以。具体的 vim 的命令可以在网上查到。一般我会看 POTCAR 里的截断能量为多大,用 grep-in enmax POTCAR 。 据说 B3LYP 的赝势计算比较准,我在 MS 上面测试过,好像 DOS 和能带图的计算确实比较准。不过不知道 vasp 有没有类似的赝势包。 hybridfunctional 的计算,并不需要特定的 hybrid functional 的赝势。大部分就是基于 GGA-PBE 的赝势来做,也就是芯电子与价电子的交换关联作用,以及芯电子与芯电子的交换关联作用还是基于 GGA-PBE 的,只是将价电子与价电子的交换关联作用通过 hybridfunctional 交换关联来描述。 谢谢老师的解答。那具体操作是不是像网上写的那样,使用 GGA 的赝势,设置 GGA =B3 ,然后更改 POTCAR 里面的 LEXCH=B3 就行了。我试过了,可以跑,不过结果没做详细的分析。 14 、 VASP 中所有能量的物理意义及它们之间的区别,让你彻底搞清楚 VASP 的所有能量 (一)首先我们应明白,固体的结合能就是固体的内能 E (结合) =U (内能), 原因如下: 一般情况都把孤立原子的能量作为能量参考点。前段时间有个同学问 VASP 中得出的绝对能量是相对于什么的,其实就是相对孤立原子得。 (二)其次我们根据自由能与内能之间的关系 F=U-TS 而且我们都知道 VASP 的所有计算都是在绝对 0 度下的情况, T=0 代入上式,有 F=U 。所以结合就等于内能等于自由能。肯定有 Freeenergy TOTEN=energy without entropy 恒成立 ... 这时候肯定有人会说不对啊,可以看 VASP 手册,候博的参考书作证,肯定不对得。 现在我告诉你确实它们二者确实有区别,区别在下面的情况 ( 1 )当我们用 ISMEAR=-5 时,费米能这儿没有展宽,它算出来的就是完全在绝对 0 度的能量。 Freeenergy TOTEN=energy without entropy 恒成立。 ( 2 )有时为了在数学上处理的方便,为了更容易积分,我们也用 ISMEAR ! =-5 (! = 是不等于的意思)的方法,这个时候费米能这儿有一定的展宽。此时,我们容易想到,有展宽不就是相当有一定的熵值吗?所以这个时候虽然算的是绝对 0 度的情况,但是有一定的熵值(我们应明白,这个熵值不是由一定的温度带来的,而是数学处理的结果)。所以在 SMEAR ! =-5 的方法我们会发现 Freeenergy TOTEN 和 energywithout entropy 有一定的差别。此时 energywithout entropy 是 Freeenergy TOTEN 在 SIGMA 趋于 0 的极限。 注意 : ( 1 )有人在算单个原子的能量时会发现单个原子的能量虽然很小但并不是 0, 但是按我上面的推导 , 固体中的结合能是相对孤立体系的能量而来的 , 所以单个原子得到的 TOTEN 肯定是 0 啊 , 原因在于我们的 POTCAR 不可能绝对合理 , 而且我们也知道计算单个原子的能量就是为了检测赝势 , 单原子得到的 TOTEN 越小说明赝势越好。但一般不会正好是 0. 对这个说法我还存在点疑问,写在了最后面。 ( 2 )如果你注意的话, energywithout entropy 与 Freeenergy TOTEN 在 SIGMA 趋于 0 也不是完全相等,但是也会发现它们之间的差别在 10E-3 左右,原因在于计算机求积分、求极限不能像我们人一样达到任意的精度。 15 、 VASP 中过渡态计算设置的一点体会 计算过渡态先要摆正心态,不急于下手。步骤如下: ( 1 )做模型,初态 IS 和终态 FS ,分别结构优化到基态; ( 2 )线形插入 images: nebmake.pl POSCAR.IS POSCAR.FSN N 为 image 个数。 ( 3 ) nebmovie.pl, 生成 movie.xyz 。用 Xcrysden --xyz movie.xyz 反复观看动画,仔细检查过程的合理性。这里要提醒, POSCAR.IS 和 POSCAR.FS 中原子坐标列表的顺序必须对应。 ( 4 )写 INCAR, 选 IOPT 。注意,最好忘记 vasp 自带的 NEB ,而全部改用包含 vtstool 的 vasp.IBRION=3,POTIM=0 关闭 vasp 自带的 NEB 功能。 ( 5 )过渡态计算第一个离子步最耗时,也最容易出问题,也是模型设计合理性检验的首要环节。所以可以选小一些的 ENCUT ,可以不用考虑自旋 (ISPIN=1) ,也不用考虑 DFT+U 。而且用最快最粗糙的算法( IOPT=3, 其他默认)。 ( 6 )带 vtstool 的 vasp-ClNEB(NEB) 过渡态计算 ICHAIN=0 作为入口,这个也是默认的。 LCLIMB=TRUE 也是默认的。如果不要 climbimage, 可以设置 LCLIMB= False. ( 7 )收敛判据 EDIFFG0 。过渡态计算要以力为收敛判据,而不是能量。一般 EDIFFG=-0.05 就可以接受, -0.02 或者 -0.01 更好。但是作为开始的过渡态计算,可以设置很宽的收敛条件,如 EDIFFG=-1. ( 8 )初步过渡态收敛后 , 修改 INCAR 中的优化器( IOPT ),并修改相应参数(参考 vtstool 官方论坛), EDIFFG 改小(如 -0.05 ),然后运行 vfin.pl ,这个脚本自动帮你准备在原来的基础上继续运行新的过渡态计算(完成 cp CONTCAR POSCAR, 保留电荷密度和波函数的操作)。 ( 9 )过渡态如何验算虚频呢? 比如一个 6 层原子层的 slab 上表面吸附小分子。 slab 下部 3 层原子是固定的。验算虚频的时候,是不是还是固定下面三层原子,然后按照一般频率计算方法来算虚频?这样的话,可以移动的原子数在 20 数量级上,考虑三个自由度,及其组合,就有很多很多可能了。请问该怎么设置这样的过渡态虚频计算呢? 16 、关于概念的问题做个讨 论 (一)关于结合能。你说 “ 结合能是定义为相距无穷远的原子结合形成一定结构的物质所放出的能量 ” 你和我说的没区别,我说的是结合能是相对于 “ 孤立原子做参考点的 ” ,也就是它与周围任何原子没有相互作用,和你所说的相距无穷远一回事,我这个好像没有任何错误。 =============== 这里你说的是没有错误,但是我觉得有必要先澄清一下。 (二)关于单点能。你说 “ 它是第一性原理计算直接得到的能量,或者说是赝能,是一个空间点阵平均每阵点上采用赝势计算所得到的能量,其中包含了结合能的贡献,但是更多的,也包含了靠近芯区附近的电子在采用赝势近似下的能量,这一部分能量既不是原子芯区附近电子能量的真实反应,也不会影响化学键性质,不会对结合能有所贡献 ” 。 我赞同你的大部分观点,也提出你说的几点错误,单点能准确的来说它包含了所有哈密顿的量,而且这儿的单点能不是你所说的 “ 平均每个原子的能量 ” ,而是你计算的整个原胞的能量。但是这个能量有一个参考点。你可以看候博得,也可以看我回的下一个贴子,至于 “ 影响不影响成键之类的内容 ” 固体力学上已经说的很清楚了。 ============== 从你的回复中,我可以知道你肯定没有学过晶体学或者空间群理论,你应该看看晶体学国际表中对于阵点的定义,阵点并不是每个原子,这里你的理解有问题,阵点是一个抽象点,一个晶体中包含所有对称性的可以仅通过平移来构造整个晶体的结构所占据的位置就是一个阵点,换句话说,一个阵点,就是一个满足平移对称性的原子集团,且该集团内部的位置满足该晶体结构的全部对称性,而且它不仅仅是 “ 原胞 ” (三)你说 “ FreeenergyTOTEN 是体系总能,要减去阵点上分布的原子的能量再除以平均原子数才是结合能(当然,这个和你的计算脚本的设计有关),而且这还没有考虑不加展宽时没有被计算到的能带的因素 ” 我不赞同你后面说的几点。 FreeenergyTOTEN 从字面意思上我们也知道它的结果是自由能,你可以说它是总能,因为根据我上面的推导,它们至少在数值是相等得。不在于你把它说成什么,你就是把它说成总能,其实它还是等于结合能,等于自由能,等于内能。至于除不除原子总数在于你想得到的是平均每个原子的还是总体系的,这在于个人。考虑不考虑展宽,那要看 ISMEAR 等于几,做几个实例就会感觉到它考虑没考虑了。 =============== 这个能量确切的说应该是叫做考虑电子振动熵的体系总自由能,当不考虑展宽的时候,它是等于总能的,如果你读过 Vasp 的代码,就知道 TOTEN 在 vasp 的计算中就是总能,这个和结合能不是一个概念,还包含有非成键部分的贡献,至于内能的定义,如果你阅读过塞兹的现代固体理论,或者 Pauling 的书,或者读过 Morse 当时提出 morse 势的那篇文献,就应该知道,固体物理中所使用的内能,指的是离子实的动能和原子的 “ 结合能 ” 之和 —— 这里结合能之所以要打引号,是因为按定义,是要形成稳定结构或者亚稳态结构时才能称之为结合能,内能定义并没有考虑粒子芯区附近电子能量的影响,正如你所说,是 “ 相对于 “ 孤立原子做参考点的 ”” ,在 0K 下已经不考虑动能,因此就应是总能减去孤立原子的能量和才行,至于结合能,则是稳定状态下结构的这个能量。 (四)你说 “ 是否考虑展宽和结合能的定义没有关系 ” 我也没说和它的定义有什么关系啊,但是由于数学处理带来的误差,它对结合能的结果有一定的影响啊。 (五)对单个原子的结合能的计算应该只计算 Gamma 点的能量,且用削除简并。 你说得第五点我不懂,我算单个原子的能量时一直是按三个表面的构造方法来算的,也没想过什么简并。还望有高手给我帮助,第五点怎么理解。 ============= 简单的操作是计算单个原子能量只考虑 Gamma 点,然后三边都设置在 10A 以上,且不相等 至于原因,应该去查量子力学的书,记得本科的时候,老师都会讲到的。 根据 F=U-TS , E (结合) =E ( bulk ) -nE( 单个离散 ) 。而 E ( bulk )就是 U ,通常我们取 E (离散)为参考点。也就是把 E (离散)看为 0 ,这样推出来,在 T=0 时, F=E (结合)。 它是包含你所说得那些,而且就像我在前面的贴子中说得,它就是总得 H 得到的能量,但是它有一个参考,而这个参考就是离散原子的能量 17 、用 vasp 软件研究表面小分子的吸附解离遇到几个问题。 1 关于反应物和产物的结构,请问你们是如何构建的?(参考文献吗?)能不能介绍一下相关的经验,个人认为好的开端是成功的一半,所以需要更多的经验帮助。 答: . 据说现在流行的过渡态算法多用 CINEB , vasp 自带的 NEB 也可以,但是镜像受力优化和势垒精确度以及收敛速度略逊于 CINEB , lz 可以 google 到其官方网站了解。初始和终了的结构是局部能量最低的构型( vasp 做弛豫收敛的构型),至于 lz 所关心的是从具体结构之间的过渡的化,一是猜测,二是文献吧。基本出发点是能量趋向降低的构型。 2 关于结构的优化,能量收敛和力收敛的标准是否应该比默认值高,有利于过渡态的搜寻? 答: DFT 理论计算能量可能更准确,对力的计算由于是对能量再求导,涉及数值算法原因可能不准,所以收敛标准基本采用默认即可,有时适当提高(一个量级以内)也是可以的。在合理的精度范围内讨论出合理的结果就达到目的了,这是师兄告我的。基本上收敛精度高于默认值去跑的话,那就 god bless you 了。 3 关于结构虚频的处理,通过学习了解了消除虚频的方法 -- 将对应原子的坐标加到原坐标上。由于 vasp 的振动模式不能可视化,所以请问如何找到对应的原子?另外关于虚频,大家是如何处理的呢。 答: . 虚频没有关注过。只知道在鞍点位置才应该有一个虚频,属于鞍点具有的特性吧。为何要消除呢?根据这个好像才能按速率理论算出反应率的吧,这个我没有经验。只关注过势垒。 4 关于 images 的问题,最近利用脚本产生了 2 、 4 的 POSCAR 的文件,发现只有 2 的能跑起来,我的服务器是 4 个核的。看别人发的贴:指定 4 个 cpu 同时计算,应该是 1 个 cpu 一个 image 。为什么我设置 4 个 image 跑不起来呢? 答: image 数量越多,相互之间受力需要同时满足收敛准则,速度肯定会降低,但是这样找到的能量最低路径也会与实际更加符合。没错,每个 image 事实上是需要相当于单独计算的构型的 cpu 的数目的,所以 4 个核的话,平均一个 image 一个 cpu ,实在是不一定跑得动。如果体系原子数较多, k 点网格较密,能量截断值再一高,估计经过很久才可能有结果。 5 、在计算 dos 时,为什么会出现 WARNING:stress and forces are notcorrect 。这是那些原因造成的,计算的是多铁物质。还有就是在优化时, TOTAL-FORCE 这项怎么全是 0 啊,原子这个没有关系的 答:用优化后的 CONTCAR 算 band 或 dos 都会出现这个提示位置没有变化啊,这是怎么回事啊? 6 、我在做能带计算,发现自洽计算和非自洽计算中, OUTCAR 文件中都可以找到一个费米能级的大小,但是现在迷茫的是,不知道在画能带时减去的费米能级的大小应该取哪个结果文件中得值?是取自洽计算的结果文件中的 E-fermi ,还是取非自洽的结果文件中的 E-fermi 的大小?? 答:算能带的那次计算,指的是自洽(求解 WAVECAR 和 CHGCAR 的那一步)的那步计算,还是非自洽(直接读取自洽的电荷和波函数,进行非自洽计算)的那次计算啊?我对这个说法的标准不是很理解,希望您能再指导一下,我觉得画能带图时,费米能级的取值是否正确是很关键的,取自洽计算得到的 E-fermi 转自:http://blog.sina.com.cn/s/blog_b364ab230101e9dp.html
个人分类: 老生经验之谈|4976 次阅读|0 个评论
[转载]BADER Charge Analysis
gcshan 2013-11-15 19:12
B ADER C HARGE A NALYSIS News 07/12/12 - Version 0.28a Released Fixed a sign problem for PWscf cube files. Introduction Richard Bader , from McMaster University, developed an intuitive way of dividing molecules into atoms. His definition of an atom is based purely on the electronic charge density. Bader uses what are called zero flux surfaces to divide atoms. A zero flux surface is a 2-D surface on which the charge density is a minimum perpendicular to the surface. Typically in molecular systems, the charge density reaches a minimum between atoms and this is a natural place to separate atoms from each other. Besides being an intuitive scheme for visualizing atoms in molecules, Bader's definition is often useful for charge analysis. For example, the charge enclosed within the Bader volume is a good approximation to the total electronic charge of an atom. The charge distribution can be used to determine multipole moments of interacting atoms or molecules. Bader's analysis has also been used to define the hardness of atoms, which can be used to quantify the cost of removing charge from an atom. Program Overview We have developed a fast algorithm for doing Bader's analysis on a charge density grid. The program (see below) can read in charge densities in the VASP CHGCAR format, or the Gaussian CUBE format. The program outputs the total charge associated with each atom, and the zero flux surfaces defining the Bader volumes. Note for VASP users Information about generating and analyzing charge densities from vasp . For users using our DOS projection code in Bader volumes , the -vac flag is recommended. Note for CASTEP users Aaron Hopkinson and Dr Matt Probert from the University of York have provided a den2cube.tar.gz utility to convert from the CASTEP charge density to the cube format so that it can be read in by the Bader analysis program. Download Select the appropriate platform to download a binary of the Bader analysis program: Linux x86-64 (ifort) Windows (gfortran) Mac OS X, Intel (ifort) The F90 source code is also available: Source Code (v0.28 06/26/11) Version history Running the Program The program can be run with the command bader chargefile It will automatically determine if the chargefile is a VASP CHGCAR file or a Gaussian CUBE file. The only required input argument is the name of the charge density file. Command line arguments and output files The following options can be used when running the Bader analysis program. bader chargefile To get a description of the options, run 'bader -h'. Output files The following output files are generated: ACF.dat, BCF.dat, AtomVolumes.dat. ACF.dat contains the coordinates of each atom, the charge associated with it according to Bader partitioning, percentage of the whole according to Bader partitioning and the minimum distance to the surface. This distance should be compared to maximum cut-off radius for the core region if pseudo potentials have been used. BCF.dat contains the coordinates of each Bader maxima, the charge within that volume, the nearest atom and the distance to that atom. AtomVolumes.dat contains the number of each volume that has been assigned to each atom. These numbers correspond to the number of the BvAtxxxx.dat files. The Bader volumes can be written using the print options. bader chargefile bader chargefile bader chargefile bader chargefile -p none The default is to write no charge density files. -p all_atom Combine all volumes associated with an atom and write to file. This is done for all atoms and written to files named BvAtxxxx.dat. The volumes associated with atoms are those for which the maximum in charge density within the volume is closest to the atom. -p all_bader Write all Bader volumes (containing charge above threshold of 0.0001) to a file. The charge distribution in each volume is written to a separate file, named Bvolxxxx.dat. It will either be of a CHGCAR format or a CUBE file format, depending on the format of the initial charge density file. These files can be quite large, so this option should be used with caution. -p sel_atom Write the selected atomic volumes, read from the subsequent list or range of volumes. -p sel_bader Write the selected Bader volumes, read from the subsequent list or range of volumes. -p sum_atom Write the sum of selected atomic volumes, read from the subsequent list of volumes. -p sum_bader Write the sum of selected Bader volumes, read from the subsequent list of volumes. -p atom_index Write the atomic volume index to a charge density file. -p bader_index Write the Bader volume index to a charge density file. Visualization The Bader volumes can be written and visualized with the VASP Data Viewer , VMD , or a cube file viewer (such as GaussView) for Gaussian cube files. Examples NaCl crystal (vasp chgcar) NaCl crystal including core charges (vasp chgcar) C 2 H 4 molecule, orientation 1 (vasp chgcar) C 2 H 4 molecule, orientation 2 (vasp chgcar) H 2 O molecule (gaussian cube) Discussion Forum We have a discussion forum to address issues related to the code and running the program. References W. Tang, E. Sanville, and G. Henkelman A grid-based Bader analysis algorithm without lattice bias , J. Phys.: Condens. Matter 21 , 084204 (2009). E. Sanville, S. D. Kenny, R. Smith, and G. Henkelman An improved grid-based algorithm for Bader charge allocation , J. Comp. Chem. 28 , 899-908 (2007). G. Henkelman, A. Arnaldsson, and H. Jónsson, A fast and robust algorithm for Bader decomposition of charge density , Comput. Mater. Sci. 36 , 254-360 (2006). This program was written by Andri Arnaldsson , Wenjie Tang , and Sam Chill , Graeme Henkelman . Improvements to the original algorithm were developed by Ed Sanville (Loughborough University, UK). With contributions from: Johannes Voss (DTU), Erik McNellis (FHI), and Matthew Dyer (Liverpool) Voronoi Polyhedra The electron density contains cusps at the nuclei and decays exponentially away from the nuclei. This suggests that the placement of quadrature points should be dependent on the nuclear positions. This can be achieved by partitioning space into regions (Voronoi Polyhedra), each containing only one atom. The total integral is the sum of single atom integrals. There are a number of such partitioning schemes ; however, the scheme used by the package produced in our research group, Q-C HEM , is that developed by Becke . The integral is split up via weight functions where the weight functions obey These weights are constructed to be almost unity if A is the closest atom, and almost zero in the vicinity of other atoms. This is achieved through the variable , defined by where r A and r B are the distance from atoms A and B , while R AB is the interatomic distance between atoms A and B . The weight function is then described by where the function is defined as Becke then removed the discontinuity at by redefining as a function with Above is the implementation in Q-CHEM. Becke's original implementation also includes a correction for atomic size. This is accomplished by a change in variable, working with instead of , where with a AB defined by where R A and R B are the Bragg-Slater radii . Each of these single-center integrals is then calculated with a spherical polar quadrature grid (requiring the insertion of more weights, w i ), making the final expression for E xc :
个人分类: Information|6562 次阅读|0 个评论
[转载]VASP并行设置---KPAR参数
ywmucn 2013-11-15 08:40
转自: http://www.nsc.liu.se/~pla/blog/2012/09/26/vaspkpar/ Testing the K-point Parallelization in VASP SEP 26 TH , 2012 VASP 5.3.2 finally introduced official support for k-point parallelization. What can we expect from this new feature in terms of performance? In general, you only need many k-points in relatively small cells, so up front we would expect k-point parallelization to improve time-to-solution for small cells with hundreds or thousands of k-points. We do have a subset of users at NSC, running big batches of these jobs, so this may be a real advantage in the prototyping stage of simulations, when the jobs are set up. In terms of actual job throughput for production calculations, however, k-point parallelization should not help much, as the peak efficiency is reached already with 8-16 cores on a single node. So let’s put this theory to test. Previously, I benchmarked the 8-atom FeH system with 400 k-points for this scenario. The maximum throughput was achieved with two 8-core jobs running on the same node, and the time-to-solution peaked at 3 minutes (20 jobs/h) with 16 cores on one compute node. What can k-point parallelization do here? KPAR is the new parameter which controls the number of k-point parallelized groups. KPAR=1 means no k-point parallelization, i.e. the default behavior of VASP. For each bar in the chart, the NPAR value has been individually optimized (and is thereby different for each number of cores). Previously, this calculation did not scale at all beyond one compute node (blue bars), but with KPAR=8 (purple bars), we can get close to linear (1.8x) speed-up going from 1 to 2 nodes, cutting the time-to-solution in half. As suspected, in terms of efficiency, the current k-point parallelization is not more efficient than the old scheme when running on a single node, which means that peak throughput remains the same at roughly 24 jobs/h per compute node. This is a little surprising, given that there should be overhead associated with running two job simultaneously on a node, compared to using k-point parallelization. What must be remembered, though, is that it is considerably easier to handle the file and job management for several sequential KPAR runs vs juggling several jobs per node with many directories, so in this sense, KPAR seems like a great addition with respect to workflow optimization. Posted by Peter Larsson Sep 26 th , 2012 转自: http://www.nsc.liu.se/~pla/blog/2012/11/26/vaspkpar2/ K-point Parallelization in VASP, Part 2 NOV 26 TH , 2012 Previously, I tested the k-point parallelization scheme in VASP 5.3 for a small system with hundreds of k-points. The outcome was acceptable, but less than stellar. Paul Kent (who implemented the scheme in VASP) suggested that it would be more instructive to benchmark medium to large hybrid calculations with just a few k-points, since this was the original use case, and consequently where you would be able to see the most benefit. To investigate this, I ran a 63-atom MgO cell with HSE06 functional and 4 k-points over 4 to 24 nodes: A suitable number of bands here is 192, so the maximum number of nodes we could expect to use with standard parallelization is 12, due to the fact that 12 nodes x 16 cores/node = 192 cores. And we do see that KPAR=1 flattens out at 1.8 jobs/h on 12 nodes. But with k-point parallelization, the calculation can be split into “independent” groups, each running on 192 cores. This enables us, for example, to run the job on 24 nodes using KPAR=2, which in this case translates into a doubling of speed (4.0 jobs/h), compared to the best case scenario without k-point parallelization. So there is indeed a real benefit for hybrid calculations of cells that are small enough to need a few k-points. And remember that in order for the k-point parallelization to work correctly with hybrids, you should set: NPAR = total number of cores / KPAR.
个人分类: VASP|9429 次阅读|0 个评论
[转载]VASP的并行设置---NPAR及NSIM参数
ywmucn 2013-11-15 08:14
转自: http://cms.mpi.univie.ac.at/vasp/guide/node138.html The optimum setting of NPAR and LPLANE depends very much on the type of machine you are running. Here are a few guidelines SGI power challenge: Usually one is running on a relatively small number of nodes, so that load balancing is no problem. Also the communication band width is reasonably good on SGI power challenge machines. Best performance is often achived with LPLANE = .TRUE. NPAR = 1 NSIM = 1Increasing NPAR usually worsens performance. For NPAR=1 we have in fact observed a superlinear scaling w.r.t. the number of nodes in many cases. This is due to the fact that the cache on the SGI power challenge machines is relatively large (4 Mbytes); if the number of nodes is increased the real space projectors (or reciprocal projectors) can be kept in the cache and therefore cache misses decrease significantly if the number of nodes are increased. SGI Origin: The SGI Origin behaves quite different from the SGI Power Challenge. Mainly because the memory bandwidth is a factor of three faster than on the SGI Power Challenge. The following setting seems to be optimal when running on 4-16 nodes: LPLANE = .TRUE. NPAR = 4 NSIM = 4Contrary to the SGI Power Challenge superlinear scaling could not be observed, obviously because data locality and cache reusage is no only of minor importance on the Origin 2000. T3D, T3E On many T3D, T3E platforms one is forces to use a huge number of nodes. In that case load balancing problems and problems with the communication bandwidth are likely to be experienced. In addition the cache is fairly small on T3E and T3D machines so that it is impossible to keep the real space projectors in the cache with any setting. Therefore, we recommend to set NPAR on these machines to (explicit timing can be helpful to find the optimum value). The use of LPLANE = .TRUE. is only recommend if the number of nodes is significantly smaller than NGX, NGY and NGZ. In summary the following setting is recommended LPLANE = .FALSE. NPAR = sqrt(number of nodes) NSIM = 1 转自: http://www.nsc.liu.se/~pla/blog/2012/02/22/nparnsim/ Optimizing NPAR and NSIM FEB 22 ND , 2012 Our VASP users at NSC are sometimes asking about how to set NSIM and NPAR for good parallel performance in VASP. I wrote about NPAR before. But what about the NSIM parameter? The VASP manual says that NSIM=4 by default. It means that 4 bands are optimized in parallel in the RMM-DIIS algorithm, which allows VASP to exploit matrix-matrix BLAS operations instead of matrix-vector operations. But the NSIM/NPAR parameters should be adjusted based on actual underlying hardware (network, typ of processor, caches etc). Here are some results for the 24-atom PbSO4 cell running on a single Kappa compute node. Each bar in the chart below represents the average of three runs. It looks like NPAR and NSIM are largely indepedent factors, with NPAR being the most important one. Varying NPAR can give a performance boost of up to ca 50%, while varying NSIM gives about 10%. The internal variability between runs is less than 1% in this case, so the differences are real. We can conclude that NPAR=1 is optimal for a single-node job, as expected, and that NSIM=2 might be beneficial, instead of keeping the default NSIM. A more realistic example is a 128-atom Li2FeSiO4 supercell. This one we run on 4 nodes (32 cores) on Matter. It is a highly symmetric case with 512 bands. Like before, 3 runs were made for each data point. We find the best performance for NPAR=2/4, in line with previous results. But here, the default NSIM=4 setting seems to produce the worst performance, and the influence of NSIM is higher (up to +20% speed). The optimal choice seems to be NSIM=16. It is tempting to conjecture that NSIM should be increased even more for larger jobs. To investigate the upper limit of VASP jobs, let us look at the NiSi supercell with 504-atoms. It takes about 23 minutes to run a full SCF cycle on 32 Matter nodes. The outcome is not so encouraging, however: NSIM=16 does not deliver an increase in performance, and the influence of smaller NSIM values is dwarfed by other measurement errors. In this case, a likely culprit is the variation in MPI performance when running over many Infiniband switches. So for large jobs, NSIM seems to make less difference. You can leave it at default value. In conclusion: Use NPAR = 1 and NSIM = 2 for single-node jobs Use NPAR = nodes/2 (or nodes) and NSIM=2 for medium jobs. If you have enough bands per core and want to optimize, you can try NSIM=8/16 and see if it helps. Use NPAR = sqrt(nodes) and NSIM=4 for large jobs. 转自; http://www.nsc.liu.se/~pla/blog/2013/03/25/vaspabisko/ Test setup Here, we will be looking at the Li2FeSiO4 supercell test case with 128 atoms. I am running a standard spin-polarized DFT calculation (no hybrid), which I run to self-consistency with ALGO=fast. I adjusted the number of bands to 480 to better match the number of cores per node. Naive single node test A first (naive) test is to characterize the parallel scaling in a single compute node, without doing anything special such as process binding. This produced an intra-node scaling that looks like this after having tuned the NPAR values: Basically, this is what you get when you ask the queue system for 12,16,24,36,48 cores on 1 node with exclusively running rights (no other jobs on the same node), and you just launch VASP with srun $VASPin the job script. We see that we get nice intra-node scaling. In fact, it is much better than expected, but we will see in the next section that this is an illusion. The optimal choice of NPARturned out to be: 12 cores NPAR=1 16 cores NPAR=1 24 cores NPAR=3 36 cores NPAR=3 48 cores NPAR=6 This was also surprising, since I had expected NPAR=8 to be optimal. With these settings, there would be MPI process groups of 6 ranks which exactly fit in a NUMA zone. Unexpectedly, NPAR=6 seems optimal when using all 48 cores, and either NPAR=1 or NPAR=3 for the other cases. This does not fit the original hypothesis, but a weakness in our analysis is that we don’t actually know were the processes end up in this scenario, since there is no binding. The only way that you can get a symmetric communication pattern with NPAR=6 is to place ranks in a round robin scheme around each NUMA zone or socket. Perhaps this is what the Linux kernel is doing? An alternative hypothesis is that the unconventional choice of NPAR creates a load imbalance that may actually be beneficial because it allows for better utilization of the second core in each module. To explore this, I decided to test different binding scenarios. The importance of process binding To bind MPI processes to a physical core and prevent the operating system from moving them on around inside the compute node, you need to give extra flags to either srun or your MPI launching command such as mpirun. On Abisko, we use srun, where binding is controlled through SLURM by setting e.g. in the job script: srun --cpu_bind=rank ... This binds the MPI rank #1 to core #1, and so on in a sequential manner. It is also possible to explicitly specify where each rank should go. The following example binds 24 ranks to alternating cores, so that there is one rank running per Interlagos module: srun --cpu_bind=map_cpu=0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46 ... In this scheme, neighboring ranks are close to each other: i.e. rank #1 and #2 are in the same NUMA zone. The aim is to maximize the NUMA locality. The third type of binding I tried was to distribute the ranks in a round-robin scheme in steps of 6 cores. The aim is to minimize NUMA locality, since neighboring ranks are far apart from each other, i.e. rank #1 and #2 are in different NUMA zones. srun --cpu_bind=map_cpu=0,6,12,18,24,30,36,42,2,8,14,20,26,32,38,44,4,10,16,22,28,34,40,46 ... Below are the results when comparing the speed of running with 48 cores and 24 cores with different kinds of process binding. The 48 core runs are with NPAR=6 and the 24 cores with NPAR=3. It turns out that you can get all of the performance, and even more, by running with 24 cores in the “fat” mode. The trick is, however, that we need to enable the process binding ourselves. It does not happen by default when you run with half the number of cores per node (the “None” section in the graph). We can further observe that straight sequential process binding actually worsens performance in the 48 core scenario. Only in the round-robin NUMA scheme (“RR-NUMA”) can we reproduce the performance of the unbound case. This leads me to believe that running with no binding gets you in similar situation with broken NUMA locality, which explains why NPAR=3/6 is optimal, and not NPAR=4. The most surprising finding,however, is that the top speed was achieved not with the “alternate” binding scheme, which emphasizes NUMA memory locality, but rather with the round-robin scheme, which breaks memory locality of NPAR groups. The difference in speed is small (about 3%), but statistically significant. There are few scenarios where this kind of interleaving over NUMA zones is beneficial, so I suspect that it is not actually a NUMA issue, but rather related to memory caches. The L3 cache is shared between all cores in a NUMA zone, so perhaps the L3 cache is being trashed when all the ranks in an NPAR group are accessing it? It would be interesting to try to measure this effect with hardware counters… NSIM Finally, I also made some tests with varying NSIM: NSIM=4 is the default setting in VASP. It usually gives good performance in many different scenarios. NPAR=4 works on Abisko too, but I gained about 7% by using NPAR=8 or 12. An odd finding was that NPAR=16 completely crippled the performance, doubling the wall time compared to NPAR=4. I have no good explanation, but it obviously seems that one should be careful with too high NPAR values on Abisko. Conclusion and overall speed In terms of absolute speed, we can compare with Triolith, where one node with 16 cores can run this example in 380s (9.5 jobs/h) with 512 bands, using the optimal settings of NPAR=2 and NSIM=1. So the overall conclusion is that one Abisko node is roughly 20% faster than one Triolith node. You can easily become disappointed by this when comparing the performance per core, which is 2.5x higher on Triolith, but I think it is not a fair comparison. In reality, the performance difference per FPU is more like 1.3x, and if you compensate for the fact that the Triolith processors in reality run at much higher frequency than the listed 2.2 Ghz, the true difference in efficiency per core-GHz is closer to 1.2x. Hopefully, I can make some multi-node tests later and determine whether running with 24 cores per node and round-robin binding is the best thing there as well. Posted by Peter Larsson Mar 25 th , 2013
个人分类: VASP|18846 次阅读|0 个评论
能带高对称K点取法大全
热度 1 hellojwx 2013-8-11 18:07
今天发现一篇描述能带高对称K点的文章,针对各种晶格,非常详细,特此留存。 下面是FCC的例子: 使用VASP时,按这个表来取高对称K点,并按图注中的顺序取高对称线书写KPOINTS文件,就很容易做出能带图了。 文章期号: Computational Materials Science Volume 49, Issue 2 , August 2010, Pages 299–312 文章地址: http://www.sciencedirect.com/science/article/pii/S0927025610002697 (免费下载,主要内容在附录中) PDF文件: Kpoints.pdf
30380 次阅读|1 个评论
[转载]POTCAR和vasp能量意义
热度 1 xiaoyutianya 2013-3-19 16:46
POTCAR将要告诉vasp计算的系统中所包含的各种元素的赝势pesudopotential,vasp本身就带有比较完善的赝势包,我们需要做的就是选择我们需要具体哪种赝势,然后把相应的文件拷贝形成我们具体的POTCAR文件。我们以GaAs为例。 1.赝势的选择: vasp的赝势文件放在目录 ~/vasp/potentials 下,可以看到该目录又包含五个子目录 pot pot_GGA potpaw potpaw_GGA potpaw_PBE ,其中每一个子目录对应一种赝势形式。 赝势按产生方法可以分为PP (standard pesudopotential,其中大部分是USPP, ultrasoft pesudopotential) 和 PAW (projector augmented wave method)。按交换关联函数的不同又可以有 LDA (local density approximation) 和 GGA (generalized gradient approximation),其中GGA之下又可以再分为PW91和PBE。 以上各个目录对应起来分别是 pot == PP, LDA ; pot_GGA == PP, GGA ; potpaw == PAW, LDA ; potpaw_GGA == PAW, GGA, PW91 ; potpaw_PBE == PAW , GGA, PBE。选择某个目录进去,我们还会发现对应每种元素往往还会有多种赝势存在。这是因为根据对截断能量的选取不同还可以分为 Ga,Ga_s,Ga_h,或者根据半芯态的不同还可以分为Ga,Ga_sv,Ga_pv的不同。 一般推荐选取PAW_PBE。其中各个元素具体推荐哪种形式的赝势可以参考vasp workshop中有关赝势部分的ppt。当然自己能测试之后在选择是最好不过的了,以后再聊。 2.POTCAR的建立: 选好哪一种赝势之后,进入对应的目录,你会看到里边有这么几个文件,POTCAR.Z PSCTR.Z V_RHFIN.Z WS_FTP.LOG 。我们需要的是第一个。把它解压,如 zcat POTCAR.Z Ga 。对As元素我们也可以类似得到一个As文件。用 cp 命令或者 mv 命令把这两个文件都移到我们的工作目录里。然后再用 cat 命令把这两个文件合并在一起,如 cat Ga As POTCAR ,这样就得到了我们需要的POTCAR。同理,有多个元素的POTCAR也可以这样产生。这里需要注意的是,记住元素的排列顺序,以后在POSCAR里各个元素的排列就是按着这里来的。 3.POTCAR里的信息: 如果你想看POTCAR长什么样,可以用 vim POTCAR 命令,进去后可以用上下键移动光标。想出来的时候,可以敲入:q!就可以。具体的vim的命令可以在网上查到。一般我会看POTCAR里的截断能量为多大,用 grep -in enmax POTCAR 。 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 据说B3LYP的赝势计算比较准,我在MS上面测试过,好像DOS和能带图的计算确实比较准。不过不知道vasp有没有类似的赝势包。 hybrid functional的计算,并不需要特定的hybrid functional 的赝势。大部分就是基于GGA-PBE的赝势来做,也就是芯电子与价电子的交换关联作用,以及芯电子与芯电子的交换关联作用还是基于GGA-PBE的,只是将价电子与价电子的交换关联作用通过hybrid functional交换关联来描述。 谢谢老师的解答。那具体操作是不是像网上写的那样,使用GGA的赝势,设置GGA = B3,然后更改 POTCAR里面的LEXCH =B3就行了。我试过了,可以跑,不过结果没做详细的分析。 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// VASP是使用赝势和平面波基组,进行从头量子力学分子动力学计算的软件包,它基于CASTEP 1989版开发。VAMP/VASP中的方法基于有限温度下的局域密度近似(用自由能作为变量)以及对每一MD步骤用有效矩阵对角方案和有效Pulay混 合求解瞬时电子基态。这些技术可以避免原始的Car-Parrinello方法存在的一切问题,而后者是基于电子、离子运动方程同时积分的方法。离子和电 子的相互作用超缓Vanderbilt赝势(US-PP)或投影扩充波(PAW)方法描述。两种技术都可以相当程度地减少过渡金属或第一行元素的每个原子 所必需的平面波数量。力与张量可以用VAMP/VASP很容易地计算,用于把原子衰减到其瞬时基态中。 VASP程序的亮点: 1. VASP使用PAW方法或超软赝势,因此基组尺寸非常小,描述体材料一般需要每原子不超过100个平面波,大多数情况下甚至每原子50个平面波就能得到可靠结果。 2. 在平面波程序中,某些部分代码的执行是三次标度。在VASP中,三次标度部分的前因子足可忽略,导致关于体系尺寸的高效标度。因此可以在实空间求解势的非局域贡献,并使正交化的次数最少。当体系具有大约2000个电子能带时,三次标度部分与其它部分可比,因此VASP可用于直到4000个价电子的体系。 3. VASP使用传统的自洽场循环计算电子基态。这一方案与数值方法组合会实现有效、稳定、快速的Kohn-Sham方程自洽求解方案。程序使用的迭代矩阵对角化方案(RMM-DISS和分块Davidson)可能是目前最快的方案。 4. VASP包含全功能的对称性代码,可以自动确定任意构型的对称性。 5. 对称性代码还用于设定Monkhorst-Pack特殊点,可以有效计算体材料和对称的团簇。Brillouin区的积分使用模糊方法或四面体方法。四面体方法可以用Blouml;chl校正去掉线性四面体方法的二次误差,实现更快的k点收敛速度。 VASP 5.2的新功能: 1. 大规模并行计算需要较少的内存。 2. 加入新的梯度校正泛函AM05和PBEsol;用标准PBE POTCAR文件提供新泛函;改善了单中心处理。 3. 离子位置和格矢中加入有限差分,从而得到二阶导,用于计算原子间力常数和声子(需要超晶胞近似),和弹性常数。计算中自动考虑对称性。 4. 离子位置和静电场中加入线性响应,从而得到二阶导,用于计算原子间力常数和声子(需要超晶胞近似),Born有效电荷张量,静态介电张量(电子和离子贡献),内应变张量,压电张量(电子和离子贡献)。线性响应只能用于局域和半局域泛函。 5. 精确的非局域交换和杂化泛函:Hartree-Fock方法;杂化泛函,特别是PBE0和HSE06;屏蔽交换;(实验性的)简单模型势GW-COHSEX,用于经验的屏蔽交换内核;(实验性的)杂化泛函B3LYP。 6. 通过本征态求和计算含频介电张量:使用粒子无关近似,或通过GW的随机相近似。可用于局域,半局域,杂化泛函,屏蔽交换,和Hartree-Fock。 7. 完全含频GW,速度达到等离子极点模型:单发G0W0;在G和W中迭代本征矢直至自洽;(实验性的)迭代G(也可以选W)本征矢的自洽GW;(实验性的)对相关能使用RPA近似的GW总能量;用LDA计算G和W的顶点校正(局域场效应),仅能用于非自旋极化的情况;(实验性的)W的多体顶点校正,仅能用于非自旋极化的情况。 8. 实验性的功能:用TD-HF和TD-杂化泛函求解Cassida方程(仅能用于非自旋极化的Tamm-Dancoff近似);GW顶点的Bethe-Salpeter(仅能用于非自旋极化的Tamm-Dancoff近似)。 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 让你彻底明白所有vasp里能量的物理意义 (一)首先我们应明白,固体的结合能就是固体的内能E(结合)=U(内能), 原因如下: 一般情况都把孤立原子的能量作为能量参考点。前段时间有个同学问VASP中得出的绝对能量是相对于什么的,其实就是相对孤立原子得。 (二)其次我们根据自由能与内能之间的关系F=U-TS 而且我们都知道VASP的所有计算都是在绝对0度下的情况,T=0代入上式,有F=U。所以结合就等于内能等于自由能。肯定有Free energy TOTEN=energy without entropy恒成立... 这时候肯定有人会说不对啊,可以看VASP手册,候博的参考书作证,肯定不对得。 现在我告诉你确实它们二者确实有区别,区别在下面的情况 (1)当我们用ISMEAR=-5时,费米能这儿没有展宽,它算出来的就是完全在绝对0度的能量。Free energy TOTEN=energy without entropy恒成立。 (2)有时为了在数学上处理的方便,为了更容易积分,我们也用ISMEAR!=-5(!=是不等于的意思)的方法,这个时候费米能这儿有一定的展宽。此时,我们容易想到,有展宽不就是相当有一定的熵值吗?所以这个时候虽然算的是绝对0度的情况,但是有一定的熵值(我们应明白,这个熵值不是由一定的温度带来的,而是数学处理的结果)。所以在SMEAR!=-5的方法我们会发现Free energy TOTEN和energy without entropy有一定的差别。此时energy without entropy是Free energy TOTEN在SIGMA趋于0的极限。 注意:(1)有人在算单个原子的能量时会发现单个原子的能量虽然很小但并不是0,但是按我上面的推导,固体中的结合能是相对孤立体系的能量而来的,所以单个原子得到的TOTEN肯定是0啊,原因在于我们的POTCAR不可能绝对合理,而且我们也知道计算单个原子的能量就是为了检测赝势,单原子得到的TOTEN越小说明赝势越好。但一般不会正好是0. (2)如果你注意的话,energy without entropy与Free energy TOTEN在SIGMA趋于0也不是完全相等,但是也会发现它们之间的差别在10E-3左右,原因在于计算机求积分、求极限不能像我们人一样达到任意的精度。 还有,指出你几个概念上的问题,供探讨 第一,关于结合能。结合能是定义为相距无穷远的原子结合形成一定结构的物质所放出的能量 第二,关于单点能。它是第一性原理计算直接得到的能量,或者说是赝能,是一个空间点阵平均每阵点上采用赝势计算所得到的能量,其中包含了结合能的贡献,但是更多的,也包含了靠近芯区附近的电子在采用赝势近似下的能量,这一部分能量既不是原子芯区附近电子能量的真实反应,也不会影响化学键性质,不会对结合能有所贡献。 第三,Free energy TOTEN是体系总能,要减去阵点上分布的原子的能量再除以平均原子数才是结合能(当然,这个和你的计算脚本的设计有关),而且这还没有考虑不加展宽时没有被计算到的能带的因素。 第四,是否考虑能级展宽,和结合能的定义没有关系。 第五,结合能计算时对单个原子能量的计算应该只计算Gamma点能量,且用消除简并。 关于你说的这几点做个讨论 (一)关于结合能。你说“结合能是定义为相距无穷远的原子结合形成一定结构的物质所放出的能量” 你和我说的没区别,我说的是结合能是相对于“孤立原子做参考点的”,也就是它与周围任何原子没有相互作用,和你所说的相距无穷远一回事,我这个好像没有任何错误。 (二)关于单点能。你说“它是第一性原理计算直接得到的能量,或者说是赝能,是一个空间点阵平均每阵点上采用赝势计算所得到的能量,其中包含了结合能的贡献,但是更多的,也包含了靠近芯区附近的电子在采用赝势近似下的能量,这一部分能量既不是原子芯区附近电子能量的真实反应,也不会影响化学键性质,不会对结合能有所贡献”。 我赞同你的大部分观点,也提出你说的几点错误,单点能准确的来说它包含了所有哈密顿的量,而且这儿的单点能不是你所说的“平均每个原子的能量”,而是你计算的整个原胞的能量。但是这个能量有一个参考点。你可以看候博得,也可以看我回的下一个贴子,至于“影响不影响成键之类的内容”固体力学上已经说的很清楚了。 (三)你说“Free energy TOTEN是体系总能,要减去阵点上分布的原子的能量再除以平均原子数才是结合能(当然,这个和你的计算脚本的设计有关),而且这还没有考虑不加展宽时没有被计算到的能带的因素” 我不赞同你后面说的几点。Free energy TOTEN从字面意思上我们也知道它的结果是自由能,你可以说它是总能,因为根据我上面的推导,它们至少在数值是相等得。不在于你把它说成什么,你就是把它说成总能,其实它还是等于结合能,等于自由能,等于内能。至于除不除原子总数在于你想得到的是平均每个原子的还是总体系的,这在于个人。考虑不考虑展宽,那要看ISMEAR等于几,做几个实例就会感觉到它考虑没考虑了。 (四)你说“是否考虑展宽和结合能的定义没有关系” 我也没说和它的定义有什么关系啊,但是由于数学处理带来的误差,它对结合能的结果有一定的影响啊。 (五)对单个原子的结合能的计算应该只计算Gamma点的能量,且用削除简并。 你说得第五点我不懂,我算单个原子的能量时一直是按三个表面的构造方法来算的,也没想过什么简并。还望有高手给我帮助,第五点怎么理解。 我给你写一遍候柱锋书上怎么说结合能得,然后和我说得对照一下:“VASP计算得到的总能己经减去了在以原子参考组态计算得到的总能(也就是构造赝势时,得到的总能,对应于POTCAR文件中的EATOM)”要得到准确的结合能,还需要减去前面单个原子计算中的第2种情况计算得到的修正值。 所以:::::我们可以认为vasp得到的总能就是结合能,但是由于赝势带来的影响,它存在一定的误差。为什么要减去修正值。我在这儿做个解释,由于我们在计算单原子时也用这个赝势了,计算总能时也用这个赝势了,两都有误差,但对于同一种元素来说,它们的误差相近,这样相减的话,正好能把误差消去(不可能完全消去,但是使我们的结果更加精确)。 这只是为了提高精度,就像候博说得“为了得到准确的结合能”,候博不是说从前面的计算来得到结合能,这只是为了考虑POTCAR带来的误差,而不是概念上差别。 关于你说的这几点做个讨论 (一)关于结合能。你说“结合能是定义为相距无穷远的原子结合形成一定结构的物质所放出的能量” 你和我说的没区别,我说的是结合能是相对于“孤立原子做参考点的”,也就是它与周围任何原子没有相互作用,和你所说的相距无穷远一回事,我这个好像没有任何错误。 =============== 这里你说的是没有错误,但是我觉得有必要先澄清一下。 (二)关于单点能。你说“它是第一性原理计算直接得到的能量,或者说是赝能,是一个空间点阵平均每阵点上采用赝势计算所得到的能量,其中包含了结合能的贡献,但是更多的,也包含了靠近芯区附近的电子在采用赝势近似下的能量,这一部分能量既不是原子芯区附近电子能量的真实反应,也不会影响化学键性质,不会对结合能有所贡献”。 我赞同你的大部分观点,也提出你说的几点错误,单点能准确的来说它包含了所有哈密顿的量,而且这儿的单点能不是你所说的“平均每个原子的能量”,而是你计算的整个原胞的能量。但是这个能量有一个参考点。你可以看候博得,也可以看我回的下一个贴子,至于“影响不影响成键之类的内容”固体力学上已经说的很清楚了。 ============== 从你的回复中,我可以知道你肯定没有学过晶体学或者空间群理论,你应该看看晶体学国际表中对于阵点的定义,阵点并不是每个原子,这里你的理解有问题,阵点是一个抽象点,一个晶体中包含所有对称性的可以仅通过平移来构造整个晶体的结构所占据的位置就是一个阵点,换句话说,一个阵点,就是一个满足平移对称性的原子集团,且该集团内部的位置满足该晶体结构的全部对称性,而且它不仅仅是“原胞” (三)你说“Free energy TOTEN是体系总能,要减去阵点上分布的原子的能量再除以平均原子数才是结合能(当然,这个和你的计算脚本的设计有关),而且这还没有考虑不加展宽时没有被计算到的能带的因素” 我不赞同你后面说的几点。Free energy TOTEN从字面意思上我们也知道它的结果是自由能,你可以说它是总能,因为根据我上面的推导,它们至少在数值是相等得。不在于你把它说成什么,你就是把它说成总能,其实它还是等于结合能,等于自由能,等于内能。至于除不除原子总数在于你想得到的是平均每个原子的还是总体系的,这在于个人。考虑不考虑展宽,那要看ISMEAR等于几,做几个实例就会感觉到它考虑没考虑了。 =============== 这个能量确切的说应该是叫做考虑电子振动熵的体系总自由能,当不考虑展宽的时候,它是等于总能的,如果你读过Vasp的代码,就知道TOTEN在vasp的计算中就是总能,这个和结合能不是一个概念,还包含有非成键部分的贡献,至于内能的定义,如果你阅读过塞兹的现代固体理论,或者Pauling的书,或者读过Morse当时提出morse势的那篇文献,就应该知道,固体物理中所使用的内能,指的是离子实的动能和原子的“结合能”之和——这里结合能之所以要打引号,是因为按定义,是要形成稳定结构或者亚稳态结构时才能称之为结合能,内能定义并没有考虑粒子芯区附近电子能量的影响,正如你所说,是“相对于“孤立原子做参考点的””,在0K下已经不考虑动能,因此就应是总能减去孤立原子的能量和才行,至于结合能,则是稳定状态下结构的这个能量。 (四)你说“是否考虑展宽和结合能的定义没有关系” 我也没说和它的定义有什么关系啊,但是由于数学处理带来的误差,它对结合能的结果有一定的影响啊。 (五)对单个原子的结合能的计算应该只计算Gamma点的能量,且用削除简并。 你说得第五点我不懂,我算单个原子的能量时一直是按三个表面的构造方法来算的,也没想过什么简并。还望有高手给我帮助,第五点怎么理解。 ============= 简单的操作是计算单个原子能量只考虑Gamma点,然后三边都设置在10A以上,且不相等 至于原因,应该去查量子力学的书,记得本科的时候,老师都会讲到的。 根据F=U-TS,E(结合)=E(bulk)-nE(单个离散)。而E(bulk)就是U,通常我们取E(离散)为参考点。也就是把E(离散)看为0,这样推出来,在T=0时,F=E(结合)。 它是包含你所说得那些,而且就像我在前面的贴子中说得,它就是总得H得到的能量,但是它有一个参考,而这个参考就是离散原子的能量
个人分类: 计算VASP学习|5019 次阅读|1 个评论
[转载]vasp的分子动力学模拟
guolingju 2013-2-28 20:36
vasp做分子动力学的好处,由于vasp是近些年开发的比较成熟的软件,在做电子scf速度方面有较好的优势。 缺点:可选系综太少。 尽管如此,对于大多数有关分子动力学的任务还是可以胜任的。 主要使用的系综是 NVT 和 NVE。 下面我将对主要参数进行介绍! 一般做分子动力学的时候都需要较多原子,一般都超过100个。 当原子数多的时候,k点实际就需要较少了。有的时候用一个k点就行,不过这都需要严格的测试。通常超过200个原子的时候,用一个k点,即Gamma点就可以了。 INCAR: EDIFF 一般来说,用1E-4 或者1E-5都可以,这个参数只是对第一个离子步的自洽影响大一些,对于长时间的分子动力学的模拟,精度小一点也无所谓,但不能太小。 IBRION=0 分子动力学模拟 IALGO=48 一般用48,对于原子数较多,这个优化方式较好。 NSW=1000 多少个时间步长。 POTIM=3 时间步长,单位fs, 通常1到3. ISIF=2 计算外界的压力. NBLOCK= 1 多少个时间步长,写一次CONTCAR,CHG和CHGCAR,PCDAT. KBLOCK=50 NBLOCK*KBLOCK 个步长写一次 XDATCAR. ISMEAR=-1 费米迪拉克分布. SIGMA =0.05 单位:电子伏 NELMIN=8 一般用6到8, 最小的电子scf数.太少的话,收敛的不好. LREAL=A APACO=10 径向分布函数距离, 单位是埃. NPACO=200 径向分布函数插的点数. LCHARG=F 尽量不写电荷密度,否则CHG文件太大. TEBEG=300 初始温度. TEEND=300 终态温度。 不设的话,等于TEBEG. SMASS -3 NVE ensemble;-1 用来做模拟退火。大于0 NVT 系综。 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1)收敛判据的选择 结构弛豫的判据一般有两种选择:能量和力。这两者是相关的,理想情况下,能量收敛到基态,力也应该是收敛到平衡态的。但是数值计算过程上的差异导致以二者为判据的收敛速度差异很大,力收敛速度绝大部分情况下都慢于能量收敛速度。这是因为力的计算是在能量的基础上进行的,能量对坐标的一阶导数得到力。计算量的增大和误差的传递导致力收敛慢。 到底是以能量为收敛判据,还是以力为收敛判据呢?关心能量的人,觉得以能量为判据就够了;关心力相关量的人,没有选择,只能用力作为收敛标准。对于超胞体系的结构优化,文献大部分采用Gamma点做单点优化。这个时候即使采用力为判据(EDIFFG=-0.02),在做静态自洽计算能量的时候,会发现,原本已经收敛得好好的力在不少敏感位置还是超过了结构优化时设置的标准。这个时候,是不是该怀疑对超胞仅做Gamma点结构优化的合理性呢?是不是要提高K点密度再做结构优化呢 在我看来,这取决于所研究的问题的复杂程度。我们的计算从原胞开始,到超胞,到掺杂结构,到吸附结构,到反应和解离。每一步都在增加复杂程度。结构优化终点与初始结构是有关的,如果遇到对初始结构敏感的优化,那就头疼了。而且,还要注意到,催化反应不仅与原子本身及其化学环境有关,还会与几何构型有关。气固催化反应过程是电子的传递过程,也是分子拆分与重新组合的过程。如果优化终点的构型不同,可能会导致化学反应的途径上的差异。仅从这一点来看,第一性原理计算的复杂性,结果上的合理性判断都不是手册上写的那么简单。 对于涉及构型敏感性的结构优化过程,我觉得,以力作为收敛判据更合适。而且需要在Gamma点优化的基础上再提高K点密度继续优化,直到静态自洽计算时力也是达到收敛标准的。 (2)结构优化参数设置 结构优化,或者叫弛豫,是后续计算的基础。其收敛性受两个主要因素影响:初始结构的合理性和弛豫参数的设置。 初始结构 初始结构包括原子堆积方式,和自旋、磁性、电荷、偶极等具有明确物理意义的模型相关参数。比如掺杂,表面吸附,空位等结构,初始原子的距离,角度等的设置需要有一定的经验积累。DFT计算短程强相互作用(相对于范德华力),如果初始距离设置过远(如超过4埃),则明显导致收敛很慢甚至得到不合理的结果。 比较好的设置方法可以参照键长。比如CO在O顶位的吸附,可以参照CO2中C-O键长来设置(如增长20%)。也可以参照文献。记住一些常见键长,典型晶体中原子间距离等参数,有助于提高初始结构设置的合理性。实在不行,可以先在小体系上测试,然后再放到大体系中算。 弛豫参数 弛豫参数对收敛速度影响很大,这一点在计算工作没有全部铺开时可能不会觉察到有什么不妥,反正就给NSW设置个“无穷大”的数,最后总会有结果的。但是,时间是宝贵的,恰当的设置3小时就收敛的结果,不恰当的设置可能要一个白天加一个黑夜。如果你赶文章或者赶着毕业,你就知道这意味这什么。 结构优化分电子迭代和离子弛豫两个嵌套的过程。电子迭代自洽的速度,有四个响很大的因素:初始结构的合理性,k点密度,是否考虑自旋和高斯展宽(SIGMA);离子弛豫的收敛速度,有三个很大的影响因素:弛豫方法(IBRION),步长(POTIM)和收敛判据(EDIFFG). 一般来说,针对理论催化的计算,初始结构都是不太合理的。因此一开始采用很粗糙的优化(EDIFF=0.001,EDIFFG=-0.2),很低的K点密度(Gamma),不考虑自旋就可以了,这样NSW60的设置就比较好。其它参数可以默认。 经过第一轮优化,就可以进入下一步细致的优化了。就我的经验,EDIFF=1E-4,EDIFFG=-0.05,不考虑自旋,IBRION=2,其它默认,NSW=100;跑完后可以设置IBRION = 1,减小OPTIM(默认为0.5,可以设置0.2)继续优化。 优化的时候让它自己闷头跑是不对的,经常看看中间过程,根据情况调节优化参数是可以很好的提高优化速度。这个时候,提交两个以上的任务排队是好的方式,一个在调整的时候,下一个可以接着运行,不会因为停下当前任务导致机器空闲。 无论结构优化还是静态自洽,电子步的收敛也常常让新手头痛。如果电子步不能在40步内收敛,要么是参数设置的问题,要么是初始模型太糟糕(糟糕的不是一点点)。 静态自洽过程电子步不收敛一般是参数设置有问题。这个时候,改变迭代算法(ALGO),提高高斯展宽(SIGMA增加),设置自洽延迟(NELMDL)都是不错的方法。对于大体系比较难收敛的话,可以先调节AMIN,BMIX跑十多步,得到电荷密度和波函数,再重新计算。实在没办法了,可以先放任它跑40步,没有收敛的迹象的话,停下来,得到电荷密度和波函数后重新计算。一般都能在40步内收敛。 对于离子弛豫过程,不调节关系也不大。开始两个离子步可能要跑满60步(默认的),后面就会越来越快了。 总的说来,一般入门者,多看手册,多想多理解,多上机实践总结,比较容易提高到一个熟练操作工的水平。 如果要想做到“精确打击”,做到能在问题始发的时候就立刻采取有效措施来解决,就需要回归基础理论和计算方法上来了。 (3)优化结果对初始结构和“优化路径”的依赖 原子吸附问题不大,但是小分子吸附,存在初始构型上的差异。slab上水平放置,还是垂直放置,可能导致收敛结果上的差异。根据H-K理论,理想情况下,优化得到的应该是全局最小,但在数值计算的时候可能经常碰到不是全局最小的情况。实际操作中发现,多个不同初始结构优化收敛后在能量和结构上存在一定差异。 为了加快收敛速度,特别是对于表面-分子吸附结构,初始放松约束,比如EDIFF=1E-3,EDIFFG=-0.3,NSW=30可能是很好的设置。但是下面的情况应当慎重: EDIFF=1E-3; EDIFFG=-0.1;!或者更小 NSW=500;!或者更大 电子步收敛约束较小,而离子步约束偏大,离子步数又很多,这种情况下,可能导致的结果是结构弛豫到严重未知的区间。 再在这个基础上提高约束来优化,可能就是徒劳的了——结果不可逆转的偏向不正常的区间。 好的做法,是对初始结构做比较松弛的约束,弛豫离子步NSW应该限制在一个较小的数值内。EDIFF=1E-3的话,EDIFFG也最好是偏大一些,如-0.3而不是-0.1. 这样可以在较少的步数内达到初步收敛。 对于远离基态的初始结构,一开始在非常松弛的约束下跑若干离子步,时间上带来的好处是很大的。对于100个原子的体系用vasp做Gamma点优化,如果一开始就是正常优化( EDIFF=1E-4,EDIFFG=-0.02)设置,开始十个离子步可能都要花上几个小时。如果这个时候才发现输入文件有错误,那下午的时间就白费了,顺便带上晚上机器空转。 所以,我习惯的做法,是在初始几步优化后,会用xcrysden 检查一下XDATCAR中的数据,用xdat2xyz.pl生成movie.xyz,然后看看弛豫过程是不是按照设想的那样。后续过程跑完一个收敛过程,就再检查一下movie.xyz。如此这般,才放心的展开后续计算。 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 结构完全相同的、处于各种运动状态的、各自独立的系统的集合。全称为统计系综。系综是用统计方法描述热力学系统的统计规律性时引入的一个基本概念;系综是统计理论的一种表述方式;系综并不是实际的物体,构成系综的系统才是实际物体。 研究气体热运动性质和规律的早期统计理论是气体动理论。统计物理学的研究对象和研究方法与气体动理论有许多共同之处,为了避免气体动理论研究中的困难,它不是以分子而是以由大量分子组成的整个热力学系统为统计的个体。系综理论使统计物理成为普遍的微观统计理论。 系统的一种可能的运动状态,可用相宇中的一个相点表示,随着时间的推移,系统的运动状态改变了,相应的相点在相宇中运动,描绘出一条轨迹,由大量系统构成的系综则可表为相宇中大量相点的集合,随着时间的推移,各个相点分别沿各自的轨迹运动,类似于流体的流动。系综并不是实际的物体,构成系综的系统才是实际物体。约束条件是由一组外加宏观参量来表示。在平衡统计力学范畴下,可以用来处理稳定系综。 一、常用系综分类 根据宏观约束条件,系综被分为以下几种: 1. 正则系综(canonical ensemble),全称应为“宏观正则系综”,简写为NVT,即表示具有确定的粒子数(N)、体积(V)、温度(T)。正则系综是蒙特卡罗方法模拟处理的典型代表。假定N个粒子处在体积为V的盒子内,将其埋入温度恒为T的热浴中。此时,总能量(E)和系统压强(P)可能在某一平均值附近起伏变化。平衡体系代表封闭系统,与大热源热接触平衡的恒温系统。正则系综的特征函数是亥姆霍兹自由能F(N,V,T)。 2. 微正则系综(micro-canonical ensemble),简写为NVE,即表示具有确定的粒子数(N)、体积(V)、总能量(E)。微正则系综广泛被应用在分子动力学模拟中。假定N个粒子处在体积为V的盒子内,并固定总能量(E)。此时,系综的温度(T)和系统压强(P)可能在某一平均值附近起伏变化。平衡体系为孤立系统,与外界即无能量交换,也无粒子交换。微正则系综的特征函数是熵S(N,V,E)。 3. 等温等压(constant-pressure,constant-temperature),简写为NPT,即表示具有确定的粒子数(N)、压强(P)、温度(T)。一般是在蒙特卡罗模拟中实现。其总能量(E)和系统体积(V)可能存在起伏。体系是可移动系统壁情况下的恒温热浴。特征函数是吉布斯自由能G(N,P,T)。 4. 等压等焓(contant-pressure,constant- enthalpy),简写为NPH,即表示具有确定的粒子数(N)、压强(P)、焓(H)。由于由于H =E+PV,故在该系综下进行模拟时要保持压力与焓值为固定,其调节技术的实现也有一定的难度,这种系综在实际的分子动力学模拟中已经很少遇到了。 5. 巨正则系综(grand canonical ensemble),简写为VTμ,即表示具有确定的粒体积(V)、温度(T)和化学势(μ)。巨正则系综通常是蒙特卡罗模拟的对象和手段。此时、系统能量(E)、压强(P)和粒子数(N)会在某一平均值附近有一个起伏。体系是一个开放系统,与大热源大粒子源热接触平衡而具有恒定的T,。特征函数是马休(Massieu)函数J(μ,V,T)。 二、系综调节 系综调节主要是指在进行分子动力学计算过程中,对温度和压力参数的调节,分为调温技术和调压技术。 1. 调温技术 在 NVT 系综或 NPT系综中,即使在 NVE系综模拟的平衡态中,也经常调整温度到期望值。如果希望知道系统的平衡态性质怎样依赖于温度,那么就必须在不同的温度下进行模拟。 目前实现对温度的调节有 4种方式:速度标度、Berendsen热浴、Gaussian热浴、Nose—Hoover热浴。 2. 调压技术 在等压模拟中,可以通过改变模拟原胞的三个方向或一个方向的尺寸来实现体积的变化.类似于温度控制的方法,也有许多方法用于压力控制,总的来说有以下 3种技术:Berendsen方法、Anderson方法、Parrinello-Rahman方法。 三、系综选择 原则上巨正则系综应用最广,但却不一定是最方便的。因为可以看到三种系综的演化过程既是约束解除的过程,却是以增加变量为代价的,这也就增加了数学上的复杂性。因此一般情况下如果不需求解。,则不必使用巨正则系综。 系综选择的基本原则为: 1. 微正则系综能够简单的求得近独立,全同,定域粒子系统,并且每个粒子只能有两个不同的可能状态,例如简单的铁磁,顺磁模型 2. 微正则系综难求的系统,可用正则系综求解 3. 当微正则和正则系综均难求时,可用巨正则系综求解 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 系综(ensemble):在一定的宏观条件下,大量性质和结构完全相同的、处于各种运动状态的、各自独立的系统的集合。全称为统计系综。 系综是用统计方法描述热力学系统的统计规律性时引入的一个基本概念;系综是统计理论的一种表述方式。 目录 系综的性质 研究对象 常用的三个系综 原理 编辑本段系综的性质   系综是假想的概念,并不是真实的客观实体。真正的实体是组成系综的一个个系统,这些系统具有完 全相同的力学性质。   每个系统的微观状态可能相同,也可能不同,但是处于平衡状态时,系综的平均值应该是确定的。编辑本段研究对象   研究气体热运动性质和规律的早期统计理论是气体动理论。统计物理学的研究对象和研究方法与气体动理论有许多共同之处,为了避免气体动理论研究中的困难,它不是以分子而是以由大量分子组成的整个热力学系统为统计的个体。系综理论使统计物理成为普遍的微观统计理论。编辑本段常用的三个系综   J.W. 吉布斯把整个系统作为统计的个体 ,提出研究大量系统构成的系综在相宇中的分布,克服了气体动理论的困难,建立了统计物理。在平衡态统计理论中,对于能量和粒子数固定的孤立系统,采用微正则系综(NVE);对于可以和大热源交换能量但粒子数固定的系统,采用正则系综(NVT);对于可以和大热源交换能量和粒子的系统,采用巨正则系综(mVT)。这是三种常用的系综,各系综在相宇中的分布密度函数均已得出。量子统计与经典统计的研究对象和研究方法相同,在量子统计中系综概念仍然适用。区别在于量子统计认为微观粒子的运动遵循量子力学规律而不是经典力学规律,微观运动状态具有不连续性,需用量子态而不是相宇来描述 。编辑本段原理   系统的一种可能的运动状态,可用相宇中的一个相点表示,随着时间的推移,系统的运动状态改变了,相应的相点在相宇中运动,描绘出一条轨迹,由大量系统构成的系综则可表为相宇中大量相点的集合,随着时间的推移,各个相点分别沿各自的轨迹运动,类似于流体的流动。   若系统具有s个自由度,则相宇是以s个广义坐标p(详写为p、p2……ps)和s个广义动量q(详写为q1、q2……qs)为直角坐标构成的2s维空间。在相宇内任一点(p,q)附近单位相体积元内的相点数目D(p,q,t)称为密度函数。D(p,q,t)在整个相宇的积分等于全部相点数,即等于系综所包含的全部系统数N,与时间t无关。定义ρ(p,q,t)=D(p,q,t)/N,称为系综的概率密度函数。ρ(p,q,t)dp dq表示在t时刻出现在(p,q)点附近相体积元dp dq内的相点数在全部相点数中所占的比值,即表示任一系统在t时刻其运动状态处于(p,q)附近的相体积元dp dq内的概率。显然 ,概率密度函数ρ(p,q,t)满足归一化条件∫ρ(p,q,t)dpdq=1。   统计物理学的认为系统的任意宏观量I(t)是相应微观量L(p,q)在一定宏观条件下对系统一切可能的微观运动状态的统计平均值,即I(t)=∫L(p,q)ρ(p,q,t)dp dq。由此可见,经典统计物理的基本课题是确定各种条件下系综的概率密度函数ρ(p,q,t),ρ确定后,即可对相应的热力学系统的宏观性质作出统计描述。这就是统计系综的方法。   ρ(p,q,t)的具体形式与系统所处的宏观状态有关。如果系统处于平衡态,则ρ=ρ(p,q)不显含时间t,在平衡态的系综理论中,由能量、体积和粒子数都固定的系统构成的统计系综称为微正则系综;由与温度恒定的大热源接触,具有确定粒子数和体积的系统构成的统计系综称为正则系综;由与温度恒定的大热源和化学势恒定的大粒子源接触,具有确定体积的系统构成的统计系综称为巨正则系综;由与温度恒定的大热源接触并通过无摩擦的活塞与恒压强源接触,具有确定粒子数的系统构成的统计系综称为等温等压系综。上述各种统计系综都有各自的概率密度函数。在微正则系综中,系统处于所有可能的微观状态上的概率都相等,即概率密度是不随时间改变的常数,这就是等概率原理。等概率原理是平衡态统计物理的基本假设,它的正确性由它的推论与实际相符而得到肯定。由微正则系统可以推导出其它系综的概率分布函数的形式。 微正则系综是由许多具有相同能量,粒子数,体积的体系的集合。它是统计力学系综的一种。其配分函数Ω是在能量E_0上的能态密度。微正则系综是个简并度下的正则系综,正则系综可以被分开进入子系综,每个子系综被对应到可能的能量值且自身为另一些微正则系综。
个人分类: 第一性原理(vasp)|9471 次阅读|0 个评论
vasp NEB 计算总结
shengxianlei06 2013-2-4 14:18
按照网页http://theory.cm.utexas.edu/vtsttools/downloads/的说明,把NEB模块镶嵌到vasp中去 准备好程序后: (1)给出反应物( POSCAR.IS )和生成物(POSCAR.FS)的初始坐标 (2)xlsheng:NEB$ nebmake.pl POSCAR.IS POSCAR.FS 8 !!! 线性插值给出8个中间反应物,也可以更多16 or 32等等 xlsheng:NEB$ls xlsheng:NEB$00 \01 \02 \03 \04 \04 \06 \07 \08 \09 POSCAR.IS POSCAR.FS !!!带斜杠“\”的表示文件夹 (3)xlsheng:NEB$ nebmovie.pl !!! 这时,会生成一个movie.xyz文件 (4)xlsheng:NEB$xcrysden --xyz movie.xyz !!! 观看坐标演化的动画,确认坐标是连续变化的,相互之间没用交叉。这一步如果有问题,再返回去重新调整初始坐标,然后重复上述的(1)(2)(3)(4)步,直到确认坐标是连续放映的动画,这时候就可以作计算了。 (5)对00 和 09中的结构作结构优化 (6)xlsheng:NEB$vasp log !!!在该目录下作neb计算 (7)xlsheng:NEB$ nebresult.pl (8)xlsheng:NEB$gv mep.eps !!!观看结果,大概会出现一个如下图红线所示的结果 ########################################################### NEB计算的INCAR: SYSTEM = NEB ENCUT = 270.0 ISMEAR = 1 EDIFF = 1E-04 EDIFFG = -5E-02 ####### ### IBRION = 3 NSW = 200 PSTRESS = 150 #NEB parameters ICHAIN = 0 IMAGES = 8 SPRING = -5 LCLIMB = .TRUE. LNEBCELL = .TURE. ISIF = 3 IOPT = 3 ###### POTIM = 0 ######################################################
0 个评论
USPEX使用与错误解决方案
热度 1 DonarF1 2012-12-27 23:33
Q1: 最近学习USPEX, 对T0进行测试,运行 nohup matlab USPEX.m log ,大概几秒钟后,就显示如下的错误。整个过程完全没有调用vasp进行优化计算,你能帮我分析一下吗,或者要做什么修改?谢谢。 M A T L A B (R) Copyright 1984-2012 The MathWorks, Inc. R2012a (7.14.0.739) 64-bit (glnxa64) February 9, 2012 To get started, type one of these: helpwin, helpdesk, or demo. For product information, visit www.mathworks.com. ans = 0 status = Local optimisation finished status = Too many structures have errors or failed the constraints after optimization. Please check the input files. The calculation has to stop. status1 = Possible reasons: badly tuned optimization parameters or unreasonable contraints. 1, 上面的提示,完全不是INPUT.txt的设置问题,真是KD,害我不断调试了好多参数。 2. matlab普通用户的执行参考http://wenku.baidu.com/view/01f08cd126fff705cc170ad7.html 3 我的root帐户没有vasp.5.2的执行权限,而多次测试是在root帐户下进行的(CalcFold1 ) 4. 重新提交任务时,必须删除上次的Current_EXE.mat Current_ORG.mat Current_POP.mat三个文件,不然仍然会显示上面的错误提示。 Q2:moab 作用的作用提交系统与uspex结合时, submitJob_local.m需要做红色的修改,不然 function jobNumber = submitJob_local() %------------------------------------------------------------- %This routine is to check if the submitted job is done or not %One needs to do a little edit based on your own case. %1 : whichCluster (default 0, 1: local submission, 2: remote submission) %------------------------------------------------------------- %Step 1: to prepare the job script which is required by your supercomputer fp = fopen('myrun', 'w'); fprintf(fp, '#!/bin/sh\n'); fprintf(fp, '# MSUB -l nodes=1:ppn=16,walltime=01:00:00\n'); fprintf(fp, '#MSUB -N USPEX\n'); fprintf(fp, '#MSUB -q jsc\n'); fprintf(fp, '#MSUB -j oe\n'); fprintf(fp, '#MSUB -V tpt=1\n'); fprintf(fp, 'cd $PBS_O_WORKDIR \n'); fprintf(fp, 'mpiexec -np 16 /lustre/jhome15/hhb17/hhb172/bin/vasp.st.5.3 vasp.out\n'); fclose(fp); %Step 2: to submit the job with the command like qsub, bsub, llsubmit, .etc. %It will output some message on the screen like '2350873.nano.cfn.bnl.local' =unix( ) %Step 3: to get the jobID from the screen message end_marker = findstr(b,'.'); jobNumber = b(2:end-1); disp( ) %jobNumber = b(1:end_marker(1)-1); (moab提交作业时,msub myrun会空一行再显示进程号,所以这里要改为2,不然显示 提交uspex后,显示这样的提示 ??? Attempted to access end_marker(1); index out of bounds because numel(end_marker)=0. Error in == submitJob_local at 27 jobNumber = b(1:end_marker(1)-1); Error in == submitJob at 26 jobNumber = submitJob_local(); Error in == SubmitJobs_M200 at 26 POP_STRUC.POPULATION(DO_NOW).JobID = submitJob(DO_NOW); Error in == EA_M200 at 12 SubmitJobs_M200(); Error in == Start at 73 eval( ); ) Q3:USPEX调用matlab提交vasp的优化计算, 能够成功提交任务,但会显示如下的错误: 而我 单独在alcfold*目录里面msub myrun却能成功运行vasp.后通过 ldd /lustre/jhome15/hhb17/hhb172/bin/vasp.2d.5.3与在matlab里面!ldd /lustre/jhome15/hhb17/hhb172/bin/vasp.2d.5.3发现vasp依赖的库不一样,需在环境变量里面把依赖的库加到export LD_LIBRARY_PATH里
个人分类: USPEX|9759 次阅读|1 个评论
[转载]编译器和数学库对VASP的计算速度的影响(转)
DonarF1 2012-12-27 23:19
编译器和数学库对VASP的计算速度的影响(转) (2009-12-17 21:52:00) 转载 ▼ 标签: 杂谈 分类: 材料科学 编译器和数学库对vasp的计算速度的影响 一、所采用的机器、编译器、数学库、vasp程序和计算的例子 1. 机器是2.4 MHz的CPU、512M的内存,操作系统Redhat7.3的单机。 2. VASP:4.6版本 3. Fotran编译:PGI公司的pgf90 3.1版本;Intel公司的ifc 6.1版本。 4. 数学库: BLAS:blas.tgz;ATLAS (atlas3.6.0_Linux_P4SSE2.tar.gz); Kazushige Goto's BLAS (libgoto_p4_512-r0.94.so);MKL 5.2 version LAPACK:ATLAS (atlas3.6.0_Linux_P4SSE2.tar.gz);MKL 5.2 version;vasp.4.lib/lapack_double.o 注释:blas.tgz从http://www.netlib.org/blas/blas.tgz下载。 Atlas3.6.0_Linux_P4SSE2.tar.gz 从 http://prdownloads.sourceforge.net/math-atlas/atlas3.6.0_Linux_P4SSE2.tar.gz?download下载。 Libgoto_p4_512-r0.94.so从 http://www.cs.utexas.edu/users/kgoto/libraries/libgoto_p4_512-r0.94.so.gz下载。 5. 计算的例子:采用PBE-GGA的PAW势(Nb_pv, Sn_d 和 C)优化Nb2SnC的几何结构,主要的输入文件如下: -------INCAR--------------------- SYSTEM = Nb2SnC ENCUT = 500 ISMEAR = 1 ; SIGMA = 0.18 ISTART = 0 ; ICHARG = 2 GGA = PE EDIFF = 1E-5 ; EDIFFG = -1E-2 NSW = 60; IBRION = 2 ISIF = 3 ; POTIM = 0.1 PREC= Accurate ; NBANDS = 60 -------POSCAR--------------------- Nb2SnC: 3.241000000000000 0.0000000000000000 -1.0110073892063070 0.0000000000000000 0.8755580824825159 0.5055036946031537 0.0000000000000000 0.0000000000000000 0.0000000000000000 4.2888295708784200 4 2 2 Direct 0.3333333333333357 0.6666666666666643 0.0828382368328892 0.6666666666666643 0.3333333333333357 0.5828382368328890 0.6666666666666643 0.3333333333333357 0.9171617631671110 0.3333333333333357 0.6666666666666643 0.4171617631671108 0.3333333333333357 0.6666666666666643 0.7500000000000000 0.6666666666666643 0.3333333333333357 0.2500000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 0.5000000000000000 -------KPOINTS--------------------- auto 0 Gamma 11 11 5 0.0 0.0 0.0 -------------------------------------- 二、编译VASP时的主要参数设置 先编译blas.tgz,编译的步骤: 先建立一个blas目录,把blas.tgz拷贝到blas目录下,用命令tar xzvf blas.tgz解压blas.tgz, 得到很多.f的源文件。对pgf90,采用pgf90 –c *.f 编译这些源文件,得到很多.o的文件,然 后把.o文件用命令ar -rv blas.a *.o压缩成blas.a文件。对ifc,使用ifc –c *.f,其他的命令类 似。 Blas.a, libgoto_p4_512-r0.6.so, 从atlas3.6.0_Linux_P4SSE2.tar.gz解压得到的libatlas.a, libf77blas.a, libcblas.a, liblapack.a等库文件都放在vasp.4.6的上一级目录下的lib目录中。 重要的参数设置,就算makefile文件中的ATLASHOME, BLAS, LAPACK。 采用pgf90 编译VASP时,OFLAG = -O2 -tp p6 1. ATLASHOME= ../lib BLAS= -L$(ATLASHOME) -lf77blas -latlas LAPACK= ../vasp.4.lib/lapack_atlas.o -L$(ATLASHOME) -llapack -lcblas 2. ATLASHOME= ../lib BLAS= -L$(ATLASHOME) -lf77blas -latlas LAPACK= ../vasp.4.lib/lapack_double.o 3. BLAS= ../blas/blas.a LAPACK= ../vasp.4.lib/lapack_double.o 4. BLAS= ../lib/libgoto_p4_512-r0.94.so LAPACK= ../vasp.4.lib/lapack_double.o 采用ifc编译VASP时,OFLAG=-O3 -xW -tpp7 FFT3D = fft3dfurth.o fft3dlib.o 5. ATLASHOME= ../lib/ BLAS= -L$(ATLASHOME) -lf77blas -latlas LAPACK= ../vasp.4.lib/lapack_double.o 6. ATLASHOME= ../lib/ BLAS= -L$(ATLASHOME) -lf77blas -latlas LAPACK= ../vasp.4.lib/lapack_atlas.o -L $(ATLASHOME) -llapack -lcblas 7. BLAS= ../blas/blasifc.a LAPACK= ../vasp.4.lib/lapack_double.o 8. BLAS= ../lib/libgoto_p4_512-r0.94.so LAPACK= ../vasp.4.lib/lapack_double.o 9. BLAS=-L/opt/intel/mkl/lib/32 -lmkl_p4 -lguide -lpthread LAPACK= -lmkl_lapack 10. BLAS=-L/opt/intel/mkl/lib/32 -lmkl_p4 -lguide -lpthread LAPACK= ../vasp.4.lib/lapack_double.o 11. BLAS=-L/opt/intel/mkl/lib/32 -lmkl_p4 -lguide -lpthread LAPACK= -L/opt/intel/mkl/lib/32 -lmkl_lapack 三、计算测试得到的数据 Serial Total CPU Time User Time Elapsed time (min) (min) (min) 1 102.541 98.016 102.611 2 102.457 97.894 102.520 3 130.943 127.696 131.015 4 92.880 89.603 92.956 5 79.399 74.624 79.538 6 78.909 74.272 78.983 7 76.977 73.700 77.022 8 68.589 65.276 68.660 9 70.478 67.092 70.544 10 69.902 66.548 69.955 11 70.450 67.082 70.493 注释:Serial指的是在编译时,主要参数设置的情况,见第二部分中的说明。Total CPU Time 指的是计算所花的总的时间。单位是分钟。 四、结论 采用intel的ifc编译器,BLAS采用Kazushige Goto's BLAS,LAPACK采用lapack_double.o 的编译得到vasp计算速度最快。 采用pgf90,blas.tgz和lapack_double.o来编译得到的vasp的计算速度最慢。 对采用pgf90,BLAS采用Kazushige Goto's BLAS,编译得到的vasp的计算速度提 高9%~29%。但是对采用ifc时,BLAS采用Kazushige Goto's BLAS,编译得到的vasp的 计算速度提高10%~13%。
个人分类: vasp|3472 次阅读|0 个评论
在Redhat上安装phonopy并打包成独立的可执行文件
ywmucn 2012-11-17 20:59
将源文件都放在 /share/apps/source/phonopy/,源文件包括: phonopy-1.6.2.tar.gz,Python-2.7.3.tgz,numpy-1.5.1.tar.gz,scipy-0.11.0.tar.gz,lxml-3.0.1.tar.gz, matplotlib-1.2.0.tar.gz,PyYAML-3.09.tar.gz,PyInstaller-2.1.tar.gz ,可能还需要 libxml2-2.7.2.tar.gz, libxslt-1.1.28.tar.gz (注意:不要使用Python3.x,Python3.x与python2.x在语法上有重大改动,比如在python2.x中输出字符串使用 print “Hello”,但在python3.x中不识别了,要写成 print (“Hello”),phonopy-1.6.2不支持Python3.x,我被坑惨了,全部重来,推荐Python2.4及以上) 1) 解压源文件: cd /share/apps/source/phonopy tar -xvf Python-2.7.3.tgz tar -xvf numpy-1.5.1.tar.gz tar -xvf scipy-0.11.0.tar.gz tar -xvf matplotlib-1.2.0.tar.gz tar -xvf lxml-2.3.4.tar.gz tar -xvf PyYAML-3.10.tar.gz tar -xvf PyInstaller-2.1.tar.gz 2)Python 安装 cd /share/apps/source/phonopy cd Python-2.7.3 ./configure --enable-shared --prefix=/share/apps/python2.7 make make install 注意:不加 --enable-shared 参数将编译静态的python,无法使用PyInstall的打包。 export PATH=/share/apps/python2.7/bin:$PATH export LD_LIBRARY_PATH=/share/apps/python2.7/lib:$LD_LIBRARY_PATH which python2.7 查看是否找到python2.7 3)Numpy和scipy的安装(提前做好ifort和MKL的环境变量,PATH及LD_LIBRARY_PATH) cd /share/apps/source/phonopy/numpy-1.5.1 cp site.cfg.example site.cfg ---------------------------------------- 修改 site.cfg 将 # # library_dirs = /opt/intel/mkl/10.0.1.014/lib/32/ # lapack_libs = mkl_lapack # mkl_libs = mkl, guide 改为(根据实际情况修改): library_dirs = /share/apps/intel/intel2/ifc/mkl/lib/em64t include_dirs = /share/apps/intel/intel2/ifc/mkl/include mkl_libs = mkl_def, mkl_intel_lp64, mkl_intel_thread, mkl_core, mkl_mc lapack_libs = mkl_lapack95_lp64 ------------------------------------------------------------- python2.7 setup.py build --fcompiler=intelem (使用的是intel fortran编译器,可用python2.7 setup.py build --help-fcompiler来查看可使用的编译器。最好能在环境变量中能找到ifort) python2.7 setup.py install --home=/share/apps/python2.7/pymodule 下一步是关键: export PATH=/share/apps/python2.7/bin:/share/apps/python2.7/pymodule/bin:$PATH export PYTHONPATH=/share/apps/python2.7/pymodule/lib/python 让python知道到哪里去找模块,测试python是否能够调用numpy cd .. ( 退出 numpy的目录 ) 执行 python2.7 进入python界面 执行 import numpy 然后执行 numpy 看是否出错,若有类似 module 'numpy' from '/share/apps/python2.7/pymodule/lib/python/numpy/__init__.py'的语句表示调入numpy成功, 执行 numpy.show_config()查看blas库等是否能找到。 然后输入exit()退出python界面。 cd /share/apps/source/phonopy/scipy-0.11.0 将 Numpy下的 site.cfg 复制过来 python2.7 setup.py build --fcompiler=intelem python2.7 setup.py install --home=/share/apps/python2.7/pymodule 测试方法与Numpy相同。 4)Matplotlib的安装 cd /share/apps/source/phonopy/matplotlib-1.2.0 python2.7 setup.py install --home=/share/apps/python2.7/pymodule 5)lxml 的安装 cd /share/apps/source/phonopy/lxml-3.0.1 python2.7 setup.py install --home=/share/apps/python2.7/pymodule 若发现 error: command 'gcc' failed with exit status 1 之类的错误,这是因为lxml对 libxlst和libxml2有依赖,二者安装如下(参考 http://www.coder4.com/archives/3660): cd /share/apps/source/phonopy/ tar -xvf libxml2-2.7.2.tar.gz cd libxml2-2.7.2 ./configure --prefix=/share/apps/sharelib --without-python make make install 然后 cd /share/apps/source/phonopy/ tar -xvf libxslt-1.1.28 .tar.gz cd libxslt-1.1.28 ./configure --prefix=/share/apps/sharelib --without-crypto --without-python --with-libxml-prefix=/share/apps/sharelib make make install cd /share/apps/source/phonopy/lxml-3.0.1 python2.7 setup.py build --with-xslt-config=/share/apps/sharelib/bin/xslt-config python2.7 setup.py install --home=/share/apps/python2.7/pymodule export LD_LIBRARY_PATH=/share/apps/sharelib/lib:$LD_LIBRARY_PATH 6)PyYAML的安装 cd /share/apps/source/phonopy/PyYAML-3.10 python2.7 setup.py install --home=/share/apps/python2.7/pymodule 7)编译 phonopy cd /share/apps tar -xvf /share/apps/source/phonopy/phonopy-1.6.2.tar.gz cd phonopy-1.6.2 python2.7 setup.py install --home=. export PATH=/share/apps/phonopy-1.6.2/bin:$PATH export PYTHONPATH=/share/apps/python2.7/pymodule/lib/python:/share/apps/phonopy-1.6.2/lib/python 执行phonopy测试, _ _ __ | |__ ___ _ __ ___ _ __ _ _ | '_ \| '_ \ / _ \| '_ \ / _ \ | '_ \| | | | | |_) | | | | (_) | | | | (_) || |_) | |_| | | .__/|_| |_|\___/|_| |_|\___(_) .__/ \__, | |_| |_| |___/ 1.6.2 POSCAR could not be found. _ ___ _ __ __| | / _ \ '_ \ / _` | | __/ | | | (_| | \___|_| |_|\__,_| 8)环境变变量汇总, export LD_LIBRARY_PATH=/share/apps/python2.7/lib:/share/apps/sharelib/lib:$LD_LIBRARY_PATH export PATH=/share/apps/python2.7/bin:/share/apps/python2.7/pymodule/bin:/share/apps/phonopy-1.6.2/bin:$PATH export PYTHONPATH=/share/apps/python2.7/pymodule/lib/python:/share/apps/phonopy-1.6.2/lib/python 可以将这些环境变量写入一个文件,使用phonopy之前调用一次做一下环境变量。 9)使用PyInstall将Phonopy打包, cd /share/apps/phonopy-1.6.2/bin 看到一堆phonopy 相关命令 bandplot dispmanager gruneisen outcar-born pdosplot phonopy phonopy-FHI-aims phonopy-qha propplot tdplot cd /share/apps/PyInstaller-2.1 执行 python2.7 pyinstaller.py --onefile /share/apps/phonopy-1.6.2/bin/phonopy 在但当前目录下会声生成一个phonopy目录,在./phonopy/dist下生成生成一个可执行可执行文件phonopy, 这是一个独立的不依赖于python的程序。 其它的命令用类似方法生成。 ----------------------------------------------------------- 主要参考: http://emuch.net/html/201208/4874998.html http://hi.baidu.com/zhxlhdd2008/item/183ba9c8fc1f4b54ac00efc6 http://www.coder4.com/archives/3660 http://blog.sun.tc/2010/11/numpy-and-scipy-with-intel-mkl-on-linux.html
个人分类: VASP|7348 次阅读|0 个评论
VASP电子迭代的收敛问题
dwd0826 2012-9-21 10:32
对于一些磁性体系、镧系和锕系元素及相关化合物的静态计算(电子迭代),经常会遇到“难收敛”的问题。 下面给出几个相关Flag及设置方法:(有些话从说明书上摘录的,不大好翻译,就copy了,请见谅) 1、LMAXMIX Default: LMAXMIX = 2 An additional flag controls up to which l quantum number the onsite PAW charge densities are passed through the charge density mixer. Higher l-quantum numbers are usually not handled by the mixer. In order to obtain fast convergence to the groundstate, you can try the following setting: LMAXMIX = 4 for d elements LMAXMIX = 6 for f elements 这个FLAG对于含d电子和f电子的体系是非常重要的,很大一部分体系的收敛问题可以通过设置合适的LMAXMIX值来解决。 2、ALGO, IALGO, LDIAG If the self-consistency loop does not converge within 40 steps, it will probably not converge at all. In this case you should reconsider the tags IALGO, LDIAG, and the mixing-parameters. 这是说明书上的建议。 一般情况下,或使用IALGO=48时遇到收敛问题的话,可以考虑设IALGO为38(4.5以前的版本可设为8),或设置ALGO=Normal or Fast (in VASP.4.5 and later versions)。 3、NELMDL NELMDL gives the number of non-selfconsistent steps at the beginning; if one initializes the wave functions randomly the initial wave functions are far from anything reasonable. The resulting charge density is also 'nonsense'. Therefore it makes sense to keep the initial Hamiltonian, which corresponds to the superposition of atomic charge densities, fixed during the first few steps. Choosing a 'delay' for starting the charge density update becomes essential in all cases where the SC-convergence is very bad (e.g. surfaces or molecules/clusters chains). Without setting a delay VASP will probably not converge or at least the convergence speed is slowed down. NELMDL might be positive or negative. A positive number means that a delay is applied after each ionic movement — in general not a convenient option. A negative value results in a delay only for the start-configuration. 4、mixing-parameters 对于一些难收敛的体系,可以使用“linear mixing”,具体详见VASP说明书中的“Mixing-tags”。 For an initial linear mixing (BMIX ~ 0) an optimal setting for A(AMIX) can be found easily by setting Aopt=Acurrent*Γmean. For the Kerker scheme either A or q0(i.e. AMIX or BMIX) can be optimized, but we recommend to change only BMIX and keep AMIX fixed (you must decrease BMIX if the mean eigenvalue is larger than one, and increase BMIX if the mean eigenvalue is smaller than one). 尽管VASP说明书中给出了调节AMIX和BMIX的一些较为明确的建议,但是实际去调节的时候,还是挺难的,但原则上说,是可以通过调节这两个Flag来使得收敛问题得以解决的,只是得有耐心。 5、kmesh, SIGMA 收敛问题还跟kmesh及SIGMA(当使用ISMEAR不等于-5 和-4时)的设置有关。要达到同样的精度,较小的SIGMA则需要较大的kmesh;而且,当SIGMA较小时,若kpoints不够多,也会出现难收敛的情况。 P.S. 对于不同系统的计算,问题的原因不一定一样,因而可能解决之一问题的方法也不一定会一样。其实以上大部分都来自VASP的说明书,只是我在遇到收敛问题时试过这些方法. 写得比较仓促,以后再修改及补充。 希望有这方面经验的朋友也把自己的见解提出来一起讨论。 金属表面体系。换算法,改Mixing都不管用。 收敛和k-mesh有关系吗?谢谢了 别改Mixing。 你把IBRION设为3,然后把SMASS设为0.6试试看 不好意思,我没说清楚 IBRION是对应离子步的算法 我的问题是电子步不收敛 dE 一直0.1左右反复, 200步也不收敛 改IALGO为38, 增加NBANDS都不行:( 那你试试不要采用自恰计算。但是仍然采用damping驰豫。 是不是你的初始构型离平衡态太远了。 还没遇到过这种问题,可能比较运气吧。 调一下cutoff试试。 IALGO我一直用48,5x5x1 Kpoints。我做金属的表面体系都是在100步内就OK了。 如果愿意,可以把INCAR贴出来,让大家出出注意,这样更可能有的放矢。 应该不会 有的时候甚至弛豫出来的结构再进行static的计算都不收敛 收敛跟k-mesh是有一定关系的。 你INCAR中没有设置ISMEAR,应该就是使用默认的ISMEAR=1。此时SIGMA应该也是默认值0.2。 你看看OUTCAR中的EENTRO的值,看是不是符合要求(一般要求小于1 meV/atom,这与你想要的精度有关,如果你要求精度不高的话,这个标准可以设大一些)。 有几个方向你可以试试,或许会有用: 1、如果EENTRO的值够小,你可以尝试加大SIGMA。(SIGMA较大时,相对收敛会快些) 2、增加k点多。 其实就是说,要调整k-mesh和SIGMA。一般SIGMA跟k点数会有一定的关系。 若想达到同一精度,SIGMA越小所需要的K点数就越多。如果SIGMA较小,而k点数不足,有可能会出现难收敛的情况,也可能得到不准确的结果。 3、调节AMIX与BMIX 我之前也遇到过难收敛的问题,当时调这两个参数,还是有点用的。具体调节的方法VASP上有讲到一些,但可能还是要多试才知道。我现在一时想不起来细节了,你先试试,如果有情况,再一起讨论。 VASP的说明书也有提到,如果电子迭代超过40次仍未收敛的话,一般就很难收敛了。当然,我想这只是VASP说明书的一个建议,并不是绝对的。一般设置NELM=60(默认)就够了,如果60次都不能收敛,那可能就要找找问题或是改相应的设置了。 有不对或不妥的地方,大家帮忙指正:) 从你的INCAR来看,貌似没什么问题。如果还是不收敛的话,你可以增加一点截断能,比如400 eV,并把POTIM减小至0.1。另外,添加三个tag:NELM=100; NELMDL=6; WEIMIN=0. 大家遇到收敛问题怎么解决啊??? 小弟仔细读过使用手册,并结合一些帖子,可是还是解决不了问题。恳请高手指点。 以下是我所用的方法和遇到的问题: 解决方法一:设置scf参数 a1. Iterations. 加大循环次数。计算过程中默认50次,我的体系无论加多大次数就是不收敛。 可能这不是主要原因。我现在一般设置一个中等大小的值400。 a2. mixing.对强阻尼体系,降低mixing值到0.01-0.05.甚至用mixing=0.001,diis n=0.保存TAPE21文件, 再用mixing=0.03,diis n=10.我都用了,都不收敛。分析结果计算过程中有能量跳跃,因此我分析我的体系就 是较强的阻尼,因此我设置mixing=0.03,这个因该可以吧? a3. lshift, vshift.手册上未解释怎么用。 这个我不懂。请问在什么情况下用?怎么用?大家一般设置值为多少? 解决方法二:用occupations指定电子占据。 b1. 直接指定分子占据,由于小弟的量化基础薄弱,弄不懂怎么指定。 我是按论坛上的方法之一,先算一个单点能,然后得到所有不可约表示的电子占据数。但是, 我计算单点能虽然scf收敛了,但是计算得到的能量明显不对,估计是收敛到激发态上去了。请问怎么指定到基态? 另外,对电子占据大家都有什么具体的着?哪位有这方面的文献和资料?我算单点的输出文件在附件中,请高手帮我 指定一下基态的电子占据。先谢谢了!!! 这是最重要,最有用的方法,可是我不懂,郁闷啊!!! b2. 用keeporbitals或freeze控制能量跳跃,但是我的体系用这个关键词还是无法得到几何结构收敛。我只用过 keeporbitals=20,10,5. 但是scf有几个收敛,可是最后得不到几何结构收敛。 大家一般设置值为多少?freeze又该如何设置? b3. smearq. 手册上说先用smearq=一个值。几何收敛后再用smearq=0, restart 前面的TAPE21文件。 我设置 smearq=0.2,几何结构收敛了,但是我用smearq=0,restart不收敛。我用smearq=0.1计算连几何结构 都不收敛。请问大家设置smearq=多少合适?用smearq且令smearq=0之后的结果可信度有多大啊?我看过几篇文献, 但是都没有什么有用的东西。 我已收到你的邮件了,个人觉得在这么多方法中用smearq 再 occupations比较有效: 先用启用smearing (例如:smearq=0.02), 再根据结果文件指认电子占据一般都能解决问题, 例如: occupations A1 a//b B1 a//b E a//b . . . end. Dear Vasp Community: I'm trying to do some very basic defect calculations in a class of complex oxides with the stoichiometry AB6O12, where A=U,W,Re and B=Y,Yb,Lu. In most cases, especially when A=W, I haven't had any problems. But, I have had problems with convergence in two cases that I haven't been able to make any progress on. When A=U and B=Y, I can converge the perfect structure very nicely. But, when I look at an antisite defect, by replacing one Y with U, the calculation doesn't converge. The electronic iterations get stuck, changing by +/- the same amount. A number of colleagues have suggested I change the smearing, set ISPIN=2, set LMIXMAX=6, etc. Everything I've tried, either doesn't change the behavior or does fix the electronic iterations, but after 3 or 4 ionic iterations, the forces on the ions blow up (become unphyiscally large, like 100 eV/angstrom). The second problem, when A=Re and B=Lu, is that I don't get any kind of convergence, even in the perfect case. I get a warning at the top VERY BAD NEWS! internal error in subroutine IBZKPT: Reciprocal lattice and k-lattice belong to different class of lattices. 168 But all I've done compared to the A=U, B=Y case is change the POTCAR file. If I let it go, I get similar convergence problems as before. Any suggestions on what I might try to fix these problems would be greatly appreciated. I'm using ISYM=0 and a Monkhorst-Pack grid of 2x2x2 for these calculations, along with the GGA PAW pseudopotentials. Thank you, Blas Back to top admin Tue Jan 08 2008, 01:27PM posts 1815 1) for the electronic convergence --) LMAXMIX=6 should be set if you have rare-earth elements in the cell, for d-elements, please set it to 4 --) it may help to decrease the mixing parameters (AMIX, BMIX, and in addition AMIX_MAX and BMIX_MAX for the spin-polarized runs to improve convergence ) --) also, it may help to increase NELMDL (the number of non-selconsistent steps at the beginning) to improve the pre-convergence of the wavefunction --) maybe it also helps to use L(S)DA+U ( please check the electronic structure and compare to experiment, if results are available) 2) for the forces which suddenly increase: --) please check (in OSZICAR) if each ionic step was fully converged electronically up to the requested convergence limit (EDIFF) before the forces are calculated. (i.e. whether the forces were calculated after el. convergence is reached or because the number of electronic convergence steps (NELM=60, by default) was reached without actually being converged. The latter yields unreasonable forces. (in that case, please either increase NELM and/or try one of the above mentioned to improve the electronic convergence) --) if each of the ionic steps was converged, please check the relaxation history (XDATCAR file). Sometimes, especially the first ionic steps 'overshoot' a little. If that is the case, please choose a different relaxation algorithm (IBRION) and/or decrease the step width (POTIM) 3) the VERY BAD NEWS message is due to different lattice types obtained for the unit cell and the symmetrized k-mesh. (triclinic and simple monoclinic as it seems). maybe the axes ratios of the unit cells are not 1:1:1 ? please check. for the symmetry analysis, the Bravais Matrix , atoms' positions, and, if set, magnetic moments and atoms' velocities are taken into account. If nothing has been changed except the atoms in the PP, it seems strange that this warning shows up for some calculations whereas it does not for others. In any case, if ISYM=0 is set, symmetrization is not taken into account in the calculation later on, the only point to be careful with is the axis' ratio then. LDAU = .TRUE. LDAUL = LDAUU = LDAUJ =
23476 次阅读|0 个评论
lev00 and TETR
qlm2001 2012-9-18 20:22
Two methods to compile lev00 Method 1: lev00直接用gfortran编译就可以,经测试,gfortran编译正常。 LIBS=-lgfortran -lgfortranbegin FCOMPL= gfortran$(DEBUG) Method 2: 采用Intel编译器, 去掉 FCOMPL= ifort -debug -check -traceback -fpe0 -warn -Vaxlib $(DEBUG) 一行中 -check选项后面的几项 FCOMPL= ifort -debug -check $(DEBUG) then, add LIBS = -L/opt/intel/mkl/lib/intel64:/opt/intel/composer_xe_2011_sp1.9.293/compiler/lib/intel64:/opt/intel/composer_xe_2011_sp1.9.293/mkl/lib/intel64 ---------------------------------------------------------- TETR ====================== LIBS = -L/opt/intel/mkl/lib/intel64:/opt/intel/composer_xe_2011_sp1.9.293/compiler/lib/intel64:/opt/intel/composer_xe_2011_sp1.9.293/mkl/lib/intel64 FCOMPL = ifort -Vaxlib $(DEBUG) finally set environment variable =================================
8607 次阅读|0 个评论
[转载]VASP与电荷密度差
热度 1 dwd0826 2012-9-16 14:38
[转载]VASP与电荷密度差
一般分为:差分电荷密度图(deformation charge density),二次差分电荷密度图(difference charge density) 两者的区别有很多种说法,其中一种定义认为: 差分电荷定义为成键后的电荷密度与对应的点的原子电荷密度之差。通过差分电荷密度的计算和分析,可以清楚地得到在成键和成键电子耦合过程中的电荷移动以及成键极化方向等性质。 “二次”是指同一个体系化学成分或者几何构型改变之后电荷的重新分布。 如何做对电荷密度做差,目前有两个版本的公式: 个人认为公式(1)和差分电荷密度的定义比较吻合,但是这种方法会产生很多干扰信息,而文献中常用的是公式(2)。 这里主要是讨论在VASP中如何得到用来分析成键前后电荷转移的电荷密度差。 此时电荷密度差定义为: delta_RHO = RHO_sc - RHO_atom 其中 RHO_sc 为自洽的面电荷密度,而 RHO_atom 为相应的非自洽的面电荷密度,是由理想的原子周围电荷分布堆彻得到的,即为原子电荷密度的叠加(a superposition of atomic charge densities)。 不同晶面的 RHO_sc 可由自洽计算的CHG或CHGCAR得到; 而计算 RHO_atom 所需的 CHG 或 CHGCAR 可由下述非自洽计算得到: 仍使用原来自洽计算时的四个输入文件,但INCAR中需要设置 ICHARG=12 和 NELM=0,其他设置不变。 需要特别注意的,应保持前后两次计算(自洽和非自洽)中的 FFT-mesh 一致。因为,只有维数一样,我们才能对两个RHO作相应的矩阵相减。不过,只要按上一段提到的设置方法做就行了,无须特别增加别的设置。 数据处理: 矩阵相减:使用MatLab 或是自已写个小程序。 作图:Origin 或 MatLab。 如何用VASP做电荷密度差图? ① 对优化后的结构做静态自洽计算 要注意的是,AB、A和B要分别放在同样大小的空间格子中并保证A和B与AB中相应坐标不变,计算时也要保证三次自洽计算所采用的FFT mesh 一致(NGXF,NGYF,NGZF)。 INCAR中几个注意的参数: IBRION = -1;NSW = 0; NGXF,NGYF,NGZF ② 做差 将第一步得到的三个CHGCAR文件依次命名为CHGCAR1、CHGCAR2、CHGCAR3,采用脚本程序按照公式②对三个文件做差,得到CHGdiff文件。 ③ 视图 3D显示可以将得到的CHGdiff文件添加vasp后缀(CHGdiff.vasp),用VESTA读取,另外VESTA也可以做2D切面,缺点是没有标度。 2D的显示也可以用lev00去做切面,然后用origin作图,得到的2D面电荷密度差带有标度便于分析(具体做法可参阅lev00说明书)。 ④ 以CO为例 图1左图是CO的电荷密度差黄色部分表示电荷密度增加,蓝色表示电荷密度减少,右图是Gaussian模拟的CO的HOMO和LUMO轨道,可以看出黄色部分对应HOMO,蓝色部分对应LUMO。 图2 是用lev00切面,origin做图得到的CO二维图示。 图1 图2 图3 PS: 作差所用的各种工具网上都可以找到,不再上传。
8675 次阅读|1 个评论
vasp的分子动力学模拟
热度 1 dwd0826 2012-9-13 19:34
vasp做分子动力学的好处,由于vasp是近些年开发的比较成熟的软件,在做电子scf速度方面有较好的优势。 缺点:可选系综太少。 尽管如此,对于大多数有关分子动力学的任务还是可以胜任的。 主要使用的系综是 NVT 和 NVE。 下面我将对主要参数进行介绍! 一般做分子动力学的时候都需要较多原子,一般都超过100个。 当原子数多的时候,k点实际就需要较少了。有的时候用一个k点就行,不过这都需要严格的测试。通常超过200个原子的时候,用一个k点,即Gamma点就可以了。 INCAR: EDIFF 一般来说,用1E-4 或者1E-5都可以,这个参数只是对第一个离子步的自洽影响大一些,对于长时间的分子动力学的模拟,精度小一点也无所谓,但不能太小。 IBRION=0 分子动力学模拟 IALGO=48 一般用48,对于原子数较多,这个优化方式较好。 NSW=1000 多少个时间步长。 POTIM=3 时间步长,单位fs, 通常1到3. ISIF=2 计算外界的压力. NBLOCK= 1 多少个时间步长,写一次CONTCAR,CHG和CHGCAR,PCDAT. KBLOCK=50 NBLOCK*KBLOCK 个步长写一次 XDATCAR. ISMEAR=-1 费米迪拉克分布. SIGMA =0.05 单位:电子伏 NELMIN=8 一般用6到8, 最小的电子scf数.太少的话,收敛的不好. LREAL=A APACO=10 径向分布函数距离, 单位是埃. NPACO=200 径向分布函数插的点数. LCHARG=F 尽量不写电荷密度,否则CHG文件太大. TEBEG=300 初始温度. TEEND=300 终态温度。 不设的话,等于TEBEG. SMASS -3 NVE ensemble;-1 用来做模拟退火。大于0 NVT 系综。 (http://cms.mpi.univie.ac.at/vasp/vasp/node95.html#incar) This file determines the kind of job which VASP will perform; single point energy calculation (SPE), geometry optimisation (GO - coarse/fine), molecular dynamics (MD - nve/nvt), spin polarised calculation (mag). Examples can be found in /home/cs/model/vasp_util. Example; INCAR.spe $system = single point energy calc NELMIN = 4 minimum number of electronic SCF cycles EDIFF = 1E-6 stooping criterion for electronic convergence NSW = 0 number of ionic shifts ISMEAR = 0 treatment of partial occupancies of electronic levels Example; INCAR.coarse $system = coarse geom optimisation NELMIN = 4 EDIFF = 1E-2 EDIFFG = -1E-2 stopping criterion for forces Fmax 0.01 eV/A IBRION = 2 minimisation method, good away from minimum ISIF = 3 optimise coords and cell pars LREAL =.TRUE. do calc in real space - quicker ISTART = 0 start with a random wavefunction NSW = 20 maximum of 20 ionic shifts ISMEAR = 0 LCHARG =.FALSE. don't write CHG and CHGCAR files Example; INCAR.fine $system = geom optimisation NELMIN = 4 EDIFF = 1E-6 EDIFFG = -1E-4 PREC = high increase energy cut-off by 25% IBRION = 1 minimisation method, good close to minimum ISIF = 3 NSW = 50 ISMEAR = 0 LCHARG=.FALSE. Example; INCAR.mag $system = collinear mag structure calc IBRION = 1 ISIF = 3 NPAR = 1 forces mag structure to be written in output file EDIFF = 1E-6 EDIFFG = -1E-3 PREC = high RWIGS = 1.376 0.900 1.233 1.302 radii for spherical integration of spin density, 1 per atom ISPIN = 2 do spin polarised calc MAGMOM = 24*0 5 -5 -5 5 initial mag moments for 28 atoms NSW = 20 Example; INCAR.nve $system = molecular dynamics ALGO = V MAXMIX = 40 IBRION = 0 do molecular dynamics NSW = 6000 number of time steps NBLOCK = 1 store structure every time step POTIM = 3.0 time step 3fs TEBEG = 673 target temperature ISYM = 0 turn off symmetry SMASS = -3 NVE ensemble LREAL =.TRUE. LCHARG =.FALSE. NELMIN = 4 PREC = LOW reduce energy cut-off by 25% for MD ISTART = 0 ISMEAR = 0; SIGMA=0.1 Example; INCAR.nvt $system = molecular dynamics ALGO = V MAXMIX = 40 IBRION = 0 NSW = 6000 NBLOCK = 1 POTIM = 3.0 TEBEG = 673 ISYM = 0 SMASS = 2 NVT ensemble, value determines frequency of coupling to heat bath LREAL =.TRUE. LCHARG =.FALSE. NELMIN = 4 PREC = LOW ISTART = 0 ISMEAR = 0; SIGMA=0.1 Example; INCAR.scale $system = molecular dynamics quench ALGO = V MAXMIX = 40 IBRION = 0 NSW = 50 NBLOCK = 5 rescale temperature every 5 steps POTIM = 3.0 TEBEG = 683 initial temp TEEND = 673 final temp ISYM = 0 SMASS = -1 MD with velocity scaling LREAL =.TRUE. LCHARG =.FALSE. NELMIN = 4 PREC = LOW ISTART = 0 ISMEAR = 0; SIGMA=0.1
22852 次阅读|1 个评论
[转载]VASP计算HOMO、LUMO轨道
dwd0826 2012-9-7 15:48
VASP 中画部分电荷密度 1.首先做一个静态 计算 ,得到WAVECAR , 2。在静态计算的基础上,加入如下 参数 : LPARD =.TRUE. NBMOD =4 EINT =-0.5 0.5 IBAND =130 140 KPUSE =1 2 5 LSEPB =.TRUE. LSEPK =.TRUE. 其实,大家关心的往往是HOMO 和LUMO 的轨道分布。只要在IBAND 中指定HOMO 和LUMO 对应的轨道系数即可。 参数介绍见 用VASP进行Partial Charge分析实 例 另一篇文章 VASP可视化分子轨道 转自: http://xueshu.anxue.net/thread-150394-1-1.html 【原创】最新版vaspmo (v0.1) ――可视化VASP分子轨道 可视化效果图,请参见旧贴: http://emuch.net/bbs/viewthread.php?tid=1818606 http://emuch.net/bbs/viewthread.php?tid=1831558 程序名称: vaspmo 版本: v0.1 作者: Yang Wang ( yangwang2010@gmail.com ) 发布时间: 2010年2月3日 版权声明: 本程序的算法和设计思路,以及代码编写都是Yang Wang的原创。任何个人 或团体不得将此程序用于任何商业用途。假如你在发表论文或学术报告中 用到该程序,请务必转引来源和作者。 任何疑问或反馈,请联系作者: yangwang2010@gmail.com 用途: 读入VASP计算得到的PROCAR和CONTCAR文件,输出Gaussian结果文件。该 文件能够被常用的量子化学可视化软件(如Molekel、Chemcraft、Gabedit 和Molden等)读取,进而绘制和观看体系的分子轨道。有些软件还能导出 cube文件(如Chemcraft和Molden等),从而又能被很多支持cube格式文件 的可视化软件所识别。 目前本程序适用于元素周期表中从氢到铋的元素(但不包括除了镧之外的镧 系其他元素),共69种元素。 新版本信息: 目前的v0.1版本纠正了v0.0版本的一些bug: 1) 坐标转换错误。 2) Ta和Bi元素名称错误。 新添功能: 1) 支持Chemcraft、Molden和Gabedit可识别的格式。 2) 隐藏或缩放指定某些原子的轨道。 3) 根据指定k点和输出格式自动命名输出文件。 4) 用户可以自定义输出文件名。 编译方法: 本程序只包含一个源文件:vaspmo.c,是用标准C语言编写的,因此任何标 准C编译器或C++编译器都能够编译。例如,在Linux下可使用如下命令编译: gcc -o vaspmo -lm vaspmo.c 使用方法: 1. VASP计算 1) PROCAR文件 VASP.3.2以上版本可以将体系波函数投影到以各个原子为中心的球谐函 数上去,从而得到各个原子轨道的相系数。但在VASP.3.X版本中,输出 文件的格式只能是PROOUT,而不是PROCAR文件。目前vaspmo程序不能处 理PROOUT文件,只能识别PROCAR文件。 VASP.4.X以上版本都可以计算输出PROCAR文件,具体方法是需要在INCAR 输入文件中添加并设置要害词LORBIT和/或RWIGS。 假如你使用VASP.4.6以上版本,一个最简单的方法就是在INCAR中添加: LORBIT = 12 假如你设置LORBIT = 2,则还需要设置各个离子类型的RWIGS大小。假如 注重,在VASP.4.X以上VASP.4.2以下的版本中,只能设置LORBIT = 2,因 此要计算轨道就不得不要设置RWIGS。 更具体的说明请参见VASP使用手册: http://cms.mpi.univie.ac.at/vasp/vasp/node127.html 2) CONTCAR文件 i. 为了使用方便,不得不使用新的CONTCAR文件格式来运行vaspmo程序。如 果你的CONTCAR文件格式是旧的,只需要手工添加一行元素类型信息即可。 具体方法见下。 CONTCAR文件的格式因VASP版本而略有不用。在VASP.5.X以上的版本中, CONTCAR文件多增加了一行,提供了元素类型信息。 下面是新版本的CONTCAR文件示例: ------------------------------------------------------------- Title 1.00000000000000000 5.1475600000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 12.8688950000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 30.0000000000000000 C H S Cu 6 4 4 40 Selective dynamics Direct ...... ...... ------------------------------------------------------------- 和旧格式相比,仅仅多出了C H S Cu一行。所以,假如你 使用VASP.4.X计算得到的CONTCAR文件,只需手工添加这一行信息即可。 ii. 目前的vaspmo程序要求CONTCAR文件中的坐标格式是分数坐标形式, 即“Direct”。 2. vaspmo使用方法 1) 程序运行的当前目录下不得不要有CONTCAR和PROCAR文件。 2) 在命令行运行的命令是: vaspmo 选项说明: -o 输出文件名 指定输出文件名。默认是VASPMO_K***.g03(当输出Molekel 可识别的格式时),或VASPMO_K***.out(当输出其他软件 可识别的格式时)。 -c --chemcraft 输出Chemcraft、Molden和Gabedit可识别的格式,这也是程序 的默认输出格式。 -m --molekel 输出Molekel可识别的格式。 -k 正整数 指定输出的哪一个K点的所有能级轨道。 -k all 输出所有K点的所有能级轨道。 -l 原子列表文件名 去掉或缩放某些原子的轨道。这些原子和相应的缩放系数是在 一个“原子列表文件”中定义的。 -h --help 显示帮助,然后退出程序。 3) 关于原子列表文件: 有时候我们需要缩放或隐藏(缩放系数为零)个别原子的轨道。为此, 我们首先需要建立一个原子列表文件,在这个文件中我们定义原子的序号 和相应的缩放系数。分行书写,每一行只能包含一次定义,一次定义可以 是如下三种形式中的一种: 原子序号 原子序号 缩放因子 原子序号1 原子序号2 缩放因子 其中原子序号是一个正整数,是该原子在CONTCAR中出现的顺序数。原子序号1 和原子序号2定义的是一群原子,即范围从原子序号1到和原子序号2。因此, 原子序号1不得不小于等于原子序号2。缩放因子可以是任何一个数值,取零则意味 着隐藏轨道,去负值则意味着反相。 以上三种定义中,第一种形式是隐藏一个原子的所有轨道,第二种形式是缩放 一个原子的所有轨道,第三种形式是缩放一群原子的所有轨道。 注重事项: 本程序vaspmo导出的分子轨道属于相当*定性*的结果,只提供比较粗糙的物理或 化学图像,不能用于进一步的定量分析或计算。 反馈和建议: 欢迎任何bug报告和改进建议,请发电子邮件至: yangwang2010@gmail.com 你也可以将你的CONTCAR或PROCAR作为附件发送给我。 非凡注重:假如你的求助,在你自己仔细阅读在上述的使用说明后都能得到解决, 请恕我拒绝回复。 附件1: 呵! release_vaspmo_v0.1.rar (2010-02-03 21:30:04, 84.31 K)
8124 次阅读|0 个评论
[转载] 用VASP进行Partial Charge分析实例
热度 1 dwd0826 2012-9-7 15:42
在这篇文章中,我将首先介绍Partial Charge的概念,以及如何用VASP具体的计算Partial Charge。首先,所谓的Partial Charge是针对与Total Charge来说的,指的是某个能量范围、某个K点或者某个特定的态所对应的电荷密度。在文献中最常见的是价带顶部,导带底部,表面态或者局域态所对应的Partial Charge。通过分析这些态所对应的Partial Charge,可以得到体系的一些性质,比如局域态具体的是局域在哪个原子上等。我将通过具体的例子说明如何用VASP进行Partial Charge Analysis。 进行Partial Charge Analysis的第一步是进行自洽的计算,得到体系的电子结构。这一步的计算采用通常的INCAR和KPOINTS文件。在自洽计算结束后,我们需要保存WAVECAR文件。(通过在INCAR文件中设置LWAVE=TRUE实现)在这个例子中,假设我们需要计算一个硅纳米线的导带和价带的Partial Charge。硅纳米线的结构如下: http://www.quantumchemistry.net/Experience/UploadFiles_6872/200603/20060331155154521.jpg 第二步是画出能带结构,以决定你需要画哪条能带的那个K点的态所对应的Partial Charge。关于具体如何用VASP画能带,请参见用VASP4.6计算晶体硅能带实例一文。我们得到硅纳米线的能带结构如下: 画能带时有些小技巧。你可以用一些支持列模块的编辑器,如UltraEdit,将OUTCAR里的各个K点所对应的本征值粘贴到Origin中。这一步完成后,在Origin中做一个矩阵转置,然后将K点坐标贴到第一列,并将其设为X坐标。如此画出来的基本上就是能带图了。在Origin中可以通过设置纵轴范围来更加清楚的区分费米能级附近的各条能带。如上的硅纳米线所对应的能带结构图如下: http://www.quantumchemistry.net/Experience/UploadFiles_6872/200603/20060331155540648.jpg 决定画哪条能带,或者那些感兴趣的K点之后,有如下几种方法计算不同的Partial Charge。如果你希望计算价带顶端的Partial Charge,则需要首先通过能带结构图确定价带的能带标号。需要注意,进行Partial Charge分析必须要保留有自洽计算的WAVECAR才可以。 第一种Partial Charge分析的INCAR ISTART = 1 job : 0-new 1-cont 2-samecut ICHARG = 1 charge: 1-file 2-atom 10-const LPARD=.TRUE. IBAND= 20 21 22 23 KPUSE= 1 2 3 4 LSEPB=.TRUE. LSEPK=.TRUE. 这样的INCAR给出的是指定能带,指定K点所对应的Partial Charge。分析导带、价带等的Partial Charge特性,通常采用的都是这种模式。 第二种Partial Charge分析的INCAR ISTART = 1 job : 0-new 1-cont 2-samecut ICHARG = 1 charge: 1-file 2-atom 10-const LPARD=.TRUE. EINT = -10.3 -5.1 LSEPB=.FALSE. LSEPK=.FALSE. 这样的INCAR给出的是在 能量之间的Partial Charge。这种模式适合于分析某个能量区间内的波函数的性质。 第三种Partial Charge分析的INCAR ISTART = 1 job : 0-new 1-cont 2-samecut ICHARG = 1 charge: 1-file 2-atom 10-const LPARD=.TRUE. NBMOD=-3 EINT = -1 LSEPB=.FALSE. LSEPK=.FALSE. 这样的INCAR给出的是从 能量之间的Partial Charge。这种模式最利于分析费米面附近的波函数的性质。 用第一种方法,我们可以得到硅纳米线价带顶部和导带底部的Partial Charge如下: http://www.quantumchemistry.net/Experience/UploadFiles_6872/200603/20060331155753136.jpg • LPARD: Evaluate partial (band and/or k-point) decomposed charge density. We want to stress again, that the wavefunctions read from WAVECAR must be converged in a separate prior run. If only LPARD is set (and none of the tags discussed below), the total charge density is evaluated from the wavefunctions and written to CHGCAR. • There are several ways how to specify for which bands the charge density is evaluated: In general the input lines with IBAND, EINT and NBMOD control this respect of the routine: • IBAND: Calculate the partial charge density for all bands specified in the array IBAND. If IBAND is specified in the INCAR file and NBMOD is not given, NBMOD is set automatically to the size of the array. If IBAND is for instance IBAND= 20 21 22 23 the charge density will be calculated for bands 20 to 23. • EINT: Specifies the energy range of the bands that are used for the evaluation of the partial charge density. Two real values should be given, if only one value is specified, the second one is set to ǫf . If EINT is given and NBMOD is not specified, NBMOD is set automatically to -2. • NBMOD: This integer variable can take the following values 0 Number of values in the array IBAND. If IBAND is specified, NBMOD is set automatically to the correct value (in that case NBMOD should not be set manually in the INCAR file) 0 Take all bands to calculate the charge density, even unoccupied bands are taken into account. -1 Calculate the total charge density as usual. This is the default value if nothing else is given. -2 Calculate the partial charge density for electrons with there eigenvalues in the range specified by EINT. -3 The same as before, but the energy range is given vs. the Fermi energy. • KPUSE: KPUSE specifies which k-points are used in the evaluation of the partial dos. KPUSE is an array of integer values. KPUSE= 1 2 3 4 means that the charge density is evaluated and summed for the first four k-points. Be careful: VASP changes the kpoint weights if KPUSE is specified. • LSEPB: Specifies whether the charge density is calculated for every band separately and written to a file PARCHG.nb.⋆ (TRUE) or whether charge density is merged for all selected bands and write to the file PARCHG.ALLB.⋆ or PARCHG. Default is FALSE. • LSEPK: Specifies whether the charge density of every k-point is write to the files PARCHG.⋆.nk (TRUE) or whether it is merged (FALSE) to a single file. If the merged file is written, then the weight of each k-point is determined from the KPOINTS file, otherwise the kpoints weights of one are chosen.
4182 次阅读|1 个评论
[转载]VASP包含范德瓦尔斯力的计算
dwd0826 2012-9-7 15:31
转自: http://cms.mpi.univie.ac.at/vasp/vasp/vdW_DF_functional_Langreth_Lundqvist_et_al.html vdW-DF functional of Langreth and Lundqvist et al.The vdW-DF proposed by Dion et al. is a non-local correlation functional that approximately accounts for dispersion interactions . In VASP the method is implemented using the algorithm of Roman-Perez and Soler which transforms the double real space integral to reciprocal space and reduces the computational effort. Several propsed versions of the method can be used : the original vdW-DF , vdW-DF with exchange functionals optimised for the correlation part , and the vdW-DF2 of Langreth and Lundqvist groups . N.B. : This feature has been implemented by J. Klimeš. If you make use of the vdW-DF functionals presented in this section, we ask that you cite the following paper: J. Klimeš, D. R. Bowler, and A. Michaelides, Phys. Rev. B 83 , 195131 (2011). Correlation functionals The method is invoked by setting LUSE_VDW = .TRUE. Moreover, the PBE correlation correction needs to be removed since only LDA correlation is used in the functionals. This is done by setting AGGAC = 0.0000 The two tags above need to be used for all the following functionals. Exchange functionals To use the different exchange functionals, the GGA tag needs to be set appropriately. The original version of Dion et al uses revPBE which can be set by GGA = RE More accurate exchange functionals for the vdW correlation functional have been proposed in and . They can be used by setting GGA = OR for optPBE, GGA = BO PARAM1 = 0.1833333333 PARAM2 = 0.2200000000 for the optB88 functional , or GGA = MK PARAM1 = 0.1234 PARAM2 = 1.0000 for the optB86b functional . For the vdW-DF2 functional the rPW86 exchange functional is used: GGA = ML moreover, the vdW functional needs to be changed to the vdW2 correlation which requires only a change of a parameter: Zab_vdW = -1.8867 An overview of the performance of the different approaches can be found for example in for gas phase clusters and in for solids. Important remarks : The method needs a precalculated kernel which is distributed via the VASP download portal ( VASP - src - vdw_kernel.bindat ) and on the ftp server ( vasp5/src/vdw_kernel.bindat ). If VASP does not find this file, the kernel will be calculated. This, however, is rather demanding calculation. The kernel needs to be either copied to the VASP run directory for each calculation or can be stored in a central location and read from there. The location needs to be set in routine PHI_GENERATE. This does not work on some clusters and the kernel needs to be copied into the run directory in such cases. Currently the evaluation of the vdW energy term is not done fully within the PAW method but the sum of the pseudo-valence density and partial core density is used. This approximation works rather well, as is discussed in , and the accuracy generally increases when the number of valence electrons is increased or when harder PAW datasets are used . For example, for adsorption it is recommended to compare the adsorption energy obtained with standard PAW datasets and more-electron POTCARs for both PBE calculation and vdW-DF calculation to asses the quality of the results. The optimisation of the cell (ISIF=3 and higher) is currently not possible. The spin polarised calculations are possible, but strictly speaking the non-local vdW correlation is not defined for spin-polarised systems. For spin-polarised calculation the non-local vdW correlation energy is evaluated on the sum of the spin-up and spin-down densities. The evaluation of the vdW energy requires some additional time. Most of it is spent on performing FFTs to evaluate the energy and potential. Thus the additional time is determined by the number of FFT grid points in the calculation, basically size of the simulation cell. It is almost independent on the number of the atoms in the cell. Thus the relative cost of the vdW-DF method depends on the ``filling" of the cell and increases with the amount of vacuum in the cell. The relative increase is high for isolated molecules in large cells, but small for solids in smaller cells with many k-points. This feature has been implemented by J. Klimeš. If you make use of the vdW-DF functionals presented in this section, we ask that you cite the following paper: J. Klimeš, D. R. Bowler, and A. Michaelides, Phys. Rev. B 83 , 195131 (2011). http://cms.mpi.univie.ac.at/vasp/vasp/DFT_D2_method_Grimme.html#tab:grimme DFT-D2 method of Grimme LVDW= .TRUE. | .FALSE. (Available as of VASP.5.2.11) Default: LVDW=.FALSE. Popular density functionals are unable to describe correctly van der Waals interactions resulting from dynamical correlations between fluctuating charge distributions. A pragmatic method to work around this problem has been given by the DFT-D approach , which consists in adding a semi-empirical dispersion potential to the conventional Kohn-Sham DFT energy: (90) In the DFT-D2 method of Grimme , the van der Waals interactions are described via a simple pair-wise force field, which is optimized for several popular DFT functionals. The dispersion energy for periodic systems is defined as (91) where the summations are over all atoms and all translations of the unit cell , the prime indicates that for , is a global scaling factor, denotes the dispersion coefficient for the atom pair , is a position vector of atom after performing translations of the unit cell along lattice vectors. In practice, terms corresponding to interactions over distances longer than a certain suitably chosen cutoff radius contribute only negligibly to and can be ignored. The term is a damping function (92) whose role is to scale the force field such as to minimize contributions from interactions within typical bonding distances. Combination rules for dispersion coefficients and vdW radii are (93) and (94) respectively. The global scaling parameter has been optimized for several different DFT functionals such as PBE ( ), BLYP ( ), and B3LYP ( ). The DFT-D2 method can be activated by setting LVDW=.TRUE. Optionally, the forcefield parameters can be controlled using the following flags (the default values are listed): VDW_RADIUS = 30.0 cutoff radius () for pair interactions VDW_SCALING = 0.75 global scaling factor VDW_D = 20.0 damping parameter VDW_C6 = ,... parameters ( ) for each species defined in POSCAR VDW_R0 = ,... parameters () for each species defined in POSCAR The default values for VDW_C6 and VDW_R0 are compiled in Tab. 2 . As the potential energy, interatomic forces as well as stress tensor are corrected by adding contribution from the forcefield, simulations such as the atomic and lattice relaxations, molecular dynamics, and vibrational analysis can be performed. The number of atomic pairs contributing to and the estimated vdW energy are written in OUTCAR (check lines following the expression 'Grimme's potential'). The forces and stresses written in OUTCAR contain the vdW correction but the corrected energy should be read from OSZICAR (energies in OUTCAR do not contain the vdW term). IMPORTANT NOTE: The defaults for VDW_C6 and VDW_R0 are defined only for the first five rows of periodic table of elements (see Tab. 2 ) - if the system contains other elements the user must provide the corresponding parameters. Table 2: Parameters used in the empirical force-field of Grimme . Element C R Element C R Jnm mol Jnm mol H 0.14 1.001 K 10.80 1.485 He 0.08 1.012 Ca 10.80 1.474 Li 1.61 0.825 Sc-Zn 10.80 1.562 Be 1.61 1.408 Ga 16.99 1.650 B 3.13 1.485 Ge 17.10 1.727 C 1.75 1.452 As 16.37 1.760 N 1.23 1.397 Se 12.64 1.771 O 0.70 1.342 Br 12.47 1.749 F 0.75 1.287 Kr 12.01 1.727 Ne 0.63 1.243 Rb 24.67 1.628 Na 5.71 1.144 Sr 24.67 1.606 Mg 5.71 1.364 Y-Cd 24.67 1.639 Al 10.79 1.716 In 37.32 1.672 Si 9.23 1.716 Sn 38.71 1.804 P 7.84 1.705 Sb 38.44 1.881 S 5.57 1.683 Te 31.74 1.892 Cl 5.07 1.639 I 31.50 1.892 Ar 4.61 1.595 Xe 29.99 1.881
13871 次阅读|0 个评论
vasp compilation
qlm2001 2012-8-17 15:52
Platform: Dell T7500 workstation; vasp 4.638; Ubuntu 12.04 (also ubuntu 11.04) software for compilation: gcc; gfortran(maybe necessary); ifort MKL (l_fcompxe_intel64_2011.9.293); openmpi-1.60 for parallelization version Procedures as follows 1. install ifort + mkl 2. make libintel64 3. install openmpi 4. make vasp.4.lib 5. make vasp Please reference to attachment file for detailed procedures and Makefiles both for series and parallel version compilaton process series.zip ; parallelization.zip
4296 次阅读|0 个评论
[转载][zhuanzai] VASP 5.2 parallel compilation
qlm2001 2012-7-18 12:42
I successfully installed VASP 5.2.12 on my DELL desktop, 2 Intel Xeon Quad cores, 8 CPUs in total. I spend a lot of time for it, I'd like to share the experience and I wish you to spend less. :) System: Ubuntu 11.04, 64 bit C compiler: gcc (you can also use icc, i installed Intel C++ Composer XE) Fortran compiler: Intel Fortran Composer XE 2011 GotoBLAS2-1.13 ( http://www.tacc.utexas.edu/tacc-projects/gotoblas2/downloads) FFTW 3.2.2 ( http://www.fftw.org/) , you can use newer if available Openmpi 1.4.3 ( http://www.open-mpi.org/) , you can use newer if available Since I use ubuntu I almost always use sudo command like sudo make TARGET=CORE2 USE_THREAD=0 I don't write sudo thing further in this post since it's feature of ubuntu. Parallel version 1) installation of GotoBLAS2 Basically it's suggested to type just make but this does not always work. I advise to build like make TARGET=CORE2 USE_THREAD=0 be careful with TARGET flag, don't use default or at list check, you could have problems because of that. Second one has to specify USE_THREAD=0 to have not threaded version, it's faster when used with OpenMPI. You can also specify the compiler: make CC=gcc (or icc) FC=ifort TARGET=CORE2 USE_THREAD=0 I had problems to compile with icc, so I used gcc + ifort 2) Installation of FFTW To compile read supported readme files. ./configure --prefix=/folder/for/fftw make make install I didn't specify any CC=gcc for ./configure, so I used default for me gcc compiler . 3) Installation of OpenMPI To compile OpenMPI read supported readme files. ./configure CC=icc CXX=icc F77=ifort F90=ifort --prefix=/folder/for/openmpi make all install Again I had problems with icc, so I compiled it with gcc, again I used gcc + ifort 4) VASP lib I used makefile.linux_ifc_P4 file the only change you need, it's FC=ifort 5) Compilation of VASP Again I started from makefile.linux_ifc_P4 file. Things I changed: 1) FFLAGS = -FR -names lowercase -assume byterecl 2) If you use GotoBLAS BLAS= /home/alex/VASP/GotoBLAS2/libgoto2.so or you can use MKL, but MKL is slow for parallel version for my case BLAS=-L/opt/intel/composerxe-2011.4.191/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread 3) LAPACK LAPACK= ../vasp.5.lib/lapack_double.o 4) fortran compiler/linker for mpi FC=/home/alex/VASP/openmpi/bin/mpif77 5) FFTW for mpi FFT3D = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o /home/alex/VASP/fft/lib/libfftw3.a INCS = -I/home/alex/VASP/fft/include 6) I tried to set -O3 optimization flag in line OFLAG=-O2 -ip -ftz but I didn't find any advantage and I left it as it is. 7) Probably I forgot something but anyway you can see the makefile. Makefile itself: .SUFFIXES: .inc .f .f90 .F #----------------------------------------------------------------------- # Makefile for Intel Fortran compiler for Pentium/Athlon/Opteron # bases systems # we recommend this makefile for both Intel as well as AMD systems # for AMD based systems appropriate BLAS and fftw libraries are # however mandatory (whereas they are optional for Intel platforms) # # The makefile was tested only under Linux on Intel and AMD platforms # the following compiler versions have been tested: # - ifc.7.1 works stable somewhat slow but reliably # - ifc.8.1 fails to compile the code properly # - ifc.9.1 recommended (both for 32 and 64 bit) # - ifc.10.1 partially recommended (both for 32 and 64 bit) # tested build 20080312 Package ID: l_fc_p_10.1.015 # the gamma only mpi version can not be compiles # using ifc.10.1 # # it might be required to change some of library pathes, since # LINUX installation vary a lot # Hence check ***ALL*** options in this makefile very carefully #----------------------------------------------------------------------- # # BLAS must be installed on the machine # there are several options: # 1) very slow but works: # retrieve the lapackage from ftp.netlib.org # and compile the blas routines (BLAS/SRC directory) # please use g77 or f77 for the compilation. When I tried to # use pgf77 or pgf90 for BLAS, VASP hang up when calling # ZHEEV (however this was with lapack 1.1 now I use lapack 2.0) # 2) more desirable: get an optimized BLAS # # the two most reliable packages around are presently: # 2a) Intels own optimised BLAS (PIII, P4, PD, PC2, Itanium) # http://developer.intel.com/software/products/mkl/ # this is really excellent, if you use Intel CPU's # # 2b) probably fastest SSE2 (4 GFlops on P4, 2.53 GHz, 16 GFlops PD, # around 30 GFlops on Quad core) # Kazushige Goto's BLAS # http://www.cs.utexas.edu/users/kgoto/signup_first.html # http://www.tacc.utexas.edu/resources/software/ # #----------------------------------------------------------------------- # all CPP processed fortran files have the extension .f90 SUFFIX=.f90 #----------------------------------------------------------------------- # fortran compiler and linker #----------------------------------------------------------------------- #FC=ifc # fortran linker #FCL=$(FC) #----------------------------------------------------------------------- # whereis CPP ?? (I need CPP, can't use gcc with proper options) # that's the location of gcc for SUSE 5.3 # # CPP_ = /usr/lib/gcc-lib/i486-linux/2.7.2/cpp -P -C # # that's probably the right line for some Red Hat distribution: # # CPP_ = /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/cpp -P -C # # SUSE X.X, maybe some Red Hat distributions: CPP_ = ./preprocess $*.F | /usr/bin/cpp -P -C -traditional $*$(SUFFIX) #----------------------------------------------------------------------- # possible options for CPP: # NGXhalf charge density reduced in X direction # wNGXhalf gamma point only reduced in X direction # avoidalloc avoid ALLOCATE if possible # PGF90 work around some for some PGF90 / IFC bugs # CACHE_SIZE 1000 for PII,PIII, 5000 for Athlon, 8000-12000 P4, PD # RPROMU_DGEMV use DGEMV instead of DGEMM in RPRO (depends on used BLAS) # RACCMU_DGEMV use DGEMV instead of DGEMM in RACC (depends on used BLAS) # tbdyn MD package of Tomas Bucko #----------------------------------------------------------------------- CPP = $(CPP_) -DHOST=\"LinuxIFC\" \ -DCACHE_SIZE=12000 -DPGF90 -Davoidalloc -DNGXhalf \ # -DRPROMU_DGEMV -DRACCMU_DGEMV #----------------------------------------------------------------------- # general fortran flags (there must a trailing blank on this line) # byterecl is strictly required for ifc, since otherwise # the WAVECAR file becomes huge #----------------------------------------------------------------------- FFLAGS = -FR -names lowercase -assume byterecl #----------------------------------------------------------------------- # optimization # we have tested whether higher optimisation improves performance # -axK SSE1 optimization, but also generate code executable on all mach. # xK improves performance somewhat on XP, and a is required in order # to run the code on older Athlons as well # -xW SSE2 optimization # -axW SSE2 optimization, but also generate code executable on all mach. # -tpp6 P3 optimization # -tpp7 P4 optimization #----------------------------------------------------------------------- # ifc.9.1, ifc.10.1 recommended OFLAG=-O2 -ip -ftz OFLAG_HIGH = $(OFLAG) OBJ_HIGH = OBJ_NOOPT = DEBUG = -FR -O0 INLINE = $(OFLAG) #----------------------------------------------------------------------- # the following lines specify the position of BLAS and LAPACK # VASP works fastest with the libgoto library # so that's what we recommend #----------------------------------------------------------------------- # mkl.10.0 # set -DRPROMU_DGEMV -DRACCMU_DGEMV in the CPP lines #BLAS=-L/opt/intel/mkl100/lib/em64t -lmkl -lpthread # even faster for VASP Kazushige Goto's BLAS # http://www.cs.utexas.edu/users/kgoto/signup_first.html # parallel goto version requires sometimes -libverbs BLAS= /home/alex/VASP/GotoBLAS2-1.13_bsd/GotoBLAS2/libgoto2.so # LAPACK, simplest use vasp.5.lib/lapack_double LAPACK= ../vasp.5.lib/lapack_double.o # use the mkl Intel lapack #LAPACK= -lmkl_lapack #----------------------------------------------------------------------- LIB = -L../vasp.5.lib -ldmy \ ../vasp.5.lib/linpack_double.o $(LAPACK) \ $(BLAS) # options for linking, nothing is required (usually) LINK = #----------------------------------------------------------------------- # fft libraries: # VASP.5.2 can use fftw.3.1.X ( http://www.fftw.org) # since this version is faster on P4 machines, we recommend to use it #----------------------------------------------------------------------- #FFT3D = fft3dfurth.o fft3dlib.o # alternatively: fftw.3.1.X is slighly faster and should be used if available #FFT3D = fftw3d.o fft3dlib.o /opt/libs/fftw-3.1.2/lib/libfftw3.a #======================================================================= # MPI section, uncomment the following lines until # general rules and compile lines # presently we recommend OPENMPI, since it seems to offer better # performance than lam or mpich # # !!! Please do not send me any queries on how to install MPI, I will # certainly not answer them !!!! #======================================================================= #----------------------------------------------------------------------- # fortran linker for mpi #----------------------------------------------------------------------- FC=/home/alex/VASP/openmpi/bin/mpif77 FCL=$(FC) #----------------------------------------------------------------------- # additional options for CPP in parallel version (see also above): # NGZhalf charge density reduced in Z direction # wNGZhalf gamma point only reduced in Z direction # scaLAPACK use scaLAPACK (usually slower on 100 Mbit Net) # avoidalloc avoid ALLOCATE if possible # PGF90 work around some for some PGF90 / IFC bugs # CACHE_SIZE 1000 for PII,PIII, 5000 for Athlon, 8000-12000 P4, PD # RPROMU_DGEMV use DGEMV instead of DGEMM in RPRO (depends on used BLAS) # RACCMU_DGEMV use DGEMV instead of DGEMM in RACC (depends on used BLAS) # tbdyn MD package of Tomas Bucko #----------------------------------------------------------------------- #----------------------------------------------------------------------- CPP = $(CPP_) -DMPI -DHOST=\"LinuxIFC\" -DIFC \ -DCACHE_SIZE=4000 -DPGF90 -Davoidalloc -DNGZhalf \ -DMPI_BLOCK=8000 # -DRPROMU_DGEMV -DRACCMU_DGEMV #----------------------------------------------------------------------- # location of SCALAPACK # if you do not use SCALAPACK simply leave that section commented out #----------------------------------------------------------------------- #BLACS=$(HOME)/archives/SCALAPACK/BLACS/ #SCA_=$(HOME)/archives/SCALAPACK/SCALAPACK #SCA= $(SCA_)/libscalapack.a \ # $(BLACS)/LIB/blacsF77init_MPI-LINUX-0.a $(BLACS)/LIB/blacs_MPI-LINUX-0.a $(BLACS)/LIB/blacsF77init_MPI-LINUX-0.a SCA= #----------------------------------------------------------------------- # libraries for mpi #----------------------------------------------------------------------- #LIB = -L../vasp.5.lib -ldmy \ # ../vasp.5.lib/linpack_double.o $(LAPACK) \ # $(SCA) $(BLAS) # FFT: fftmpi.o with fft3dlib of Juergen Furthmueller #FFT3D = fftmpi.o fftmpi_map.o fft3dfurth.o fft3dlib.o # alternatively: fftw.3.1.X is slighly faster and should be used if available FFT3D = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o /home/alex/VASP/fft/lib/libfftw3.a INCS = -I/home/alex/VASP/fft/include #----------------------------------------------------------------------- # general rules and compile lines #----------------------------------------------------------------------- BASIC= symmetry.o symlib.o lattlib.o random.o SOURCE= base.o mpi.o smart_allocate.o xml.o \ constant.o jacobi.o main_mpi.o scala.o \ asa.o lattice.o poscar.o ini.o mgrid.o xclib.o vdw_nl.o xclib_grad.o \ radial.o pseudo.o gridq.o ebs.o \ mkpoints.o wave.o wave_mpi.o wave_high.o \ $(BASIC) nonl.o nonlr.o nonl_high.o dfast.o choleski2.o \ mix.o hamil.o xcgrad.o xcspin.o potex1.o potex2.o \ constrmag.o cl_shift.o relativistic.o LDApU.o \ paw_base.o metagga.o egrad.o pawsym.o pawfock.o pawlhf.o rhfatm.o paw.o \ mkpoints_full.o charge.o Lebedev-Laikov.o stockholder.o dipol.o pot.o \ dos.o elf.o tet.o tetweight.o hamil_rot.o \ steep.o chain.o dyna.o sphpro.o us.o core_rel.o \ aedens.o wavpre.o wavpre_noio.o broyden.o \ dynbr.o rmm-diis.o reader.o writer.o tutor.o xml_writer.o \ brent.o stufak.o fileio.o opergrid.o stepver.o \ chgloc.o fast_aug.o fock.o mkpoints_change.o sym_grad.o \ mymath.o internals.o dynconstr.o dimer_heyden.o dvvtrajectory.o vdwforcefield.o \ hamil_high.o nmr.o pead.o mlwf.o subrot.o subrot_scf.o \ force.o pwlhf.o gw_model.o optreal.o davidson.o david_inner.o \ electron.o rot.o electron_all.o shm.o pardens.o paircorrection.o \ optics.o constr_cell_relax.o stm.o finite_diff.o elpol.o \ hamil_lr.o rmm-diis_lr.o subrot_cluster.o subrot_lr.o \ lr_helper.o hamil_lrf.o elinear_response.o ilinear_response.o \ linear_optics.o linear_response.o \ setlocalpp.o wannier.o electron_OEP.o electron_lhf.o twoelectron4o.o \ ratpol.o screened_2e.o wave_cacher.o chi_base.o wpot.o local_field.o \ ump2.o bse_te.o bse.o acfdt.o chi.o sydmat.o dmft.o \ rmm-diis_mlr.o linear_response_NMR.o vasp: $(SOURCE) $(FFT3D) $(INC) main.o rm -f vasp $(FCL) -o vasp main.o $(SOURCE) $(FFT3D) $(LIB) $(LINK) makeparam: $(SOURCE) $(FFT3D) makeparam.o main.F $(INC) $(FCL) -o makeparam $(LINK) makeparam.o $(SOURCE) $(FFT3D) $(LIB) zgemmtest: zgemmtest.o base.o random.o $(INC) $(FCL) -o zgemmtest $(LINK) zgemmtest.o random.o base.o $(LIB) dgemmtest: dgemmtest.o base.o random.o $(INC) $(FCL) -o dgemmtest $(LINK) dgemmtest.o random.o base.o $(LIB) ffttest: base.o smart_allocate.o mpi.o mgrid.o random.o ffttest.o $(FFT3D) $(INC) $(FCL) -o ffttest $(LINK) ffttest.o mpi.o mgrid.o random.o smart_allocate.o base.o $(FFT3D) $(LIB) kpoints: $(SOURCE) $(FFT3D) makekpoints.o main.F $(INC) $(FCL) -o kpoints $(LINK) makekpoints.o $(SOURCE) $(FFT3D) $(LIB) clean: -rm -f *.g *.f90 *.o *.L *.mod ; touch *.F main.o: main$(SUFFIX) $(FC) $(FFLAGS)$(DEBUG) $(INCS) -c main$(SUFFIX) xcgrad.o: xcgrad$(SUFFIX) $(FC) $(FFLAGS) $(INLINE) $(INCS) -c xcgrad$(SUFFIX) xcspin.o: xcspin$(SUFFIX) $(FC) $(FFLAGS) $(INLINE) $(INCS) -c xcspin$(SUFFIX) makeparam.o: makeparam$(SUFFIX) $(FC) $(FFLAGS)$(DEBUG) $(INCS) -c makeparam$(SUFFIX) makeparam$(SUFFIX): makeparam.F main.F # # MIND: I do not have a full dependency list for the include # and MODULES: here are only the minimal basic dependencies # if one strucuture is changed then touch_dep must be called # with the corresponding name of the structure # base.o: base.inc base.F mgrid.o: mgrid.inc mgrid.F constant.o: constant.inc constant.F lattice.o: lattice.inc lattice.F setex.o: setexm.inc setex.F pseudo.o: pseudo.inc pseudo.F poscar.o: poscar.inc poscar.F mkpoints.o: mkpoints.inc mkpoints.F wave.o: wave.F nonl.o: nonl.inc nonl.F nonlr.o: nonlr.inc nonlr.F $(OBJ_HIGH): $(CPP) $(FC) $(FFLAGS) $(OFLAG_HIGH) $(INCS) -c $*$(SUFFIX) $(OBJ_NOOPT): $(CPP) $(FC) $(FFLAGS) $(INCS) -c $*$(SUFFIX) fft3dlib_f77.o: fft3dlib_f77.F $(CPP) $(F77) $(FFLAGS_F77) -c $*$(SUFFIX) .F.o: $(CPP) $(FC) $(FFLAGS) $(OFLAG) $(INCS) -c $*$(SUFFIX) .F$(SUFFIX): $(CPP) $(SUFFIX).o: $(FC) $(FFLAGS) $(OFLAG) $(INCS) -c $*$(SUFFIX) # special rules #----------------------------------------------------------------------- # these special rules are cummulative (that is once failed # in one compiler version, stays in the list forever) # -tpp5|6|7 P, PII-PIII, PIV # -xW use SIMD (does not pay of on PII, since fft3d uses double prec) # all other options do no affect the code performance since -O1 is used fft3dlib.o : fft3dlib.F $(CPP) $(FC) -FR -names lowercase -O2 -c $*$(SUFFIX) fft3dfurth.o : fft3dfurth.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) fftw3d.o : fftw3d.F $(CPP) $(FC) -FR -names lowercase -O1 $(INCS) -c $*$(SUFFIX) wave_high.o : wave_high.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) radial.o : radial.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) symlib.o : symlib.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) symmetry.o : symmetry.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) wave_mpi.o : wave_mpi.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) wave.o : wave.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) dynbr.o : dynbr.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) asa.o : asa.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) broyden.o : broyden.F $(CPP) $(FC) -FR -names lowercase -O2 -c $*$(SUFFIX) us.o : us.F $(CPP) $(FC) -FR -names lowercase -O1 -c $*$(SUFFIX) LDApU.o : LDApU.F $(CPP) $(FC) -FR -names lowercase -O2 -c $*$(SUFFIX)
8691 次阅读|0 个评论
[转载]VASP文档翻译之表面计算
guolingju 2012-3-5 22:26
VASP表面计算 作者: xianggui7895 出处: http://emuch.net/bbs/viewthread.php?tid=2567784 表面计算对精度和技巧要求相当高,所以在进行此类计算时需要非常细心,计算之前应仔细阅读和消化第8章中的基本知识。在下面几节中将介绍表面计算的典型步骤,需要注意的是,即使你严格按照给定步骤进行计算,依然可能会出现错误,得到没有任何物理意义的结果,这就需要你对可能出现的错误(结合第8章)进行仔细的分析,比如,FFT网格大小、K点数目是否足够,计算结果是否收敛,原子位置是否正确等,更一般的来说就是INCAR、POSCAR、KPOINTS、param.inc等输入文件是否正确。还需注意,前一步的计算误差可能导致后面计算中出现更大的错误,比如晶格常数1%的计算误差可能导致表面弛豫结果中3%的误差。因此,在初始计算中(包括体性质计算,确定FFT网格大小和K点的合适数目等)多花点时间是非常值得的。 1. 体性质计算 材料体性质计算的第一步,可以使用四面体方法(ISMEAR=-5或-4)、通过提高K点数目直到计算收敛到预期精度。这里所说的预期精度没有特定标准,一般说来如果表面能计算误差要控制在10 meV以内,可以提高K点数目直到总能收敛到1 meV左右即可。计算材料体性质的slab模型通常含有20-100个原子,因此为得到可靠的表面能结果需要进行非常精确的体能量计算,实际上越精确越好,推荐选择PREC=High。 第二步,将四面体方法改为有限温度方法(ISMEAR=0或N,N为正整数),有两种选择: (1) Gaussian方法(ISMEAR=0),较小的SIGMA值(SIGMA=0.1)。前面计算中多次用到这种方法,但更推荐第二种方法: (2) Methfessel-Paxton方法(ISMEAR=1),SIGMA值要尽量大,但要保证OUTCAR文件中的自由能和总能之差(比如entropy T*S项)可忽略不计。entropy项可以很好的估计可能误差的大小,必须在预期误差范围内(如前例中是1 meV左右) 从现在开始,将无须改变ISMEAR、SIGMA和ENCUT值,而通过逐步提高K点数目来重复体性质计算,此时K点的收敛速率应该和四面体方法基本差不多。 选择一个用在表面计算中合适的K点数目和截断能,计算平衡晶格常数,注意尽量避免包络错误(Wrap around errors,设置PREC=High)。现在得出的晶格常数就是将来表面计算中使用的晶格常数,而自由能是所有后续计算的参考值,此外还要计算entropy值(OUTCAR中的entropy*TS项)或者记下总能和physical能(σ-0)。 2. 表面计算的FFT网格和K点数目 第一步需要确定合理的FFT网格大小,为从根本上杜绝包络错误,可以选择VASP的推荐参数(或者设置PREC=High)。开始尝试计算时,可选择5个原子层和5个真空层的slab模型,取一个合理的不太大的K点数目,在OUTCAR文件中将给出能严格避免包络错误的FFT网格大小值: WARNING: wrap around error must be expected Set NGX to 22 采用这个推荐网格会导致计算时间的延长,但至少应该可以做一次这样精确的计算。如果想减小计算时间,可以尝试使用3/4规则(PREC=Med),将其计算结果与精确收敛结果进行一下对比。 下一步需要确定合适的K点网格数目。体性质计算已经提供了一个参考,在表面计算中,通常含有一个长的晶格矢量和两个短的晶格矢量,在长晶格方向上,一个K点网格一般就足够了,因为在这个方向上色散是由真空层造成的。在短晶格方向上,网格划分数的收敛速度和体材料基本相同,提高K点数目知道自由能足够收敛即可。要再次提醒,避免包络错误! 可能用到的互相检查方法: (1) 每个原子的entropy值应该和体性质计算相同,否则降低SIGMA值重新所有计算。 (2) 总的力偏移量应该足够小,否则原因是FFT网格不够大,应当相应地提高。 (3) 检查力随着K点网格和FFT网格的收敛速度。 3. 原子层和真空层数目 从现在开始,固定K点网格数目和包络错误大小(比如,保持严格杜绝包络错误的FFT网格大小和实际的FFT网格大小的比例为一定值),测试需要多少原子层和真空层,才能得到合理的表面能值,以及表面第一层(或第二层)原子收敛的作用力。 注意:在一次计算和下一次计算中修改的参数不要超过一个,比较k点数目和超胞大小都不同的两次计算结果几乎是不可能的。特别要注意FFT网格:如果增大了超胞尺寸而没有相应地提高FFT网格的尺寸,计算结果不但没有改进反而更糟糕,因为包络错误增大了
个人分类: 第一性原理(vasp)|8186 次阅读|0 个评论
[转载]vasp 功函数
热度 1 shengxianlei06 2011-12-6 08:39
INCAR中参数设置 1.加极化修正 IDIPOL=3 极化修正的方向 LDIPOL= .TRUE. 是否加极化修正 LVTOT = .TRUE. 计算work function (即静电势) 2.如果不加极化,直接用 LVTOT = .TRUE. 计算work function (即静电势) 计算时,可以和DOS一起计算。(如果利用静态计算的chgcar,计算结果有问题) 后期处理 用的程序是 vtotav.f --------------------------------------- INCAR里面加入LVTOT=.T.得到LOCPOT 运行编译好的脚本ifort -O vtotav-v5.2-f 画出z方向的选3 PROGRAM VTOTAV PARAMETER(NGXM=256,NOUTM=1024) CHARACTER*80 HEADER DIMENSION VLOCAL(NGXM*NGXM*NGXM),VAV(NOUTM) I=0 WRITE(*,*) 'Which direction to keep? (1-3 --- 1=X,2=Y,3=Z)' READ(*,*) IDIR IDIR=MOD(IDIR+20,3)+1 OPEN(20,FILE='LOCPOT',STATUS='OLD',ERR=1000) C READ(20,*,ERR=1000,END=1000) NIONS,IDUM1,IDUM2 READ(20,'(A)',ERR=1000,END=1000) HEADER READ(20,'(A)',ERR=1000,END=1000) HEADER READ(20,'(A)',ERR=1000,END=1000) HEADER READ(20,'(A)',ERR=1000,END=1000) HEADER READ(20,'(A)',ERR=1000,END=1000) HEADER READ(20,'(A)',ERR=1000,END=1000) HEADER READ(20,'(A)',ERR=1000,END=1000) HEADER I=0; II=0; III=0; IIII=0 READ(HEADER,*,ERR=12,END=12) I,II,III,IIII 12 NIONS=I+II+III+IIII C READ(20,*,ERR=1000,END=1000) NIONS READ(20,'(A)',ERR=1000,END=1000) HEADER WRITE(*,*) NIONS DO 10 I=1,NIONS READ(20,*,ERR=1000,END=1000) RDUM1,RDUM2,RDUM3 10 CONTINUE WRITE(*,*) 'positions read' READ(20,'(A)',ERR=1000,END=1000) HEADER READ(20,*,ERR=1000,END=1000) NGX,NGY,NGZ NPLWV=NGX*NGY*NGZ IF (IDIR.EQ.1) NOUT=NGX IF (IDIR.EQ.2) NOUT=NGY IF (IDIR.EQ.3) NOUT=NGZ IF (NPLWV.GT.(NGXM*NGXM*NGXM)) THEN WRITE(*,*) 'NPLWV .GT. NGXM**3 (',NPLWV,').' STOP ENDIF IF (NOUT.GT.NOUTM) THEN WRITE(*,*) 'NOUT .GT. NOUTM (',NOUT,').' STOP ENDIF C READ(20,'(10F8.3)',ERR=1000,END=1000) (VLOCAL(I),I=1,NPLWV) READ(20,*,ERR=1000,END=1000) (VLOCAL(I),I=1,NPLWV) WRITE(*,*) 'charge density read' CLOSE(20) DO 20 I=1,NOUTM 20 VAV(I)=0. SCALE=1./FLOAT(NPLWV/NOUT) WRITE(*,*) SCALE IF (IDIR.EQ.1) THEN DO 150 IX=1,NGX DO 100 IZ=1,NGZ DO 100 IY=1,NGY IPL=IX+((IY-1)+(IZ-1)*NGY)*NGX VAV(IX)=VAV(IX)+VLOCAL(IPL)*SCALE 100 CONTINUE 150 CONTINUE ELSE IF (IDIR.EQ.2) THEN DO 250 IY=1,NGY DO 200 IZ=1,NGZ DO 200 IX=1,NGX IPL=IX+((IY-1)+(IZ-1)*NGY)*NGX VAV(IY)=VAV(IY)+VLOCAL(IPL)*SCALE 200 CONTINUE 250 CONTINUE ELSE IF (IDIR.EQ.3) THEN DO 350 IZ=1,NGZ DO 300 IY=1,NGY DO 300 IX=1,NGX IPL=IX+((IY-1)+(IZ-1)*NGY)*NGX VAV(IZ)=VAV(IZ)+VLOCAL(IPL)*SCALE 300 CONTINUE 350 CONTINUE ELSE WRITE(*,*) 'Hmmm?? Wrong IDIR ',IDIR STOP ENDIF OPEN(20,FILE='VLINE') WRITE(20,*) NOUT,IDIR DO 500 I=1,NOUT WRITE(20,'(I6,2X,E18.11)') I,VAV(I) 500 CONTINUE CLOSE(20) STOP 1000 WRITE(*,*) 'Error opening or reading file LOCPOT.' WRITE(*,*) 'item :',I STOP END
个人分类: VASP|10845 次阅读|2 个评论
[转载]vasp晶体结构优化
swx0789 2011-7-23 16:34
结构优势是我们做计算的的第一步,往往也是最重要的一步,一个不合理的结够优化可能导致错误的结果。在论坛里面也有很多虫子们问关于结构优化的问题,貌似大家对结构优化不是很有把握。我在这里开贴只是抛砖引玉,希望大家积极交流。下面是我的结构优化的一些经验,希望对大家有点用 第一步: 建模我一般都是MS建好之后 修改*.cell文件得到POSCAR具体的方法参考站内的信息(没找到最开始的网页,谁找到了贴上来) 这是*.cell文件的内容 %BLOCK LATTICE_CART 7.365858463230930 0.816888331419153 1.518567634398170 0.000000000000000 7.749147189276010 0.114969347281651 0.000000000000000 0.000000000000000 16.835000015679299 %ENDBLOCK LATTICE_CART %BLOCK POSITIONS_FRAC H 0.1045034131293120 0.0506482790444403 0.1503325580937660 H-0.2037023292911190 0.2015583952382200 0.1604502537744340 H-0.4269999607791240 0.3837162987940400 0.0980194481736503 H-0.3453870956286900 0.4791801646100701-0.0460018173909388 H 0.2784615598004869 0.2515795170279700-0.1346530187895070 H 0.2619963944132780-0.5890935655390530 0.3725661174512691 H 0.2595685601772050-0.5519954246490220 0.1897443712411160 H 0.0767881789054980-0.6048204220967270 0.2666625899874510 H 0.2771409424864049-0.7522385903899170 0.2411634679797081 H 0.5634931211089379-0.7084903644666670 0.2828144510356441 H 0.5814851393159790-0.5287740945641601 0.3433449582781520 H 0.5793331415735910-0.5003094920852541 0.2386888180011851 H 0.4946819829083929-0.2212541120652400 0.3755202742234630 …………………… %ENDBLOCK POSITIONS_FRAC %BLOCK KPOINTS_LIST 0.0000000000000000 0.0000000000000000 0.2500000000000000 1.000000000000000 %ENDBLOCK KPOINTS_LIST %BLOCK CELL_CONSTRAINTS 1 2 3 ……………………………… 把第一行 %BLOCK LATTICE_CART 改成SYSTEM=GRPHENE(你体系的名称 可以随便写) 然后后面填一行1 再把 %ENDBLOCK LATTICE_CART %BLOCK POSITIONS_FRAC 改为 H C N Si(原子的类型) 5242 2 2(原子的数目) Direct (坐标表示的方式,对于这种方法,只能用D) 然后把后面的原子符号H C 等去掉 H-0.0000000000000000-0.0000000000000001 0.7500000000000000 C 0.1666666666666668 0.0833333333333332 0.7500000000000000 把 %ENDBLOCK POSITIONS_FRAC以后的全部删掉就行了 保存为POSCAR 就可以了 此时要 注意保存的格式使用unix格式,ultredit可以选择保存格式,如果用记事本编辑的话,所有的行前不能有空格(从*.cell里面复制过来的空格,自己加的没关系)否则提示找不到原子,论坛里面有很多这样的问题 。 第二步: 开始结构优化了,我们一般使用脚本来实现,这里使用的是侯老师所说的方法,体积与能量的曲线然后拟合去能量最小的体积进行进一步优化。先讲能量与体积的曲线怎么得来的。 INCAR 最主要是设置 PREC =M # medium, high low ISTART = 0 # job : 0-new 1-cont 2-samecut ICHARG =2 # charge: 1-file 2-atom 10-const EDIFF = 0.1E-04 # stopping-criterion for ELM(对于大的体系是设置0.1E-03) NSW = 1000 # number of steps for IOM IBRION = 2 # ionic relax: 0-MD 1-quasi-New 2-CG ISIF = 4 # stress and relaxation 对于大的体系可以设置 IALGO=48 ALGO= Very Fast 如果速度还不行可以设置POTIM= 0.1 KPOINTS A 0 M 4 4 4 (体积大的可以弄小一点,这个没试过,但是感觉一个点可能有点问题) 下面开始POSCAR 侯老师也说过这个方法,在手册里面这也是有的 其实就是通过取不同大小的晶胞分别优化,取能量做图。很多虫子们总是在问怎么建立,还有说对于,有三个轴的怎么取晶格常数,在这里如果你采用我这里的方法就不用了(但是在INCAR里面必须设置ISIF=4),为什么呢?我们通过刚才建立POSCAR 里面晶格常数1来实现,改变晶胞的大小就可以了。 有脚本,POSCAR 就不需要了,但是刚才编辑的POSCAR 还是有用的(其实这就是产生POSCAR 的脚本),这个脚本是vasp的说明书里面的 写脚本 rvasp 内容如下: for i in1.01 1.011.02 0.99 0.98 do cat POSCAR ! SYSTEM=TN-PEN $i 7.365858463230930 0.816888331419153 1.518567634398170 0.000000000000000 7.749147189276010 0.114969347281651 0.000000000000000 0.000000000000000 16.835000015679299 H C N Si 5242 2 2 Direct 0.1045034131293120 0.0506482790444403 0.1503325580937660 -0.2037023292911190 0.2015583952382200 0.1604502537744340 -0.4269999607791240 0.3837162987940400 0.0980194481736503 -0.3453870956286900 0.4791801646100701-0.0460018173909388 0.2784615598004869 0.2515795170279700-0.1346530187895070 0.2619963944132780-0.5890935655390530 0.3725661174512691 0.2595685601772050-0.5519954246490220 0.1897443712411160 0.0767881789054980-0.6048204220967270 0.2666625899874510 0.2771409424864049-0.7522385903899170 0.2411634679797081 0.5634931211089379-0.7084903644666670 0.2828144510356441 0.5814851393159790-0.5287740945641601 0.3433449582781520 0.5793331415735910-0.5003094920852541 0.2386888180011851 0.4946819829083929-0.2212541120652400 0.3755202742234630 …………………… ! echo "a= $i" ;mpirun -np 24vasp E=`tail -1 OSZICAR`; echo $i $E SUMMARY cp CONTCAR CONTCAR$i done 最前面 for i in1.01 1.011.02 0.99 0.98 (设置的体积比例,体积比例是 i 的3次方) do cat POSCAR ! 这里面 SYSTEM=TN-PEN $i 7.365858463230930 0.816888331419153 1.518567634398170 0.000000000000000 7.749147189276010 0.114969347281651 0.000000000000000 0.000000000000000 16.835000015679299 H C N Si 5242 2 2 Direct 0.1045034131293120 0.0506482790444403 0.1503325580937660 -0.2037023292911190 0.2015583952382200 0.1604502537744340 -0.4269999607791240 0.3837162987940400 0.0980194481736503 -0.3453870956286900 0.4791801646100701-0.0460018173909388 0.2784615598004869 0.2515795170279700-0.1346530187895070 0.2619963944132780-0.5890935655390530 0.3725661174512691 0.2595685601772050-0.5519954246490220 0.1897443712411160 0.0767881789054980-0.6048204220967270 0.2666625899874510 0.2771409424864049-0.7522385903899170 0.2411634679797081 0.5634931211089379-0.7084903644666670 0.2828144510356441 0.5814851393159790-0.5287740945641601 0.3433449582781520 0.5793331415735910-0.5003094920852541 0.2386888180011851 0.4946819829083929-0.2212541120652400 0.3755202742234630 …………………… 这些都是刚才制作的POSCAR ,只有那个第二行$i 改了一下 后面这些 ! echo "a= $i" ;mpirun -np 24vasp(24 是核数) E= ` tail -1 OSZICAR ` ; echo $i $E SUMMARY ( 注意那个`是tab键上的那个,非单引号 ) cp CONTCAR CONTCAR$i(这一步是我加的,把优化好的复制出来,为了下一步优化节省时间) done 脚本rvasp写好以后,改变一下权限chmod +x rvasp ,最后运行./rvasp 即可 第三步 : 运行脚本以后在SUNMMRY可以找到体积比例与对应的能量,我们未必一定把体积算出来,用体积比例可以得到拟合曲线,具体做法,把数据放入origin,然后选中数据在analysis里面,选择fiting,一般设置二次项拟合,找到能量最小值 第四步 : 把能量最小值对应的体积比例找出来,把得到的类似CONTCAR1.01(后面那个数据是体积比例,选择一个离你拟合相差最小的一个)放到POSCAR中(cp CONTCAR1.01 POSCAR),(如果你最开始选择的体积比例间隔比较大的大,想得到更加精确的体积比例,就把CONTCAR1.01的内容复制到rvasp脚本,替换掉中间部分,然后再在for i in 后面设置你的体积比例,一般两次都能找到比较好的体积比例) 第五步 : 设置 INCAR 如下 PREC =M # medium, high low ISTART = 0 # job : 0-new 1-cont 2-samecut ICHARG =2 # charge: 1-file 2-atom 10-const EDIFF = 0.1E-05 # stopping-criterion for ELM (对于大的体系是设置0.1E-03) EDIFFG= 0.001 NSW = 1000 # number of steps for IOM IBRION = 2 # ionic relax: 0-MD 1-quasi-New 2-CG ISIF = 3 # stress and relaxation (这里变为3,是因为我们拟合的未必是最合适的,通过这个参数可以适当调节到更好) 后面的可以不要了,如果算不动加上也无妨,但是最后一次优化精确点好。里面的收敛标准看你自己定,上面的可以满足大部分的要求,但是如果对构型要求不严格的话可以适当调低点收敛标准(EDIFF = 0.1E-04 EDIFFG= 0.01),具体的收敛标准可以查看 http://emuch.net/bbs/viewthread.php?tid=2512497 KPOINTS 可以加大数量,但是也没什么太大的必要 A 0 M 4 4 4 POSCAR 就是第四步得到的 输入vasp计算 这一步运行结构优化就可以!但是一定要查看OUTCAR中关于原子受力的信息,如果有个别受力太大的话还是不行的,要继续优化,使用最后一步就行了。 如果有什么意见或者错误,欢迎大家指正!也希望大家能够积极参与讨论! From: http://emuch.net/bbs/viewthread.php?tid=3234667fpage=1
个人分类: VASP|13300 次阅读|0 个评论
[转载]晶格优化中ISIF取值的探究(六方MgO为例)
swx0789 2011-7-23 15:54
一、目的:搞清楚用vasp进行晶格优化中ISIF值的重要性 二、方法:采用分步优化和一次性优化两种方法探究 三、重点参数说明: ISIF:2-relax ions?/Y; || change cell shape?/N; || change cell volume?/N 3-relax ions?/Y; || change cell shape?/Y; || change cell volume?/Y 4-relax ions?/Y; || change cell shape?/Y; || change cell volume?/N 5-relax ions?/N; || change cell shape?/Y; || change cell volume?/N 6-relax ions?/N; || change cell shape?/Y; || change cell volume?/Y 7-relax ions?/N; || change cell shape?/N; || change cell volume?/Y POSCAR: a 0.0 -1.0 0.0 0.8660254037844 0.5 0.0 0.0 0.0 1.6230529595 2 Direct 0.6666666666666667 0.3333333333333333 0.750 0.3333333333333333 0.6666666666666667 0.250 四、实验步骤: A、采用分步优化法: 算法原理: a.先进行一次驰豫优化计算 b.将CONTCAR拷贝成POSCAR c.再进行一次静态计算,求出总能和体积,拟合状态方程,得出晶格常 数 I、取ISIF=2时:(#上下对应。上行为系列缩放系数;下行为相应的总能;所取CONTAR&volume为缩放系数取3.71时的结构情况) 2.91 3.01 3.11 3.21 3.31 3.41 3.51 3.61 3.71 -0.09768706 -2.60381322-2.62609278 -2.62612787 -2.62612791 -2.60064488-2.59725747 -2.59725252 -2.597253 volume of cell : 71.78 CONTCAR: 3.710000000000000 0.0000000000000000 -1.0000000000000000 0.0000000000000000 0.8660254037844000 0.5000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 1.6230529595000000 II、取ISIF=3时: 2.91 3.01 3.11 3.21 3.31 3.41 3.51 3.61 3.71 -1.47880875 -3.56749270-3.57829654 -3.57830700 -3.57830701 -3.55534231 -3.55344206 -3.55344601 -3.553446 volume of cell : 43.12 CONTCAR: 3.710000000000000 0.0000000000000000 -0.8480309609621116 0.0000000000000000 0.7344163553888973 0.4240154804810558 0.0000000000000000 0.0000000000000000 0.0000000000000000 1.3556928126902820 III、取ISIF=4时: 2.91 3.01 3.11 3.21 3.31 3.41 3.51 3.61 3.71 -0.24918897 -2.60258815 -2.63108804 -2.63118786 -2.63118806 -2.60762910 -2.60458644 -2.60459724 -2.604597 volume of cell : 71.78 CONTCAR: 3.710000000000000 0.0000000000000001 -1.0553127846071310 0.0000000000000000 0.9139276804085778 0.5276563923035652 0.0000000000000000 0.0000000000000001 0.0000000000000000 1.4573715661012910 IV、取ISIF=5时: 2.91 3.01 3.11 3.21 3.31 3.41 3.51 3.61 3.71 -0.24918897 -2.60258815 -2.63108804 -2.63118786 -2.63118806 -2.60762910 -2.60458644 -2.60459724 -2.604597 volume of cell : 71.78 CONTCAR: 3.710000000000000 0.0000000000000001 -1.0553127846071310 0.0000000000000000 0.9139276804085778 0.5276563923035652 0.0000000000000000 0.0000000000000001 0.0000000000000000 1.4573715661012910 V、取ISIF=6时: 2.91 3.01 3.11 3.21 3.31 3.41 3.51 3.61 3.71 -1.47880875 -3.56749270 -3.57829654 -3.57830700 -3.57830701 -3.55534231 -3.55344206 -3.55344601 -3.553446 volume of cell : 43.12 CONTCAR: 3.710000000000000 0.0000000000000000 -0.8480309609621116 0.0000000000000000 0.7344163553888973 0.4240154804810558 0.0000000000000000 0.0000000000000000 0.0000000000000000 1.3556928126902820 VI、取ISIF=7时: 2.91 3.01 3.11 3.21 3.31 3.41 3.51 3.61 3.71 -1.28296288 -3.56234825 -3.57418319 -3.57419641 -3.57419642 -3.55112710 -3.54922372 -3.54922856 -3.549229 volume of cell : 43.07 CONTCAR: 3.710000000000000 0.0000000000000000 -0.8434465875014347 0.0000000000000000 0.7304461715115043 0.4217232937507173 0.0000000000000000 0.0000000000000000 0.0000000000000000 1.3689584800243790 B:采用一次优化法: 与上面方法不同的是INCAR中取ISIF=3,取定的实验缩放系数a=3.21,计算的精度选得更高,且仅做一次优化。 结果为: TOTEN= -3.549568 eV volume of cell : 43.12 CONTCAR: Mg-hex 3.210000000000000 0.0000000000000000 -0.9801232359458133 0.0000000000000000 0.8488116211684474 0.4900616179729067 0.0000000000000000 0.0000000000000000 0.0000000000000000 1.5669819270266370 2 Direct 0.66666666666666430.33333333333333570.7500000000000000 0.33333333333333570.66666666666666430.2500000000000000 结论: 1、特殊位置的粒子随晶格形状的改变而变化,不论允许驰豫与否。 2、不同ISIF的取值对晶格优化影响不大,本例中缩放系数均在3.21~3.31之范围内 3、采用分步优化法得出的优化晶格比较可靠
个人分类: VASP|7936 次阅读|0 个评论
[转载]VASP能够进行哪些过程的计算?怎样设置?
swx0789 2011-7-23 09:45
我们平时最常用的研究方法是做单点能计算,结构优化、从头计算的分子动力学和电子结构相关性质的计算。 一般我们的研究可以按照这样的过程来进行 如果要研究一个体系的最优化构型问题可以首先进行结构弛豫优化,然后对优化后的结构进行性质计算或者单点能计算。 如果要研究一个体系的热力学变化过程可以首先进行分子动力学过程模拟,然后在某个温度或压强下进行性质计算或者单点能计算。 如果要研究一个体系的热力学结构变化可以首先在初始温度下进行NVT计算,然后进行分子动力学退火,然后在结束温度下进行性质计算研究。 什么是单点能计算(single point energy)?如何计算? 跟其它软件类似,VASP具有单点能计算的功能。也就是说,对一个给定的固定不变的结构(包括原子、分子、表面或体材料)能够计算其总能,即静态计算功能。 单点能计算需要的参数最少,最多只要在KPOINTS文件中设置一下合适的K点或者在INCAR文件中给定一个截断能ENCUT就可以了。还有一个参数就是电子步的收敛标准的设置EDIFF,默认值为EDIFF=1E-4,一般不需要修改这个值。 具体来说要计算单点能,只要在INCAR中设置IBRION=-1也就是让离子不移动就可以了。 什么是结构优化(structure optimization)?如何计算? 结构优化又叫结构弛豫(structure relax),是指通过对体系的坐标进行调整,使得其能量或内力达到最小的过程,与动力学退火不同,它是一种在0K下用原子间静力进行优化的方法。可以认为结构优化后的结构是相对稳定的基态结构,能够在实验之中获得的几率要大些(当然这只是理论计算的结果,必须由实验来验证)。 一般要做弛豫计算,需要设置弛豫收敛标准,也就是告诉系统收敛达成的判据(convergence break condition),当系统检测到能量变化减小到一个确定值时例如EDIFFG=1E-3时视为收敛中断计算,移动离子位置尝试进行下一步计算。EDIFFG这个值可以为负,例如EDIFFG=-0.02,这时的收敛标准是当系统发现所有离子间作用力都小于给定的数值,如0.02eV/A时视为收敛而中断。 弛豫计算主要有两种方式:准牛顿方法(quasi-Newton RMM-DIIS)和共轭梯度法(CG)两种。准牛顿方法计算速度较快,适合于初始结构与平衡结构(势能面上全局最小值)比较接近的情况,而CG方法慢一些,找到全局最小的可能性也要大一些。选择方法为IBRION=1时为准牛顿方法而IBRION=2时为CG方法。 具体来说要做弛豫计算,设置IBRION=1或者2就可以了,其它参数根据需要来设置。NSW是进行弛豫的最大步数,例如设置NSW=100,当计算在100步之内达到收敛时计算自动中断,而100步内没有达到收敛的话系统将在第100步后强制中止(平常计算步数不会超过100步,超过100步可能是计算的体系出了问题)。参数通常可以从文献中发现,例如收敛标准EDIFFG等。 有的时候我们需要一些带限制条件的弛豫计算,例如冻结部分原子、限制自旋的计算等等。冻结部分原子可以在POSCAR文件中设置selective dynamic来实现。自旋多重度限制可以在INCAR中以NUPDOWN选项来设置。另外ISIF选项可以控制弛豫时的晶胞变化情况,例如晶胞的形状和体积等。 费米面附近能级电子分布的smearing是一种促进收敛的有效方法,可能产生物理意义不明确的分数占据态情况,不过问题不大。在INCAR文件中以ISMEAR来设置。一般来说K点只有一两个的时候采用ISMEAR=0,金属体材料用ISMEAR=1或2,半导体材料用ISMEAR=-5等等。不过有时电子步收敛速度依然很慢,还需要设置一些算法控制选项,例如设置ALGO=Very_Fast,减小真空层厚度,减少K点数目等。 弛豫是一种非常有效的分析计算手段,虽然是静力学计算但是往往获得一些动力学得不到的结果。 文来自 : 小木虫论坛 http://emuch.net/bbs/viewthread.php?tid=1428501
个人分类: VASP|4197 次阅读|0 个评论
[转载]VASP参数设置详解
swx0789 2011-7-23 09:33
转自小木虫,略有增减 软件主要功能: 采用周期性边界条件(或超原胞模型)处理 原子 、 分子 、团簇、 纳米线 (或管)、薄膜、 晶体 、准晶和无定性材料,以及表面体系和固体 l 计算材料的结构参数(键长、键角、晶格常数、原子位置等)和构型 l 计算材料的状态方程和力学性质(体弹性模量和弹性常数) l 计算材料的电子结构(能级、电荷密度分布、能带、电子态密度和ELF) l 计算材料的光学性质 l 计算材料的磁学性质 l 计算材料的晶格动力学性质(声子谱等) l 表面体系的模拟(重构、表面态和STM模拟) l 从头分子动力学模拟 l 计算材料的激发态(GW准粒子修正) 计算主要的四个参数文件:INCAR ,POSCAR,POTCAR ,KPOINTS,下面简要介绍,详细权威的请参照手册 INCAR 文件: 该文件控制 VASP 进行何种性质的计算,并设置了计算方法中一些重要的参数,这些参数主要包括以下几类: l 对所计算的体系进行注释: SYSTEM l 定义如何输入或构造初始的电荷密度和波函数: ISTART , ICHARG , INIWAV l 定义电子的优化 – 平面波切断动能和缀加电荷时的切断值: ENCUT , ENAUG – 电子部分优化的方法: ALGO , IALGO , LDIAG – 电荷密度混合的方法: IMIX , AMIX , AMIN , BMIX , AMIX_MAG , BMIX_MAG , WC , INIMIX , MIXPRE , MAXMIX – 自洽迭代步数和收敛标准: NELM , NELMIN , NELMDL , EDIFF l 定义离子或原子的优化 – 原子位置优化的方法、移动的步长和步数: IBRION , NFREE , POTIM , NSW – 分子动力学相关参数: SMASS , TEBEG , TEEND , POMASS , NBLOCK , KBLOCK , PSTRESS – 离子弛豫收敛标准: EDIFFG l 定义态密度积分的方法和参数 – smearing 方法和参数: ISMEAR , SIGMA – 计算态密度时能量范围和点数: EMIN , EMAX , NEDOS – 计算分波态密度的参数: RWIGS , LORBIT l 其它 – 计算精度控制: PREC – 磁性计算: ISPIN , MAGMOM , NUPDOWN – 交换关联函数: GGA , VOSKOWN – 计算 ELF 和总的局域势: LELF , LVTOT – 结构优化参数: ISIF – 等等。 主要参数说明如下: ? SYSTEM :该输入文件所要执行的任务的名字。 取值 :字符串,缺省值: SYSTEM ? NWRITE : 输出内容详细程度。 取值 : 0~4 ,缺省值: 2 如果是做长时间动力学计算的话,最好选 0 或 1( 首末步 / 每步核运动输出 ) ,短时运算用 2 ,选 3 则会在出错的时候给出说明信息。 ? ISTART :决定是否读取 WAVECAR 文件。取值: 0~2 ,缺省 0/1 for 无 / 有 前次计算的 WAVECAR (波函数) 0 : begin 'from scratch' ,根据 INIWAV 初始化波函数 1 : restart with constant energy cut-off , 从 WAVECAR 读取波函数(重定义平面波集) 2 : restart with constant basis set , 从 WAVECAR 读取波函数(平面波集不变) ? ICHARG :决定如何建立初始电荷密度。取值: 0~2 , 缺省值 : if ISTART=0 2 else 0 0 :由初始波函数计算电荷密度 1 :从 CHGCAR 文件读取电荷密度 2 :使用原子电荷密度的叠加 +10 非自洽计算 ? ISPIN :是否进行 spin polarized calculation 。取值: 1 , 2 ( 1-no , 2-yes ), 缺省值: 2 ? MAGMOM :在 ICHARG=2 或在 CHGCAR 中未包含磁化密度( ICHARG=1 )时,指定每个原子的初始磁化时刻。取值:实数数组, 缺省值 : 对 ISPIN=2 NIONS*1.0 ,对非共线型磁化体系 3*NIONS*1.0 ? INIWAV 如何设置初始波函数,只在 ISTART=0 时使用。取值: 0 , 1 ( 0- 最低动能的平面波, 1- 随机数), 缺省值: 1 。 ? IDIPOL 控制计算单极、偶极和四极修正。取值: 1~4 。 1~3 只计算第一 / 二 / 三晶矢方向,适于厚板( slab )的计算 4 所有方向都计算,适于计算孤立分子 ? PREC 进动( precession )。取值: low/medium/high/normal/ accurate/single) , 缺省值 : Normal ( VASP.4.X ); Medium ( VASP.5.X ) VASP4.5+ 采用了优化的 accurate 来替代 high ,所以一般不推荐使用 high 。不过 high 可以确保“绝对收敛”,作为参考值有时也是必要的。同样受推荐的是 normal ,适于作为日常计算选项。 受 PREC 影响的参数有四类: ENCUT ; NGX , NGY , NGZ ; NGXF , NGYF , NGZF ; ROPT 。如果设置了 PREC ,这些参数就都不需要出现了,当然直接设置相应的参数也有同样效果。具体影响效果见 p53~54 。 ? ENCUT 平面波基组的截断能量( eV )。取值:实数,缺省值:受 PREC 设置影响,从 POTCAR 文件中找出相应的 ENMAX/ENMIN 值来设置。 PREC = Low Medium Accurate Normal ENCUT =ENMIN ENMAX ENMAX ENMAX Single High ENMAX ENMAX*1.3 对于多个元素不同的 ENMAX/ENMIN ,都取最大值。 该参数非常重要,最好不要手工去设置,除非文献告诉你要用多少,或者经过结果可靠性的验证。当然,为了测试一下提交的任务,也不妨先设个较小的值。 ? NGX , NGY , NGZ :控制 FFT 网格在三个晶矢方向上的格点数量。 ? NGFX , NGFY , NGFZ :控制第二次更精确的 FFT 网格的格点数量。 也是两类重要的最好不要去动的参数。在未指定的情况下将根据 PREC 的设置从 POTCAR 中自动读取。 PREC=High/Accurate ,基组中向量的 2 倍值,用来避免 wrap around errors ,得到精确解。 PREC=Low/Medium/Normal ,基组中向量的 3/4 倍值(已足够精确到 1 meV/atom )。 ? LREAL: 决定投射是在实空间还是倒易空间进行。取值: .TRUE. (实空间) /.FALSE. (倒易空间),缺省值: .FALSE. 用于求解赝势的非局域部分用到的一个积分,在倒格空间里采用平面波基组求解,在实空间里则采用积分球求解。 其他还有两个选项: O or On , A or Auto 。 On 和 .TRUE. 的差别在于是否使用 King-Smith 算法优化,设为 Auto 则进行自动选择,推荐使用。 ? ROPT: 在 LREAL=Auto or On 时,优化控制每个核周围的积分球内的格点数。取值:实数数组 For LREAL=On PREC=Low, 700 points in the real space sphere (ROPT=0.67) PREC=Med, 1000 points in the real space sphere (ROPT=1.0) PREC=High, 1500 points in the real space sphere (ROPT=1.5) For LREAL=Auto PREC=Low, accuracy 10 -2 (ROPT=0.01) PREC=Med, accuracy 2*10 -3 (ROPT=0.002) PREC=High accuracy 2*10 -4 (ROPT=2E-4) ? NELM, NELMIN and NELMDL :控制电子自洽循环步数。取值:整数 NELM :电子自洽循环最大次数。缺省值: 60 NELMIN :电子自洽循环最小次数。缺省值: 2 NELMDL :弛豫次数。缺省值: if ISTART=0, INIWAV=1, and IALGO=8 , -5 , if ISTART=0, INIWAV=1, and IALGO=48 , -12 , else 0 NELMDL 可以取负值。如果初始波函数采用随机赋值,即 ISTART=0 , INIWAV=1 ,那么很可能开始的值比较离谱,那么在第一步核运动循环之前采用 NELMDL (负值)步的非自洽(保留初始的 H )步计算将减少计算所需的时间。 ? EDIFF :指定电子自洽循环的全局中断条件,用于控制收敛精度。取值:实数,缺省值: 10 -4 注意,即使 EDIFF=0 , NELM 步电子自洽循环也会执行。 ? EDIFFG :指定离子弛豫循环的中断条件,用于控制核运动的收敛精度。取值,实数,缺省值: 10*EDIFF EDIFFG0 在两个离子步的总自由能之差小于 EDIFFG 时停止 EDIFFG0 在所有的力都小于 EDIFFG 时停止。 EDIFFG=0 在 NSW 步弛豫后停止 此参数不支持 MD ,仅用于弛豫。 ? NSW :给出最大离子步数。 取值:整数,缺省值: 0 。 ? NBLOCK , KBLOCK :取值:整数,缺省值: NBLOCK = 1 , KBLOCK = NSW 在 NBLOCK 离子步后对成对相关函数和 DOS 进行计算,并且把离子配置写入 XDATCAR 文件。 在 KBLOCK*NBLOCK 步主循环后平均的成对相关函数和 DOS 被写入 PCDAT 和 DOSCAR 文件。 ? IBRION :决定离子怎样更新和运动。取值: -1~3 , 5~8 ( -1- 无更新, 0-MD , 1-RMM-DIIS , 2- 共轭梯度算法, 3-Damped MD , 5,6 :有限差分, 7,8 :密度函数扰动理论),缺省值: if NSW=0/1 , -1 , else 0 这个参数是和 ISIF, IALGO/ALGO 一起决定怎么算的最重要的参数。 1~3 是三种弛豫的方法,根据 ISIF 决定是否固定离子位置、晶胞大小和形状,在 INCAR 中必须设置参数 POTIM 。 0 是标准的 ab-initio MD ,不受 ISIF 影响,即不改变晶胞大小和形状。 5~8 支持 Hessian Matrix 和 phonon frequency 的计算以及部分固定的 MD 。 ? POTIM : IBRION=0 时,给出 MD 每步步长( fs ), IBRION=1~3 时,给出最小化的度量常量。取值:实数,缺省值: IBRION=0 无缺省,必须指定, IBRION=1,2,3 0.5 ? ISIF :决定是否计算应力张量以及弛豫中晶胞变化的自由度。取值: 0~6 ,缺省值: if IBRION=0(MD) 0 else 2 ISIF │ calculate │ calculate │ relax │ change │ change │ force │ stress tensor │ ions │ cell shape │ cell volume ---- ┼ ------- ┼ ----------- ┼ ------ ┼ --------- ┼ --------- 0 │ yes │ no │ yes │ no │ no 1 │ yes │ trace only │ yes │ no │ no 2 │ yes │ yes │ yes │ no │ no 3 │ yes │ yes │ yes │ yes │ yes 4 │ yes │ yes │ yes │ yes │ no 5 │ yes │ yes │ no │ yes │ no 6 │ yes │ yes │ no │ yes │ yes 7 │ yes │ yes │ no │ no │ yes trace only means that only the total pressure is correct ? IWAVPR :决定波函数和 / 或电荷密度怎样从一个离子配置向下一个离子配置进行推测。取值: 0~3 , 10~13 ( 0- 无推测, 1,11- 用原子电荷密度进行简单推测, 2,12- 二阶推测, 3,13- 混合前两种方法),缺省值: if IBRION=0(MD),1,2(relaxation) 2 else( 静态计算 ) 0 推测 结果保存在外部文件 TMPCAR 中,取值 +10 则全部使用内存,不保存此文件。 ? ISYM :决定是否使用对称性。取值: -1~3 ( -1,0- 不使用, 1,2,3- 使用),缺省值: if 使用 US-PP 1 , if 使用 PAW 2 ISYM=2 使用一种效率更高也更节省内存的电荷密度对称性, ISYM=3 时仅考虑力和应力张量的对称性,而电荷密度是非对称的。 ? SYMPREC :决定 POSCAR 文件中给出的位置的精度。取值:实数,缺省值: 10 -5 ? LCORR :决定是否对非完全自洽计算中的力进行 Harris 修正。取值: .TRUE./.FALSE. ,缺省值: .TRUE. ? TEBEG, TEEND :控制从头分子动力学计算中的起始温度和最终温度( MD 有效)。取值:实数,缺省值: TEBEG = 0 TEEND = TEBEG 注意 VASP 的温度定义与实际温度有细微的差别,所以 TEBEG=T × (N-1)/N , T 为实际要求的温度, N 为原子数。 ? SMASS :控制从头 MD 中的速度。取值: -3~0 ,缺省值: -3 微正则系综(总自由能不变), -2 保持初速度不变, -1 每 NBLOCK 步调整速度,来保证动能连续, =0 Nos é算法模拟正则系综 ? NPACO :成对相关函数的槽数。取值:整数,缺省值: 256 ? APACO :成对相关函数求值中的最大距离( ? )。取值:整数,缺省值: 16 简单说就是在不超过 APACO 的 NPACO 个距离上求成对相关函数 PCF 。 ? RWIGS :给出 Wigner-Seitz 半径, DOS 计算用。取值:实数数组,缺省值:从 POTCAR 文件中读取 ? NELECT :总电子数,如果系统不是电中性的就必须设置,所带电荷作为均一的背景电子气考虑。取值:实数,缺省值: - ( 价电子数),由 POSCAR 和 POTCAR 文件自动决定(通常不必给出)。 ? NUPDOWN 上下自旋成分间的电子数之差。取值:整数,缺省值:未设置(此时将进行完全弛豫) ? EMIN, EMAX : DOS 求值的最小 / 最大能量。取值:实数,缺省值: EMIN = - (lowest KS-eigenvalue - Δ ) , EMAX = - (highest KS-eigenvalue - Δ ) ? ISMEAR :决定每个波函数的部分占位 f nk 如何设置。取值: -5 | -4 | -3 | -2 | 0 | N ( -5- 带有 Blochl 修正的四面体方法 , -4- 不带 Blochl 修正的四面体方法 , -3- 根据 INCAR 文件中提供的 smearing 参数执行循环, -2- 从 WAVECAR 文件中读取 , -1- Fermi-smearing , 0- Gaussian smearing , 0- method of Methfessel-Paxton order N ,缺省值: 1 采用部分占位波函数,用一个函数来平滑积分,尤其是对于金属体系可减少 k 点。 ? SIGMA :决定 smearing 的宽度( eV )。取值:实数,缺省值: 0.2 ? ALGO :指定电子最小化算法。取值: Normal(blocked Davidson block iteration scheme)/VeryFast(RMM-DIIS)/F ast ( 前两个算法的混合 )/All( 波函数的所有带同时更新 )/ Damped( damped velocity friction algorithm ) ,缺省值 : Normal ? IALGO :指定主算法(整数选择算法)。取值: 8( 共轭梯度算法 )/38 (Davidson block iteration scheme) /48(RMM-DIIS) ,缺省值: 38 算法是最重要的参数之一。一般 VASP 推荐使用的是以上三种算法,一般来说 8/38 是初期比较快收敛,在接近平衡时采用 48 较快,在初期或 MD 时使用 48 可能会遇到不收敛的情况。也可以使用 ALGO 参数来替代 IALGO ,设置 Fast , VASP 会先用 38 ,再自动切换到 48 。各种算法只要收敛,结果应该一致。 另一个可能有用的选项是 -1 。不进行实际的计算,只对重要的步骤做计算测试,并将测试得到的各部分耗时输出到 OUTPUT 中。 ? VOSKOWN :决定是否使用 VWN 插值算法。取值: 0( 不使用 )/1( 使用 ) ,缺省值: 0 如果使用了 PW91 泛函或需要计算磁性质时可以设为 1 使用。 ? Mixing-tags : w IMIX :混合的类型,取值:整数,缺省值: 4 w AM IX :线性混合参数。取值:实数,缺省值: 0.8 ( US-PP ), 0.4 ( PAW ) w AMIN :最小混合参数。取值:实数,缺省值: 0.1 w BMIX : Kerker 混合方案的截断波向量。取值:实数,缺省值: 1.0 w AMIX_MAG : 磁化过程的线性混合参数。取值:实数,缺省值: 1.6 w BMIX_MAG : 磁化过程的 Kerker 混合方案的截断波向量。取值:实数,缺省值: 1.0 w WC : Broyden 混合方案中每步的加权因子。取值:实数,缺省值: 1000.0 w INIMIX : Broyden 混合方案中的初始混合类型。取值:整数,缺省值: 1 w MIXPRE : Broyden 混合方案中的预处理类型。取值:整数,缺省值: 1 w MAXMIX : Broyden 混合器中存储的最大步数。取值:整数,缺省值: -45 值得注意的是,在 MD 或者弛豫的时候,设置 MAXMIX ( 0, 一般约 3 倍的电子 SC 步数)可能会大大减少核运动步数,但同时也会增加对内存的要求。 ? LWAVE,LCHARG :决定是否把波函数(或电荷密度)写入外部文件 WAVECAR (或 CHGCAR 和 CHG )中。取值: .TRUE./.FALSE. ,缺省值: .TRUE. ? LVTOT :决定是否把总局域势写入外部文件 LOCPOT 中。取值: .TRUE./.FALSE. ,缺省值: . FALSE. ? LELF :决定是否创建 ELFCAR 文件。取值: .TRUE./.FALSE. ,缺省值: . FALSE. ELFCAR 用于保存 ELF(electron localization function) 。 ? LORBIT :和适当的 RWIGS 一起决定是否创建 PROCAR 或 PROOUT 文件。取值: 0 | 1 | 2 | 5 | 10 | 11 | 12 ,缺省值: 0( 创建 DOSCAR 和 PROCAR 文件 ) ? NPAR :用于控制 VASP 切换到带间并行模式。取值:整数,缺省值:总节点数。 每一个节点计算一个带,可以提高并行效率,减少通讯量,但可能会大幅增加内存的需求。 ? NBANDS :给出计算中实际的总能带数。取值:整数,缺省值: NELECT/2+NIONS/2 (非自旋), 0.6*NELECT + NMAG (自旋) NBANDS 的取值应使计算中包含相当数量的空带。因为计算需要大量的空带,至少要求 1 个空带(否则 VASP 会给出警告)。 NBANDS 对于解决内存需求非常重要。一般 NBANDS 在 NELECT/2+NIONS/2 以上可以得到较为精确的结果,但如果内存不够就只能减少 NBANDS ,在牺牲精度和体系大小之间平衡了。 POTCAR 文件 赝势文件,最重要的输入文件之一。可以理解为分子力学模拟中的力场文件,但包含的信息更多。 VASP 将各元素优化的 INCAR 里的参数也包含在该文件中,作为支持 PREC 的缺省选择。 通常各元素的 POTCAR 文件已经包含在 VASP 软件包中的赝势库里了,用户需要做的是确定自己具体需要哪几种赝势,然后按照 POSCAR 文件里的顺序,将所选择的 POTCAR 文件按顺序连接起来就可以了。如以下命令: cat file1 file2 file3 POTCAR 赝势库中的赝势文件可以分为以下几类: l 根据产生方法的不同有 Ultra-soft 赝势( USPP )和投影扩充波赝势( PAW ); l 根据交换关联函数的不同有 LDA ( local density approximation )和 GGA ( generalized gradient approximation ,又可以再分为 PW91 和 PBE ); l 根据半芯态的不同元素 A 的赝势文件还可以分为 A , A_sv 和 A_pv ; l 根据选取的不同截断能量( ENMAX )元素 A 的赝势文件还可以分为 A , A_s 和 A_h 。 VASP 的赝势文件放在目录 ~/vasp/potentials 下,该目录又包含五个子目录: pot , pot_GGA , potpaw , potpaw_GGA , potpaw_PBE ,其中每个子目录对应一种赝势形式: pot == PP, LDA ; pot_GGA == PP, GGA ; potpaw == PAW, LDA ; potpaw_GGA == PAW, GGA, PW91 ; potpaw_PBE == PAW, GGA, PBE 。每个目录中每种元素根据截断能量和半芯态的不同还会有多个对应的赝势文件存在。 在具体选取时可以参考各版本同目录下的 V_RHFIN 和 PSCTR 文件,这两个文件说明了该版本的赝势是如何生成的。 选好所要使用的赝势之后,进入对应的目录,会看到里面有四个文件: POTCAR.Z , PSCTR.Z , V_RHFIN.Z 和 WS_FTP.LOG 。现在需要用到的是第一个,把各元素的该文件解压( zcat POTCAR.Z file ),然后用 cp 或 mv 命令把这些文件移到工作目录里,再用 cat 命令把它们合并到 POTCAR 中,就得到了我们需要的 POTCAR 。注意要记住这里元素的排列顺序,以后在 POSCAR 文件中各元素的排列就是按照这个顺序。 POSCAR 文件 位置文件。描述所计算体系的晶胞参数、原子个数及晶胞中原子的位置,以及分子动力学计算时原子的初始速度。 POSCAR 文件示例: Si-fcc 5.43 0.0 0.50 0.50 0.50 0.00 0.50 0.50 0.50 0.00 2 Direct 0.0 0.00 0.00 0.25 0.25 0.25 POSCAR 文件的结构: 第 1 行:任意文字注释。 第 2 行:晶格常数( ? ),也是晶矢的缩放系数,后面所有长度值得自原值除以此值。 a=b=c 时取 a 即可,否则一般取三者最大值,若取负值,则为晶胞体积( ? 3 )。 第 3-5 行:定义晶矢。 第 6 行:每种元素的原子个数,特别注意顺序 , 要与下面的坐标顺序以及 POTCAR 中的顺序一致。 第 7 行:可省略,无需空行。 做动力学时,用于指定是否需要固定部分原子的坐标。若是,此行以‘ S ’或者‘ s ’作为首字母即可。 第 8 行开始为原子的坐标位置,格式为 option line coordinate1 of element1 coordinate2 of element1 ... coordinateN of element1 option line coordinate1 of element2 coordinate2 of element2 ... coordinateM of element2 ... 其中, option line 指定输入坐标的格式,除了第一个以外,如果后面的输入格式同前,则都可以无空行省略。 option line 可指定的输入坐标格式有两种: ‘ D ’ or ‘ d ’ for direct mode ‘ C ’ or ‘ c ’ or ‘ K ’ or ‘ k ’ for cartesian mode 顾名思义,前者是定义在三个晶矢方向上的坐标: R=R1×x+ R2×y +R3×z , R1,R2,R3 为前面的晶矢, x,y,z 为输入的三个坐标, R 为原子坐标位矢,是相对于晶矢给出的,而后者则是以笛卡尔坐标系来给出原子的绝对坐标,实际就是将直角坐标除以前面第二行定义的晶胞常数后得到的坐标值。 如果第 7 行设定为 S(Selective Dynamic) ,则可以用以下形式定义各坐标是否可以移动: Selective dynamics Cartesian 0.00 0.00 0.00 T T F 0.25 0.25 0.25 F F F KPOINTS 文件 设置布里渊区 k 点网格取样大小或能带结构计算时沿高对称方向的 k 点。 一般来说, k 点越密越多,计算精度也就越高,但计算成本也会越高。因此,对于原子数较多的体系的计算,需要谨慎的尝试 k 点数目,在避免或者预先评估 wrap-around error 的前提下尽量减少 k 点数目。 KPOINTS 文件示例: k-points along high symmetry lines 11 Reciprocal 0.00 0.00 0.00 1.00 0.05 0.00 0.05 1.00 …… 0.05 0.00 0.50 1.00 KPOINTS 文件结构: 第 1 行:注释行。 第 2 行: k 点总数,或者‘ 0 ’(自动生成网格( Automatic k-mesh generation ))。 如果是前者,给出 k 点总数,又分为两种情况: M :全手动( Entering all k-points explicitly ),手动输入即自定义各个 k 点的坐标和权重,推荐只在能带计算时使用。此时: 第 3 行:输入格式标识。直角坐标( Cartesian )或倒易坐标( Reciprocal )。同样的,‘ c ’、‘ C ’、‘ k ’、‘ K ’ for Cartesian ,其他首字母则自动切换到 Reciprocal 。 第 4~n 行 : 逐个 k 点的坐标描述。格式为“ x y z W ”。其中“ x y z ”是该点的三个坐标, W 是权重。所有 k 点的权重相互之间的比例对了就行, VASP 会自动归一的。 注意 C 坐标和 R 坐标的定义: C : k=(2π/a)(x y z) R : k=x*b1+y*b2+z*b3 ( b1-b3 为倒易晶矢) 这里“ x y z ”只是代表了坐标的顺序,与坐标轴无关。 一般如非必要,可以先用自动模式生成 k 点, VASP 会自动生成一个简约化后的 k 点矩阵,存于 IBZKPT 文件,可以直接复制里面的数据到 KPOINTS 文件中使用,这也是该输入法的主要用途,可以减少重复自动生成格点的时间。另一个用途是为了做精确的 DOS ( Density of status )计算,由于这类计算所需的 k 点数极大,通过全手动尽可能的优化 k 点也就必需了。 L :半手动 / 线形模式( Line-mode ):在计算能带结构时使用,此时需要精确地选取 k 点,在指定的高对称性方向上生成指定数目的 k 点。此时: 第 2 行:指定两点间生成的 k 点数,不同于全自动的总 k 点数。 第 2.5 行:‘ L ’表示是线形模式。 第 3 行:输入格式标识,同前。 第 4~n 行:每行描述一个点,格式为“ x y z ”。每两行的点连成一条直线,在两点间生成指定数目的 k 点。每隔两行间以空行区分,例如: k-points along high symmetry lines 10 Line-mode Reciprocal 0 0 0 0.5 0.5 0 0.5 0.5 0 0.5 0.75 0.25 最常用的方法是让程序自动生成 k 点网格,用户只需定义网格取样大小即可。此时: 第 2 行: 0 第 3 行:生成 k 点的方法。 “ A ”:全自动模式,可以看作以 Г 点为圆心以 l 为半径做圆,当然各晶矢不同时,相应的圆就被拉成了椭圆,以确保三个倒格晶矢方向上覆盖的 k 点数都为 l “ G ”: Г/Gamma 方法 “ M ”: Monkhorst-Pack 方法 其它首字母:高级模式,就是用 C 坐标或 R 坐标直接输入新的晶矢,一般不使用 第 4 行:在各个晶矢方向上分割各晶矢的点数。一般为奇数,使得产生的 k 点是以 Gamma 点为中心的。 第 5 行:是否移动网格点以及移动多少,也即偏移原点的位矢,一般设成“ 0 0 0 ”,表示不移动。 例如: Automatic generation 0 Monhkorst-Pack 9 9 9 0.0 0.0 0.0 VASP 的输出文件 主要包括: l OUTCAR :包含运行 VASP 作业后得到的绝大部分计算结果以及每步迭代的详细情况; l CHG, CHGCAR :给出体系的电荷密度。两个文件内容相同,但前者的数据精度比后者略低一些; l DOSCAR, EIGENVAL :分别给出所计算体系的电子态密度和本征值。两个文件中的能量值都是绝对的; l WAVECAR :给出所计算体系的电子波函数,二进制文件,不可编辑; l OSZICAR :包含每次迭代或离子移动情况的简单汇总; l CONTCAR :给出离子进行弛豫时,每次移动后体系的晶格参数,与 POSCAR 内容相同; l PCDAT, XDATCAR :给出有关分子动力学模拟中的一些结果,如配对相关函数;
个人分类: VASP|4270 次阅读|0 个评论
vasp中HCP结构基矢的书写
swx0789 2011-2-26 14:13
HCP结构的Mg,按实验晶格常数a = 3.21 angstrom, c = 5.21 angstrom来写基矢的话, 简单的方式: a 1.000000 0.000 0.000 -0.5sqrt(3)/20.0000 0.000 0.0000c/a
个人分类: 知识储备|5654 次阅读|0 个评论
[转载]用VASP计算氢分子的能量
热度 2 guolingju 2010-9-19 16:20
氢气分子的解离能,也就是结合能,根据资料中给出的是约4.48eV。(G. Kresse J. Hafner, Surface Sci. 459 (2000) 287) 为此,首先要计算一个氢气分子的孤立能量,再减去两个孤立氢原子能量,将得到氢气分子的结合能。 先计算单个原子能量,选取PAW_PBE文件夹下的H下面的POTCAR 用到的其他输入文件如下: INCAR: SYSTEM = H atom in a box ISMEAR = 0 ! Gaussian smearing SIGMA = 0.01 ENCUT = 350.0 KPOINTS: Automatic mesh 0 Monkhorst Pack 1 1 1 0. 0. 0. POSCAR: H atom in a box 1.0 ! universal scaling parameters 7.0 0.0 0.0 ! lattice vector a(1) 0.0 8.0 0.0 ! lattice vector a(2) 0.0 0.0 9.0 ! lattice vector a(3) 1 ! number of atoms cart ! positions in cartesian coordinates 0 0 0 用上述文件计算得到 TOTEN(H) = +0.000854eV (H atom),用PAW_GGA得到类似结果。 然后计算氢分子能量,用类似的输入文件: INCAR: SYSTEM = H2 dimer in a box ISMEAR = 0 ! Gaussian smearing NSW = 5 ! 5 ionic steps IBRION = 2 ! use the conjugate gradient algorithm ENCUT = 350.0 POTIM = 0.1 KPOINTS: Automatic mesh 0 Monkhorst Pack 1 1 1 0. 0. 0. POSCAR: H2 molecule in a box 1.0 ! universal scaling parameters 8.0 0.0 0.0 ! lattice vector a(1) 0.0 8.0 0.0 ! lattice vector a(2) 0.0 0.0 8.0 ! lattice vector a(3) 2 ! number of atoms cart ! positions in cartesian coordinates 0 0 0 ! first atom 0 0 0.5 ! second atom 根据定义,E=-(TOTEN(H2)-2*TOTEN(H)) = 6.68eV,键长 = 0.75102 A。比文献中的结合能大了不少。 出现上述结果的原因是在计算单个H原子能量的时候没有指定基态为spin polarized state。为了得到正确的解离能,计算单个H原子能量的时候需要指定ISPIN=2。加上以上的tag后,TOTEN(H atom )=-1.10351 eV,用公式重新计算解离能: E_binding=-(TOTEN(H2)-2*TOTEN(H )) = 4.48eV 和文献吻合。另外,文献 中详细讨论了氢分子的解离能的计算方法和结果。 原文地址 http://new.quantumchemistry.net/Experience/CommonSoftwares/VASP/ConcereteExample/200512/259.html
个人分类: 第一性原理(vasp)|5459 次阅读|3 个评论
VASP学习笔记(1)
jizw0704 2010-5-31 22:46
内容:什么是VASP、优点、主要输入文件 一 VASP is acomplex package for performing ab-initio quantum-mechanical molecular dynamics (MD) simulations using pseudopotentials or the projector-augmented wave method and aplane wave basis set. The approach imple-mentedin VASP is based on the (?nite-temperature) local-density approximation with the free energy as variationa l quantity and anexact evaluationof the instantaneous electronic ground state at each MD time step. (译文:) 二 计算的体系十余第一行元素和过渡金属;体系计算快;基于Linux/Unix等平行计算;自动对称分析;加速收敛 三 一个最简单的VASP计算体系,应该包括四个输入文件: INCAR(计算细节);POSCAR(体系坐标);POTCAR(赝势);KPONITS(k空间描述)。 吉宗威
个人分类: 观点|5049 次阅读|0 个评论
关于VASP中光学optics.F程序的编译(ifort+mkl)
Irene 2009-4-13 15:35
从VASP4.4.4和VASP.4.4.5开始,VASP支持简单的光学性质的计算。其具体实现程序是optics.F。其中一些必需的后处理程序,可以向JürgenFurthmüller发信要。 此程序可以使用ifort和mkl编译出来,用pgi编译它说optics.f语法错,不知道为什么。然后用编译成功的程序处理已经得出OPTIC文件的一个目录,满心欢喜,结果给我了这些东西: scanningPOSCAR,KPOINTSandOPTIC readingKPOINTSandOPTIC setuptransitionenergiesandamplitudes DOSandjointDOS forrtl:severe(174):SIGSEGV,segmentationfaultoccurred ImagePCRoutineLineSource optics0804A8DEUnknownUnknownUnknown optics080502A7UnknownUnknownUnknown optics0804A594UnknownUnknownUnknown libc.so.600314E33UnknownUnknownUnknown optics0804A4A1UnknownUnknownUnknown forrtl:severe(174):SIGSEGV,segmentationfaultoccurred ImagePCRoutineLineSource libc.so.600360ECEUnknownUnknownUnknown libc.so.6003614BAUnknownUnknownUnknown optics08086FFDUnknownUnknownUnknown optics0806A899UnknownUnknownUnknown optics0806C183UnknownUnknownUnknown optics0806B296UnknownUnknownUnknown optics0806D634UnknownUnknownUnknown libpthread.so.00054A8A0UnknownUnknownUnknown optics080502A7UnknownUnknownUnknown optics0804A594UnknownUnknownUnknown libc.so.600314E33UnknownUnknownUnknown optics0804A4A1UnknownUnknownUnknown 貌似段错误。 具体编译方法是先编译optics上一级目录中的文件,得到prec.oconstant.oerror.otet.o ,并把它们拷贝到optics目录下。 然后再到optics目录下编译optics 其中makefile的头几行修改成如下: #THISISANEXAMPLEFORINTEL-LINUXPLATFORMSRUNNINGPGFCOMPILERS.CUSTOMIZE! .SUFFIXES:.inc.f.F MAKE=/usr/bin/make CPP_=/usr/bin/cpp-P-C CPP=$(CPP_)\ -Dkind8-DNGXhalf-DCACHE_SIZE=1000-DPGF90-Davoidalloc $*.f FC=pgf90-Mfree DEBUG=-g-O0 OFLAG=-O2-tpp6 DOUBLE=-r8 SINGLE= TIMING= #TIMING=-pg #binding BIND= LIB=-L../../vasp.4.lib-ldmy-L/usr/local/lib-llapack-lblas ----------------------------------------------------------------------- optics.F与vasp的版本无关,我4.5.5到3.6.25都可以编译的过去。因为它link时,需要的 只是vasp.4.lib中的文件,而vasp.4.lib中的文件基本是不升级或更新的。 原文地址http://new.quantumchemistry.net/Experience/CommonSoftwares/VASP/CompileInstallation/200512/187.html
个人分类: 生活点滴|9530 次阅读|0 个评论
如何用VASP计算单个原子的能量[权威版]
Irene 2009-4-13 15:30
这是VASP作者给出的解答,所以算是权威了.原文如下: Theenergyzero .. inVASPallenergiesarereferredtothethereferencestateforwhich thepotentialwasgenerated! thisisinmostcasesnottherealgroundstateoftheatom .. todeterminedtheenergyofthegrounstateoftheatomplacetheatom inalargernoncubicboxtobreakinitialsymmetry(i.e. 11Ax10Ax9A) usetheGpointonly INCAR: ISPIN=2!spinpolarized ISMEAR=0;SIGMA=0.2!forsmallsigmaconv.forTMisdiff. MAGMOM=2!initialmagneticmoment oneshouldusetheenergyvalueenergywithoutentropyoftheOUTCARfile sincethiscovergesmostrapidlytothecorrectenergyforsigma0 .. Ecoh=E_total-n*Eatom 大约翻译如下: 在VASP中,所有的能量是相对于产生赝势的组态来说的,所以并不能将计算得到的能量当成真正的原子的基态能量。 为了得到原子的基态能量,将原子放在一个非正方体的晶格内,比如说11Ax10Ax9A的晶格(这样做是为了消除简并)。 KPOINTS只用G撒点 大概的INCAR文件可以如下: ISPIN=2!spinpolarized ISMEAR=0;SIGMA=0.2!forsmallsigmaconv.forTMisdiff. MAGMOM=2!initialmagneticmoment 计算结束后,应该用OUTCAR中不含entropy的那一项能量,因为它通常更快的收敛到sigma=0的正确值。最后计算结合能的公式应该为 Ecoh=E_total-n*Eatom 原文地址http://new.quantumchemistry.net/Experience/CommonSoftwares/VASP/ConcereteExample/200512/250.html
个人分类: 生活点滴|15668 次阅读|0 个评论
VASP电荷密度差的计算
Irene 2009-4-13 15:20
在文献中,经常见到利用电荷密度差(chargedensitydifference)来分析成键的过程或是结构弛豫前后电荷的转移,当然,也有人用来分析基态和激发态的电荷分布差别等情况。不过,尽管似乎都叫电荷密度差,但具体的定义是不大一样的。 这里主要是讨论在VASP中如何得到用来分析成键前后电荷转移的电荷密度差。 此时电荷密度差定义为: delta_RHO=RHO_sc-RHO_atom 其中RHO_sc为自洽的面电荷密度,而RHO_atom为相应的非自洽的面电荷密度,是由理想的原子周围电荷分布堆彻得到的,即为原子电荷密度的叠加(asuperpositionofatomicchargedensities)。 不同晶面的RHO_sc可由自洽计算的CHG或CHGCAR得到; 而计算RHO_atom所需的CHG或CHGCAR可由下述非自洽计算得到: 仍使用原来自洽计算时的四个输入文件,但INCAR中需要设置ICHARG=12和NELM=0,其他设置不变。 需要特别注意的,应保持前后两次计算(自洽和非自洽)中的FFT-mesh一致。因为,只有维数一样,我们才能对两个RHO作相应的矩阵相减。不过,只要按上一段提到的设置方法做就行了,无须特别增加别的设置。 数据处理: 矩阵相减:使用MatLab或是自已写个小程序。 作图:Origin或MatLab。 原文地址http://new.quantumchemistry.net/Experience/CommonSoftwares/VASP/ConcereteExample/200512/91.html
个人分类: 生活点滴|12728 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-16 01:26

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部