different lattices for the scattering region

Hello everyone
I want to use different lattices structure (honeycomb and diamond) for the scattering region. if I have a honeycomb structure, is it possible in Kwant to add sites from the diamond structure to the system and add hoppings from these sites to the sites from the honeycomb lattice?
I have already read Section 2.11 (https://kwant-project.org/doc/1/tutorial/faq#how-to-use-different-lattices-f...) in the documentation but this is challenging for me and I have no idea how to solve it.
Thanks

On 2020-02-15 14:25, tavakkolidjawad wrote:
Hello everyone
I want to use different lattices structure (honeycomb and diamond) for the scattering region. if I have a honeycomb structure, is it possible in Kwant to add sites from the diamond structure to the system and add hoppings from these sites to the sites from the honeycomb lattice?
I have already read Section 2.11 (https://kwant-project.org/doc/1/tutorial/faq#how-to-use-different-lattices-f...) in the documentation but this is challenging for me and I have no idea how to solve it.
Thanks
Hi
In the previous email attachment, the code is as follows and I got this error: (ValueError: Input has irregular shape).
If possible please help me to fix the error
Thanks.
##########
import kwant
latt = kwant.lattice.honeycomb() A , B = latt.sublattices
lat = kwant.lattice.general([(0, 0.5, 0.5), (0.5, 0, 0.5), (0.5, 0.5, 0)], [(0, 0, 0), (0.25, 0.25, 0.25)], name=['a1', 'a2']) a1, a2 = lat.sublattices
def make_systems(a=10, b=10, c=15, W=20, L=20):
syst = kwant.Builder() syst[(A(i,j) for i in range(L) for j in range(W))] = 4 syst[(B(i,j) for i in range(L) for j in range(W))] = 4 syst[latt.neighbors()] = -1
def lead_shape(pos): x,y,z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c
lead = kwant.Builder(kwant.TranslationalSymmetry((0,0,1))) lead[lat.shape(lead_shape, (0, 0, 0))] = 1 lead[lat.neighbors()] = 1
def cuboid_shape(pos): x, y, z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c
syst[a1.shape(cuboid_shape, (0, 0, 0))] = 1 syst[a2.shape(cuboid_shape, (0, 0, 0))] = 1 syst[lat.neighbors()] = 1
syst[((a1(i+5,9,0),B(i,15)) for i in range(9))] = -1
return syst, lead
def main():
syst,lead = make_systems()
kwant.plot(syst)
syst = syst.finalized()
syst,lead = make_systems(a=1.1, b=1.1, c=1.1)
def family_colors(site): return 'r' if site.family == a1 else 'g'
syst.attach_lead(lead)
kwant.plot(syst, site_size=0.18, site_lw=0.01, hop_lw=0.05, site_color=family_colors)
if __name__ == '__main__': main()
################

Dear Sir. Your system is not well organized. If you follow the link you provided you can make it easily. One thing wrong in your system is you have defined the lat and lat from zero to a certain limit. You have to be careful the end of lat sould be the beginning of latt not both start from zero as was explained in the link you have provided. I urge you to plot both systems lat and latt separately and then you would a just the beginning of the second system based on the plot of the fist one. Also your notation lat and latt is not good for us to follow your code. Please try to be objectif in your notation Hop will help
Le sam. 22 févr. 2020 à 11:48, tavakkolidjawad tavakkolidjawad@ut.ac.ir a écrit :
On 2020-02-15 14:25, tavakkolidjawad wrote:
Hello everyone
I want to use different lattices structure (honeycomb and diamond) for the scattering region. if I have a honeycomb structure, is it possible in Kwant to add sites from the diamond structure to the system and add hoppings from these sites to the sites from the honeycomb lattice?
I have already read Section 2.11 ( https://kwant-project.org/doc/1/tutorial/faq#how-to-use-different-lattices-f...) in the documentation but this is challenging for me and I have no idea how to solve it.
Thanks
Hi
In the previous email attachment, the code is as follows and I got this error: (ValueError: Input has irregular shape).
If possible please help me to fix the error
Thanks.
##########
import kwant
latt = kwant.lattice.honeycomb() A , B = latt.sublattices
lat = kwant.lattice.general([(0, 0.5, 0.5), (0.5, 0, 0.5), (0.5, 0.5, 0)], [(0, 0, 0), (0.25, 0.25, 0.25)], name=['a1', 'a2']) a1, a2 = lat.sublattices
def make_systems(a=10, b=10, c=15, W=20, L=20):
syst = kwant.Builder() syst[(A(i,j) for i in range(L) for j in range(W))] = 4 syst[(B(i,j) for i in range(L) for j in range(W))] = 4 syst[latt.neighbors()] = -1
def lead_shape(pos): x,y,z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c
lead = kwant.Builder(kwant.TranslationalSymmetry((0,0,1))) lead[lat.shape(lead_shape, (0, 0, 0))] = 1 lead[lat.neighbors()] = 1
def cuboid_shape(pos): x, y, z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c
syst[a1.shape(cuboid_shape, (0, 0, 0))] = 1 syst[a2.shape(cuboid_shape, (0, 0, 0))] = 1 syst[lat.neighbors()] = 1
syst[((a1(i+5,9,0),B(i,15)) for i in range(9))] = -1
return syst, lead
def main():
syst,lead = make_systems()
kwant.plot(syst)
syst = syst.finalized()
syst,lead = make_systems(a=1.1, b=1.1, c=1.1)
def family_colors(site): return 'r' if site.family == a1 else 'g'
syst.attach_lead(lead)
kwant.plot(syst, site_size=0.18, site_lw=0.01, hop_lw=0.05, site_color=family_colors)
if __name__ == '__main__': main()
################

On 2020-02-23 14:02, Adel Belayadi wrote:
Dear Sir. Your system is not well organized. If you follow the link you provided you can make it easily. One thing wrong in your system is you have defined the lat and lat from zero to a certain limit. You have to be careful the end of lat sould be the beginning of latt not both start from zero as was explained in the link you have provided. I urge you to plot both systems lat and latt separately and then you would a just the beginning of the second system based on the plot of the fist one. Also your notation lat and latt is not good for us to follow your code. Please try to be objectif in your notation Hop will help
Le sam. 22 févr. 2020 à 11:48, tavakkolidjawad tavakkolidjawad@ut.ac.ir a écrit :
On 2020-02-15 14:25, tavakkolidjawad wrote:
Hello everyone
I want to use different lattices structure (honeycomb and diamond) for the scattering region. if I have a honeycomb structure, is it possible in Kwant to add sites from the diamond structure to the system and add hoppings from these sites to the sites from the honeycomb lattice?
I have already read Section 2.11 (https://kwant-project.org/doc/1/tutorial/faq#how-to-use-different-lattices-f...) in the documentation but this is challenging for me and I have no idea how to solve it.
Thanks
Hi
In the previous email attachment, the code is as follows and I got this error: (ValueError: Input has irregular shape).
If possible please help me to fix the error
Thanks.
##########
import kwant
latt = kwant.lattice.honeycomb() A , B = latt.sublattices
lat = kwant.lattice.general([(0, 0.5, 0.5), (0.5, 0, 0.5), (0.5, 0.5, 0)], [(0, 0, 0), (0.25, 0.25, 0.25)], name=['a1', 'a2']) a1, a2 = lat.sublattices
def make_systems(a=10, b=10, c=15, W=20, L=20):
syst = kwant.Builder() syst[(A(i,j) for i in range(L) for j in range(W))] = 4 syst[(B(i,j) for i in range(L) for j in range(W))] = 4 syst[latt.neighbors()] = -1
def lead_shape(pos): x,y,z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c
lead = kwant.Builder(kwant.TranslationalSymmetry((0,0,1))) lead[lat.shape(lead_shape, (0, 0, 0))] = 1 lead[lat.neighbors()] = 1
def cuboid_shape(pos): x, y, z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c
syst[a1.shape(cuboid_shape, (0, 0, 0))] = 1 syst[a2.shape(cuboid_shape, (0, 0, 0))] = 1 syst[lat.neighbors()] = 1
syst[((a1(i+5,9,0),B(i,15)) for i in range(9))] = -1
return syst, lead
def main():
syst,lead = make_systems()
kwant.plot(syst)
syst = syst.finalized()
syst,lead = make_systems(a=1.1, b=1.1, c=1.1)
def family_colors(site): return 'r' if site.family == a1 else 'g'
syst.attach_lead(lead)
kwant.plot(syst, site_size=0.18, site_lw=0.01, hop_lw=0.05, site_color=family_colors)
if __name__ == '__main__': main()
################
Hi dear Adel
First, I would like to apologize for these simple questions. after the last email, I tried to solve the problem but it didn't work.
According to your guidance, I have considered systems with different origins, but I got the same error (Input has irregular shape).
I have another question if I want to calculate conductance in this problem, is it important how many sites of the lattices are involved in the hopping? basically, I want to put the diamond lattice on the honeycomb lattice, but if Kwant restricts I have to put the two lattices together.
I would appreciate your attention to this matter.
Best regards
Javad
############################
############################
import kwant
lat = kwant.lattice.general([(0, 0.5, 0.5), (0.5, 0, 0.5), (0.5, 0.5, 0)], [(0, 0, 0), (0.25, 0.25, 0.25)], name=['a1', 'a2']) a1, a2 = lat.sublattices
honeycomb = kwant.lattice.honeycomb() subA , subB = honeycomb.sublattices
def make_system(a=10, b=10, c=15):
sys = kwant.Builder()
def cuboid_shape(pos): x, y, z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c
sys[lat.shape(cuboid_shape, (0, 0, 0))] = 1 sys[lat.neighbors()] = 1
def lead_shape(pos): x,y,z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c
lead1 = kwant.Builder(kwant.TranslationalSymmetry((0,0,1))) lead1[lat.shape(lead_shape, (0, 0, 0))] = 1 lead1[lat.neighbors()] = 1
def graphene_shape(pos): x,y = pos return 11 <= x < 20 and 0 <= y < 10
sys[honeycomb.shape(graphene_shape,(11,0))] = 1 sys[honeycomb.neighbors()] = 1
symlead = kwant.TranslationalSymmetry(honeycomb.vec((0, -1))) lead = kwant.Builder(symlead) lead[(subA(i,0) for i in range(10,14) )] = 4 lead[(subB(i,0) for i in range(10,14) )] = 4 lead[honeycomb.neighbors()] = -1
#syst.attach_lead(lead)
return sys , lead1
def main():
sys,lead1= make_system()
kwant.plot(sys)
sys,lead1,lead = make_system(a=1.1, b=1.1, c=1.1)
#syst.attach_lead(lead1)
if __name__ == '__main__': main()
##################################
##################################
participants (2)
-
Adel Belayadi
-
tavakkolidjawad