Profiles of incoming transverse waveguide modes
Thank You Adel, Thank you for helping on previous issue. I have another curiosity here. Right now all incoming flux on lead 0 is all modes from 1 to N. The incoming flux corresponds to summation from 1 to N (i.e ), I just want first 3 modes only. I have attached a picture here what I want to do it. Can I achieve such condition in kwant from finding wavefunction from kwant solver? Here I have attached a code to find wavefunction. import kwant import numpy as np from matplotlib import pyplot from numpy import sqrt from math import * #====================================================================== # Define the shape ------------------- #====================================================================== def shape(pos): x, y = pos return (np.abs(2.0*x)<=L)&(np.abs(y)<W1/2.0) #---------------------------------------------------------------------- #====================================================================== def wshape(pos): x, y = pos return (np.abs(2.0*x)<=L)&(np.abs(y)<W1/2.0) #---------------------------------------------------------------------- a = 1; t = 1; E0L = 0*t L = 10; # Length of the W1 = 30; # Width on the left # Define geometry #-------------------------------------------------------------------------- sys0 = kwant.Builder() lat = kwant.lattice.square(a) #-------------------------------------------------------------------------------------------- # Define onsite energies and couplings #---------------------------------------------------- sys0[lat.shape(wshape,(0,0))] = E0 # To make all sites the same sys0[lat.neighbors()] = t #-------------------------------------------------------------------------------------------- # Left lead #---------------------------------------------------------------------------------- left_lead = kwant.Builder(kwant.TranslationalSymmetry([-1,0])) left_lead[(lat(0,y) for y in range(int(-W1/2+1),int(W1/2)))] = E0L left_lead[lat.neighbors()] = t sys0.attach_lead(left_lead); #-------------------------------------------------------------------------------------------- # Right lead #--------------------------------------------------------------------------------- right_lead = kwant.Builder(kwant.TranslationalSymmetry([1,0])) right_lead[(lat(0,y) for y in range(int(-W1/2+1),int(W1/2)))] = E0L right_lead[lat.neighbors()] = t sys0.attach_lead(right_lead); #--------------------------------------------------------------------------------------------- sys = sys0.finalized() kwant.plot(sys); wf = kwant.solvers.default.wave_function(sys,E,check_hermiticity=False); wf0 = wf(0); wf1 = wf(1); def plot_conductance(sys, energies): data = [] for energy in energies: smatrix = kwant.smatrix(sys, energy) data.append(smatrix.transmission(1, 0)) #transmission from left 2 leads to right lead pyplot.figure() pyplot.plot(energies, data) pyplot.xlabel("energy [t]") pyplot.ylabel("conductance [e^2/h]") pyplot.show() energies=[-3+i*0.02 for i in range(100)] plot_conductance(sys,energies)
Hi Amrita, Yes, as I explained before, you can choose any mode you want. mode_i=kwant.wave_function(sys, energy)(0)[i] If you want more information about how the modes are ordered, you can check this https://kwant-project.org/doc/1/tutorial/faq I hope this helps. Adel On Wed, Mar 14, 2018 at 10:47 PM, amrita chapagain < amritachapagain@gmail.com> wrote:
Thank You Adel, Thank you for helping on previous issue. I have another curiosity here. Right now all incoming flux on lead 0 is all modes from 1 to N. The incoming flux corresponds to summation from 1 to N (i.e ), I just want first 3 modes only.
I have attached a picture here what I want to do it. Can I achieve such condition in kwant from finding wavefunction from kwant solver?
Here I have attached a code to find wavefunction.
import kwant import numpy as np from matplotlib import pyplot from numpy import sqrt from math import *
#====================================================================== # Define the shape ------------------- #====================================================================== def shape(pos): x, y = pos return (np.abs(2.0*x)<=L)&(np.abs(y)<W1/2.0) #----------------------------------------------------------------------
#====================================================================== def wshape(pos): x, y = pos return (np.abs(2.0*x)<=L)&(np.abs(y)<W1/2.0) #----------------------------------------------------------------------
a = 1; t = 1; E0L = 0*t L = 10; # Length of the W1 = 30; # Width on the left
# Define geometry #----------------------------------------------------------- --------------- sys0 = kwant.Builder() lat = kwant.lattice.square(a) #----------------------------------------------------------- --------------------------------- # Define onsite energies and couplings #---------------------------------------------------- sys0[lat.shape(wshape,(0,0))] = E0 # To make all sites the same sys0[lat.neighbors()] = t #----------------------------------------------------------- ---------------------------------
# Left lead #----------------------------------------------------------- ----------------------- left_lead = kwant.Builder(kwant.TranslationalSymmetry([-1,0])) left_lead[(lat(0,y) for y in range(int(-W1/2+1),int(W1/2)))] = E0L left_lead[lat.neighbors()] = t sys0.attach_lead(left_lead); #----------------------------------------------------------- --------------------------------- # Right lead #----------------------------------------------------------- ---------------------- right_lead = kwant.Builder(kwant.TranslationalSymmetry([1,0])) right_lead[(lat(0,y) for y in range(int(-W1/2+1),int(W1/2)))] = E0L right_lead[lat.neighbors()] = t sys0.attach_lead(right_lead); #----------------------------------------------------------- ---------------------------------- sys = sys0.finalized() kwant.plot(sys); wf = kwant.solvers.default.wave_function(sys,E,check_hermiticity=False); wf0 = wf(0); wf1 = wf(1);
def plot_conductance(sys, energies):
data = [] for energy in energies: smatrix = kwant.smatrix(sys, energy) data.append(smatrix.transmission(1, 0)) #transmission from left 2 leads to right lead
pyplot.figure() pyplot.plot(energies, data) pyplot.xlabel("energy [t]") pyplot.ylabel("conductance [e^2/h]") pyplot.show() energies=[-3+i*0.02 for i in range(100)] plot_conductance(sys,energies)
-- Abbout Adel
participants (2)
-
Abbout Adel
-
amrita chapagain