Dear Anton,

thanks very much for your answer to my question.

I actually found a slightly different solution, which I shall document here in case it helps anyone else in the future.

My idea is to define a different unit cell for the graphene lattice which allows lattice vectors to be defined in the x and y real space directions. So, instead of using the standard graphene unit cell (which I shall denote with a symbol | which is supposed to indicate the bond joining the two carbon atoms) I used a unit cell that looks like \_/ which joins four carbon atoms in a short chain. Repeating this unit cell will generate a graphene flake with armchair edges along the horizontal direction, and zigzag edges along the vertical direction.

If a is the length of the lattice vector of the original (two-atom) unit cell, then the lattice vectors of the new unit cell are:
(sqrt(3)*a,0), and (0,a).

The positions of the four atoms within the unit cell are:
(a/(2*sqrt(3), 0),
(sqrt(3)*a/2, 0), and

This can be easily defined using the kwant.lattice.general() method as shown in the examples in the documentation. When leads are attached to the left and right ends (with translational symmetry (Âħsqrt(3)*a,0)) of a rectangular scattering region formed in this way, they do so in the vertical direction, as desired.

Hope that helps.


On 23/10/14 19:47, Anton Akhmerov wrote:
Dear David,

Currently a Kwant symmetry stores the extra directions that describe
how it handle various lattices. If you don't do anything, the choice
of the extra directions happens automatically, and a Bravais lattice
vector is chosen. However you can manually override this by using the
add_site_family method of the TranslationalSymmetry (see
for details). I know several people have used this to solve exactly
the problem that you currently encounter.


On Thu, Oct 23, 2014 at 4:40 PM, David Abergel
<> wrote:
Dear all,

I am having a problem defining a system which matches what I want.

I start by defining a rectangular graphene lattice of size 0<=x<L in the x
direction and 0<=x<W in the y direction. (By "rectangular" I mean in the
real space coordinates, not the crystallographic coordinates.)

I want to attach a lead to the left-had end of this rectangle, going to
minus infinity. Therefore, I define a lead with translational symmetry
(-1,0) and the appropriate hopping. I attach the lead and plot the system.

When I plot the system, I find that the lead has been attached along the
(0,1) crystallographic direction (so, that is along the (1/2, sqrt(3)/3)
real space vector). A triangle of extra sites have been added for x<0 (real
space) so that the total shape of the scattering region is now not rectangular.

If I attach another lead with lead.reversed(), a similar thing happens on
the right of the sample so that my scattering region is now a parallelogram.

As I understand it, this should not affect the physics in any way, since the
lead is semi-infinite. But, if I want to draw pictures, plot functions over
the scattering region, and gain physical understanding, it is a bit of a
pain. So, my question is whether there is any way to make the lead attach
along the (0,1) real space direction (which is the same as the (-1,2)
crystallographic direction) and yet maintain the (-1,0) translational symmetry?

If you require a sample program which reproduces this behavior then I can
easily provide that, but I thought I should not extend an already long post

Thanks in advance.


David Abergel

Reply via email to