Hi everybody,

In the following code I want to delete few random sites from the scattering 
region.
Please help me in this case.
Best regards,
Hossein

import kwant
from math import sqrt
import matplotlib.pyplot as plt
import tinyarray
import numpy as np
import math


import matplotlib


#Constants.........................................................

#Parameter.........................................................
a0=2.617*sqrt(3);
d0=2.617;
dz0=1.59047;
D0=sqrt((d0)**2+(dz0)**2);

#st=0;
st=-0.0;
dz=1.59047+st;
d=-0.3*dz+3.09;
a1=-0.3*sqrt(3)*dz+5.35;
D=sqrt((d)**2+(dz)**2);

scale=(D/D0)**(-8);
qo=[];
N=dz/D;
delta1=0j;
delta2=0;
R=(2*a1)**2;
#on-site energy...................................................
Es=-10.906;
Ep=-0.486;

Ep1=-0.486;
Ep2=-0.486;

#nearest neighbor................................................
sssigma=-0.608*scale;
spsigma=1.32*scale;
ppsigma=1.854*scale;
pppay=-0.6*scale;

#next nearest neighbor.........................................
ppsigma2=0.156*scale;
pppay2=0;
sssigma2=0;
spsigma2=0;

#onsite potentials ...........................................
pot_a=10;
pot_b=0;
#nearest neighbors.............................................................
l1=(math.cos(math.pi/6))*(d/D);
m1=(math.sin(math.pi/6))*(d/D);
N1=dz/D;

#second neighbors..............................................................
l2=(math.cos(math.pi/3))
m2=(math.sin(math.pi/3))

latt = kwant.lattice.general([(a1,0),(a1*0.5,a1*math.sqrt(3)/2)],
                             [(a1/2,-d/2),(a1/2,d/2)])


a,b = latt.sublattices
syst= kwant.Builder()

# Onsite matrice energt
Onsite_a=tinyarray.array([[Es,0,0,0],[0,Ep,delta1,0],[0,-delta1,Ep,0],
                          [0,0,0,Ep1]])

Onsite_b=tinyarray.array([[Es,0,0,0],[0,Ep,delta1,0],[0,-delta1,Ep,0],
                          [0,0,0,Ep2]])

pot_edge_a=tinyarray.array([[Es+pot_a,0,0,0],[0,Ep+pot_a,delta1,0],[0,-delta1,Ep+pot_a,0],
                          [0,0,0,Ep1+pot_a]])

pot_edge_b=tinyarray.array([[Es+pot_b,0,0,0],[0,Ep+pot_b,delta1,0],[0,-delta1,Ep+pot_b,0],
                          [0,0,0,Ep2+pot_b]])
#nearest neighbors.............................................................
first_up=tinyarray.array([[sssigma, l1*spsigma,m1*spsigma,N1*spsigma],
                          [-l1*spsigma, 
l1**2*ppsigma+(1-l1**2)*pppay,l1*m1*(ppsigma-pppay),l1*N1*(ppsigma-pppay)],
                          [-m1*spsigma ,l1*m1*(ppsigma-pppay), 
m1**2*ppsigma+(1-m1**2)*pppay,N1*m1*(ppsigma-pppay)],
                          
[-N1*spsigma,l1*N1*(ppsigma-pppay),N1*m1*(ppsigma-pppay),N1**2*ppsigma+(1-N1**2)*pppay]])

first_left_up=tinyarray.array([[sssigma,-l1*spsigma,m1*spsigma,N1*spsigma],
                          [l1*spsigma, l1**2*ppsigma+(1-l1**2)*pppay,- 
l1*m1*(ppsigma-pppay),-l1*N1*(ppsigma-pppay)],
                          [-m1*spsigma ,-l1*m1*(ppsigma-pppay), 
m1**2*ppsigma+(1-m1**2)*pppay,N1*m1*(ppsigma-pppay)],
                          
[-N1*spsigma,-l1*N1*(ppsigma-pppay),N1*m1*(ppsigma-pppay),N1**2*ppsigma+(1-N1**2)*pppay]])

first=tinyarray.array([[sssigma,0,-(d/D)*spsigma,N1*spsigma],
                          [0,pppay,0,0],
                          [(d/D)*spsigma ,0, 
(d/D)**2*ppsigma+(1-(d/D)**2)*pppay,-N1*(d/D)*(ppsigma-pppay)],
                          
[-N1*spsigma,0,-N1*(d/D)*(ppsigma-pppay),N1**2*ppsigma+(1-N1**2)*pppay]])
#second neighbors..............................................................
second_up=tinyarray.array([[sssigma2,l2*spsigma2,m2*spsigma2,0],
                          
[-l2*spsigma2,l2**2*ppsigma2+(1-l2**2)*pppay2,l2*m2*(ppsigma2-pppay2),0],
                          [-m2*spsigma2 
,l2*m2*(ppsigma2-pppay2),m2**2*ppsigma2+(1-m2**2)*pppay2,0],
                          [0,0,0,pppay2]])

second_left_up=tinyarray.array([[sssigma2,-l2*spsigma2,m2*spsigma2,0],
                          
[l2*spsigma2,l2**2*ppsigma2+(1-l2**2)*pppay2,-l2*m2*(ppsigma2-pppay2),0],
                          [-m2*spsigma2 
,-l2*m2*(ppsigma2-pppay2),m2**2*ppsigma2+(1-m2**2)*pppay2,0],
                          [0,0,0,pppay2]])

