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: (0,a/2), (a/(2*sqrt(3), 0), (sqrt(3)*a/2, 0), and (2*a/sqrt(3),a/2).

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.

David

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 http://kwant-project.org/doc/1.0/reference/generated/kwant.lattice.Translati... for details). I know several people have used this to solve exactly the problem that you currently encounter.

Best, Anton

On Thu, Oct 23, 2014 at 4:40 PM, David Abergel david.abergel@nordita.org 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 unnecessarily.

Thanks in advance.

David