本帖最后由 chempeng 于 2018-3-21 19:41 编辑
一直以来在本站学习颇多,感谢 sob 与大佬们的答疑解难。此贴为经验整理总结帖,希望对萌新们(我算一个~)有所帮助,如有疏漏还请各位批评斧正
一般对于三维材料的结构晶格参数优化有两种方法(教程参见 Learn VASP The Hard Way): 1. Birch-Murnaghan 状态方程拟合 http://www.bigbrosci.com/newsitem/278011633 2. VASP 计算中调节 ISIF 参数 http://www.bigbrosci.com/newsitem/278019758 而上述方法对于优化表面,二维或者一维体系不适用,优化此类材料时,须固定一个或两个晶胞方向不优化。一般可通过晶格参数扫描再拟合函数实现,引侯柱峰老师对该类问题解答回帖。 如果二维参数里有一个参数(也就是a,b相等),那通过固定 c,改 a 或 b 的值,对每一个 a 值下的结构进行 ISIF=2 的计算,得到总能,然后根据一系列的 总能-晶格常数 a 的值进行一元二次函数的拟合,得到最小值的位置。
如果是含两个常数(即 a,b 不等),通过地,固定 c,改变a和b地值,对每一组 a 和 b 值下的结构进行 ISIF=2 的计算,得到总能,然后根据一系列的 总能-晶格常数 a 和 b 的值,进行二元二次函数的拟合得到最小值的位置。
这样的方法普适性很高,但却是繁琐。于是有了在特定条件下,重新编译 vasp 使得该优化简化的方法, 即当材料为正交晶系或单斜晶系时,可通过修改 constr_cell_relax.F 编译软件实现固定基矢进行结构优化。对于 VASP 5.4.1 之后的版本,软件的安装编译已经方便了很多,本文以 intel 编译器 + mkl + impi 编译 VASP 5.4.1 为例进行介绍。VASP 的安装编译无需 root 权限,普通用户在家目录即可安装。
1. 查看编译器,mkl 等安装及环境变量设置正确 - export LD_LIBRARY_PATH=/share/intel/composer_xe_2015.6.233/mkl/lib/intel64/:$LD_LIBRARY_PATH
- export LD_LIBRARY_PATH=/share/intel/composer_xe_2015.6.233/compiler/lib/intel64:$LD_LIBRARY_PATH
- export PATH=/share/intel/composer_xe_2015.6.233/bin/intel64:$PATH
- export PATH=/share/intel/impi/5.0.3.049/intel64/bin:$PATH
复制代码 2. 修改 constr_cell_relax.F以固定 c 方向为例,constr_cell_relax.F (src 目录下)修改后如下,显示部分修改内容 - SUBROUTINE CONSTR_CELL_RELAX(FCELL)
- USE prec
- REAL(q) FCELL(3,3)
- DO I=1,3
- FCELL(3,I)=0
- FCELL(I,3)=0
- ENDDO
- ! just one simple example
- ! relaxation in x directions only
- ! SAVE=FCELL(1,1)
- ! FCELL=0 ! F90 style: set the whole array to zero
- ! FCELL(1,1)=SAVE
- ! relaxation in z direction only
- ! SAVE=FCELL(3,3)
- ! FCELL=0 ! F90 style: set the whole array to zero
- ! FCELL(3,3)=SAVE
- RETURN
- END SUBROUTINE
复制代码对于其他方向晶格基矢的修改同理:对于a方向基矢,将 FCELL(3,I) 和 FCELL(I,3) 分别改为 FCELL(1,I) 和 FCELL(I,1) ;对于b方向基矢,则分别改为 FCELL(2,I) 和 FCELL(I,2) ;固定两个基矢则应该同时将两个方向对应的矩阵元设置为0。或参考 VASP并行可执行软件包,可对晶胞参数进行部分优化(自行搜索) 可实现添加参数文件实现不同基矢方向固定。(未做测试) 3. 编译建议重新解压源码编译软件 - [yourname@localhost ~]$ tar -zxvf vasp.5.4.1.05Feb16.tar.gz
- [yourname@localhost ~]$ tar -zxvf vasp.5.lib_.tar_2.gz
- [yourname@localhost ~]$ cd vasp.5.4.1
- [yourname@localhost ~]$ cp arch/makefile.include.linux_intel makefile.include
- [yourname@localhost ~]$ make std
复制代码普通用户在家目录安装编译前在 makefile.include 文件中添加 $MKLROOT,位置如下 - MKLROOT =/share/intel/composer_xe_2015.6.233/mkl
- MKL_PATH = $(MKLROOT)/lib/intel64
复制代码编译结束后,进入 bin 目录,可将 vasp_std 重命名为 vasp_fixZ ,将软件移入系统 bin 目录下或将该目录添加至环境变量。 - [yourname@localhost ~]$ echo 'export PATH=/home/yourname/vasp.5.4.1/bin:$PATH' >> ~/.bashrc
- [yourname@localhost ~]$ source ~/.bashrc
复制代码完成编译后,在 INCAR 文件中设置 ISIF=3,便可实现固定 Z 轴的结构优化。 修改 constr_cell_relax.F 资料来源科大 @用 在遇见大师兄群内的答疑,另附有 VASP 基矢矩阵的更新流程
|