second_right_down=tinyarray.array([[sssigma2,l2*spsigma2,-m2*spsigma2,0],
                          
[-l2*spsigma2,l2**2*ppsigma2+(1-l2**2)*pppay2,-l2*m2*(ppsigma2-pppay2),0],
                          
[m2*spsigma2,-l2*m2*(ppsigma2-pppay2),m2**2*ppsigma2+(1-m2**2)*pppay2,0],
                          [0,0,0,pppay2]])

second_down=tinyarray.array([[sssigma2,-l2*spsigma2,-m2*spsigma2,0],
                          
[l2*spsigma2,l2**2*ppsigma2+(1-l2**2)*pppay2,l2*m2*(ppsigma2-pppay2),0],
                          [m2*spsigma2 
,l2*m2*(ppsigma2-pppay2),m2**2*ppsigma2+(1-m2**2)*pppay2,0],
                          [0,0,0,pppay2]])

second_right=tinyarray.array([[sssigma2,spsigma2,0,0], 
[-spsigma2,ppsigma2,0,0],[0 ,0,pppay2,0],
                          [0,0,0,pppay2]])

second_left=tinyarray.array([[sssigma2,-spsigma2,0,0], 
[spsigma2,ppsigma2,0,0],[0 ,0,pppay2,0],
                          [0,0,0,pppay2]])

#...................................................................................
def rectangle(pos):
    x, y = pos
#    z=x**2+y**2
    return -9.2*a1<x<9.2*a1 and -12*d<=y<12*d 



syst[a.shape(rectangle, (1,1))] = Onsite_a
syst[b.shape(rectangle, (1,1))] = Onsite_b
    

#nearest neighbors.............................................................
syst[[kwant.builder.HoppingKind((0,0),a,b)]] = first
syst[[kwant.builder.HoppingKind((0,1),a,b)]] = first_up
syst[[kwant.builder.HoppingKind((-1,1),a,b)]] = first_left_up

#second neighbors..............................................................
syst[[kwant.builder.HoppingKind((0,1),a,a)]]=second_up 
syst[[kwant.builder.HoppingKind((-1,1),a,a)]]=second_left_up 
syst[[kwant.builder.HoppingKind((1,-1),a,a)]]=second_right_down 
syst[[kwant.builder.HoppingKind((0,-1),a,a)]]=second_down
syst[[kwant.builder.HoppingKind((1,0),a,a)]]=second_right
syst[[kwant.builder.HoppingKind((-1,0),a,a)]]=second_left

syst[[kwant.builder.HoppingKind((0,1),b,b)]]=second_up 
syst[[kwant.builder.HoppingKind((-1,1),b,b)]]=second_left_up 
syst[[kwant.builder.HoppingKind((1,-1),b,b)]]=second_right_down 
syst[[kwant.builder.HoppingKind((0,-1),b,b)]]=second_down
syst[[kwant.builder.HoppingKind((1,0),b,b)]]=second_right
syst[[kwant.builder.HoppingKind((-1,0),b,b)]]=second_left



sym = kwant.TranslationalSymmetry(latt.vec((1,0)))
    
sym.add_site_family(latt.sublattices[0], other_vectors=[(-1, 2)])
sym.add_site_family(latt.sublattices[1], other_vectors=[(-1, 2)])
lead = kwant.Builder(sym)


# ---- random impurity




# --- leads
def lead_shape(pos):
    x, y = pos
    return   -12*d<=y<12*d and -5.2*a1<x<5.2*a1

lead[a.shape(lead_shape, (1,1))] = Onsite_a
lead[b.shape(lead_shape, (1,1))] = Onsite_b

lead[[kwant.builder.HoppingKind((0,0),a,b)]] =first
lead[[kwant.builder.HoppingKind((0,1),a,b)]] =first_up
lead[[kwant.builder.HoppingKind((-1,1),a,b)]] =first_left_up

lead[[kwant.builder.HoppingKind((0,1),a,a)]]=second_up 
lead[[kwant.builder.HoppingKind((-1,1),a,a)]]=second_left_up 
lead[[kwant.builder.HoppingKind((1,-1),a,a)]]=second_right_down 
lead[[kwant.builder.HoppingKind((0,-1),a,a)]]=second_down
lead[[kwant.builder.HoppingKind((1,0),a,a)]]=second_right
lead[[kwant.builder.HoppingKind((-1,0),a,a)]]=second_left

lead[[kwant.builder.HoppingKind((0,1),b,b)]]=second_up 
lead[[kwant.builder.HoppingKind((-1,1),b,b)]]=second_left_up 
lead[[kwant.builder.HoppingKind((1,-1),b,b)]]=second_right_down 
lead[[kwant.builder.HoppingKind((0,-1),b,b)]]=second_down
lead[[kwant.builder.HoppingKind((1,0),b,b)]]=second_right
lead[[kwant.builder.HoppingKind((-1,0),b,b)]]=second_left

syst.attach_lead(lead,add_cells=0)


syst.attach_lead(lead.reversed(),add_cells=0)
fsys = syst.finalized()



def family_color(site):
#print(sys[site])
    if syst[site]==Onsite_a:
        return 'black' 
    elif syst[site]==Onsite_b:
        return 'green' 
    elif syst[site]==pot_edge_a:
        return 'yellow'
    else:
        return 'blue' 
    
ax=kwant.plot(syst,site_color=family_color);
ax.savefig('syst.pdf')

Reply via email to