Re: [Kwant] Current and hopping index relationship
Dear Zang,
1) Your question concerning the calculation of the current for all the
hoppings:
That is exactly what you get when you do not specify the argument ''
where" when you define the current. ie:
J = kwant.operator.Current(syst) returns the current for all the
hoppings.
Do you know that you can get all the hoppings in the system by doing
list(sys.hoppings()) with sys the non finalized system?
2)
Yes you can calculate the current in the presence of a bias, but for that
you need to do an integration over the contributions at all the energies
with a weight of Fermi Dirac for each lead.
but I don't see a bias in your example.
I hope this helps,
Adel
On Sun, Jun 30, 2019 at 7:15 AM Zang, Hang
On Sun, Jun 23, 2019 at 8:22 AM Abbout Adel
wrote: Dear Zang,
If you do not specify the region where you want to calculate the current, kwant will do that for all the hoppings in your system. In your case, I guess that your system has 6 links (and thus 12 hoppings if we count the two directions).
Please check the documentation concerning the argument "where":
*where* : sequence of pairs of *int* or Site https://kwant-project.org/doc/1/reference/generated/kwant.builder.Site.html#..., or callable, optional
Where to evaluate the operator. If syst is not a finalized Builder, then this should be a sequence of pairs of integers. If a function is provided, it should take a pair of integers or a pair of Site https://kwant-project.org/doc/1/reference/generated/kwant.builder.Site.html#... (if syst is a finalized builder) and return True or False. If not provided, the operator will be calculated over all hoppings in the system.
If you want to calculate the current just for a given hopping you can do that as follows site1=lat(0,1) site1=lat(0,2) J(syst, where=[(site1,site2)]) If you want the current at a given set of hoppings, you just use where=[(site1,site2),(site3,site4),(site5,site6)....................]
2) The current that you get with kwant is actually the contribution of the wave function psi (or the mode p) at a given energy to the total current. Depending on what you want to get, you may need to sum over all the modes if you want to get the total current at the *Fermi surface* and Integrate over the whole band with Fermi Dirac distribution, if you want to get the total current of the *Fermi sea.*
I hope this helps, Adel
.
On Fri, Jun 21, 2019 at 7:32 AM Zang, Hang
wrote: Dear All,
I'm trying to calculate the site-to-site current with kwant, for a specific system, the output of "kwant.plotter.sys_leads_hopping_pos" is like below: (array([[-1., -1.], [-1., -1.], [ 0., 0.], [ 0., 0.], [ 1., 0.], [ 1., 1.]]), array([[ 0., 0.], [-2., -2.], [ 1., 1.], [ 1., 0.], [ 1., 1.], [ 2., 2.]]))
For the current calculation of the same system, I use the command below: ------------------------------------------------------------------ wf = kwant.wave_function(syst, energy=-1) psi = wf(0)[0] J_0 = kwant.operator.Current(syst) current = J_0(psi) ------------------------------------------------------------------ and the out put of "current" is like below: [ 0.33230769 -0.33230769 0.33230769 0.22153846 -0.33230769 0.11076923 -0.11076923 0.11076923 0.33230769 -0.22153846 -0.11076923 -0.33230769]
I'm not clear about the exact correspondance between the element of current (12 element) and the element of hopping (2 array), could you plese give me some explanations about this?
Also, I'm not sure that if I want to calculate the current at a certain energy (like "-1" above), do I have to calculate the current at all the wavefunction (like for all p of wf(0)[p]) or I have to calculate the current only at the wavefunction with "negivate velocity"?
Thanks in advance for your help. Hang Zang
-- Abbout Adel
-- Abbout Adel
participants (1)
-
Abbout Adel