>>>>>>I have some questions about the code above:

>>>>>>1. The fictitious lead has a self-energy equal to zero. However, the
system defined in 'syst' has "real leads" attached. So, when we write
'kwant.greens_function(syst, energy=-1.8*1j, in_leads=[2],out_leads=[3],
>>>>>>check_hermiticity=False,params=par).data' will the contribution of
the attached leads be taken into account?

Answer: We add a zero self energy because we do not want to perturb the
original system. This allows us to obtain the requested original greens
function of the original system with leads.
The kwant.greens_function returns the elements of the greens function
between the sites of all the specified connected leads
(in_leads,out_leads). By specifying the fictitious lead in the list, you
can obtain the onsite greens function.

>>>>>>  2. If not, how can we take into account the leads attached in
'syst'?

Answer: The leads are attached to the system

>>>>>>  3. Is the function 'kwant.greens_function(syst, energy=-1.8*1j,
in_leads=[2],out_leads=[3], check_hermiticity=False,params=par).data' the
retarded Green's function?
Answer: Yes, it is the retarded greens function

>>>>>>  4. How can I obtain the correlation function (Lesser Green's
function)?
Answer :Just use the definition.


>>>>>>  5. Is the 'energy' parameter always a complex number?
Answer: The energy should be kept real. (I am not sure if the code still
works when you are outside the band).
the check_hermiticity is usually needed, in case you need to add a
fictitious lead with imaginary self energy (like for STM experiments)

I hope this helps,
Adel

Documentation:
https://kwant-project.org/doc/1/reference/generated/kwant.solvers.default.greens_function

On Tue, Sep 19, 2023 at 12:51 AM Gabriel Garcia <gqgarci...@gmail.com>
wrote:

> Hello Adel,
>
> Thank you again for responding to me. I am new to this Python world and I
> don’t have much experience on the subject. However, discovering and
> learning Kwant and Tkwant has been very interesting. I reproduced the
> example given in reference [1]
> https://mail.python.org/archives/list/kwant-discuss@python.org/thread/2VB4IKZSCBZZNZJOWS3QFSP2AT6FCYVL/.
> But I still have some doubts about the Green functions in Kwant. Based on
> the code below:
>
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------
> import kwant
> from types import SimpleNamespace
> from copy import copy
> import tinyarray
> import numpy as np
> import csv
> import ipywidgets
> from scipy import sparse
> from matplotlib import pyplot
> from scipy.optimize import minimize
>
> sigma_x = tinyarray.array([[0, 1], [1, 0]])
> sigma_y = tinyarray.array([[0, -1j], [1j, 0]])
> sigma_z = tinyarray.array([[1, 0], [0, -1]])
> sigma_0 = tinyarray.array([[1, 0], [0, 1]])
>
> tau_x = tinyarray.array([[0, 1], [1, 0]])
> tau_y = tinyarray.array([[0, -1j], [1j, 0]])
> tau_z = tinyarray.array([[1, 0], [0, -1]])
> tau_0 = tinyarray.array([[1, 0], [0, 1]])
>
> def make_system_ex3(L=10):
>     lat = kwant.lattice.chain(norbs=2)
>     syst = kwant.Builder()
>
> #### Define the scattering region. ####
>     def onsite_sc(site,t,mu,delta):
>         return (2.*t-mu )*tau_z + delta*tau_x
>
>     def onsite_N(site,t,mu,V_N):
>         return (2.*t-mu + V_N)*tau_z
>
>     syst[(lat(x) for x in range(1, L))] = onsite_sc
>
> #### Superconducting onsite hamiltonian ####
>     syst[lat(L)] = onsite_N  #normal onsite hamiltonian
>
>     syst[(lat(x) for x in range(L+1,2*L+1))] = onsite_sc #superconducting
> onsite hamiltonian
>
>     def hop(site1,site2,t,phi):
>         return -t*np.matmul(np.exp(1j*phi*tau_z),tau_z)
>
>     syst[(lat(L-1), lat(L))] = hop
>     for i in range(1,L-1):
>         syst[(lat(i), lat(i+1))] = -t*tau_z
>     for i in range(L,2*L):
>         syst[(lat(i), lat(i+1))] = -t*tau_z
>
> #### Define the leads ####
>     sym_left = kwant.TranslationalSymmetry([-1])
>     lead0 = kwant.Builder(sym_left)
>     lead0[(lat(0))] = (2.*t-mu)*tau_z + delta*tau_x
>     lead0[lat.neighbors()] = -t*tau_z
>
>     sym_right = kwant.TranslationalSymmetry([1])
>     lead1 = kwant.Builder(sym_right)
>     lead1[(lat(2*L+1))] =  (2.*t-mu)*tau_z + delta*tau_x
>     lead1[lat.neighbors()] = -t*tau_z
>
> ##### Attach the leads and return the system ####
>     syst.attach_lead(lead0)
>     syst.attach_lead(lead1)
>
>     return syst, lat
>
> mu=1
> t=1.0
> delta=0.5
> V_N=1
> phi=0
> L=10
>
> par = dict(t=t,mu=mu,delta=delta,phi=phi,V_N=V_N)
>
> syst, lat = make_system_ex3(L=10)
>
> def mount_vlead(sys, vlead_interface, norb):
>     dim = norb*len(vlead_interface)
>     print(dim)
>     zero_array = np.zeros((dim, dim), dtype=float)
>     def selfenergy_func(energy, args=()):
>         return zero_array
>
>     vlead = kwant.builder.SelfEnergyLead(selfenergy_func,
> vlead_interface,())
>     sys.leads.append(vlead)
>
> lead2 = mount_vlead(syst,[lat(L-1)], 2)
> lead3 = mount_vlead(syst,[lat(L)], 2)
>
> syst =syst.finalized()
>
> G12=kwant.greens_function(syst, energy=-1.8*1j,
> in_leads=[2],out_leads=[3],\
>                            check_hermiticity=False,params=par).data
> G21=kwant.greens_function(syst, energy=-1.8*1j,
> in_leads=[3],out_leads=[2],\
>                            check_hermiticity=False,params=par).data
>
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------
> I have some questions about the code above:
>
> 1. The fictitious lead has a self-energy equal to zero. However, the
> system defined in 'syst' has "real leads" attached. So, when we write
> 'kwant.greens_function(syst, energy=-1.8*1j, in_leads=[2],out_leads=[3],
> check_hermiticity=False,params=par).data' will the contribution of the
> attached leads be taken into account?
>
> 2. If not, how can we take into account the leads attached in 'syst'?
>
> 3. Is the function 'kwant.greens_function(syst, energy=-1.8*1j,
> in_leads=[2],out_leads=[3], check_hermiticity=False,params=par).data' the
> retarded Green's function?
>
> 4. How can I obtain the correlation function (Lesser Green's function)?
>
> 5. Is the 'energy' parameter always a complex number?
>
> Best,
> Gabriel
>


-- 
Abbout Adel

Reply via email to