# [Pw_forum] Left and right going Bloch's states from PWCOND

Manoj Srivastava manoj at phys.ufl.edu
Sun Nov 8 09:49:15 CET 2009

Dear Alexander,
Thanks for answering my question. I have two more questions. I understand
that for muliple channels in the leads, Bloch's states are arranged in
order of increasing |kz|. For example-
Nchannels of the left tip =            4
k1(2pi/a)    k2(2pi/a)       E-Ef (eV)

-0.2937447   0.0000000   0.0000000
0.3140648   0.0000000   0.0000000
-0.3882921   0.0000000   0.0000000
0.4084626   0.0000000   0.0000000
Nchannels of the right tip =            4
k1(2pi/a)    k2(2pi/a)       E-Ef (eV)

0.2117188   0.0000000   0.0000000
0.3140394   0.0000000   0.0000000
-0.3915554   0.0000000   0.0000000
-0.4937163   0.0000000   0.0000000

Now when I calculate transmission, code prints out -
1 -->     1   0.0198530
1 -->     2   0.0638572
1 -->     3   0.0193576
1 -->     4   0.5152587
0.61833
and three more sets like this (I am not writing it down). In above
1,2,3,4 correspond to Bloch's states in left and right lead. My question
is, are transmission coefficients arranged in the same order as kz 's are.
e.g. does transmission coefficient in 1 -->1 stand for transmission
coefficient of state kz= -0.2937447 in left lead to state with
kz=0.2117188 in the right lead? similarly, 1-->2 mean kz=-0.2937447 to
kz=0.3140394 , and so on ?

Also, what is eigenchannel decomposition, if I want to get transmission
coefficient, code prints out as
T_ij for propagating states:
1 -->     1   0.0198530
1 -->     2   0.0638572
1 -->     3   0.0193576
1 -->     4   0.5152587
0.61833
2 -->     1   0.1840566
2 -->     2   0.3834998
2 -->     3   0.0693121
2 -->     4   0.1578845
0.79475
3 -->     1   0.1853693
3 -->     2   0.0321809
3 -->     3   0.1536389
3 -->     4   0.0309744
0.40216
4 -->     1   0.1601806
4 -->     2   0.0132465
4 -->     3   0.2321587
4 -->     4   0.1197219
0.52531
then what information does eigenchannel decomposition contain?
Eigenchannel decomposition:
@    1  0.00000  0.10086
0.31024
0.09173
0.36027
0.23776
@    2  0.00000  0.47744
0.03523
0.03500
0.49217
0.43760
@    3  0.00000  0.84821
0.42617
0.44674
0.06122
0.06587
@    4  0.00000  0.91404
0.22836
0.42652
0.08634
0.25877
I dont know what to think of these numbers. Thanks for your help.

Regards,
Manoj

On Mon, 2 Nov 2009, Alexander Smogunov wrote:

