making systems with translational symmetry perpendicular to the direction of transport
Hi all, This is a follow up to my post yesterday (where I put a Si tight binding model into Kwant). My goal is to create a 3D system with translational symmetries in a plane so that I can look at transport perpendicular to that (infinite) plane. So, there wouldn’t be a translational symmetry in the direction of transport, but there will be translational symmetry in the two dimensions perpendicular to transport. It’s a little difficult to explain how I’m trying to do this, but hopefully the below explanation mostly conveys the idea. The attached jupyter notebook uses a standard Si primitive cell as the unit cell, and for simplicity, I’ve chosen the axis of the system to be along the first Si primitive vector as defined in the code (1/2, 1/2, 0). There is translational symmetry along the other two primitive vectors (set in “In [5]” of the notebook). Everything seems to work basically as expected. The axis of the system does lie along the first Si primitive vector; I can attach leads with the same symmetries; and the leads have the right band structure: the band structure down the axis of the leads is the band structure between the gamma and L points (calculated in “In [8]”– compare with the full band structure in “In [10]”). I could calculate the transmission down the axis of the structure with something like kwant.smatrix(syst, energy, args=(0,0)).transmission(1, 0), which isn’t shown in the notebook. (I’d also be putting different potentials in the different sites so that the structure isn’t uniform. There’s not much point calculating transport thru the system in the notebook.) Two questions: 1. Can I calculate transport in other directions  such as the (1,0,0) direction  using this system? 2. The primitive lattice vectors are not orthogonal, so I don’t really have translational symmetry perpendicular to the axis of the system. Does anyone have an idea for how to fix that? I could create a (larger) nonprimitive unit cell with orthogonal primitive vectors by having a bunch of basis vectors (that sounds weird, but I think that the terminology is right), but I like having my unit cell be simple. (I have tried effectively building a larger unit cell from the primitive cells, but I’ve run into problems – a topic for a different email.) Leon
Hi Leon,
Sorry for a delayed reply, probably you have already figured the
answers out, but I will reply for completeness.
1. Indeed, you cannot use the same system to compute the transport in
a different direction.
2. Unfortunately, dealing with general translational symmetries using
wraparound in Kwant is somewhat of a hack. Several of us are working
on a new implementation of Kwant systems that would allow dealing with
general point group symmetries, but this is far from completion. You
can influence the structure of the resulting system by manually
calling symmetry.add_site_group and specifying other_vectors [1]
orthogonal to the transport direction. Also be aware that you may be
influenced by bugs in wraparound that were fixed by Daniel Varjas [2],
and will be soon released in v1.3.2.
Best,
Anton
[1]: https://kwantproject.org/doc/1/reference/generated/kwant.lattice.Translatio...
[2]: https://gitlab.kwantproject.org/kwant/kwant/merge_requests/176
On Wed, Nov 1, 2017 at 1:48 AM, Maurer, Leon
Hi all,
This is a follow up to my post yesterday (where I put a Si tight binding model into Kwant).
My goal is to create a 3D system with translational symmetries in a plane so that I can look at transport perpendicular to that (infinite) plane. So, there wouldn’t be a translational symmetry in the direction of transport, but there will be translational symmetry in the two dimensions perpendicular to transport.
It’s a little difficult to explain how I’m trying to do this, but hopefully the below explanation mostly conveys the idea.
The attached jupyter notebook uses a standard Si primitive cell as the unit cell, and for simplicity, I’ve chosen the axis of the system to be along the first Si primitive vector as defined in the code (1/2, 1/2, 0). There is translational symmetry along the other two primitive vectors (set in “In [5]” of the notebook). Everything seems to work basically as expected. The axis of the system does lie along the first Si primitive vector; I can attach leads with the same symmetries; and the leads have the right band structure: the band structure down the axis of the leads is the band structure between the gamma and L points (calculated in “In [8]”– compare with the full band structure in “In [10]”). I could calculate the transmission down the axis of the structure with something like kwant.smatrix(syst, energy, args=(0,0)).transmission(1, 0), which isn’t shown in the notebook. (I’d also be putting different potentials in the different sites so that the structure isn’t uniform. There’s not much point calculating transport thru the system in the notebook.)
Two questions:
Can I calculate transport in other directions  such as the (1,0,0) direction  using this system? The primitive lattice vectors are not orthogonal, so I don’t really have translational symmetry perpendicular to the axis of the system. Does anyone have an idea for how to fix that? I could create a (larger) nonprimitive unit cell with orthogonal primitive vectors by having a bunch of basis vectors (that sounds weird, but I think that the terminology is right), but I like having my unit cell be simple. (I have tried effectively building a larger unit cell from the primitive cells, but I’ve run into problems – a topic for a different email.)
Leon
participants (2)

Anton Akhmerov

Maurer, Leon