||
如果想用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打开,即可看到该材料的费米面,如下图所示。
图 MgB2(左)和1T-TaS2(右)的费米面
说 明:
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点较多,如果考虑对称性计算量将大大降低。如果您有编程实现思路欢迎和我联系。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-8 00:34
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社