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) non-primitive 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://kwant-project.org/doc/1/reference/generated/kwant.lattice.Translatio... [2]: https://gitlab.kwant-project.org/kwant/kwant/merge_requests/176 On Wed, Nov 1, 2017 at 1:48 AM, Maurer, Leon <lmaurer@sandia.gov> wrote:
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) non-primitive 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