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 <
[email protected]> 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
>