Dear all,

I am adding a periodic magnetic field to an infinite wire, where the periods of 
the lattice and magnetic field are not the same. This would appear to be a 
violation of the part of Bloch's theorem where $u_k(x)=u_k(x+n.a)$. When I 
model this in kwant however (minimal working code below), I am able to plot the 
band structure just fine. I'm not totally sure how kwant is doing this, so I 
ask what are the implications here? Is k_x a bad quantum number as a result? 
Have I misunderstood what kwant is doing here?

Best wishes,
Michael

import kwant
import kwant.continuum
import numpy as np
import matplotlib.pyplot

hamiltonian = (
        "A * (k_x**2 + k_y**2) * kron(sigma_z, sigma_0)" #kinetic terms
        "- mu * kron(sigma_z, sigma_0)" #chemical potential
        "+ 0.5 * g * mu_B * M * (kron(sigma_0, sigma_x) * sin(period*x) + 
kron(sigma_0, sigma_y) * cos(period*x))" #periodic magnetic field
        "+ delta * kron(sigma_x, sigma_0)" #superconductivity
    )


ham_template = kwant.continuum.discretize(hamiltonian, coords="xy",grid=20)
infinite_wire = kwant.wraparound.wraparound(ham_template).finalized()

momenta = np.linspace(-1,1, 100)

def spectrum_discrete(**params):
    kwant.plotter.spectrum(
        infinite_wire,
        ('k_x', momenta),
        params=params,
    )
    
spectrum_discrete(
    period=7.3,
    A=2.01,#eV/nm^2
    g=10,
    mu_B=57.9e-6,#eV/T
    M=1,#T
    mu=0,#eV
    delta=180e-6,#eV
    k_y=0,
    cos=np.cos,
    sin=np.sin
)

Reply via email to