Dear Eric,
Yes, you can use a 3D lattice and define a lead as you proposed, but you
can also do that more easily and stay in the 2D space. The main idea is to
add a self-energy to the potential of the site below the tip. I suppose
that you want to use 1D lead to mimic the effect of tip so you need just to
be careful about some details:
1) You need a shift in the potential of the supposed 1D lead because the
conduction band for 1D and 2D are not the same. (you chose it in way your
1D lead is also conducting for the Fermi energy of the 2D system )
2) Use the option 'check_hermiticity=False' when you call the scattering
matrix because your Hamiltonian is not Hermitian anymore (it is an
effective complex Hamiltonian due to the self-energy of the tip )
3) The Current in the tip will be the sum of the currents coming from the
left lead and the right lead. Each of them is deduced by M-R-T where M is
the number of the conducting modes and R,T are the reflection and
transmission respectively (see the script below)
4) You can use the exact form of the self-energy with the correct energy
dependence and a special coupling if you wish.
So, as you see, the self-energy will replace the effect of the lead and
therefore no need to define it.
An small example is provided below.
Finally as a remark, you should notice that if the potential induced by the
tip is real, you will have an SGM tip (scanning gate microscopy), where
no current is passing through the tip and only a change in the whole
conductance is induced.
I hope that this helps.
Adel
import kwant
from matplotlib import pyplot
from numpy import *
def make_system(a=1, t=1.0, W=10, L=30):
lat = kwant.lattice.square(a)
sys = kwant.Builder()
#the self energy of a 1D lead with coupling tc
def sigma(energy,V,tc):
return (tc**2)/t
*((energy-V)/(2*t)-1j*sqrt(1-((energy-V)/(2*t)**2)) )
#to the onsite potential add a self energy
def Potential(site, tip_site,energy,V,tc):
if site==tip_site:
return 0.02+4*t+sigma(energy,V,tc)
else: return 0.02+4*t
Define the scattering region.
sys[(lat(x, y) for x in range(L) for y in range(W))] = Potential
sys[lat.neighbors()] = -t
Define and attach the leads.
# Construct the left lead.
lead = kwant.Builder(kwant.TranslationalSymmetry((-a, 0)))
lead[(lat(0, j) for j in range(W))] = 4 * t
lead[lat.neighbors()] = -t
# Attach the left lead and its reversed copy.
sys.attach_lead(lead)
sys.attach_lead(lead.reversed())
return sys
def plot_conductance(sys,energy,V,tc):
# Compute conductance
data = []
for site in sys.sites:
smatrix = kwant.smatrix(sys,
energy,args=([site,energy,V,tc]),check_hermiticity=False)
number_of_modes=(smatrix.data.shape[0])/2 #conducting modes
T1=number_of_modes-smatrix.transmission(1,
0)-smatrix.transmission(0, 0)
T2=number_of_modes-smatrix.transmission(0,
1)-smatrix.transmission(1, 1)
transmission_to_the_tip= T1+T2
data.append(transmission_to_the_tip)
pyplot.figure()
kwant.plotter.map(sys,data)
pyplot.xlabel("energy [t]")
pyplot.ylabel("conductance [e^2/h]")
pyplot.show()
def main():
sys = make_system()
kwant.plot(sys)
sys = sys.finalized()
plot_conductance(sys,energy=0.1,V=-2,tc=0.1)
if __name__ == '__main__':
main()
On Sun, Jan 8, 2017 at 3:28 AM, Eric Mascot wrote:
> Hello
>
> I was wondering, is it possible to have a lead that hovers above a 2D
> system?
> I'm guessing that I have to use a 3D system where the system is in the XY
> plane and the lead has a translational symmetry in the Z direction.
>
> Thanks,
> Eric
>
--
Abbout Adel