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

2009-10-30 Thread Manoj Srivastava
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
> > > 
> > > 
> > > 
> > >  
> > > 
> > > 
> > > 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. 

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

2009-10-28 Thread Manoj Srivastava
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?

 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.

 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. 

Regards, 
Manoj Srivastava
University of Florida, Gainesville, FL



 


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.000   0.000
> > > > 
> > > > 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 

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

2009-10-22 Thread Alexander Smogunov
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.000   0.000
> > > 
> > > 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.000   0.000
> > >0.1205527   0.000   0.000
> > >0.3112908   0.000   0.000
> > >0.4200218   0.000   0.000
> > >   -0.4935150   0.000   0.000
> > > 
> > > 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.32514672671,1.260810749228185E-011)  (h)
> > >  kval (-0.488725859521576,1.769197678346003E-010) (i)
> > >  kval (0.479509832763231,1.765499400037283E-010)  (j)

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

2009-10-22 Thread Manoj Srivastava
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?

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.000   0.000
> > 
> > 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.000   0.000
> >0.1205527   0.000   0.000
> >0.3112908   0.000   0.000
> >0.4200218   0.000   0.000
> >   -0.4935150   0.000   0.000
> > 
> > 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.32514672671,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.081874821648641.119731465842631.21295295042188
> >1.242800315349409.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: 

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

2009-10-22 Thread Alexander Smogunov
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.000   0.000
> 
> 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.000   0.000
>0.1205527   0.000   0.000
>0.3112908   0.000   0.000
>0.4200218   0.000   0.000
>   -0.4935150   0.000   0.000
> 
> 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.32514672671,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.081874821648641.119731465842631.21295295042188
>1.242800315349409.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] Left and right going Bloch's states from PWCOND

2009-10-21 Thread Manoj Srivastava
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.000   0.000

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.000   0.000
   0.1205527   0.000   0.000
   0.3112908   0.000   0.000
   0.4200218   0.000   0.000
  -0.4935150   0.000   0.000

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.32514672671,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.081874821648641.119731465842631.21295295042188
   1.242800315349409.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.