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
)