Sorry, I think you meant the diagonal elements of the Hamiltonian matrix.
You do that with the hamiltonian_submatrix method (
https://kwant-project.org/doc/1/reference/generated/kwant.system.System).

On Sun, 18 Apr 2021, 19:15 Antonio Manesco, <[email protected]> wrote:

> Hi Nafise
>
> You can access the s-matrix elements using the submatrix method (
> https://kwant-project.org/doc/latest/reference/generated/kwant.solvers.common.SMatrix
> ).
>
> Best,
> Antonio
>
> On Sun, 18 Apr 2021, 11:55 Nafise Nouri, <[email protected]> wrote:
>
>> Dear all,
>> I need to access the matrix diagonal element in the scattering region in
>> my program. Is there any way to access  the matrix diagonal element in the
>> following program or do I have to use numpy?
>>
>> Best regard,
>>
>> import kwant
>> import matplotlib.pyplot as plt
>> import tinyarray
>> import numpy as np
>> import math
>> from functools import partial
>> from kwant.physics import dispersion
>>
>> #mport matplotlib
>>
>> d=1.42;
>> a1=d*math.sqrt(3);
>>
>> latt = kwant.lattice.general([(a1,0),(0.5*a1,a1*math.sqrt(3)/2)],
>>                              [(0,0),(0,a1/math.sqrt(3))])
>> a,b = latt.sublattices
>> syst= kwant.Builder()
>>
>>
>> #...................................................................................
>> def rectangle(pos):
>>     x, y = pos
>>     z=x**2+y**2
>>     return -4*3*a1<y<4.5*3*a1 and -4.5*d<=x<4.5*d
>>
>> syst[a.shape(rectangle, (2,2))] = 0
>> syst[b.shape(rectangle, (2,2))] = 0
>>
>> #nearest
>> neighbors.............................................................
>> syst[[kwant.builder.HoppingKind((0,0),a,b)]] = -2.7
>> syst[[kwant.builder.HoppingKind((0,1),a,b)]] = -2.7
>> syst[[kwant.builder.HoppingKind((-1,1),a,b)]] = -2.7
>>
>> ax=kwant.plot(syst);
>>
>> sym = kwant.TranslationalSymmetry(latt.vec((-1,0)))
>>
>> sym.add_site_family(latt.sublattices[0], other_vectors=[(-1, 2)])
>> sym.add_site_family(latt.sublattices[1], other_vectors=[(-1, 2)])
>> lead = kwant.Builder(sym)
>>
>>
>> def lead_shape(pos):
>>     x, y = pos
>>     return  -4*3*a1<y<4.5*3*a1
>>
>> lead[a.shape(rectangle, (2,2))] = 0
>> lead[b.shape(rectangle, (2,2))] = 0
>>
>>
>> #nearest
>> neighbors.............................................................
>> lead[[kwant.builder.HoppingKind((0,0),a,b)]] = -2.7
>> lead[[kwant.builder.HoppingKind((0,1),a,b)]] = -2.7
>> lead[[kwant.builder.HoppingKind((-1,1),a,b)]] = -2.7
>>
>> syst.attach_lead(lead)
>> syst.attach_lead(lead.reversed())
>> ax=kwant.plot(syst);
>>
>>
>> ###############################################################################\
>> fsys = syst.finalized()
>> Sites= list(fsys.sites)   #list of all the sites in the scattering region
>> number_of_sites=len(Sites)
>>
>>
>> bands = dispersion.Bands(fsys.leads[0])
>> momenta = np.linspace(-np.pi,np.pi, 100)
>> energies=[bands(k) for k in momenta]
>>
>> np.savetxt('band1.txt',bands(-np.pi))
>>
>>
>> plt.plot(momenta,energies)
>>
>> plt.xlabel(r'$K$')
>> plt.ylabel(r'$band structure (eV)$')
>> plt.ylim((-0.5,0.5))
>> plt.savefig('bandsarmBiStrain.pdf')
>> plt.show()
>>
>

Reply via email to