Dear Djawad, Great that you have fixed your previous problem. No back to you issues
A) *There was no problem with scattering regions and also for lead-related to the cubic lattice, but the one which related to my new structure had an unexpected shape. You can see both in the attachment. I use the following code to define the shape of leads for both structures. If it is possible for you please check them and let me know what did I not consider?* For this part, I cannot suggest anything since you have not said anything about your new structure. Depicted figure says nothing to me. It is better to explain more. *B)* *When we want to connect two different lattices, we have to do it manually. If I connect the two lattices in the following way, I will not lose anything?* *###################* *for i in range(-a,a): for j in range(-a,a): for k in range(-a,a):* Same answer, you are talking about two different lattices but I don't see any lattice in your script. However, I can highlight one remark in your script. If you are connecting the two lattices in the z directions you don't use for *k** in range(-a,a).* you have to provide only the z position where the two lattices will be connected. This is fully explained in Kwant FAQ. >From my side, what you have given is not clear enough to help. Best, Adel Le dim. 18 juil. 2021 à 13:46, tavakkolidjawad <[email protected]> a écrit : > On 2021-06-22 20:26, Adel Belayadi wrote: > > Dera Djawad, > I do not see why the angle is different. From my side, I have updated my > system recently and I am having a problem with the 3D plot in kwant > ''AttributeError: 'Path3DCollection' object has no > attribute'_z_markers_idx'''. > > > However, I can suggest the following propositions. > 1. Since you are not using a magnetic field in your system, the angle does > not affect your results. In fact the physical quantities would only depend > on the hopping, scattering direction and number of sites. So you can step > forward with this structure. > 2. In the def main():you have written *syst.attach_lead(lead)* I don't > see why since you have already attached the lead in your main script. > 3. Try to see the following link which provides an example on how to add a > lead in a 3d space (scroll down and you will see). > > > *ps * > *https://kwant-project.org/doc/dev/tutorial/faq > <https://kwant-project.org/doc/dev/tutorial/faq>* > > Cheers, Adel > > Le dim. 20 juin 2021 à 10:45, tavakkolidjawad <[email protected]> > a écrit : > >> On 2021-06-19 01:30, Adel Belayadi wrote: >> >> 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() >>> >>> >>> ########################################################################### >>> >> >> >> Dear Adel >> >> I greatly appreciate your consideration. >> >> I fix the problem. Now I have the same shape in the scattering region and >> lead. >> >> A new problem that arises is that the angles of the structure are >> different. >> > > > dear Adel > > Thank you for your response. > This email has two parts. The first part is related to the previous email > and in the second part, I asked about hopping between sites of two > different lattices. > > > A) > > As you suggested, I read the documentation again. > I can straightforwardly work with cubic lattice and build the scattering > region and leads properly. > As I mentioned in my previous email, the structure had different angles. I > try to plot the scattering region and lead separately for both cubic > lattice and my new structure. There was no problem with scattering regions > and also for lead-related to the cubic lattice, but the one which related > to my new structure had an unexpected shape. you can see both in the > attachment. I use the following code to define the shape of leads for both > structures. If it is possible for you please check them and let me know > what did I not consider? > > ###################################### > > def lead_shape(pos): > x,y,z= pos > return 0 <= x < 15 and 0 <= y < 15 > > lead = kwant.Builder(kwant.TranslationalSymmetry((0,0,1))) > lead[a1.shape(lead_shape, (0, 0, 25))] = 4 > lead[a2.shape(lead_shape, (0, 0, 25))] = 4 > lead[lat.neighbors()] = 1 > > ====================================== > > def lead_shape(pos): > x,y,z = pos > return 0 <= x < 15 and 0 <= y < 15 > > lead = kwant.Builder(kwant.TranslationalSymmetry((0,0,1))) > lead[lat.shape(lead_shape, (0, 0, 25))] = 4 > lead[lat.neighbors()] = 1 > > ###################################### > > > B) > > When we want to connect two different lattices, we have to do it manually. > If I connect the two lattices in the following way, I will not lose > anything? > > ################### > > for i in range(-a,a): > for j in range(-a,a): > for k in range(-a,a): > try: > syst[(a1(i,j,k), subA(i,j))] = 1j > syst[(a2(i,j,k), subB(i,j))] = 1j > syst[(a1(i,j,k), subB(i,j))] = 1j > syst[(a2(i,j,k), subA(i,j))] = 1j > except: > pass > ################### > > Regards > Javad >
