import sys sys.path.append('../code') from init_mooc_nb import * init_notebook() %output size=150 MoocVideo("N9-tUYjXC1s", src_location="11.2-intro") question = (r"In which case can inversion symmetry protect gapless surface states?") answers = ["Never.", "In the case of 2D TIs with inversion symmetry.", "Only in three dimensions.", "Only in combination with particle-hole or time-reversal symmetry. "] explanation = "Any surface would break inversion symmetry of a crystal." MoocMultipleChoiceAssessment(question, answers, correct_answer=0, explanation=explanation) question = ("How would you attempt to make a model of a topological" " insulator with surface states protected by reflection symmetry?") answers = ["By using the interface of a material with reflection symmetry, and that of one without it.", "By stacking many layers of a lower dimensional topological insulator, " "and coupling them in a reflection-symmetric fashion.", "Reflection symmetry alone cannot protect any gapless surface state.", "By making a narrow ribbon of the material where only the momentum orthogonal to the reflection axis can be non-zero."] explanation = ("Such a stack would have a reflection symmetry around any of the layers, " "which is not broken by the presence of a surface parallel to the stacking direction.") MoocMultipleChoiceAssessment(question, answers, correct_answer=1, explanation=explanation) def nanowire_chains(length=40, n=2): def onsite(site, p): (x, y) = site.pos return ((2*p.t - p.mu) * pauli.szs0 + p.delta * pauli.sxs0 + (y % 2 == 0) * p.B * pauli.s0sz + (y % 2 == 1) * p.B * pauli.s0sy) def hopy(site1, site2, p): return -p.t * pauli.szs0 + 0.5 * 1j * p.alpha * pauli.szsx def hopx(site1, site2, p): (x1, y1) = site1.pos (x2, y2) = site2.pos return 1j * (-1)**((x1 + x2 - 1) % 2 == 0) * p.tx * pauli.sysx def shape(pos): (x, y) = pos return (0 <= x < n) and (0 <= y < length) lat = kwant.lattice.square() sym = kwant.TranslationalSymmetry((n, 0)) syst = kwant.Builder(sym) syst[lat.shape(shape, (0, 0))] = onsite syst[kwant.HoppingKind((1, 0), lat)] = hopx syst[kwant.HoppingKind((0, 1), lat)] = hopy return syst syst = nanowire_chains() p = SimpleNamespace(t=1.0, tx=0.2, mu=0.0, B=0.4, delta=0.15, alpha=0.3) spectrum(syst, p, k_x=np.linspace(-1, 1, 101), ylims=(-0.2, 0.2), xticks=3, yticks=3, title='Stacked Majorana wires') def stacked_qwz(w=50): def shape(pos): (x, y, z) = pos return (0 <= z < w) def hopx(site1, site2, p): return -0.5j * p.delta * pauli.sx - p.t * pauli.sz def hopy(site1, site2, p): return p.gamma * pauli.sy def hopz(site1, site2, p): (x, y, z) = site1.pos return -0.5j * p.delta * pauli.sy * (-1)**(y) - p.t * pauli.sz def onsite(site, p): return pauli.sz * (4 * p.t + p.mu) lat = kwant.lattice.general(np.eye(3)) syst = kwant.Builder(kwant.TranslationalSymmetry((1, 0, 0), (0, 2, 0))) syst[lat.shape(shape, (0, 0, 0))] = onsite syst[kwant.HoppingKind((1, 0, 0), lat)] = hopx syst[kwant.HoppingKind((0, 1, 0), lat)] = hopy syst[kwant.HoppingKind((0, 0, 1), lat)] = hopz return syst xticks = [(-np.pi, r"$-\pi$"), (0, r"$0$"), (np.pi, r"$\pi$")] yticks = [(0, r"$0$"), (np.pi / 2, r"$\pi/2$"), (np.pi, r"$\pi$")] p = SimpleNamespace(t=1.0, delta=1, gamma=.5, mu=-0.5) syst = stacked_qwz(30) spectrum(syst, p, num_bands=2, k_x=np.linspace(-np.pi, np.pi, 51), k_y=np.linspace(0, np.pi, 51), xticks=xticks, yticks=yticks, title='Stacked Chern insulator') MoocDiscussion("Questions", "Crystalline TI")