快捷搜索:  汽车  科技

弹着点分布算法:五种方法生成能带结构计算的高对称点

弹着点分布算法:五种方法生成能带结构计算的高对称点方法1:Si21.00.0000000000000000 2.7343640327499998 2.73436403274999982.7343640327499998 0.0000000000000000 2.73436403274999982.7343640327499998 2.7343640327499998 0.0000000000000000Si2Direct0.0000000000000000 0.0000000000000000 0.00000000000000000.2500000000000000 0.2500000000000000 0.2500000000000000有了原胞的POSCAR且具有标准格式的基矢形式我们就可以生成能带结构计算所需的高对称点信息了。面心立方的单胞与原胞的基矢应该具有下面的关系(更多详情阅读下方文献):Comp. Mat. Sci. 49

弹着点分布算法:五种方法生成能带结构计算的高对称点(1)

今天讲解通过5种不同的方法生成能带计算的高对称点信息,废话不多说,直接进入主题。

我们以立方晶系Si为例,Si的晶体结构文件从Materials Project网站直接下载,步骤如下:

弹着点分布算法:五种方法生成能带结构计算的高对称点(2)

弹着点分布算法:五种方法生成能带结构计算的高对称点(3)

弹着点分布算法:五种方法生成能带结构计算的高对称点(4)

https://materialsproject.org/

注意:从Materials Project下载的原胞并不是按照标准基矢格式写的,如下图所示:

弹着点分布算法:五种方法生成能带结构计算的高对称点(5)

面心立方的单胞与原胞的基矢应该具有下面的关系(更多详情阅读下方文献)

弹着点分布算法:五种方法生成能带结构计算的高对称点(6)

Comp. Mat. Sci. 49 (2010) 299–312.

因此按照标准基矢格式写的POSCAR应该如下所示

Si21.00.0000000000000000 2.7343640327499998 2.73436403274999982.7343640327499998 0.0000000000000000 2.73436403274999982.7343640327499998 2.7343640327499998 0.0000000000000000Si2Direct0.0000000000000000 0.0000000000000000 0.00000000000000000.2500000000000000 0.2500000000000000 0.2500000000000000

有了原胞的POSCAR且具有标准格式的基矢形式我们就可以生成能带结构计算所需的高对称点信息了。

方法1:

弹着点分布算法:五种方法生成能带结构计算的高对称点(7)

弹着点分布算法:五种方法生成能带结构计算的高对称点(8)

弹着点分布算法:五种方法生成能带结构计算的高对称点(9)

弹着点分布算法:五种方法生成能带结构计算的高对称点(10)

http://www.cryst.ehu.es/

方法二:

弹着点分布算法:五种方法生成能带结构计算的高对称点(11)

注意:删掉元素符号那一行,并且原子数目少于50个!

弹着点分布算法:五种方法生成能带结构计算的高对称点(12)

弹着点分布算法:五种方法生成能带结构计算的高对称点(13)

http://materials.duke.edu/awrapper.html

方法三:

弹着点分布算法:五种方法生成能带结构计算的高对称点(14)

弹着点分布算法:五种方法生成能带结构计算的高对称点(15)

弹着点分布算法:五种方法生成能带结构计算的高对称点(16)

https://www.materialscloud.org/work/tools/seekpath

Comp. Mat. Sci. 128 140 (2017).

方法四:

首先安装pymatgen(https://pymatgen.org/),如下:

conda install --channel matsci pymatgen

or

pip install pymatgen

安装好之后,vi line_kpoints.py,并写入下面内容:

from pymatgen.io.vasp.inputs import Kpointsfrom pymatgen.core import Structurefrom pymatgen.symmetry.bandstructure import HighSymmKpath
struct = Structure.from_file("POSCAR")kpath = HighSymmKpath(struct)kpts = Kpoints.automatic_linemode(divisions=40 ibz=kpath)kpts.write_file("KPOINTS")

运行脚本即可得到KPOINTS文件:

python3 line_kpoints.py

最后生成的KPOINTS文件内容如下

Line_mode KPOINTS file40Line_modeReciprocal0.0 0.0 0.0 ! \Gamma0.5 0.0 0.5 ! X
0.5 0.0 0.5 ! X0.5 0.25 0.75 ! W
0.5 0.25 0.75 ! W0.375 0.375 0.75 ! K
0.375 0.375 0.75 ! K0.0 0.0 0.0 ! \Gamma
0.0 0.0 0.0 ! \Gamma0.5 0.5 0.5 ! L
0.5 0.5 0.5 ! L0.625 0.25 0.625 ! U
0.625 0.25 0.625 ! U0.5 0.25 0.75 ! W
0.5 0.25 0.75 ! W0.5 0.5 0.5 ! L
0.5 0.5 0.5 ! L0.375 0.375 0.75 ! K
0.625 0.25 0.625 ! U0.5 0.0 0.5 ! X

画布里渊区等可参考:

https://matgenb.materialsvirtuallab.org/2017/09/03/Analyze-and-plot-band-structures.html

方法五:

首先下载安装Xcrysden软件,根据下面提示下载,解压之后直接运行可执行程序即可。

弹着点分布算法:五种方法生成能带结构计算的高对称点(17)

弹着点分布算法:五种方法生成能带结构计算的高对称点(18)

下载侯柱锋老师的脚本,将POSCAR转换为xcrysden可识别的.xsf格式,下载链接:

https://github.com/houzf/poscar2xsf

下载好之后运行下列命令:

sh pos2xsf.sh POSCAR >poscar.xsf

转换好格式之后运行xcrysden,等待弹出界面,然后按照如下操作得到布里渊区高对称点信息:

弹着点分布算法:五种方法生成能带结构计算的高对称点(19)

弹着点分布算法:五种方法生成能带结构计算的高对称点(20)

弹着点分布算法:五种方法生成能带结构计算的高对称点(21)

http://www.xcrysden.org/

为什么要讲这么多种方法?第一是希望大家不要过分依赖于任何一种软件,是软件就会有bug;第二希望大家能够明白其中的原理,能够自己写KPOINTS,避免入坑。比如下面同一种材料,两篇JPCL文献,文献2由于没有考虑到沿着层堆叠方向(Gamma-X)的路径,得出了完全错误的结论和带隙值。

弹着点分布算法:五种方法生成能带结构计算的高对称点(22)

J. Phys. Chem. Lett. 2015 6 4594−4598.

J. Phys. Chem. Lett. 2016 7 1213−1218.

关于能带结构的深入分析,个人觉得正确的打开方式应该是下面这两张图片(参考文献和book见图片下方),凡是脱离这个来讲能带结构深入分析的基本都是噱头。以后有机会再来深入讲能带结构的分析(我是希望大家自己深入学习文献和教材,而不是看网上各种别人理解的版本),以及这里面的各种坑。

弹着点分布算法:五种方法生成能带结构计算的高对称点(23)

Angew. Chem. Int. Ed. 2016 55 6826 – 6841.

弹着点分布算法:五种方法生成能带结构计算的高对称点(24)

Walter A. Harrison-Electronic Structure and the Properties of Solids_ The Physics of the Chemical Bond-Dover Publications (1989)

猜您喜欢: