Hi, I am new to Kwant, It is possible to study impurity or something like in a 2d infinity system by defining a finite system with impurity and add "lead" with 2 translational symmetry? And for solve the same problem, there is an easy way to process periodic boundary conditions?
Hi Sebastien,
Sebastien Guissart
It is possible to study impurity or something like in a 2d infinity system by defining a finite system with impurity and add "lead" with 2 translational symmetry?
What observable would you like to calculate? The builder does in fact allow to define 2-d (or even >2-d) infinite systems, but currently it is not possible to finalize such systems. The reason for this is that the low-level system format of Kwant only supports a single "periodicity direction". We have plans to remove this restriction one day.
And for solve the same problem, there is an easy way to process periodic boundary conditions?
Currently, you need to add periodic boundary conditions by hand. Again, this is something we plan to improve in the future. Best, Christoph
Thank you for answering my questions, I want compute a local density of states around an impurity. I have a python script for do that with periodic boundary condition, less kwant. Now i want do the same with kwant for be quicker in compute and for change lattice. But, my lattice is for now triangular with 2th hopping neighbour so is not easy to add periodic boundary conditions. I think i can add a List of neighbour of boundary site to the other side boundrary site and delete this site. But i don't know how. Thank you again, Sebastien Le 25/11/2013 17:25, christoph.groth@cea.fr a écrit :
Hi Sebastien,
Sebastien Guissart
writes: It is possible to study impurity or something like in a 2d infinity system by defining a finite system with impurity and add "lead" with 2 translational symmetry? What observable would you like to calculate?
The builder does in fact allow to define 2-d (or even >2-d) infinite systems, but currently it is not possible to finalize such systems. The reason for this is that the low-level system format of Kwant only supports a single "periodicity direction".
We have plans to remove this restriction one day.
And for solve the same problem, there is an easy way to process periodic boundary conditions? Currently, you need to add periodic boundary conditions by hand. Again, this is something we plan to improve in the future.
Best, Christoph
Hi Sebastien, Do I understand you correctly that you'd like to calculate the LDOS of a system that contains an impurity, and that is periodic in two dimensions? So your system would look something like this ..... ..*.. ..... infinitely tiled both in up/down and left/right directions to arrive at something like this . . . ............... ..*....*....*.. ............... ............... ... ..*....*....*.. ... ............... ............... ..*....*....*.. ............... . . . (I do understand that you'd like to use a non-square lattice and further-than-nearest neighbor hoppings) If yes, I think I may have an idea how to realize such a system with Kwant. If, however, you'd like to have something like this: . . . ............... ............... ............... ............... ... .......*....... ... ............... ............... ............... ............... . . . i.e. a sole impurity surrounded by an infinite system without impurities, this is going to be very difficult, I fear. Cheers, Christoph
Hi, For the time being, I want this system: . . . ............... ............... ............... ............... ... .......*....... ... ............... ............... ............... ............... . . . So I cannot compute this directly with kwant... But I hope the impurity changes the system in reasonable size and at a reasonable distance of the impurity the system stay unperturbed. so i hope the LDOS near the impurity in this system . . . ............... ............... ............... ............... ... .......*....... ... ............... ............... ............... ............... . . . could be similar at . . . ............... ..*....*....*.. ............... ............... ... ..*....*....*.. ... ............... ............... ..*....*....*.. ............... . . . For periodic bound state my script look at: #----------------------------------------------------------------------- lat = kwant.lattice.triangular(a) sys = kwant.Builder() for n in range(N): for m in range(M): sys[lat(n-m/2,m)]=en for n in range(N): for m in range(M): sys[lat(n-m/2,m),lat((n+1)%N-m/2,m)]=-t sys[lat(n-m/2,m),lat((n+m%2)%N-(m/2+m%2)%(M/2),(m+1)%(M))]=-t .... .... #----------------------------------------------------------------------- I can do this for building my system with periodic bound state. But I think is not the best way and if I want change lattice it will be long. Cheers, Sebastien Le 26/11/2013 16:30, Christoph Groth a écrit :
Hi Sebastien,
Do I understand you correctly that you'd like to calculate the LDOS of a system that contains an impurity, and that is periodic in two dimensions? So your system would look something like this
..... ..*.. .....
infinitely tiled both in up/down and left/right directions to arrive at something like this
. . .
............... ..*....*....*.. ............... ............... ... ..*....*....*.. ... ............... ............... ..*....*....*.. ...............
. . .
(I do understand that you'd like to use a non-square lattice and further-than-nearest neighbor hoppings)
If yes, I think I may have an idea how to realize such a system with Kwant. If, however, you'd like to have something like this:
. . .
............... ............... ............... ............... ... .......*....... ... ............... ............... ............... ...............
. . .
i.e. a sole impurity surrounded by an infinite system without impurities, this is going to be very difficult, I fear.
Cheers, Christoph
Hi,
Sebastien Guissart
But I hope the impurity changes the system in reasonable size and at a reasonable distance of the impurity the system stay unperturbed. so i hope the LDOS near the impurity in this system . . .
............... ............... ............... ............... ... .......*....... ... ............... ............... ............... ...............
. . . could be similar at
. . .
............... ..*....*....*.. ............... ............... ... ..*....*....*.. ... ............... ............... ..*....*....*.. ...............
. . .
As said before, Kwant 1.0 does not support the finalization of builders with more than a single symmetry direction. However, constructing such builders indeed does work already now. With a little trick, this allows to easily create complicated systems with >1-d periodic boundary conditions: The idea is to first create an ancillary system with a 2-d-symmetry. Then, a finite system is created (without symmetries). Now, the sites and hoppings are "copied" from the ancillary system to the finite system. The copying works without problems for the sites. For a hopping (a, b), we need to take into account that while Kwant guarantees that a is a site inside the fundamental domain, b is not in the FD for the hoppings that "wrap around". To see why this works and how, you need to understand how symmetries work in Kwant. Specifically, you need to understand what a "fundamental domain" is. Search for it in Kwant's documentation. This method should work perfectly when you do not use functions to define your Hamiltonian values. If you do, you'll need to take into account the facts that the periodic boundary conditions are fake. I attach a little script that you can run. It creates a piece of graphene with PBCs. You can easily change the hoppings to further than nearest neighbor. This will make the plot messy, but it will work. Once you have your system with "fake" PBCs, you can treat is as any other finite system. For example you can calculate its eigenstates (see tutorial). I hope you'll find this useful, Christoph
Hi Sebastien,
As Christoph wrote, also in Kwant you need to resort to quasi-1D systems
with a finite width and use periodic boundary conditions. You could
define those explicitly as explained by Christoph, however It is not
so hard to add hoppings across the boundary for general lattices and
shapes. Imagine, you have a stripe of width W = n a_1 + m a_2, with
a_1 and a_2 the basis vectors of the Bravais lattice. Let's say you
want to add all the hoppings of form r = a n_1 + b n_1 with hopping
amplitude t (which can also be a matrix). These you can add using
something like
sys[kwant.HoppingKind((a, b), lattice)] = t.
Then to make the hopping across the boundary you can use
sys[kwant.HoppingKind((a - n, b - m), lattice)] = t_boundary,
with t_boundary multiplied by the momentum in y direction.
I hope this helps.
Best,
Anton
On Tue, Nov 26, 2013 at 5:27 PM, Christoph Groth
Hi,
Sebastien Guissart
writes: But I hope the impurity changes the system in reasonable size and at a reasonable distance of the impurity the system stay unperturbed. so i hope the LDOS near the impurity in this system . . .
............... ............... ............... ............... ... .......*....... ... ............... ............... ............... ...............
. . . could be similar at
. . .
............... ..*....*....*.. ............... ............... ... ..*....*....*.. ... ............... ............... ..*....*....*.. ...............
. . .
As said before, Kwant 1.0 does not support the finalization of builders with more than a single symmetry direction. However, constructing such builders indeed does work already now. With a little trick, this allows to easily create complicated systems with >1-d periodic boundary conditions:
The idea is to first create an ancillary system with a 2-d-symmetry. Then, a finite system is created (without symmetries). Now, the sites and hoppings are "copied" from the ancillary system to the finite system. The copying works without problems for the sites. For a hopping (a, b), we need to take into account that while Kwant guarantees that a is a site inside the fundamental domain, b is not in the FD for the hoppings that "wrap around".
To see why this works and how, you need to understand how symmetries work in Kwant. Specifically, you need to understand what a "fundamental domain" is. Search for it in Kwant's documentation.
This method should work perfectly when you do not use functions to define your Hamiltonian values. If you do, you'll need to take into account the facts that the periodic boundary conditions are fake.
I attach a little script that you can run. It creates a piece of graphene with PBCs. You can easily change the hoppings to further than nearest neighbor. This will make the plot messy, but it will work.
Once you have your system with "fake" PBCs, you can treat is as any other finite system. For example you can calculate its eigenstates (see tutorial).
I hope you'll find this useful, Christoph
Hi, Christoph's answer works pretty good for me! Anton's answer can be useful for bound hopping terms are different from other terms. Thank you a lot, Sébatien
participants (4)
-
Anton Akhmerov
-
Christoph Groth
-
christoph.groth@cea.fr
-
Sebastien Guissart