> Dear Manoj.
> The new parameter lorb is simply used to give in output the scattering
> states so that you could plot them, it does not affect the transmission
> calculation itself. If it is .false. the code will run normally as
> before... It is true that this new option does not work for ikind=2,
> but you can still calculate transmission and reflection amplitudes.
> To calculate t and r from right to left you should simply
> call the transmit routine in do_cond.f90 with the last argument
> to set to .false. By default the code does not compute  the
> case of right --> left scattering since the total transmission
> is the same as in left --> right case. Only if you want to plot the
> scattering states (lorb=.true.) it does that.
> It is how the things are implemented now ...
> Best regards,
> Alexander
>
>
>
>
> On Fri, 2009-10-30 at 14:04 -0400, Manoj Srivastava wrote:
> > Just to add one more question.
> > what is 'lorb' switch. I get following-
> >   lorb,          &  ! if .t. calculate the scattering (or Bloch) states
> > so, i guess for transmission calculation i will have to set it to
> > 't'. now-
> > IF (lorb.and.ikind.eq.2) call errore('do_cond','lorb not working with
> > ikind = 2',1)
> > so, it seems that calculation for r and t for right and left going
> > state, when left and right leads are different doesnot work. Is that
> > correct? A possible work around may be rotating the whole system by 180
> > degree, which would be like treating left lead as right lead and
> > scattering region rotated. Can I do that?
> >
> > Regards,
> > Manoj
> >
> > On Fri, 30 Oct 2009, Manoj Srivastava wrote:
> >
> > > Dear Alexander,
> > > Thank you very much! I read the code, it seems that there are
> > > quiet a few changes in 4.1.1 compared to 4.0.4 :) .So, just to make sure,
> > > if I want to calculate r and t for left going Bloch's state as well as
> > > right going Bloch's state, I need to run the code two times, one time with
> > > 'left_to_right' switch true, and another time false. I dont need to change
> > > scattering region or interchange left and right leads.
> > >
> > > Regards,
> > > Manoj Srivastava
> > >  On Thu, 29 Oct 2009, Alexander
> > > Smogunov wrote:
> > >
> > > > Dear Manoj
> > > >
> > > > On Wed, 2009-10-28 at 01:49 -0400, Manoj Srivastava wrote:
> > > > > Dear Alexander,
> > > > >  You are correct, left and right moving states are in general not
> > > > > related. I was wrong about trying to create a pair. Thanks for
> > > > > clarification.
> > > > >  I have a few more questions.
> > > > >  1. I want to find out the reflection coefficient in the code. In
> > > > > transmit.f90, transmission coefficient is |tmat(ig,n)|^2, where tmat is
> > > > > vec1(ntran-n2d-npol*nocrosr+ig,n). (line 206, of version 4.0.5).
> > > > > Reflection is not explicitly calculated in the code, but it should be
> > > > > modulus square of vec1(2*n2d+npol*norbs+ig,n) (line 234). Am I correct?
> > > >
> > > > in the 4.1 version there is output of both t and r.
> > > >
> > > >
> > > > >
> > > > >  2. In the code reflection and transmission coefficients are calculated
> > > > > for one direction lets say t++ and t+-, which is transmission and
> > > > > reflection coefficient for Bloch' state moving from - to + , or in other
> > > > > words, left to right. To calculate transmission and reflection for Bloch's
> > > > > state going from right to left, what should I do? Should i just rotate my
> > > > > system 180 degree, that way leads get interchanged and also scattering
> > > > > area has orientation 180 different from before.
> > > > >
> > > >
> > > > again in the 4.1 version you have possibility to calculate t and r for
> > > > both directions, in the do_cond.f90 the transmit routine is called with
> > > > an extra parameter which is true (false) if you want to calculate
> > > > scattering states propagating from the left (from the right).
> > > >
> > > > >  3. In the subroutine sunitary.f90, is raux measure of conservation of
> > > > > flux? If I sum all the transmission and reflecion coefficient for
> > > > > a particular Bloch's state, I should get 1, and computationally a number
> > > > > close to 1. How large could it be for S matrix not to be unitary, i m
> > > > > getting raux more than one e.g. 1.0011  but code still considers smatrix
> > > > > to be unitary.
> > > >
> > > > in the case when |R + T - 1| > 1.d-4 for some band, it should print out
> > > > the value of R+T but continues to run anyway.
> > > >
> > > > All the best,
> > > > Alexander
> > > >
> > > >
> > > >
> > > > >
> > > > > Regards,
> > > > > Manoj Srivastava
> > > > > University of Florida, Gainesville, FL
> > > > >
> > > > > <pw_forum at pwscf.org>
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > On Thu, 22
> > > > > Oct 2009, Alexander Smogunov wrote:
> > > > >
> > > > > > On Thu, 2009-10-22 at 11:34 -0400, Manoj Srivastava wrote:
> > > > > > > Dear Alexander,
> > > > > > >  Thanks for your answer. I just want to make sure. Imagine we have total
> > > > > > > number of channels in the left lead 2, so total number of Bloch's state
> > > > > > > are 4. 2 of them left going say a and b, and 2 right going say c and d.
> > > > > > > So, are you saying that for left going state a, the corresponding right
> > > > > > > going state is c? Are they ordered this way?
> > > > > >
> > > > > > what do you mean by corresponding? Left and right moving Bloch
> > > > > > states are in general not related one to another, you can even have
> > > > > > different number of them ... Only if you have some symmetry S which
> > > > > > brings kz to -kz conserving k_parallel, then the state with
> > > > > > \psi_{-kz} will be S \psi{kz}. This is true for example at 2D G point
> > > > > > when you have time reversal operation.
> > > > > >
> > > > > > Now the code simply arranges the propagating states in the order of
> > > > > > increasing |k_z|...
> > > > > >
> > > > > > Regards, Alexander
> > > > > >
> > > > > >
> > > > > > >
> > > > > > > Regards,
> > > > > > > Manoj
> > > > > > >
> > > > > > >
> > > > > > >  On Thu, 22 Oct 2009, Alexander
> > > > > > > Smogunov wrote:
> > > > > > >
> > > > > > > > Dear Manoj.
> > > > > > > >
> > > > > > > > The output of complex k vectors is performed in
> > > > > > > > summary_band.f90 routine. If you want to see all
> > > > > > > > the complex k vectors, not only propagating ones,
> > > > > > > > you can change at the end of this routine:
> > > > > > > >
> > > > > > > > -------------------
> > > > > > > >   do i = 1, nchanl
> > > > > > > >     WRITE( stdout,'(3f12.7)')  DBLE(kvall(i)), AIMAG(kvall(i)), eev
> > > > > > > >   enddo
> > > > > > > > -------------------
> > > > > > > >
> > > > > > > > to
> > > > > > > > -------------------
> > > > > > > >
> > > > > > > >   do i = 1, 2*nstl
> > > > > > > >     WRITE( stdout,'(3f12.7)')  DBLE(kvall(i)), AIMAG(kvall(i)), eev
> > > > > > > >   enddo
> > > > > > > > -------------------
> > > > > > > >
> > > > > > > > Altogether there are 2*nstl (or 2*nstr) Bloch states in the left
> > > > > > > > (or right) lead. First half, [1,nstl], are propagating or decaying to
> > > > > > > > the right states, another half, [nstl+1,2*nstl], - propagating or
> > > > > > > > decaying to the left. In each group, first nchanl states are propagating
> > > > > > > > states.
> > > > > > > >
> > > > > > > > The propagating states are normalized by the current and are arranged in
> > > > > > > > the above order at the end of jbloch.f90 routine, after the following
> > > > > > > > lines:
> > > > > > > >
> > > > > > > > !
> > > > > > > > ! Right ordering (+, >, -, <)
> > > > > > > > !
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Notice, that in the last versions the code gives in output
> > > > > > > > both propagating to the right and to the left states.
> > > > > > > >
> > > > > > > > Hope this helps,
> > > > > > > > Alexander
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > On Wed, 2009-10-21 at 14:13 -0400, Manoj Srivastava wrote:
> > > > > > > > > Dear All,
> > > > > > > > >  I am trying to figure out the left and right going Bloch's states in the
> > > > > > > > > lead from PWCOND. For a given (kx,ky)and energy we get kz. The code only
> > > > > > > > > prints out Bloch's state moving in one direction. eg. in one of the
> > > > > > > > > calculation-
> > > > > > > > > k//=(0.375,-0.375)
> > > > > > > > >  Nchannels of the left tip =            1
> > > > > > > > >         k1(2pi/a)    k2(2pi/a)       E-Ef (eV)
> > > > > > > > >
> > > > > > > > >    0.3157801   0.0000000   0.0000000
> > > > > > > > >
> > > > > > > > > Now if I want Bloch's state moving in right as well as left direction, I
> > > > > > > > > can go to kbloch.f90 subroutine, and print out all the eigen values of
> > > > > > > > > AX=exp(ikd)BX, and out of those the ones with real solution would be our
> > > > > > > > > Bloch's state, so I get for each channel two solutions-
> > > > > > > > >  kval (-0.275409421993275,1.823688001395235E-010)
> > > > > > > > >  kval (0.315780119742506,-3.611201785292708E-012)
> > > > > > > > >
> > > > > > > > > To figure out the direction, I can calculate current associated with these
> > > > > > > > > Bloch's sate and if the current is +ive it is right moving , and if '-'ive
> > > > > > > > > its left moving Bloch's state. I can print out current from jbloch.f90
> > > > > > > > > subroutine which are -
> > > > > > > > >  current eigenvalue -1.86502143831863  1.59149029314457
> > > > > > > > >
> > > > > > > > > So, clearly the first state with kval=-0.2754094 is left moving and the
> > > > > > > > > other one right moving. Upto here its clear to me how to identify left and
> > > > > > > > > right moving states.
> > > > > > > > >
> > > > > > > > > I get confused when for a given (kx,ky,E), I have more than one Bloch'
> > > > > > > > > state. In another calculation where i get multiple Bloch's state-
> > > > > > > > >  Nchannels of the left tip =            5
> > > > > > > > >         k1(2pi/a)    k2(2pi/a)       E-Ef (eV)
> > > > > > > > >
> > > > > > > > >   -0.0746301   0.0000000   0.0000000
> > > > > > > > >    0.1205527   0.0000000   0.0000000
> > > > > > > > >    0.3112908   0.0000000   0.0000000
> > > > > > > > >    0.4200218   0.0000000   0.0000000
> > > > > > > > >   -0.4935150   0.0000000   0.0000000
> > > > > > > > >
> > > > > > > > > so i did the same trick i did above to first print out kz and then
> > > > > > > > > current, which gives me -
> > > > > > > > >  kval (-0.420023481074359,1.979595081419732E-010)    (call it a)
> > > > > > > > >  kval (0.420023367986768,2.500979698670295E-011)      (b)
> > > > > > > > >  kval (-0.306507431678779,-1.236804629184431E-011)    (c)
> > > > > > > > >  kval (-0.125376071175573,-6.134512510438736E-011)    (d)
> > > > > > > > >  kval (-7.945001124706894E-002,6.683546930037856E-011)(e)
> > > > > > > > >  kval (0.106554601758169,-6.427946951285107E-011)     (f)
> > > > > > > > >  kval (8.866867725358024E-002,8.342250371574646E-011) (g)
> > > > > > > > >  kval (0.325333314672671,1.260810749228185E-011)      (h)
> > > > > > > > >  kval (-0.488725859521576,1.769197678346003E-010)     (i)
> > > > > > > > >  kval (0.479509832763231,1.765499400037283E-010)      (j)
> > > > > > > > >
> > > > > > > > > current eigenvalue  -9.31389492882581       -1.24296522993488
> > > > > > > > >   -1.21324078359658       -1.11950286753963       -1.08166842367443
> > > > > > > > >    1.08187482164864        1.11973146584263        1.21295295042188
> > > > > > > > >    1.24280031534940        9.313897787790
> > > > > > > > >
> > > > > > > > > So, the first 5 are left moving and rest are right moving. But I dont know
> > > > > > > > > the pairs. for example for left moving state a, what is the corresponding
> > > > > > > > > right moving state whether its f or g ... j ?
> > > > > > > > >
> > > > > > > > > Any help would be appreciated.
> > > > > > > > >
> > > > > > > > > Regards,
> > > > > > > > > Manoj Srivastava
> > > > > > > > > University of Florida, Gainesville.
> > > > > > > > >
> > > > > > > > > _______________________________________________
> > > > > > > > > Pw_forum mailing list
> > > > > > > > > Pw_forum at pwscf.org
> > > > > > > > > http://www.democritos.it/mailman/listinfo/pw_forum
> > > > > > > > --
> > > > > > > > e-mail: smogunov at sissa.it
> > > > > > > > home-page: http://people.sissa.it/~smogunov
> > > > > > > >
> > > > > > > > _______________________________________________
> > > > > > > > Pw_forum mailing list
> > > > > > > > Pw_forum at pwscf.org
> > > > > > > > http://www.democritos.it/mailman/listinfo/pw_forum
> > > > > > > >
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > Pw_forum mailing list
> > > > > > > Pw_forum at pwscf.org
> > > > > > > http://www.democritos.it/mailman/listinfo/pw_forum
> > > > > > --
> > > > > > e-mail: smogunov at sissa.it
> > > > > > home-page: http://people.sissa.it/~smogunov
> > > > > >
> > > > > > _______________________________________________
> > > > > > Pw_forum mailing list
> > > > > > Pw_forum at pwscf.org
> > > > > > http://www.democritos.it/mailman/listinfo/pw_forum
> > > > > >
> > > > >
> > > > > _______________________________________________
> > > > > Pw_forum mailing list
> > > > > Pw_forum at pwscf.org
> > > > > http://www.democritos.it/mailman/listinfo/pw_forum
> > > > --
> > > > e-mail: smogunov at sissa.it
> > > > home-page: http://people.sissa.it/~smogunov
> > > >
> > > > _______________________________________________
> > > > Pw_forum mailing list
> > > > Pw_forum at pwscf.org
> > > > http://www.democritos.it/mailman/listinfo/pw_forum
> > > >
> > >
> > >
> >
> > _______________________________________________
> > Pw_forum mailing list
> > Pw_forum at pwscf.org
> > http://www.democritos.it/mailman/listinfo/pw_forum
> --
> e-mail: smogunov at sissa.it
> home-page: http://people.sissa.it/~smogunov
>
> _______________________________________________
> Pw_forum mailing list
> Pw_forum at pwscf.org
> http://www.democritos.it/mailman/listinfo/pw_forum
>