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
>

Reply via email to