Sorry, my code was not formatted correctly in my previous email.
Here it is again:

###############
import numpy
from kwant.wraparound import wraparound,plot_2d_bands
from matplotlib import pyplot
get_ipython().magic('matplotlib inline')
import sys
import itertools
import collections
import cmath
import numpy as np
import tinyarray as ta
from numpy import pi,sqrt,arccos,array
import kwant
from kwant.builder import herm_conj




def plot_bands_2d(syst, args=(), momenta=(31, 31, 31), kz=0):

    """Plot the bands of a system with two wrapped-around symmetries."""
    from mpl_toolkits.mplot3d import Axes3D
    from matplotlib import pyplot

    if not isinstance(syst, kwant.system.FiniteSystem):
        raise TypeError("Need a system without symmetries.")

    fig = pyplot.figure()
    ax = fig.gca(projection='3d')
    kxs = np.linspace(-np.pi, np.pi, momenta[0])
    kys = np.linspace(-np.pi, np.pi, momenta[1])
   
    def get_energies(kz=kz):
        energies = [[np.sort(np.linalg.eigvalsh(syst.hamiltonian_submatrix(
            args + (kx, ky, kz), sparse=False)).real)  for ky in kys] for kx in 
kxs]
        return energies
    energies = np.array(get_energies(kz=kz))
    
    
    Colors=['orange','g','b','r','y']
    mesh_x, mesh_y = np.meshgrid(kxs, kys)
    for i in range(energies.shape[-1]):
        ax.plot_wireframe(mesh_x, mesh_y, energies[:, :, i], rstride=1, 
cstride=1,color=Colors[i])
        ax.plot_surface(mesh_x, mesh_y, energies[:, :, i], rstride=1, 
cstride=1,color=Colors[i])

    #pyplot.show()
    



def make_sys():
    def Onsite(site):
        return array([[1,1],[1,-1]])
    """Create a builder for a periodic infinite sheet of graphene."""
    lat =kwant.lattice.cubic(norbs=2)
    sym = kwant.TranslationalSymmetry(lat.vec((1, 0,0)), lat.vec((0, 
1,0)),lat.vec((0, 0,1)))

    syst = kwant.Builder(sym)
    syst[lat.shape(lambda p: True, (0, 0, 0))] =  Onsite
    syst[lat.neighbors()] = array([[1,1j],[-1j,1]])

    return syst


sys=make_sys()
syst = wraparound(sys).finalized()

plot_bands_2d(syst,kz=-3)

Reply via email to