CITE THIS NOTEBOOK: Unravelling the edge spectra of non-Hermitian Chern insulators by James Bartlett. Wolfram Community DEC 20 2022.
ORIGINAL ARTICLE: James Bartlett, Erhai Zhao (2022). Unravelling the edge spectra of non-Hermitian Chern insulators. arXiv:2209.06774 [cond-mat.mes-hall]. https://doi.org/10.48550/arXiv.2209.06774.
Article Abstract: Non-Hermitian Chern insulators differ from their Hermitian cousins in one key aspect: their edge spectra are incredibly rich and confounding. For example, even in the simple case where the bulk spectrum consists of two bands with Chern number ±1, the edge spectrum in the slab geometry may have one or two edge states on both edges, or only at one of the edges, depending on the model parameters. This blatant violation of the familiar bulk-edge correspondence casts doubt on whether the bulk Chern number can still be a useful topological invariant, and demands a working theory that can predict and explain the myriad of edge spectra from the bulk Hamiltonian to restore the bulk-edge correspondence. We outline how such a theory can be set up to yield a thorough understanding of the edge phase diagram based on the notion of the generalized Brillouin zone (GBZ) and the asymptotic properties of block Toeplitz matrices. The procedure is illustrated by solving and comparing three non-Hermitian generalizations of the Qi-Wu-Zhang model, a canonical example of two-band Chern insulators. We find that, surprisingly, in many cases the phase boundaries and the number and location of the edge states can be obtained analytically. Our analysis also reveals a non-Hermitian semimetal phase whose energy-momentum spectrum forms a continuous membrane with the edge modes transversing the hole, or genus, of the membrane. Subtleties in defining the Chern number over GBZ, which in general is not a smooth manifold and may have singularities, are demonstrated using examples. The approach presented here can be generalized to more complicated models of non-Hermitian insulators or semimetals in two or three dimensions.

H2 Model with random perturbations

Example of adding random perturbations to H2 in the slab geometry . Specifically the value of m at each site is allowed to fluctuate with an amount drawn from a uniform distribution within the interval defined by "random limit". Note the same disorder is applied for each ky value so ky remains a good quantum number . We see that the edge states indeed survive the disorder which numerically verifies their robustness
Clear["Global`*"]​​SetDirectory[NotebookDirectory[]];​​​​(*Hamiltonianparameters*)​​​​m=0.3;​​hx=1.25;​​​​n=50;(*sizeoflatticeinx-direction*)​​sizematrix=2*n;​​randomlimit=0.2;(*absolutevalueoflimitforrandomperturbation*)​​​​(*Randomonsiteperturbation*)​​​​r=ConstantArray[0,{sizematrix,sizematrix}];​​Do[c=RandomReal[{-randomlimit,randomlimit}];r=ReplacePart[r,{2*i-1,2*i-1}c];​​r=ReplacePart[r,{2*i,2*i}-c],{i,1,n}];​​​​(*Loopingoverallkyvalues*)​​​​Bglst={};​​Bglst2={};​​Forky=-π,ky≤π,ky+=0.01*π,​​h=ConstantArray[0,{sizematrix,sizematrix}];​​​​diag=m-Cos[ky];​​offdiag=Sin[ky];​​​​(*AssigningtheHamiltonianmatrixelements*)​​​​(*onsiteterm*)​​Do[h=ReplacePart[h,{2*i-1,2*i-1}diag];​​h=ReplacePart[h,{2*i,2*i}-diag];​​h=ReplacePart[h,{2*i-1,2*i}-I*offdiag+I*hx];​​h=ReplacePart[h,{2*i,2*i-1}I*offdiag+I*hx],{i,1,n}];​​​​(*hopping,diagonal*)​​Do[h=ReplacePart[h,{2*i-1,2*i+1}-1/2];​​h=ReplacePart[h,{2*i,2*i+2}1/2];​​h=ReplacePart[h,{2*i+1,2*i-1}-1/2];​​h=ReplacePart[h,{2*i+2,2*i}1/2],{i,1,n-1}];​​​​(*hopping,"off-diagonal"*)​​Do[h=ReplacePart[h,{2*i-1,2*i+2}I/2];​​h=ReplacePart[h,{2*i,2*i+1}I/2];​​h=ReplacePart[h,{2*i+2,2*i-1}-I/2];​​h=ReplacePart[h,{2*i+1,2*i}-I/2],{i,1,n-1}];​​​​(*addingtherandomperturbation*)​​ht=h+r;​​​​(*ComputingtheEnergy*)​​​​ev=Eigenvalues[ht];​​For[i=1,i<=sizematrix,i++,​​AppendTo[Bglst,{ky,Re[ev[[i]]],Im[ev[[i]]]}]​​];​​For[i=1,i<=sizematrix,i++,​​AppendTo[Bglst2,{ky,Re[ev[[i]]]}]​​]​​;

