第1个回答 2022-06-10
以下内容全部参考 EPW: Superconducting gap on the Fermi surface (需要梯子)
首先需要算出费米面,官方提供了两个脚本,一个是用来画出三维的费米面,一个是后处理费米面上每个点对应的gap。原版是python2的,可以在这里找到 Fermi ,我平时用python3,所以就转换了一下贴在下面
fermi_surf.py
fermi_gap.py
然后第一步是算出费米面,通过 nscf 计算得到
nscf输入文件如下,有两个点需要注意,首先 nosym , noinv 需要打开,要不然画出来费米面是约化之后的,只有一部分费米面。第二点是需要设置QE的 Modules/parameters.f90 中改一下 npk ,改的大一些,比你要算费米面用到的k点个数大,否则会报错,改完之后重新编译 pw ,nscf.in的输入文件我贴在这里
这时会输出一个很大的nscf.out文件,然后用python脚本处理
会产生几个费米面的文件
MgB2.band2.xsf , MgB2.band3.xsf , MgB2.band4.xsf
然后用VESTA画出来就行了。
直接把 MgB2.band2.xsf 拖进VESTA,另外两个import进去, Eidt - Edit data - volumetric data 在上面的isosurface import进去就得到费米面了。Operation选Multiply to current data,其余默认
再做两个调整
1、 Properties - Isosurface 里面 isosurface level 改成0,
2、 Properties - Sections 中 Opacity of isosurfaces' sections 改成0
然后第二步,后处理超导能隙。信息是从EPW计算的 MgB2.imag_aniso_gap_FS_XX.00 文件中提取,XX对应你计算的时候选定的温度,注意自己修改。
命令是
然后会生成 MgB2.col.band0.xsf 文件,就是对应的gap的信息,先随便改成另一个文件名,然后更改 fermi_gap.py 中的第160行, if d == 2: 改成 if d == 1: ,再执行一遍,生成另一个费米面上的gap(MgB2是双带超导,所以这里有两个)生成两条带上的gap以后,同样的方法导入到VESTA中, Eidt - Edit data - volumetric data ,这一次是导入到下面那个Surface Coloring中。Operation直接选默认。然后就得到费米面上的gap图了。