Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Introduction

The scaling flow of topological insulators is introduced by Alexander Altland from the University of Cologne.

A toy model for two-parameter scaling: the disordered Kitaev chain

Before we learn what happens to topological insulators in the presence of disorder, let’s decide on a specific example for concreteness.

Topology makes the behavior of disordered systems richer; however, a careful simulation of properties of disordered topological insulators may take weeks, since we not only need to take large system sizes (the lengths must be much larger than the mean free path), but also need to average over disorder.

Luckily, unlike in the non-topological case, a one-dimensional system can already show interesting properties in the presence of disorder, so we can just reuse the familiar Kitaev chain and add disorder to it.

It is nothing but the same 1D tight-binding model that we saw in week one,

H=n(μn+2t+m)τznnn[(tτz+iΔτy)nn ⁣+ ⁣ ⁣1+h.c.].H = \sum_n (\mu_n + 2t + m) \tau_z\left|n\right\rangle\left\langle n\right|-\sum_n \left[(t\tau_z+i\Delta\tau_y)\,\left|n\right\rangle\left\langle n\!+\!\!1 \right| + \textrm{h.c.}\right].

For convenience, we introduced a mass mm that corresponds to the gap in the Dirac equation. The phase transition happens at m=0m=0, and m<0m<0 corresponds to the topological phase with Majorana modes at the end.

The only difference from what we used before is that now the chemical potential μn\mu_n varies randomly from site to site. For example, we can sample the values μn\mu_n from a Gaussian distribution with mean value μ0\mu_0 and standard deviation UU.

The simpler effect of disorder

In addition to transmission through a finite chain, we can now compute its topological invariant Q\mathcal{Q}.

Just as a reminder: Q=detr\mathcal{Q} = \det r, where rr is the reflection matrix from one end of a finite Kitaev chain.

We know that Q=1\mathcal{Q}=-1 in the topological phase and Q=+1\mathcal{Q}=+1 in the trivial phase. Now, in the presence of disorder, the value of Q\mathcal{Q} in a finite size system can in principle depend on the particular disorder realization. So just like calculating average conductance, we can average the topological invariant over disorder to describe how topological properties depend on it.

Whenever Q=±1\langle Q\rangle = \pm 1, we know that the system is in one of the two insulating phases and there is no reflection whatsoever.

Let’s try the most obvious thing and see what happens to Q\langle Q\rangle as we increase disorder strength.

So below we see Q\mathcal{Q} averaged over 100 different realizations in a disordered Kitaev chain with 30 sites as we gradually increase UU:

Source
def make_kitaev_chain(L=10):
    lat = kwant.lattice.chain(norbs=2)
    syst = kwant.Builder()

    def onsite(site, m, t, disorder, salt):
        rand = disorder * kwant.digest.gauss(str(site.tag), salt)
        return (m + rand + 2 * t) * pauli.sz

    def hop(site1, site2, t, delta):
        return -t * pauli.sz - 1j * delta * pauli.sy

    syst[(lat(i) for i in range(L))] = onsite
    syst[kwant.HoppingKind((1,), lat)] = hop

    sym = kwant.TranslationalSymmetry((1,))
    lead = kwant.Builder(sym)

    # The leads are precalculated.
    lead[lat(0)] = onsite
    lead[kwant.HoppingKind((1,), lat)] = hop

    syst.attach_lead(lead)
    syst.attach_lead(lead.reversed())
    syst = syst.finalized()
    syst = syst.precalculate(params=dict(t=1.0, m=0.0, delta=1.0, disorder=0, salt=""))

    return syst


def phase_diagram(L, ms, p, num_average=100):
    syst = make_kitaev_chain(L)

    # Adjust the reflection phase such that it's 0 for trivial system.
    trivial = dict(m=10.0, t=1.0, delta=1.0, disorder=0, salt="")
    phase = kwant.smatrix(syst, params=trivial).data[0, 0]
    phase /= abs(phase)
    data = []
    for p["m"] in ms:
        qt = []
        for p["salt"] in map(str, range(num_average)):
            s = kwant.smatrix(syst, params=p).data
            qt.append(((s[0, 0] / phase).real, abs(s[0, 1]) ** 2))
        qt = np.mean(qt, axis=0)
        data.append(qt)

    return np.array(data).T


if os.path.exists(data_folder + "first_plot_data_ms.dat") and os.path.exists(
    data_folder + "first_plot_data_qs.dat"
):
    ms = np.loadtxt(data_folder + "first_plot_data_ms.dat")
    qs = np.loadtxt(data_folder + "first_plot_data_qs.dat")
else:
    # This cell generates data
    p = dict(t=1.0, delta=1.0)
    ms = np.linspace(-0.5, 0.5, 50)
    qs = [phase_diagram(30, ms, p)[0] for p["disorder"] in np.linspace(0, 0.8, 10)]
    np.savetxt(data_folder + "first_plot_data_ms.dat", ms)
    np.savetxt(data_folder + "first_plot_data_qs.dat", qs)


