1.硅-用于自动MLWF的密度矩阵算法的选定列
注:这个例子需要Quantum ESPRESSO的pw2wannier90.x后处理代码的最新版本(6.4版或以上)。
-
概要:对于块状晶体硅,通过选定的密度矩阵列(SCDM)算法生成Amn矩阵,以及1)价带2)价带和4个低位导带3)仅有导带的相应的MLWF。为了更好地理解这些计算的输入文件和结果,熟悉文献[1]中的概念和方法是至关重要的。与SCDM相关的关键词的信息方法的更多信息可以在用户指南中找到。
-
目录:examples/example27/
-
输入文件:input_files,以及三个子文件夹isolated、erfc和gaussian中。input_files文件夹包含以下内容:
– si.scf 用于基态计算的PWSCF输入文件
– si_4bands.nscf PWSCF输入文件,用于在统一网格上获得4个带的Bloch状态
– si_12bands.nscf PWSCF输入文件,用于在统一网格上获得12个带的Bloch状态
-
而三个子文件夹isolated、erfc和gaussian包含wannier90输入文件si.win和pw2wannier90输入文件si.pw2wan,分别对应于大纲中列出的一种情况。
1.价带:在这种情况下,我们将计算4个局域化的WF,对应于硅的4个价带。这4个带构成一个流形,在能量上与其他带分开。在这种情况下,密度矩阵的列已经在实空间中被定位了,不需要额外的参数。
【1】将输入文件si.scf和si_4bands.nscf从input_files目录中复制到孤立的文件夹中。
【2】运行PWSCF以获得体硅的基态电荷。
pw.x < si.scf > scf.out
【3】运行PWSCF,在4×4×4的统一k点网格上获得4个带的Bloch状态。
pw.x < si_4bands.nscf > nscf.out
【4】检查输入文件si.win,确保已经将auto_projections设置为.true.。另外,要确保没有设置投影模块。
【5】运行wannier90,生成所需的重叠列表,同时生成SCDM方法的信息(写入si.nnkp文件)。
wannier90.x -pp si
【6】检查si.nnkp文件,确保找到auto_projections块,并确保在projections块中没有设置投影。
【7】检查.pw2wan输入文件。我们会发现两个新的关键词,即scdm_proj和scdm_entanglement。前者将指示pw2wannier90.x在生成Amn矩阵时使用SCDM方法。后者定义了函数f(εnk)采用的公式(见参考文献[18]和下面的观点)。
【8】运行pw2wannier90来计算Bloch状态和通过SCDM方法得到的投影之间的重叠(分别写在si.mmn和si.amn里)。
pw2wannier90.x < si.pw2wan > pw2wan.out
【9】运行wannier90来计算MLWF
wannier90.x si
此时应该已经得到了4个Wannier函数和硅的插值价带。检查输出文件si.wout。特别是每个WF的几何中心,它们是否像从用户定义的初始s-like投影中计算出来的MLWF那样位于Si-Si键的中心(见例11)?使用Vesta绘制这些WF。它们是否显示了人们从化学论证中所期望的特征?
2.价带+导带:在这种情况下,我们将计算对应于4个价带和4个低位传导带的8个局域化的WF。此时,没有形成一个单独的流形,因为导带与其他高能带纠缠在一起,密度矩阵的列在结构上不是指数级的局域化。在这种情况下,需要一个修正的密度矩阵[18],它被定义为:
其中和分别是第一原理计算的能量特征和特征值。函数包含两个自由参数,µ和σ,并被定义为一个互补的误差函数。
【1】将input_files文件夹中的输入文件si.scf和si_12bands.nscf复制到erfc文件夹中。
【2】运行PWSCF以获得体硅的基态电荷。
pw.x < si.scf > scf.out
【3】运行PWSCF,在4×4×4的统一k点网格上获得12个带的Bloch状态。
pw.x < si_12bands.nscf > nscf.out
【4】检查输入文件si.win,确保已经将auto_projections设置为.true.。另外,要确保没有设置投影模块。
【5】运行wannier90,生成所需的重叠列表,同时生成SCDM方法的信息(写入si.nnkp文件)。
wannier90.x -pp si
【6】检查si.nnkp文件,确保找到auto_projections块,并确保在projections块中没有设置投影。
【7】检查.pw2wan输入文件。会发现另外两个新的关键词,即scdm_mu和scdm_sigma。它们分别是以eV为单位的µ和以为单位的σ的值。
【8】运行pw2wannier90来计算Bloch状态和通过SCDM方法得到的投影之间的重叠(分别写在si.mmn和si.amn里)。
pw2wannier90.x < si.pw2wan > pw2wan.out
【9】运行wannier90来计算MLWF
wannier90.x si
此时应该已经得到了8个局域化的Wannier函数以及硅的内插值价带和导带。再次,将几何中心和单个扩散的结果与例11的结果进行比较。最后的总扩散值是比例11中的大还是小?看一下Vesta的WF。解释一下观察到的现象?在这种情况下,sp3-like的WFs的主要波瓣指向哪里?
3.只计算导带:在这种情况下,我们将计算4个局域化的WF,只对应4个低位导带。对于前一点,我们需要定义一个修正的密度矩阵[1]。由于我们只对有界能量区域内的导带的一个子集进行计算,对的一个好的选择是:
【1】将input_files文件夹中的输入文件si.scf和si_12bands.nscf复制到erfc文件夹中。
【2】运行PWSCF以获得体硅的基态电荷。
pw.x < si.scf > scf.out
【3】运行PWSCF,在4×4×4的统一k点网格上获得12个带的Bloch状态。
pw.x < si_12bands.nscf > nscf.out
【4】检查输入文件si.win,确保已经将auto_projections设置为.true.。另外,要确保没有设置投影模块。
【5】运行wannier90,生成所需的重叠列表,同时生成SCDM方法的信息(写入si.nnkp文件)。
wannier90.x -pp si
【6】检查si.nnkp文件,确保找到auto_projections块,并确保在projections块中没有设置投影。
【7】运行pw2wannier90来计算Bloch状态之间的重叠,通过SCDM方法形成的初猜的投影(分别写在si.mmn和si.amn中)。
pw2wannier90.x < si.pw2wan > pw2wan.out
【8】运行wannier90来计算MLWF
wannier90.x si
此时应该已经得到了4个局域化的Wannier函数和硅的插值导带。根据化学直觉,我们认为这些函数类似于四面体对称分子的反键轨道。绘制WF并检查是否正确。
2.钻石–使用高斯立方体格式和VESTA绘制MLWFs的图形
-
概要:获得钻石价带的MLWF并以高斯立方体格式输出
-
目录:examples/example28/ 这个例子的输入文件与example05中的文件相同
-
输入文件
– diamond.scf 用于基态计算的PWSCF输入文件
– diamond.nscf 在统一网格上获得Bloch状态的PWSCF输入文件
– diamond.pw2wan pw2wannier90的输入文件
– diamond.win wannier90的输入文件
【1】运行PWSCF获得钻石的基态
pw.x < diamond.scf > scf.out
【2】运行PWSCF以获得统一k点网格上的Bloch状态
pw.x < diamond.nscf > nscf.out
【3】运行wannier90,生成所需的重叠列表(写入diamond.nnkp文件)。
wannier90.x -pp diamond
【4】运行pw2wannier90来计算Bloch状态和初猜的投影之间的重叠(写在diamond.mmn和diamond.amn文件中)。
pw2wannier90.x < diamond.pw2wan > pw2wan.out
【5】当晶格矢量为非正交时,并非所有的可视化程序都能以高斯立方体的格式绘制体积数据。一个可以读取这些系统的体积数据的程序是VESTA。为了指示wannier90以高斯立方体格式输出MLWF数据,需要在.win文件中加入以下几行内容
wannier_plot = .true.
wannier_plot_supercell = 3
wannier_plot_format = cube
wannier_plot_mode = crystal
wannier_plot_radius = 2.5
wannier_plot_scale = 1.0
运行wannier90以计算MLWF并将其输出到高斯立方体文件中。
wannier90.x diamond
【6】用VESTA vesta diamond_00001.cube绘制第一个MLWF图。
此外:不要使用wannier_plot_mode = crystal,而是尝试使用wannier_plot_mode = molecule的分子模式(关于这个关键词的定义,请参见用户指南)。在.win文件中添加以下一行
restart = plot
并重新运行wannier90。使用VESTA来绘制所得到的MLWF,比较与晶体模式情况下的不同之处,并试着将超胞的大小从3改为5,查看结果。(提示:当使用高斯立方体格式时,代码在一个比超胞小的网格上输出WF。网格的大小由wannier_plot_scale和wannier_plot_radius指定)。
参考文献:
[1] A. Damle and L. Lin, ArXiv e-prints (2017), 1703.06958.