这篇博客准备整理一下自己最近一段时间学习MagneticTB这个构建紧束缚模型的软件包时候的一些理解。
前言
在通常的研究中,总是会借助到利用紧束缚近似的方法,来研究一个体系在费米面附近的性质,其实也就是利用一个模型,在费米面附近的能带结构和真实的能带结构近似吻合,而在我之前的学习和计算中,其实主要是结合Wannier90来获得一个紧束缚模型,不过这里所说的这个模型,我一直理解的就是他是一个数值上的模型,也就是没有一个具体的函数表达形式,只是一个单纯的wannier90_hr.dat
数据,虽然这个模型也可以很好的反映体系在费米面附近的性质,而且能带上拟合的也是很好,但是如果我想从解析上研究一点东西,这个数据看起来就不行了(虽然有时候一些解析的东西同样可以用数值的方法来计算)。
在前面的学习中,也整理了如何从解析的推导一个紧束缚模型,Graphene 紧束缚模型推导,这篇博客就是整理了怎么推导紧束缚模型,虽然其中的交叠积分仍然是一个参数,但是对于理论研究来说,既然是个参数,那么总是可以调节的么,只要在合理的范围内和真实的能带吻合的较好就可以。
MagneticTB这个软件包将构建紧束缚(TB)模型的过程变的更加的简化,我们只需要给出材料的晶格结构以及原子在实空间中占据的Wyckoff position就可以得到一个带有参数的TB模型,下面我就结合自己所学的知识,学习一下软件包例子中给出的Graphene的案例来整理一下学习笔记。
Graphene
这里需要的主要信息有
- 晶格的空间群 msgpo[gray[191]]
- 晶格矢量 lattice
- 晶格常数 lattpar
- 原子所处的Wyckoff position wyckoffposition
- 基函数 basisFunction
如果是在有POSCAR
文件的时候,可以通过phonopy
来确定晶体的空间群和原子所处的Wyckoff position
phonopy --symmtery >syinfo &
通过这个命令就可以在syinfo
文件中找到晶体结构对应的空间群号,对称操作,Wyckoff position。至于晶格矢量自然就是包含在POSCAR
中的。
最后就是基函数的选择,这一点我是这样理解的,我在VASP计算Graphene能带这篇博客中通过VASP计算了Graphene的能带结构,通过fatband分析可以知道费米面附近的能带就是有C原子的$p_z$轨道贡献的,如下图所示
所以这里的基函数的选择就是$p_z$轨道。在明确了这些所有的信息之后,就可以通过init
这个函数来构建TB模型
)
从上面的过程中可以看到,这里并不涉及到什么额外的可控参数,那么最终就可以得到构建的TB模型
)
构建完成之后可以看到这里有3个自由的参数,这一点也很好理解,毕竟在Graphene 紧束缚模型推导这篇博客中也看到了,因为交叠积分不太容易计算,所以就会使用参数来进行拟合。既然是有参数的,那么自然就可以将参数进行调节来得到拟合能带的目的
通过这三个参数调节,总是可以使得在费米面附近,TB模型的能带结构和VASP计算的能带在费米面附近时吻合的
当选择上面的参数的时候,可以看到在费米面附近很好的反映出了能带交叠的形貌,这里就是整个Graphene的案例。这个软件包还有一个比较好的功能就是可以通过构建出的TB模型在给出hr
数据,也就可以结合WannierTools
来进一步对模型进行研究。
小疑问
这里我对模型构建的时候有一个小的疑问,我从BCS网站上面查询到191号空间群中,d
这个Wyckoff position的位置是
(1/3,2/3,1/2) (2/3,1/3,1/2)
与软件包给出的Graphene的案例中的Wyckoff position不一致
(1/3,2/3,0) (0,0,0)
我这里就使用BCS网站上面的Wyckoff position重新计算了一遍,发现结果就是错的,我分析了一下,发现这两种不同的Wyckoff position如果通过平移其实是相同的,但是这里还是没很明白这里面的问题,如果有谁能明白这个事情,可以联系我一下,下面是我用BCS上面的Wyckoff position进行计算的结果。
第一步还是正确的,但是到了第二步化简参数的时候,就发生了错误,这里我就不是很明白
问题解决
上面提到的问题其实是自己没有搞明白代码中的参数的含义造成了,这里就来整理一下是怎么解决问题的。
这里是给出了两个wyckoff position, 但是它们是等价的, 所以只要使用其中的一个就可以了. 很明显软件作者使用的是第一个, 同样也可以使用第二个来进行TB构建.
)
而这里在构建的时候,wyckoffposition
这个参量中的第一个就是从BCS网站上面查询到的Wyckoff position, 而第二个参量代表的是这个位置处原子的磁化方向. 因为我在学习这个例子的时候, 作者并没有给出一个软件使用教程, 所以当时并不明白这个参数代表的到底是什么, 经过一个朋友的提醒自己才明白了这个问题. 具体的内容可以参考后面给出的代码.
代码下载
我把上面所有的执行代码都在了这里,如果然兴趣可以点击这里下载
公众号
相关内容均会在公众号进行同步,若对该Blog感兴趣,欢迎关注微信公众号。