Thanks, Joe! It works great. 2017-03-14 8:23 GMT-05:00 Joseph Weston <[email protected]>:
> Hi again, > > > I had already tried that, but I get extra bands that I would like to get > > rid of. > > You could try using Christoph Groth's "wraparound" module [1] (just > download the "wraparound.py" module and put it next to your script to > be able to "import wraparound"). This will convert your Builder with > a 1D translational symmetry to a Builder with no translational symmetry, > but which takes an extra parameter, k, which corresponds to the lattice > momentum. You can then calculate and plot the bands yourself: > > import numpy as np > import wraparound > import matplotlib.pyplot as plt > > syst_with_sym = make_system() # *unfinalized* system (i.e. a Builder) > syst_no_sym = wraparound.wraparound(syst_no_sym).finalized() > > > # assumes that "syst_with_sym" took no parameters > def poor_man_bands(k): > H_k = syst_no_sym.hamiltonian_submatrix(args=(k,), sparse=False) > return sorted(np.eigvalsh(H_k)) > > momenta = np.linspace(-np.pi, np.pi, 53) > E_k = [poor_man_bands(k) for k in momenta] > > plt.plot(momenta, E_k) > > > Internally all that "wraparound" does is converts hoppings between > unit cells in a translationally invariant system to onsites/hoppings > in a finite system multiplied by the appropriate phase factors which > depend on the lattice momentum. > > > Happy Kwanting, > > Joe > > [1]: https://gitlab.kwant-project.org/cwg/wraparound >
