Su-Schrieffer-Heeger model

Hamiltonian

σ0={{1,0},{0,1}};
σx={{0,1},{1,0}};
σy={{0,-I},{I,0}};
σz={{1,0},{0,-1}};
σp={{0,1},{0,0}};
σm={{0,0},{1,0}};
ChainLength=20;
CMat1=SparseArray[{Band[{1,1}]->1},{ChainLength,ChainLength}];
CMat2=SparseArray[{Band[{1,2}]->1},{ChainLength,ChainLength}];
CMat3=SparseArray[{Band[{2,1}]->1},{ChainLength,ChainLength}];
t=1.0;
v=0.2;
HamSSH=KroneckerProduct[CMat1,v*σx]+KroneckerProduct[CMat2,t*σm]+KroneckerProduct[CMat3,t*σp];

HamSSH //MatrixForm

Diagonalization

eigen=Eigensystem[HamSSH];

Spectrum & eigenstates

SetOptions[ListPlot,
Frame->True,Joined->False,FrameStyle->Thick,FrameTicksStyle->30,
BaseStyle->{FontFamily->"Helvetica",FontSize->20},PlotStyle->{{RGBColor[173/255,0,45/255],PointSize[.03]}},AspectRatio->1.0];

(1) trivial phase (t=1.0, v=1.4)

ListPlot[eigen[[1]]]

ListPlot[eigen[[2,1]],PlotRange->{-1,1}]

ListPlot[eigen[[2,ChainLength]],PlotRange->{-1,1}]

(2) topological phase (t=1.0, v=0.2)

ListPlot[eigen[[1]]]

ListPlot[eigen[[2,1]],PlotRange->{-1,1}]

ListPlot[eigen[[2,2ChainLength-1]],PlotRange->{-1,1}]

ListPlot[eigen[[2,2ChainLength]],PlotRange->{-1,1}]

Effect of disorder

ChainLength=20;
t0=1.0;
tw=0.4;
tList=Table[t0+tw*RandomReal[{-0.5,0.5}],{n,1,ChainLength-1}];
v0=0.2;
vw=0.4;
vList=Table[v0+vw*RandomReal[{-0.5,0.5}],{n,1,ChainLength}];
HamSSHdis=Block[{thop,vhop},
thop=SparseArray[{Band[{2,3},{2ChainLength-2,2ChainLength-1},2]->tList},{2ChainLength,2ChainLength}];
vhop=SparseArray[{Band[{1,2},{2ChainLength-1,2ChainLength},2]->vList},{2ChainLength,2ChainLength}];
thop+Transpose[thop]+vhop+Transpose[vhop]
];

HamSSHdis//MatrixForm

eigendis=Eigensystem[HamSSHdis];

ListPlot[eigendis[[1]]]

ListPlot[eigendis[[2,1]],PlotRange->{-1,1}]

ListPlot[eigendis[[2,ChainLength]],PlotRange->{-1,1}]

ListPlot[eigendis[[2,2ChainLength-1]],PlotRange->{-1,1}]

ListPlot[eigendis[[2,2ChainLength]],PlotRange->{-1,1}]