3D Energy plot

ListPointPlot3D[Bglst,BoxRatios{1,1,0.5},PlotStylePointSize[0.005],​​AxesLabel{​​Style["
k
y
",FontSize20,FontFamily"Times"],​​Style["ReE",FontSize16,FontFamily"Times",Italic],​​Style["ImE",FontSize16,FontFamily"Times",Italic]},​​ViewPoint{1,-1.25,1},ColorFunction"DarkRainbow"]
Out[]=

k
y
vsReEPlane

ListPointPlot3D[Bglst,BoxRatios{1,1,0.5},PlotStylePointSize[0.005],​​AxesLabel{​​Style["
k
y
",FontSize20,FontFamily"Times"],​​Style["ReE",FontSize16,FontFamily"Times",Italic]},​​ViewPoint->{0,0,∞},Axes->{True,True,False},ColorFunction"DarkRainbow"]
Out[]=

H2 Model: Visualizing the Chern number

Example of a method to cross check the numerical calculation of the Chern number . The eigenvector is parameterized to the Bloch sphere using the polar angle theta and the azimuthal angle phi . The Chern number is then the number of times the images of "(β,ky)" cover the whole Bloch sphere as it varies throughout the GBZs;
(*Hamiltonianparameters*)​​​​m=1;​​hx=0.5;​​​​(*Loopingoverallkyvalues*)​​​​graph={};​​colors={};​​For[y=0,y≤1,y+=0.02,​​ky=(y-1/2)*2*π;​​r=Sqrt[Abs[(m-Cos[ky]-hx)/(m-Cos[ky]+hx)]];(*GBZradius*)​​​​(*Loopoverdiscretegridoftheta*)​​curve={};​​For[th=0,th<2π,th+=0.005π,​​β=r*Exp[I*th];​​​​(*VectorDoftheContinuumHamiltonian*)​​dx=I*((β-1/β)/2+hx);​​dy=Sin[ky];​​dz=m-Cos[ky]-(β+1/β)/2;​​​​z=Sqrt[dx^2+dy^2+dz^2];​​z1=dx+I*dy;​​z2=z-dz;​​a1=Abs[z1];​​a2=Abs[z2];​​a=Re[Sqrt[a1^2+a2^2]];​​​​(*parameterizingtheeigenvectortotheBlochsphere*)​​theta=ArcCos[a1/a]*2;​​phi=Arg[z2*Conjugate[z1]];​​​​AppendTo[curve,{Sin[theta]Cos[phi],Sin[theta]Sin[phi],Cos[theta]}];​​];​​AppendTo[graph,curve];​​AppendTo[colors,ColorData["Rainbow"][y]];​​];​​ListLinePlot3D[graph,PlotStylecolors,BoxRatios{1,1,1},AxesLabel{"x","y","z"}]

H3 Model : roughly computing the GBZ example

Example of computing the GBZ quickly and roughly using the self intersection method which is solved analytically . To achieve the desired resolution of the GBZ curve one could for example decrease the radius step size and/or combine with other GBZ calculation methods such as those discussed in the manuscript;