fig = go.Figure()
alphas = np.linspace(0.2, 1.0, len(qs))
colors = ["#1f77b4"] * len(qs)
for q, alpha in zip(qs, alphas):
    fig.add_trace(
        go.Scatter(
            x=ms,
            y=q,
            mode="lines",
            line=dict(color=f"rgba(31,119,180,{alpha})"),
            showlegend=False,
        )
    )
fig.add_hline(y=0, line_dash="dash", line_color="#555")
fig.update_layout(
    xaxis=dict(title="$m$", range=[-0.4, 0.4]),
    yaxis=dict(title=r"$\langle Q \rangle$", range=[-1.1, 1.1]),
)
fig
Loading...

(Darker color corresponds to larger UU.)

What you see is that far away from the transition, when the gap in the clean limit is very large, disorder does not matter. Around the transition, the average value of Q\mathcal{Q} changes from -1 and +1.

Increasing disorder changes two things:

The second effect, despite looking mysterious, appears just because the disorder changes the effective values of the Hamiltonian parameters. For small UU, this can be understood in terms of the Born approximation, which allows us to compute effective disorder-averaged band structure parameters, given the properties of disorder. The lowest order correction to mm for the disorder Kitaev chain is simply meffmU2m_\textrm{eff} - m \sim -U^2, and weak disorder indeed drives the system to a topologically nontrivial state by lowering the effective value of the mass.

Since this phenomenon appears with disorder, it was initially dubbed the “topological Anderson insulator”. This name is certainly not accurate: the band structure parameters approach the effective ones on the length scale of the mean free path, and before the Anderson scaling flow begins.

Two-parameter scaling in one dimension

Speaking of the scaling flow, the scaling hypothesis appears to be very powerful. Does topology have any impact on it?

We can understand some limits. First of all, if g1g\gg 1, the system is a metal, and there can hardly be any trace of topology left. However when g1g \lesssim 1, the system can become one out of several topologically distinct types of insulators, and we can expect some sort of transition between different insulating phases.

The natural assumption at this point is that the scaling hypothesis still holds, but in addition to gg it depends on the average topological invariant of the disordered ensemble Q\langle \mathcal{Q} \rangle.

Just like in the case of the non-topological phases, there is no universal proof that this form of scaling flow is correct. Instead, there is a vast amount of mixed numerical and analytical evidence that this is correct.

Let’s try to verify our hypothesis by constructing the scaling flow of the disordered Kitaev chain. We can do it in the following way:

Here’s what we get:

Source
if os.path.exists(data_folder + "scaling_data_qs.dat") and os.path.exists(
    data_folder + "scaling_data_ts.dat"
):
    qs = np.loadtxt(data_folder + "scaling_data_qs.dat")
    ts = np.loadtxt(data_folder + "scaling_data_ts.dat")
else:
    p = dict(t=1.0, delta=1.0, disorder=0.8)
    Ls = np.array(np.logspace(np.log10(10), np.log10(180), 6), dtype=int)
    ms = [np.sign(x) * x**2 + 0.2 for x in np.linspace(-1, 1, 40)]
    qs, ts = zip(*[phase_diagram(int(L), ms, p, num_average=1000) for L in Ls])
    qs = np.array(qs)
    ts = np.array(ts)
    np.savetxt(data_folder + "scaling_data_qs.dat", qs)
    np.savetxt(data_folder + "scaling_data_ts.dat", ts)

fig = go.Figure()
X, Y = qs.T, ts.T
num_sizes = qs.shape[0]
size_colors = sample_colorscale("Viridis", np.linspace(0, 0.9, num_sizes).tolist())
for curve_idx in range(X.shape[0]):
    x, y = X[curve_idx], Y[curve_idx]
    for seg in range(num_sizes - 1):
        color = size_colors[seg]
        fig.add_trace(
            go.Scatter(
                x=x[seg : seg + 2],
                y=y[seg : seg + 2],
                mode="lines",
                line=dict(color=color, width=2),
                showlegend=False,
            )
        )
fig.update_layout(
    xaxis=dict(title=r"$\langle Q \rangle$", range=[-1, 1]),
    yaxis=dict(title=r"$\langle T \rangle$", range=[0, 0.5]),
    height=520,
)
fig
Loading...

The lines have a direction, which tells us how Q\langle Q \rangle and T\langle T \rangle change as we increase LL. In the plot above, LL is increasing in going from bright to dark colors.

The first and the most important observation we can make is that the lines do not intersect, which confirms the scaling hypothesis.

Most of the lines tend to one of the two points (Q,T)=(1,0)(\langle \mathcal{Q} \rangle, \langle T \rangle) = (-1, 0) or (1,0)(1, 0). These correspond to two insulating systems with different topological invariants. We can say that quantized values of Q\langle \mathcal{Q} \rangle are insulating, and they correspond to attractive fixed points of the flow.

You can also see that the flow is roughly separated around a vertical critical line at Q=0\langle \mathcal{Q} \rangle=0. All lines which start from a negative value of Q\langle \mathcal{Q} \rangle end up at (1,0)(-1, 0), and all the lines which start from a positive value end up at (1,0)(1,0).

