dear all
I want to plot two different structures in one system. Although it is easy to plot separate lattices with the same structure, I will not be able to solve the problem when the structures are different. For example, I plotted two lattices with the same diamond structure, but when I replaced one of them with a honeycomb structure, I got an error after plotting the system. Apparently and logically, I think there is no bug in my code.
Is there a way to solve this problem?
I ask you to take a look at my code and report any possible bugs to me.
Thanks
###################################################################
import kwant
from math import sqrt
lat = kwant.lattice.general([(0, 0.5, 0.5), (0.5, 0, 0.5), (0.5, 0.5, 0)],
[(15, 15, 15), (15.25, 15.25, 15.25)], name=['a1', 'a2'])
a1, a2 = lat.sublattices
honeycomb = kwant.lattice.general([(1, 0), (1 / 2, sqrt(3) / 2)],
[(0, 0), (0, 1 / sqrt(3))])
subA , subB = honeycomb.sublattices
def make_system(a=25, b=25, c=30):
syst = kwant.Builder()
def cuboid_shape(pos):
x, y, z = pos
return 15 <= x < a and 15 <= y < b and 15 <= z < c
syst[a1.shape(cuboid_shape, (15, 15, 15))] = 1
syst[a2.shape(cuboid_shape, (15, 15, 15))] = 1
syst[lat.neighbors()] = 1
def graphene_shape(pos):
x,y = pos
return 0 <= x < 10 and 0 <= y < 10
syst[honeycomb.shape(graphene_shape,(0,0))] = 1
syst[honeycomb.neighbors()] = 1
return syst
def main():
syst= make_system()
kwant.plot(syst)
syst = make_system(a=1.1, b=1.1, c=1.1)
if __name__ == '__main__':
main()
###################################################################