Supporting Information

Eric R Bittner
Department of Physics, University of Houston

Algorithmic preliminaries

(*============================================================DimerLiouvillian(full16x16)--trial-runscaffold============================================================*)​​ClearAll[c,LfunRelax,Lrelax,kplus,kminus,Lplus,Lminus,LD,LH];​​​​(*----------basic2-leveloperators----------*)​​id2=IdentityMatrix[2];​​sp=SparseArray[{{2,1}->1},{2,2}];(*sigma_+*)​​sm=SparseArray[{{1,2}->1},{2,2}];(*sigma_-*)​​sz=SparseArray[{{1,1}->1,{2,2}->-1},{2,2}];​​​​(*two-spinembedding*)​​op1[A_]:=KroneckerProduct[A,id2];​​op2[A_]:=KroneckerProduct[id2,A];​​​​sm1=op1[sm];sm2=op2[sm];​​sp1=op1[sp];sp2=op2[sp];​​sz1=op1[sz];sz2=op2[sz];​​​​id4=IdentityMatrix[4];​​​​(*----------vectorizationconvention----------vec(ArhoB)=(Transpose[B]⊗A)vec(rho)------------------------------------------------*)​​LH[H_]:=-I(KroneckerProduct[id4,H]-KroneckerProduct[Transpose[H],id4]);​​​​LD[L_]:=Module[{LdL=ConjugateTranspose[L].L},KroneckerProduct[Conjugate[L],L]-1/2KroneckerProduct[id4,LdL]-1/2KroneckerProduct[Transpose[LdL],id4]];​​​​

MODEL A : correlated relaxation (collective decay)

Take
L
±
=
γ(1±c
(
-
σ
(1)±
-
σ
(2))
2
and Hamiltonian : detuning in single - excitation manifold (| 01 > vs | 10 >) such that
H
Δ
=
Δ
2
(|01〉〈01|-|10〉〈10|)
is diagonal in the in the computational basis ​
​
​​proj01=SparseArray[{{2,2}->1},{4,4}];​​proj10=SparseArray[{{3,3}->1},{4,4}];​​​​HDelta[Delta_?NumericQ]:=(Delta/2)(proj01-proj10);​​​​Lplus=(sm1+sm2)/Sqrt[2];​​Lminus=(sm1-sm2)/Sqrt[2];​​​​kplus[gamma_?NumericQ,c_?NumericQ]:=gamma(1+c);​​kminus[gamma_?NumericQ,c_?NumericQ]:=gamma(1-c);​​​​Lrelax[Delta_?NumericQ,gamma_?NumericQ,c_?NumericQ]:=LH[HDelta[Delta]]+kplus[gamma,c]LD[Lplus]+kminus[gamma,c]LD[Lminus];​​

MODEL B:correlated dephasing (collective sigma_z noise)

Take
L
±
=
γ(1±c)
(
σ
z
(1)±
σ
z
(2))
2
. Choose an SA-basis tunneling Hamiltonian equivalent in {|01>,|10>} and coupling/tunneling via the hamiltonian
H
J
=J(|01〉〈10|+|10〉〈01|)
in the computational basis.
​
hop0110=SparseArray[{{2,3}->1,{3,2}->1},{4,4}];(*SAFENAME*)​​HJ[J_?NumericQ]:=Jhop0110;​​​​Zplus=(sz1+sz2)/Sqrt[2];​​Zminus=(sz1-sz2)/Sqrt[2];​​​​Ldeph[J_?NumericQ,gamma_?NumericQ,c_?NumericQ]:=LH[HJ[J]]+kplus[gamma,c]LD[Zplus]+kminus[gamma,c]LD[Zminus];​​

EP Diagnostics

(*============================================================EPdiagnostics(simple+robust)-"near-degeneracy"ineigenvalues(withineps)-rankdropofeigenvectormatrix(Jordandefectproxy)​​============================================================*)​​​​clusterEigenvalues[evs_List,eps_?NumericQ]:=Module[{clusters={},used,n=Length[evs]},used=ConstantArray[False,n];​​Do[If[used[[i]],Continue[]];​​Module[{cl={i},changed=True},used[[i]]=True;​​While[changed,changed=False;​​Do[If[used[[j]],Continue[]];​​If[Min[Abs[evs[[j]]-evs[[#]]]]&/@cl//Min<eps,AppendTo[cl,j];used[[j]]=True;changed=True;],{j,1,n}];];​​AppendTo[clusters,cl];],{i,1,n}];​​clusters];​​​​epFlagByRank[Lmat_?MatrixQ,epsEV_:10^-6,tolRank_:10^-8]:=Module[{evs,vecs,clusters,ranks,maxCl,rankV},{evs,vecs}=Eigensystem[Lmat];​​clusters=clusterEigenvalues[evs,epsEV];​​(*focuson“largest”clusterasEPcandidate*)maxCl=First@MaximalBy[clusters,Length];​​rankV=MatrixRank[Transpose[vecs[[maxCl]]],Tolerance->tolRank];​​(*EPcandidateifclustersize>rank(defect)*)If[Length[maxCl]>rankV,1,0]];
In[]:=
(*---EPstrengthviaeigenvectorconditioning---*)ClearAll[epStrength,epFlag];​​​​epStrength[L_?MatrixQ,tolSV_:10^-12]:=Module[{vals,vecs,V,smin},{vals,vecs}=Eigensystem[N[L,50]];​​V=Transpose[vecs];(*columns=eigenvectors*)smin=Min[SingularValueList[V]];​​1/Max[smin,tolSV]];​​​​(*turnstrengthintoabinaryflagifyouwant*)​​epFlag[L_?MatrixQ,thresh_:10^6]:=If[epStrength[L]>thresh,1,0];

Test cases

This generates the graphics in the manuscript. Ideally, the end user should be able to plug-and-play with their own Liouvillian super-op “flattened” into a
2
d
x
2
d
array.
In[]:=
cGrid=Range[-1,1,0.01];​​(*chooseONE:Lfun=LdephorLrelax*)​​params=<|"gamma"->1,"Delta"->0.5,"J"->0.3|>;​​LfunDeph[c_]:=Ldeph[params["J"],params["gamma"],c];​​LfunRelax[c_]:=Lrelax[params["Delta"],params["gamma"],c];​​​​dataDephStrength=Table[{c,epStrength[LfunDeph[c]]},{c,cGrid}];​​dataRelaxStrength=Table[{c,epStrength[LfunRelax[c]]},{c,cGrid}];​​​​ListLogPlot[dataDephStrength,Joined->True,PlotRange->All,AxesLabel->{"c","EPstrength"},PlotLabel->"Dephasing: EP strength vs c"]​​​​ListLogPlot[dataRelaxStrength,Joined->True,PlotRange->All,AxesLabel->{"c","EPstrength"},PlotLabel->"Relaxation: EP strength vs c"]​​​​params
Out[]=