Hi dears Based on the code for zincblende structure inside the Kwant website, I want to build a diamond lattice, but I don't know what I need to change in this code to create a diamond structure, also I need to create one lead for this structure. can you help me? Thank you in advance.
import kwant from matplotlib import pyplot
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)]) a, b = lat.sublattices
def make_cuboid(a=15, b=10, c=5): def cuboid_shape(pos): x, y, z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c
syst = kwant.Builder() syst[lat.shape(cuboid_shape, (0, 0, 0))] = None syst[lat.neighbors()] = None
return syst
def main(): # the standard plotting style for 3D is mainly useful for # checking shapes: syst = make_cuboid()
kwant.plot(syst)
# visualize the crystal structure better for a very small system syst = make_cuboid(a=1.5, b=1.5, c=1.5)
def family_colors(site): return 'r' if site.family == a else 'g'
kwant.plot(syst, site_size=0.18, site_lw=0.01, hop_lw=0.05)#,site_color=family_colors)
if __name__ == '__main__': main()
Dear Tavakkolidjawad, Good day Zinc blende and diamond have closely related structures. The key difference between zinc blende and diamond structure is that zinc blende has both zinc and sulfur atoms in its structure while diamond structure has only carbon atoms in its structure. Additionally, alternative example is graphene and hBN (Hexagonal Boron Nitride) since both have the same lattice (honeycomb lattice), but for the hBN, the Onsite_energy_of_B differ from the Onsite_ennergy_of_N that why we have a gap (masse term). So what does this mean in your case. It means that we use the zinc blend lattice as defined in kwant tutorial (the exact code you have written down). Let as say a1 , a2 = lat.sublattices Here relevent_on_site_for_a1 = relevent_on_site_for_a2= Onsite syst[a1.shape(cuboid_shape, (0, 0, 0))] = Onsite syst[a2.shape(cuboid_shape, (0, 0, 0))] = Onsite or simply use as was givene syst[lat.shape(cuboid_shape, (0, 0, 0))] = Onsite However in the zinc blende structure, we have to be cerful since relevent_on_site_for_a1 does not equal relevent_on_site_for_a2. For this purpose we write syst[a1.shape(cuboid_shape, (0, 0, 0))] = relevent_on_site_for_a1 syst[a2.shape(cuboid_shape, (0, 0, 0))] = relevent_on_site_for_a2 ## In the kwant example was left as None and is up to you to decide what to do. You have also to care about the hopping since you have a 3D shape. import kwant from matplotlib import pyplot 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_cuboid(a=1.1, b=1.1, c=1.1): def cuboid_shape(pos): x, y, z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c syst = kwant.Builder() syst[a1.shape(cuboid_shape, (0, 0, 0))] = 1 ## the same onsite foar a1 and b1 syst[a2.shape(cuboid_shape, (0, 0, 0))] = 1 syst[lat.neighbors()] = 1 return syst def family_colors(site): return 'r' if site.family == a1 else 'g' ### Conventional unit cell "FCC" syst = make_cuboid(a=1.1, b=1.1, c=1.1) kwant.plot(syst, site_size=0.18, site_lw=0.01, hop_lw=0.05, site_color=family_colors) pyplot.show() Also, to see the unit cell of the system please see the following scryprt #### To see the unit cell here the code 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)]) a, b = lat.sublattices def cuboid_shape(pos, a= 2, b = 2, c = 2): x, y, z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c 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(cuboid_shape, (0, 0, 0))] = 1 syst[lat.neighbors(1)] = 1 def wraparound_syst(syst): return kwant.wraparound.wraparound(syst).finalized() unit_cell = wraparound_syst(syst) kwant.plot(unit_cell, site_size=0.2, site_lw=0.012) pyplot.show() Ref[1]: https://www.differencebetween.com/differencebetweenzincblendeanddiamond... Hope was helpful Regards, Adel Le sam. 30 nov. 2019 à 07:15, tavakkolidjawad <tavakkolidjawad@ut.ac.ir> a écrit :
Hi dears
Based on the code for zincblende structure inside the Kwant website, I want to build a diamond lattice, but I don't know what I need to change in this code to create a diamond structure, also I need to create one lead for this structure.
can you help me?
Thank you in advance.
import kwant from matplotlib import pyplot
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)]) a, b = lat.sublattices
def make_cuboid(a=15, b=10, c=5): def cuboid_shape(pos): x, y, z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c
syst = kwant.Builder() syst[lat.shape(cuboid_shape, (0, 0, 0))] = None syst[lat.neighbors()] = None
return syst
def main(): # the standard plotting style for 3D is mainly useful for # checking shapes: syst = make_cuboid()
kwant.plot(syst)
# visualize the crystal structure better for a very small system syst = make_cuboid(a=1.5, b=1.5, c=1.5)
def family_colors(site): return 'r' if site.family == a else 'g'
kwant.plot(syst, site_size=0.18, site_lw=0.01, hop_lw=0.05)#,site_color=family_colors)
if __name__ == '__main__': main()
On 20191130 12:58, Adel Belayadi wrote: That was great. Thank you
Dear Tavakkolidjawad, Good day Zinc blende and diamond have closely related structures. The key difference between zinc blende and diamond structure is that zinc blende has both zinc and sulfur atoms in its structure while diamond structure has only carbon atoms in its structure. Additionally, alternative example is graphene and hBN (Hexagonal Boron Nitride) since both have the same lattice (honeycomb lattice), but for the hBN, the Onsite_energy_of_B differ from the Onsite_ennergy_of_N that why we have a gap (masse term). So what does this mean in your case. It means that we use the zinc blend lattice as defined in kwant tutorial (the exact code you have written down). Let as say a1 , a2 = lat.sublattices Here relevent_on_site_for_a1 = relevent_on_site_for_a2= Onsite syst[a1.shape(cuboid_shape, (0, 0, 0))] = Onsite syst[a2.shape(cuboid_shape, (0, 0, 0))] = Onsite or simply use as was givene syst[lat.shape(cuboid_shape, (0, 0, 0))] = Onsite However in the zinc blende structure, we have to be cerful since relevent_on_site_for_a1 does not equal relevent_on_site_for_a2. For this purpose we write syst[a1.shape(cuboid_shape, (0, 0, 0))] = relevent_on_site_for_a1 syst[a2.shape(cuboid_shape, (0, 0, 0))] = relevent_on_site_for_a2
## In the kwant example was left as None and is up to you to decide what to do. You have also to care about the hopping since you have a 3D shape. import kwant from matplotlib import pyplot 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_cuboid(a=1.1, b=1.1, c=1.1): def cuboid_shape(pos): x, y, z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c syst = kwant.Builder() syst[a1.shape(cuboid_shape, (0, 0, 0))] = 1 ## the same onsite foar a1 and b1 syst[a2.shape(cuboid_shape, (0, 0, 0))] = 1 syst[lat.neighbors()] = 1 return syst def family_colors(site): return 'r' if site.family == a1 else 'g' ### Conventional unit cell "FCC" syst = make_cuboid(a=1.1, b=1.1, c=1.1) kwant.plot(syst, site_size=0.18, site_lw=0.01, hop_lw=0.05, site_color=family_colors) pyplot.show()
Also, to see the unit cell of the system please see the following scryprt #### To see the unit cell here the code 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)]) a, b = lat.sublattices def cuboid_shape(pos, a= 2, b = 2, c = 2): x, y, z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c 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(cuboid_shape, (0, 0, 0))] = 1 syst[lat.neighbors(1)] = 1 def wraparound_syst(syst): return kwant.wraparound.wraparound(syst).finalized() unit_cell = wraparound_syst(syst) kwant.plot(unit_cell, site_size=0.2, site_lw=0.012) pyplot.show()
Ref[1]: https://www.differencebetween.com/differencebetweenzincblendeanddiamond...
Hope was helpful Regards, Adel
Le sam. 30 nov. 2019 à 07:15, tavakkolidjawad <tavakkolidjawad@ut.ac.ir> a écrit :
Hi dears
Based on the code for zincblende structure inside the Kwant website, I want to build a diamond lattice, but I don't know what I need to change in this code to create a diamond structure, also I need to create one lead for this structure.
can you help me?
Thank you in advance.
import kwant from matplotlib import pyplot
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)]) a, b = lat.sublattices
def make_cuboid(a=15, b=10, c=5): def cuboid_shape(pos): x, y, z = pos return 0 <= x < a and 0 <= y < b and 0 <= z < c
syst = kwant.Builder() syst[lat.shape(cuboid_shape, (0, 0, 0))] = None syst[lat.neighbors()] = None
return syst
def main(): # the standard plotting style for 3D is mainly useful for # checking shapes: syst = make_cuboid()
kwant.plot(syst)
# visualize the crystal structure better for a very small system syst = make_cuboid(a=1.5, b=1.5, c=1.5)
def family_colors(site): return 'r' if site.family == a else 'g'
kwant.plot(syst, site_size=0.18, site_lw=0.01, hop_lw=0.05)#,site_color=family_colors)
if __name__ == '__main__': main()
participants (2)

Adel Belayadi

tavakkolidjawad