Thanks a lot for clarifying my doubts, just first I wanted to observed
deformation and now I will be trying to incorporate hopping parametrization.
Regards,
Shrushti

On Fri, Jul 23, 2021 at 3:32 PM Adel Belayadi <adelp...@gmail.com> wrote:

> Dear Shrushti,
>
> From a tight binding point of view, once we have defined our lattice and
> shape, we need to care  about the hopping and on-site energy, not the
> positions. In your case and in order to parameterise the hopping in the
> strained region you need to know the position transforms. In fact,
> parameterizing the hopping is the most important task. In strained
> graphene, parameterising the hopping is somehow similar to adding a
> magnetic field in the system.
>
> *In your script you have written: syst=pos_transform((5,0),0.05,pi/2)*
>
> This is completely wrong and Kwant will not be able to recognize the
> system. Since you are recently discovering Kwant, I recommend you to go
> through Kwant FAQ: https://kwant-project.org/doc/dev/tutorial/faq
>
> Back to your issue, I guess you are caring to see the strained shape. In
> this case, you need to use pos_transorm like:
> *kwant.plot(syst, pos_transform=lambda pos:
> pos_transform(pos,c=c,angle=angle), *
>
> Just one more thing, donot forget to uncommenthoppings = (((0, 0), a, b), 
> ((0, 1), a, b), ((-1, 1), a, b))syst[[kwant.builder.HoppingKind(*hopping) for 
> hopping in hoppings]] = totherwise you will not be able to see the strained 
> position.
>
> Finally, you need to focus on using the correct hopping BestAdel
>
>
>
> Le jeu. 22 juil. 2021 à 09:48, Shrushti Tapar <shrushti.tapa...@gmail.com>
> a écrit :
>
>> 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
>>>>
>>>

Reply via email to