Dear Masoumeh, I share an example of graphene with 04 atoms in the unit cell. You can also have the zigzag and armchair ribbon from that. I hope this helps Best Adel
import kwant import matplotlib.pyplot as plt from math import sqrt def graphene_04_atoms (a=1.42, t=-1, Ep=0, Lx=5, Ly=5, boundary ="zigzag"): a1 = a*sqrt(3) a2 = 3*a ### here premitive vectors are perpondicular: primitive_vector_1.primitive_vector_1 = 0 primitive_vector_1 = (a1, 0) primitive_vector_2 = (0, a2) ## Now let us define the atoms positions of the unit cell Pos_A1 = ( 0, -a/2) Pos_B1 = ( 0, a/2) Pos_A2 = ( a1/2, a) Pos_B2 = ( a1/2, 2*a) lat = kwant.lattice.general([primitive_vector_1, primitive_vector_2], [Pos_A1, Pos_B1, Pos_A2, Pos_B2]) Sub_A1, Sub_B1, Sub_A2, Sub_B2 = lat.sublattices #................................................................................... if boundary == "Finit": syst= kwant.Builder() def square(pos): x, y = pos return abs(x)<Lx and abs(y)<Ly syst[lat.shape(square, (0,0))]= Ep #nearest neighbors............................................................. ## Be carfull if you consider second nearest neighbors ## ========================================================= ## Hopping within unit cell ================================ syst[[kwant.builder.HoppingKind((0,0),Sub_A1,Sub_B1)]] = t syst[[kwant.builder.HoppingKind((0,0),Sub_B1,Sub_A2)]] = t syst[[kwant.builder.HoppingKind((0,0),Sub_A2,Sub_B2)]] = t ## Hopping between neighbouring unit cell======================= syst[[kwant.builder.HoppingKind((+1, +1),Sub_A1,Sub_B2)]] = t syst[[kwant.builder.HoppingKind(( 0, +1),Sub_A1,Sub_B2)]] = t syst[[kwant.builder.HoppingKind((+1, 0),Sub_B1,Sub_A2)]] = t syst.eradicate_dangling() # Plot the closed system without leads. kwant.plot(syst); if boundary == "zigzag": def square(pos): x, y = pos return abs(y)<Ly sym = kwant.TranslationalSymmetry(primitive_vector_1) syst = kwant.Builder(sym) syst[lat.shape(square, (0,0))]= Ep syst[[kwant.builder.HoppingKind((0,0),Sub_A1,Sub_B1)]] = t syst[[kwant.builder.HoppingKind((0,0),Sub_B1,Sub_A2)]] = t syst[[kwant.builder.HoppingKind((0,0),Sub_A2,Sub_B2)]] = t ## Hopping between neighbouring unit cell======================= syst[[kwant.builder.HoppingKind((+1, +1),Sub_A1,Sub_B2)]] = t syst[[kwant.builder.HoppingKind(( 0, +1),Sub_A1,Sub_B2)]] = t syst[[kwant.builder.HoppingKind((+1, 0),Sub_B1,Sub_A2)]] = t syst.eradicate_dangling() # Plot the closed system without leads. kwant.plot(syst); if boundary == "armchair": def square(pos): x, y = pos return abs(x)<Lx sym = kwant.TranslationalSymmetry(primitive_vector_2) syst = kwant.Builder(sym) syst[lat.shape(square, (0,0))]= Ep syst[[kwant.builder.HoppingKind((0,0),Sub_A1,Sub_B1)]] = t syst[[kwant.builder.HoppingKind((0,0),Sub_B1,Sub_A2)]] = t syst[[kwant.builder.HoppingKind((0,0),Sub_A2,Sub_B2)]] = t ## Hopping between neighbouring unit cell======================= syst[[kwant.builder.HoppingKind((+1, +1),Sub_A1,Sub_B2)]] = t syst[[kwant.builder.HoppingKind(( 0, +1),Sub_A1,Sub_B2)]] = t syst[[kwant.builder.HoppingKind((+1, 0),Sub_B1,Sub_A2)]] = t syst.eradicate_dangling() # Plot the closed system without leads. kwant.plot(syst); graphene_04_atoms (a=1.42, t=-1, Ep=0, Lx=5, Ly=15, boundary ="Finit"); graphene_04_atoms (a=1.42, t=-1, Ep=0, Lx=5, Ly=15, boundary ="zigzag"); graphene_04_atoms (a=1.42, t=-1, Ep=0, Lx=15, Ly=5, boundary ="armchair"); Le lun. 11 nov. 2024 à 14:20, Masoumeh Alihosseini via Kwant-discuss < kwant-discuss@python.org> a écrit : > Hi dear all, > I have a question, I want to work with rectangular graphene cell with 4 > atoms in the unitcell. Like zigzag nanoribbon but I want to apply > periodicity in y direction for both scattering region and leads. Could you > please help me? > Thank you, > Masoumeh >