Non-Hermitian系统中拓扑不变量的计算
打卡11月完成的第二个小任务,仔细研读了汪忠老师这篇Edge States and Topological Invariants of Non-Hermitian Systems文章,将基本内容都重复了一下,最主要的是学习计算了一下非厄SSH模型的拓扑不变量.{:.info} 前言非厄密是最近关注度比较高的一个领域,自己最近正好有空,想自己寻找一个合适的方向进一步学习.老实讲虽然现在的导师是做超导的,但是我这两年主要的关注点都在拓扑上面,其实对超导的很多内容也不是很清楚,所以就想反正拓扑掌握的比较多,干脆就在学习学习非厄密中的拓扑,我对这个方向还是非常有兴趣的,觉得它的理论看起来会更漂亮一些. Non-Hermitian Winding number我就不重复文章的内容了,这里主要整理一下自己在计算时候遇到的一些问题,因为之前一直在做的是厄密问题,所以在算非厄密的时候多多少少有一些坑,不过我都踩过了. H(\beta) = (t_1 + \frac{\gamma}{2}+\beta t_2)\sigma_{-} + (t_1 + \frac{\gamma}{2}+\beta^{-1}t_2)\sigma_{+}非厄密与厄密最大的区别就在于这个时候的变量(只从函数的角度看)是$\beta$不再是$k$,所以本征态不再是Bloch形式的拓展态,会变成随着深入体系存在局域在边界上的态,也就是非厄密趋肤效应.我这里就是班门弄斧而已,想搞懂这个问题,还请移步文章.这个时候的$\beta$和原来的$k$之间也会存在着变换关系$\beta=re^{ik}$,由这个$\beta$所确定的就是广义布里渊区(GBZ).所以在计算的时候,也一定是参照这个GBZ进行的. H(\beta)|u_R\rangle=E(\beta)|u_R\rangle,\quad H^\dagger(\beta)|u_L\rangle=E^*(\beta)|u_L\rangle在非厄密的时候是存在两种基矢的,分别为左矢$\vert u_L\rangle$和右矢$\vert...
VASP计算Graphene能带
最近看了很多和第一性原理计算相关的资料,知识总是要和实践结合,这里就利用VASP来计算一下Graphene的能带,作为研究很透彻的一个体系,起码在$\Gamma$点的Dirac锥的结构势清楚了,所以就拿这个体系来入门.下面的内容都是我最为一个初学者的理解,其中应该会包含一些错误的理解,希望可以指出.{:.info} 1.晶格弛豫在对一个体系进行计算时,首先是要确定你的这个体系时稳定的,所以要先进行晶格弛豫,我理解的就是晃动一下整个晶格,重要保证它有一定的稳定性,不至于轻微的晃动就变成另外一种结构.这里这计算的时2维的Graphene,虽然从结构上看确实好像有一定稳定性,但是还是要进行弛豫计算. INCAR123456789101112131415ISTART=0 # 参数0代表开始一个全新的计算ICHARG=2 # 2代表初始电荷密度由原子轨道电荷密度叠加构成LWAVE=.FALSE. # 轨道以及电荷密度不进行输出(节省空间,但有时你可能需要这些数据,改为true即可)LCHARG=.FALSE. # 控制电荷摸底输出PREC=Normal# standard precision 计算精度控制ENMAX=450# cut off set according to POTCAR 最大截断能EDIFF=1E-5# electron step accurate 电子步计算时的精度控制ISMEAR=0 # 占据函数设置,0为高斯占据函数SIGMA=0.05 # 通常ismear为0时,使用sigma=0.05IBRION=2# use GGA algorithm 利用共轭梯度法计算离子弛豫ISIF=3# relax both cell and atom 力及力张量计算,3代表全部输出NSW=100# 100 ionic step 最大离子步数目EDIFFG=-0.03# forces smaller 0.02 A/eV 离子步计算精度 POSCAR关于POSCAR的设置可以参考这篇博客VASP基本输入文件准备12345678910graphene1.02.4677236 0.0000000 0.0000000-1.2338618 2.1371113 0.00000000.0000000 ...
Wilson Loop计算
打卡11月的第一个任务,在前面的博客中提到过计算拓扑不变量的问题,利用Wilson Loop的方法可以很好的将规范选择问题避免,最近正好在看一篇高阶拓扑半金属的文章,正好学习一下如何利用Wilson loop来计算拓扑不变量.{:.info} 前言在这里就不阐述到底如何计算Wilson loop,它与Wannier Center的关系可以看我的这篇博客通过Wannier Center计算体系Z2拓扑不变量,我所有的内容也是从Equivalent expression of Z2 topological invariant for band insulators using the non-Abelian Berry connection中学习的,感兴趣可以参考这篇文章,你也可以将哈密顿量换成BHZ模型,遮掩过就可以计算文章中的结果. 我这里势利用了Higher-Order Weyl Semimetals中的哈密顿量,因为自己正在看这篇文章,正好也可以学习一下如何计算Wilson loop. 代码实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859using LinearAlgebra,PyPlot,DelimitedFiles# =====================================================function hamset(kx::Float64,ky::Float64,kz::Float64)::Matrix{ComplexF64} # 构造系统哈密顿量 t1::Float64 = 0.2 t2::Float64 = 0.24 gam::Float64 = 0.5 lam::Float64 = 1.0 ham = zeros(ComplexF64,4,4) ham1 = zeros(ComplexF64,4,4) #---------------------------- ham[1,2] = (1 + exp(-1im*kz))*(t1 + t2*exp(-1im*(kx...
PythTB计算水分子能带理解紧束缚近似
在之前的学习中,仅仅知识对紧束缚的概念有一个简单的认识,并将Bloch波函数与Wannier波函数之间的联系搞清楚了,这里我想从具体一个材料出发,根据局域的原子轨道来构建系统的哈密顿量,并从这个角度更加深入的理解紧束缚近似模型.{:.info} 轨道选择 首先来看最简单的水分子的模型,在这个分子中,也可以认为这就是通常所说的元胞,这个元胞中有1个氧原子,2个氢原子,为了比较精确的描述这个体系,在这个分子中,考虑氧原子贡献$s$轨道和$p$轨道,氢原子则只能贡献$s$轨道.对于氧原子的$p$轨道,它有3个不同的取向$p_x,p_y,p_z$,那么加上两个氢原子各贡献1个$s$轨道,那么整体考虑下来,总共是有6个轨道,如果对紧束缚了解的话,就会明白在构建哈密顿量矩阵表达的时候,这个矩阵就是$6\times 6$的大小. 将这6个轨道进行标记$\rvert s\rangle,\rvert p_x\rangle,\rvert p_y\rangle,\rvert p_z\rangle,\rvert h_1\rangle,\rvert h_2\rangle$.以$\rvert s\rangle$和$\rvert h_1\rangle$为基准线,这两个轨道之间的hopping为$t_s=\langle s\rvert H\rvert h_1\rangle=\langle s\rvert H\rvert h_2\rangle$,$\rvert h_1\rangle$轨道与$\rvert p_x\rangle$轨道之间的夹角为$\alpha$,那么它们之间的hopping大小为$t_p\cos(\alpha)$;至于与$\rvert h_2\rangle$之间的hopping则可以通过简单三角函数关系得到. 我们的目的是以$\rvert s\rangle,\rvert p_x\rangle,\rvert p_y\rangle,\rvert p_z\rangle,\rvert h_1\rangle,\rvert h_2\rangle$这6个轨道,来构建矩阵$H_{ij}=\langle\varphi_i\rvert...
Bloch函数与Cell波函数
在固体物理中,Bloch定理使非常重要的,这也是我们可以将阿伏伽德罗常数多的体系进行求解的一个重要起点,主要就是因为晶体是由一系列具有周期性的结构组成,那么势场自然也就有周期性,从而就有了Bloch定理,在这里就主要想写一些自己最近在学此过程中对这个定理的进一步认识,同时也主要理解一下Cell波函数在这里的作用.{:.info} Bloch定理对于理想晶体,原子排列成晶格,晶格具有周期性,从而等效的势场$V(\mathbf{r})$也具有周期性,晶体中的电子就是在一个具有周期性的等效势场中运动的,满足方程 [-\frac{\hbar^2}{2m}\nabla^2+V(\mathbf{r})]\psi=E\psi\\ V(\mathbf{r})=V(\mathbf{r+R_n})这里$\mathbf{R_n}$是任意晶格矢量. Bloch定理就是,当势场具有周期性的时候,波动方程的解$\psi$具有如下性质 \psi_{n\mathbf{k}}(\mathbf{r+R_n})=e^{i\mathbf{k}\cdot\mathbf{R_n}}\psi_{n\mathbf{k}}(\mathbf{r}) \label{eq1}其中$\mathbf{k}$为一矢量.(\ref{eq1})表明当平移晶格矢量$\mathbf{R_n}$时,波函数只增加了位相因子$e^{i\mathbf{k}\cdot\mathbf{R_n}}$,(\ref{eq1})也就是Bloch定理,根据Bloch定理,可以把波函数写作 \psi_{n\mathbf{k}}(\mathbf{r})=e^{i\mathbf{k}\cdot\mathbf{R_n}}u_{n\mathbf{k}}(\mathbf{r})\label{eq2}其中$u(\mathbf{r})$具有和晶体相同的周期性,即 u_{n\mathbf{k}}(\mathbf{r+R_n})=u_{n\mathbf{k}}(\mathbf{r})(\ref{eq2})表达的波函数称为Bloch函数,它是平面波与周期函数的乘积. 周期规范条件在动量空间中,如果将问题限制在第一布里渊区,那么如果动量$\mathbf{k}$变化一个倒空间格矢,则可以有 \rvert...
实空间哈密顿量的周期边界设置
平时说到周期边界条件,如果对固体物理熟悉的话,第一时间想到的就是Bron-Von Karman边界条件,这就将实空间和动量空间联系了起来,但是有时候我们并不要在动量空间中研究问题,而是要在实空间研究体系Bulk的性质,那么我们就需要实现一个实空间的周期边界条件,这里我就整理一下如何对实空间的哈密顿量(紧束缚近似)实现这样的周期边界条件.{:.info} p-wave 超导体Vortex中的Majorana zero mode我之前的一篇博客p-wave 超导体Vortex中的Majorana zero mode,就是要在实空间中利用周期边界条件,来研究一些问题.在那篇的手册中,对于周期边界到底如何设置,并没有做出很详细的描述,而这里我就将这个问题重新整理,仔细分解如何构建这样的一个周期边界. hopping其实在实空间中,如何设置周期边界条件的主要问题就是,对于实空间哈密顿量中的hopping项$C^\dagger_iC_j(i\ne j)$到底跳到哪一个格点上.首先放一张示意图,展示一下hooping项,以及周期边界下的拓扑结构. 对于一个二维的系统,只有$x,y$两个方向,如果将这两个方向都设成周期的,那么就可以形成一个圆环面. 对于不处在边界上的格点,存在4个方向上的hopping,如图所示.如果将格点进行编号,假设$x$方向与$y$的格点数目分别为$x_n$和$y_n$,那么总的格点数目就是$x_n\times y_n$.假设一个不在边界上的格点其索引为$i$,那么它向右hopping即$C^\dagger_{i+1}C_i$,就代表索引要从$i$变成$i+1$,那么类似的如果是向左hopping,索引变化为$i\rightarrow (i-1)$. 接下来就是$y$方向的hopping,还是以$i$为起点,如果向$y$的正方向hopping,那么$i\rightarrow (i+y_n)$,向$y$的负方向hopping则有$i\rightarrow (i-y_n)$.这些就是不在边界上点的4个方向hopping.下面分析边界上的点如何进行hopping. 如果一个点处在最右端,为了构成周期边界条件,它向右hopping应该回到最左端$x_n\rightarrow...