Finally, the point (0,0)(0, 0) is a saddle point: the flow goes towards it along the vertical axis, and away from it along the horizontal axis.

We now understand better why two-parameter scaling is necessary in the presence of a topological invariant. Even in the presence of disorder, there can be topologically distinct insulating phases. Therefore, saying that every system flows to an insulator is not enough anymore. Including the average topological invariant as a second scaling parameter allows us to predict towards which insulating phase the system will flow.

The flow we just calculated is in fact valid for all one-dimensional topological insulators and superconductors. In the case of a Z\mathbb{Z} invariant, the saddle points are located at (Q,T)=(n+1/2,0)(\langle \mathcal{Q} \rangle, \langle T\rangle) = (n+1/2, 0).

It is important to notice that a key result of the standard scaling theory regarding one-dimensional systems remains true: in the plot above all lines flow to zero transmission, or in other words there are no metallic phases in the flow diagram.

Critical point

The scaling flow of 1D topological insulators can be solved exactly, and especially for our system we can very easily derive some of its properties.

The behavior of the disordered Kitaev chain close to the phase transition can be understood within an effective Dirac Hamiltonian in the continuum limit. The Hamiltonian is similar to the one, we studied in week one when we were concerned with a domain wall

HDirac=vpτz+m(x)τy,H_\textrm{Dirac} = v\,p\,\tau_z + m(x)\,\tau_y\,,

with pp the momentum along the chain, vv the velocity of the modes, and m(x)m(x) the position dependent gap which couples left-movers and right-movers.

To model the disordered chain, we take m(x)m(x) to be a random function of xx, just like μn\mu_n was random in the lattice version. The chain is disordered in a segment of finite size LL, while for x<0x<0 and x>Lx>L we set m=0m=0 so that in this region we have propagating modes and thus a well-defined scattering problem.

We want to compute the transmission probability through the chain at zero energy. As we saw in week one, an eigenstate at zero energy satisfies the relation

Ψ(L)=exp(τxα)Ψ(0),\Psi(L) =\,\exp\,(-\tau_x\,\alpha)\,\,\Psi(0)\,,

with a parameter

α=1v0Lm(x)dx\alpha = \frac{1}{v}\,\int_0^L\, m(x)\, dx\,

proportional to the average value of the random mass in the chain.

An incoming wave from the left (negative xx) entering the scattering region is partially transmitted through it and partially reflected. We can find the reflection and transmission amplitudes r,tr, t by substituting Ψ(0)=(1,r)T\Psi(0)=(1,r)^T and Ψ(L)=(t,0)T\Psi(L) = (t,0)^T in the equation above. By solving the simple linear system that comes out of the substitution, we get immediately

r=tanh(α),    t=cosh1(α).r = \tanh (\alpha)\,,\;\;t = \cosh^{-1} (\alpha).

The scattering topological invariant QQ for the Kitaev chain is the sign of the determinant of rr. In our case, since rr is just a number, we immediately get

Q=r=tanhα.Q=r = \tanh\alpha\,.

We see that the topological transition happens when α=0\alpha=0. That is, to model the transition, we think of m(x)m(x) as a random function of xx which can take positive and negative values with equal probabilities.

The details of the probability distribution for m(x)m(x) are not very important as long as the distribution is characterized by a finite correlation length ξL\xi \ll L - that is, values of mm at points more distant than ξ\xi are statistically uncorrelated.

If this is the case, α\alpha is the sum of an order L/ξ\sim L/\xi of uncorrelated values of mm. By using the central limit theorem, we can say that α\alpha is a normally distributed variable with zero mean and a variance growing linearly in LL. Since α\alpha is a random variable, so is the transmission probability T=t2=cosh2(α)T=|t^2|=\cosh^{-2}(\alpha). From the probability distribution of α\alpha, we can obtain the scaling behavior of TT as

T1/L.\left\langle T \right \rangle \propto 1/\sqrt{L}\,.

Two-parameter scaling in higher dimensions

Just like the regular scaling flow, the topological one is also richer in d>1d>1.

The oldest known example of the two-parameter flow is unsurprisingly the quantum Hall effect. The flow looks similar to what we just calculated in 1D, here:

Renormalization-group flow diagram for the quantum Hall effect

By Wout Neutkens (Own work) CC BY-SA 3.0, via Wikimedia Commons

The axes are the same as before - the horizontal one is the topological invariant given by σH\sigma_H, and the vertical axis the longitudinal conductance. The saddle point separating the different topological phases is now elevated to a finite critical conductance, which is known to be around 0.50.60.5-0.6 conductance quanta.

Metallic phases are the final part that we need to consider. The appearance of those at high conductance is governed by the same rules as without the topological invariant. The reason for this is that the topological effects are all O(1)\mathcal{O}(1) corrections to conductance, and are therefore only important at g1g\sim 1.

An extra attractive metallic fixed point can make the flow diagram more complicated. For example, the metallic phase can completely separate the two insulating phases and eliminate the fixed point. What happens in each particular case is not always certain, and is still an open research topic.

Conclusions