Dear Adel Belayadi, I am new to Kwant, as per our previous discussion, here I am attaching my program, I have defined my strain region and function for uniaxial strain in armchair direction. Now I struggling with *how to introduce this function* in the program. Please correct me if I have understood it wrongly, Firstly we have to define graphene, by using the position of lattice points we have to apply pos_transform in a specified region, which will use the values of x and y co-ordinate from lattice placement due to lattice structure. The next doubt is like, as I using uniaxial strain in Y direction, it will squeeze lattice in X direction. So, the unstrained lattice point also has to shift accordingly. Right now I am only focusing on position displacement and not hopping. import numpy as np import scipy.io as spio from numpy import * import scipy.linalg as la import matplotlib as mpl import sympy as sym import kwant
#%%###################### # parameters L=20 # Length of device on both sides W=5 # Width of device t=-2.7 pot=0.5 c=0.05 angle=pi/2 # lattice type graphene = kwant.lattice.general([(1, 0), (sin(pi/6), cos(pi/6))], [(0, 0), (0, 1 / sqrt(3))], norbs=1) a, b = graphene.sublattices # scattering region def rectangle(pos): x, y = pos return 0 <= x <= L and 0<= y <= W # strain_pos def pos_transform(pos,c,angle): x,y= pos if 5<x<10: ux=(cos(angle)**2-0.165*sin(angle)**2)*c*x uy=(sin(angle)**2-0.165*cos(angle)**2)*c*y return x+ux,y+uy else: return x,y syst = kwant.Builder() syst[graphene.shape(rectangle, (0, 0))] = 0 syst=pos_transform((5,0),0.05,pi/2) #hoppings = (((0, 0), a, b), ((0, 1), a, b), ((-1, 1), a, b)) #syst[[kwant.builder.HoppingKind(*hopping) for hopping in hoppings]] = t kwant.plot(syst); Thanks in advance. Regards, shrushti On Fri, Jul 16, 2021 at 2:38 AM Adel Belayadi <adelp...@gmail.com> wrote: > Dear Shrushti, > it is straightforward to deal with strained graphene. > In the region you want to make strain, just set the function which > modifies the site position (this mainly depends on the amount and type of > the strain). Second, once you have shifted the site position you need to > shift the hopping as illustrated in the file provided by Mr. Antonio. > here you find a simple script about how to shift the site position in the > case of uniaxial strain (adjusted to you case) > > def Triaxial_transform(pos, center, I): > """ I is a parameter that lets us to control the intensity of the > strain""" > x, y = pos > cx, cy = center[0], center[1] # the center of the strain > r=sqrt((x-cx)**2+(y-cy)**2) > if r<sigma: > ux = 2*I * x*y > uy = I * (x**2 - y**2) > return x + ux, y + uy > else: > return x, y > > Then use this position to set your hopping as illustrated in a previous > discussion [Ref-1]. > > You have to be careful in case you are using a strain in the z axis since > you will not be able to plot the current. It is somehow tricky in this > scenario. > > [Ref-1] > https://www.mail-archive.com/kwant-discuss@kwant-project.org/msg00574.html > > I hop this will help > Best wishes > > Le jeu. 15 juil. 2021 à 14:19, <shrushti.tapa...@gmail.com> a écrit : > >> I want to create the graphene strained superlattice-like structure, >> having uniaxial strain defined at the specified region. Please, someone can >> suggest to me how to define the strained region and interface between >> unstrained and strained graphene regions. >> Thanks in Advance >> Shrushti >> >