But then they study dispersion as a function of k_y, so the field is
perpendicular to the momentum.
This is a very good point... I guess that I had the wrong picture in my head as to how the paper by Lukose et al was set up. I went ahead and modified one of my graphene calculations (code attached below for anyone interested) to be similar to the code snippet you attached, except w/a magnetic field applied in the z-direction. To my surprise, this immediately shows the result of Lukose et al. Upon closer inspection of the Pereira et al paper I realize the method to implement their problem is nearly identical.
That answers part of my question- I guess my question is developing alongside my understanding.
What I would also like to figure out is how to approach Fig. 4 in http://journals.aps.org/prb/abstract/10.1103/PhysRevB.76.035411. I believe I understand the analytical methods used in http://journals.aps.org/prl/abstract/10.1103/PhysRevLett.98.157003 for the analogous Andreev reflection problem and have plotted several of the results for myself, but I do not see how you would numerically implement this type of problem (N-S or p-n interface) using Kwant. I would really appreciate any advice you have to offer regarding this!
Perhaps these papers would have been better examples to start with, although I am very happy to have been able to capture the result in the Lukose paper! It is kind of amazing to me how easy Kwant can make it to replicate results in PRL.
Thanks so much!
Code (note it is not too big of a problem but those on laptops may have memory issues):
from __future__ import division import kwant import numpy as np from matplotlib import pyplot as plt from numpy import pi, exp
class SimpleNamespace(object): def __init__(self, **kwargs): self.__dict__.update(kwargs)
# System creation def make_lead(a, t0, S): # (lattice constant in nm, hopping parameter in eV, square size in nm) lat = kwant.lattice.honeycomb(a) # Create a honeycomb lattice
def leadshape0(pos): # Left lead x, y = pos return 0 <= y <= 5 * S
def onsite_lead0(site): # Left lead xi, yi = site.pos return 0 + par.E_field*yi # + #par.disorder*kwant.digest.uniform(repr(site),salt = par.salt)
def hopping(sitei, sitej): xi, yi = sitei.pos xj, yj = sitej.pos # convert to meters # conv = 1e-9 conv = 1e-9 xi *= conv yi *= conv xj *= conv yj *= conv
return -t0 * exp(-1j * (pi / phi_0) * par.B * (xi - xj) * (yi + yj) * 0.5)
sym0 = kwant.TranslationalSymmetry((-a, 0)) sym0.add_site_family(lat.sublattices, other_vectors=[(-1, 2)]) sym0.add_site_family(lat.sublattices, other_vectors=[(-1, 2)])
lead0 = kwant.Builder(sym0) lead0[lat.shape(leadshape0, (0.5, 0.5))] = onsite_lead0 lead0[lat.neighbors()] = hopping lead0.eradicate_dangling() #kwant.plot(lead0,num_lead_cells=4) return lead0
a_s = 0.142 t_s = 3.0 S = 10 # square size
h = 1.05457173e-34 # plancks constant e_charge = 1.602e-19 phi_0 = h / e_charge
par = SimpleNamespace(B=40., E_field=0.01) # disorder = 0.15
lead = make_lead(a_s, t_s, S).finalized()
kwant.plotter.bands(lead,momenta = np.linspace(1.8,5.7,200), show=False,dpi=150,) plt.xlabel("momentum [(lattice constant)^-1]") plt.ylabel("energy (eV)") plt.ylim((-0.4,0.8)) plt.show()
________________________________________ From: email@example.com firstname.lastname@example.org on behalf of Anton Akhmerov email@example.com Sent: Thursday, June 9, 2016 5:30 PM To: LaGasse, Samuel Cc: firstname.lastname@example.org Subject: Re: [Kwant] Energy spectrum w/o translational invariance
In the paper by Lukose et al (http://arxiv.org/abs/cond-mat/0603594) it seems that the electric field in their Fig. 2 is applied along the x-direction, which appears in the diagonal of the Hamiltonian as an x-dependent shift in the on-site energy, resulting in the shifted E-k spectrum. Am I misunderstanding this?
But then they study dispersion as a function of k_y, so the field is perpendicular to the momentum.
I guess I am also still unclear even if I wanted to look at a potential energy shift caused perpendicular electric field, such as the potential well in (1) below. I understand how to generate that Hamiltonian using Kwant, but not how to calculate the E-k spectrum of the well itself.
Do you mean something like this:
import kwant lat = kwant.lattice.square() syst = kwant.Builder(kwant.TranslationalSymmetry((1, 0))) syst[(lat(0, i) for i in range(10))] = lambda site: 0.1 * site.pos - 3 syst[lat.neighbors()] = -1 kwant.plotter.bands(syst.finalized())
here I plot the dispersion of an infinite system with E-field applied in its transverse direction. Or do you want to do something else?
I apologize again that this is more of a physics question than the mechanics of Kwant. I must admit that some of my interest in this calculation stems from some of the E-k relationships in two of your own papers, Anton! (http://journals.aps.org/prl/abstract/10.1103/PhysRevLett.98.157003 and http://journals.aps.org/prb/abstract/10.1103/PhysRevB.76.035411)
Heh, cool :) Should be doable.
Thanks you again,
Sam ________________________________________ From: email@example.com firstname.lastname@example.org on behalf of Anton Akhmerov email@example.com Sent: Thursday, June 9, 2016 4:52 PM To: LaGasse, Samuel Cc: firstname.lastname@example.org Subject: Re: [Kwant] Energy spectrum w/o translational invariance
There is no meaningful band structure if an electric field is applied parallel to the wire (and none of the references introduces such an electric field). If the field is actually perpendicular to the wire, you can just add it to the Hamiltonian.
On Thu, Jun 9, 2016 at 10:47 PM, LaGasse, Samuel SLaGasse@sunypoly.edu wrote:
I am searching for a way to calculate the energy spectrum of a system without translational invariance using Kwant.
I am familiar with how to calculate E-k relationships for systems with translational invariance (such as a lead) using Kwant's infinite systems. What is unclear to me is how to approach doing this for a system which breaks this invariance, by for example, applying an electric field via a gate or source-drain bias. In the tutorial section I have gone through the tutorial for calculating the magnetic flux vs. energy spectrum for a quantum dot, but it is unclear to me how one would modify this example to investigate the E-k relationship.
I have seen a few examples of this type of calculation performed in the literature, but often the numerical details are left to the reader. A few of these are below:
(1) http://arxiv.org/abs/cond-mat/0610237 - This paper shows several figures for differently shaped quantum wells formed along the transport direction in a graphene ribbon.
(2) http://arxiv.org/abs/1512.02144 - It appears to me that the lower panel of Fig. 1 essentially has an electric field, although I could be wrong. This example was actually done with Kwant.
(3) http://arxiv.org/abs/cond-mat/0603594 - Their Fig. 1 shows the spectrum in the quantum hall regime w/o an electric field applied (this I am able to reproduce w/Kwant). In their Fig. 2 an electric field is applied in the x-direction of a graphene ribbon- this in particular I would like to be able to implement- in general, not necessarily for graphene.
I have attached a code I am working on which generates a square lattice ribbon with leads on the left/right sides. A potential well is formed in the ribbon in a similar fashion to (1) above. I can extract the Hamiltonian of the channel and calculate its eigenvalues, but it is unclear to me how to get the E-k relationship. I believe I need to add some phase factor across the Hamiltonian which accounts for different k values.
I apologize if this is more of a physics question than a Kwant question. Indeed, Kwant trivializes what I imagine is the hard part- generating the lattice and turning that into a tight binding Hamiltonian. Hopefully this topic is of interest to the readers of the mailing list- I believe it would be an interesting addition to the Kwant tutorials in the future!
Thanks so much!