Dear Javad tavakoli, I think you need to see the kwant documentation carefully. From the first look at your script I can notice the following statements.
So let us start with the symmetry and the shape of your lead. First you have used * kwant.TranslationalSymmetry((0,0,1))* which means you are going along the z direction where -2pi/z<Kz<+2pi/z. Second you have defined the lead shape as a finite shape since you have included 10 <= z < 25 *def lead_shape(pos): x,y,z = pos return 0 <= x < a and 0 <= y < b and 10 <= z < 25* I guess if you omit *10 <= z < 25* from *def lead_shape(pos)* you would get something meaningful. Try to fix this problem and let me know if working or not Best wishes Adel Le ven. 18 juin 2021 à 22:33, tavakkolidjawad <[email protected]> a écrit : > Dear all > > In the following code I have defined a three-dimensional structure. > The geometry of the lead and the scattering region are the same, but the > lead is not ploted as I expected. > I expected the lead to have a cubic structure. > What is the problem with my code? > > Thanks > > Javad tavakoli > > > > ############################################################################ > > > ############################################################################ > > import kwant > > > lat = kwant.lattice.general([(0, 0.5, 0.5), (0.5, 0, 0.5), (0.5, 0.5, 0)], > [(0, 0, 10), (0.25, 0.25, 10.25)], name=['a1', 'a2']) > a1, a2 = lat.sublattices > > > > def make_system(a=10, b=10, c=30): > > syst = kwant.Builder() > > def cuboid_shape(pos): > x, y, z = pos > return 0 <= x < a and 0 <= y < b and 0 <= z < 10 > > syst[a1.shape(cuboid_shape, (0, 0, 0))] = 1 > syst[a2.shape(cuboid_shape, (0, 0, 0))] = 1 > syst[lat.neighbors()] = 1 > > > def lead_shape(pos): > x,y,z = pos > return 0 <= x < a and 0 <= y < b and 10 <= z < 25 > > lead = kwant.Builder(kwant.TranslationalSymmetry((0,0,1))) > lead[a1.shape(lead_shape, (0, 0, 10))] = 1 > lead[a2.shape(lead_shape, (0, 0, 10))] = 1 > lead[lat.neighbors()] = 1 > > > syst.attach_lead(lead) > syst.attach_lead(lead.reversed()) > > > return syst , lead > > > def main(): > > syst,lead= make_system() > > kwant.plot(syst) > > syst,lead = make_system(a=1.1, b=1.1, c=1.1) > > syst.attach_lead(lead) > > if __name__ == '__main__': > main() > > ########################################################################### >
