ABSTRACT (original article): We extend the notion of topologically protected semi-metallic band crossings to hyperbolic lattices in a negatively curved plane. Because of their distinct translation group structure, such lattices are associated with a high-dimensional reciprocal space. In addition, they support non-Abelian Bloch states which, unlike conventional Bloch states, acquire a matrix-valued Bloch factor under lattice translations. Combining diverse numerical and analytical approaches, we uncover an unconventional scaling in the density of states at low energies, and illuminate a nodal manifold of codimension five in the reciprocal space. The nodal manifold is topologically protected by a nonzero second Chern number, reminiscent of the characterization of Weyl nodes by the first Chern number. CITATION (original article): Tarun Tummuru, Anffany Chen, Patrick M. Lenggenhager, Titus Neupert, Joseph Maciejko, and Tomáš Bzdušek (2024), Phys. Rev. Lett. 132, 206601. https://doi.org/10.1103/PhysRevLett.132.206601

Initialization


Dirac model on the {8,8} lattice

Import cells

We first import the cell, model, and supercell model graphs as produced by the HyperCells package (see https://github.com/patrick-lenggenhager/HyperCells for the package repository):
In[]:=
pcell=ImportCellGraphString[Import[FileNameJoin[{"data","cells","(2,8,8)_T2.6_3.hcc"}]]];
pcmodel=ImportModelGraphString[Import[FileNameJoin[{"data","cells","{8,8}-tess_T2.6_3.hcm"}]]];
We consider the following sequence of supercells, defined in terms of quotients given in https://www.math.auckland.ac.nz/~conder/TriangleGroupQuotients101.txt by M. Conder:
In[]:=
supercells={"T3.11","T5.13","T9.20","T17.29","T33.44"};
In[]:=
scmodels=Association[#->ImportSupercellModelGraphString[Import[FileNameJoin[{"data","cells",ToString@StringForm["{8,8}-tess_T2.6_3_sc-``.hcs",#]}]]]&/@supercells];

Model on the primitive cell T2.6

We define the model on the primitive cell given by the quotient group T2.6. The primitive cell (Wigner-Seitz unit cell) forms an octagon with a single site at its center and nearest neighbors in adjacent copies of the cell:
In[]:=
VisualizeModelGraph[pcmodel,​​Elements<|​​ShowCellGraphFlattened{},​​ShowCellBoundary{ShowEdgeIdentificationTrue}​​|>,​​CellGraphpcell,​​NumberOfGenerations2,​​ImageSize300]
Out[]=
The model consists of four orbitals placed at that site and coupled to its nearest neighbors with Gamma matrices depending on the four distinct directions
γ
1
In[]:=
σ0=PauliMatrix[0];​​σx=PauliMatrix[1];​​σy=PauliMatrix[2];​​σz=PauliMatrix[3];​​[1]=KroneckerProduct[σx,σ0];​​[2]=KroneckerProduct[σy,σ0];​​[3]=KroneckerProduct[σz,σx];​​[4]=KroneckerProduct[σz,σy];​​[5]=KroneckerProduct[σz,σz];
In[]:=
hopping=AssociationThread[EdgeList@pcmodel["Graph"]->(([5]+[ToExpression@StringReplace[#,RegularExpression["g(\\d)"]:>"$1"]])/2&/@pcmodel["EdgeTranslations"])]
Out[]=
{3,1}
{1,{1,1,5}}

{3,1}
1
2
,0,

2
,0,0,-
1
2
,0,

2
,

2
,0,-
1
2
,0,0,

2
,0,
1
2
,{3,1}
{1,{2,4,8}}

{3,1}
1
2
,
1
2
,0,0,-
1
2
,-
1
2
,0,0,0,0,-
1
2
,-
1
2
,0,0,
1
2
,
1
2
,{3,1}
{1,{3,2,6}}

{3,1}
1
2
,0,
1
2
,0,0,-
1
2
,0,
1
2
,-
1
2
,0,-
1
2
,0,0,-
1
2
,0,
1
2
,{3,1}
{1,{4,3,7}}

{3,1}
1
2
,

2
,0,0,

2
,-
1
2
,0,0,0,0,-
1
2
,-

2
,0,0,-

2
,
1
2

Additionally, there is an onsite Dirac mass
m
:
In[]:=
onsite[m_]:={{m,0,0,0},{0,-m,0,0},{0,0,-m,0},{0,0,0,m}}&
With this information, we construct the Abelian Bloch Hamiltonian on the primitive cell:
In[]:=
(Hpc=FullSimplify[AbelianBlochHamiltonian[pcmodel,4&,onsite[m],hopping][[2]]])//MatrixForm
Out[]//MatrixForm=
m+Cos[k1]+Cos[k2]+Cos[k3]+Cos[k4]
-Sin[k3]+Sin[k4]
-Sin[k1]+Sin[k2]
0
-Sin[k3]-Sin[k4]
-m-Cos[k1]-Cos[k2]-Cos[k3]-Cos[k4]
0
-Sin[k1]+Sin[k2]
-Sin[k1]-Sin[k2]
0
-m-Cos[k1]-Cos[k2]-Cos[k3]-Cos[k4]
Sin[k3]-Sin[k4]
0
-Sin[k1]-Sin[k2]
Sin[k3]+Sin[k4]
m+Cos[k1]+Cos[k2]+Cos[k3]+Cos[k4]
We export the matrix
Export[FileNameJoin[{"data","ABH","ABH_{8,8}-dirac_T2.6.dat"}],Hpc,"Table"];

Density of states

We approximate the density of states by randomly sampling momenta, i.e., one-dimensional irreducible representations, and diagonalizing the Bloch Hamiltonian evaluated at those. For faster evaluation, we compile the expression for the Bloch Hamiltonian for the specific Dirac mass of interest, here
m=3
:
In[]:=
Hpccf=AbelianBlochHamiltonian[pcmodel,4&,onsite[3],hopping,CompileFunction->True]
Out[]=
CompiledFunction
Argument count: 4
Argument types:
{_Real,_Real,_Real,_Real}

The computation of the density of states (DOS) can take advantage of the independence of different momentum sectors and can therefore be parallelized:
In[]:=
ComputeDOS[cfH_,Npts_,Nruns_,{Emin_,Emax_},dE_]:=Module[{data,tot,dimk=Length[cfH[[2]]]},​​data=Transpose[{MovingAverage[Range[Emin,Emax,dE],2],Total@ParallelTable[HistogramList[Flatten@Table[Chop@Eigenvalues[cfH@@RandomReal[{-Pi,Pi},dimk]],{i,1,Round[Npts/Nruns]}],{Emin,Emax,dE}][[2]],{j,1,Nruns},Method"FinestGrained"]}];​​tot=Total@data[[;;,2]];​​{#1,#2/dE/tot}&@@@data​​]
As stated in the paper, we compute the DOS with an energy resolution of 0.005 (but for demonstration purposes with a smaller sampling of
6
10
instead of
9
10
)
In[]:=
dospc=ComputeDOS[Hpccf,10^6,32,{-8-0.005,8},0.005];
In[]:=
ListLinePlotdospc,FrameTrue,FrameStyleBlack,FrameLabel{"Energy E","Density of states"},PlotRangeAll,PlotLabel->"Primitive cell (T2.6)​; k sampling:
6
10
"
Out[]=
The full data with larger sampling is stored as data/DOS/dos_{8,8}-dirac_T2.6_{3}.dat and we can import and plot it:
In[]:=
ListLinePlotImport[FileNameJoin[{"data","DOS","dos_{8,8}-dirac_T2.6_{3}.dat"}]],FrameTrue,FrameStyleBlack,FrameLabel{"Energy E","Density of states"},PlotRangeAll,PlotLabel->"Primitive cell (T2.6)​; k sampling:
9
10
"
Out[]=
We observe an energy gap, i.e., a region of energy with no states, around
E=0
.

Model on the supercells

The model is extended to the supercells in the sequence by translation symmetry, which allows us to construct the Abelian Bloch Hamiltonians on the supercells

2-Supercell

Of particular interest is the 2-supercell Bloch Hamiltonian, which we have used to compute a low-energy expansion and find the nodal manifold:
See the full matrix in full size here: https://www.wolframcloud.com/obj/2dcf11f5-0f18-4308-84af-c805fd725d6f

Density of states

Increasingly better approximations of the true density of states in the thermodynamic limit are obtained by considering one-dimensional irreducible representations on increasingly larger supercells. This is the supercell method, P. M. Lenggenhager et al (2023). Phys. Rev. Lett. 131, 226401. https://doi.org/10.1103/PhysRevLett.131.226401. Wolfram Community post and code: https://community.wolfram.com/groups/-/m/t/3131734​
Again, we first compile the expressions for the Abelian Bloch Hamiltonians to speed up the evaluation:
We plot the successively better approximations of the (normalized) density of states as obtained from successively larger supercells:
The full data is stored as data/DOS/dos_{8,8}-dirac_<quot>_{<m>}.dat, where <quot> is the corresponding quotient and <m> the value of the Dirac mass. We import and plot it due to the reduced noise:

CITE THIS NOTEBOOK

Hyperbolic non-Abelian semimetal​
by Tarun Tummuru, Anffany Chen, Patrick M. Lenggenhager, Titus Neupert, Joseph Maciejko, and Tomáš Bzdušek
Wolfram Community, STAFF PICKS, May 21, 2024
​https://community.wolfram.com/groups/-/m/t/3180067