Dear siesta and transiesta users:

I have recently read the transiesta code. But when I came to the part where a 
k-denpendent Hamiltonian (Util\TBTrans\setupkham2.F) was built, I found there 
was something different from the uaual one (such as  Src\diagk.F).

To be specific, there is a tranform for the xij, each element minus the 
distance between the equivalent i and j orbital in the unit cell. This will 
results Hij (has a nuo*nuo dimension, with nuo the No. of orbital in a unit 
cell) will loose a phase (exp(-i*dij), where dij is the distance between i and 
j orbital in the unitcell). However, the lost phase for each Hij is different. 
So I think the two k-denpendent Hamiltonian from setupkham2.F and diagk.F are 
different.

Can anyone give some hint on the doing in setupkham2.F?

Best regards.

Yours

Guangping Zhang

PS: some relevent codes:

1. From diagk.F:

          Saux = 0.0_dp
          Haux = 0.0_dp
          do iuo = 1,nuo
            do j = 1,numh(iuo)
              ind = listhptr(iuo) + j
              jo = listh(ind)
              juo = indxuo(jo)
              kxij = kpoint(1,ik) * xij(1,ind) +
     .               kpoint(2,ik) * xij(2,ind) +
     .               kpoint(3,ik) * xij(3,ind)
              ckxij = cos(kxij)
              skxij = sin(kxij)
C Note : sign of complex part changed to match change in order of iuo/juo
              Saux(1,juo,iuo) = Saux(1,juo,iuo) + S(ind)*ckxij
              Saux(2,juo,iuo) = Saux(2,juo,iuo) - S(ind)*skxij
              Haux(1,juo,iuo) = Haux(1,juo,iuo) + H(ind,ispin)*ckxij
              Haux(2,juo,iuo) = Haux(2,juo,iuo) - H(ind,ispin)*skxij
            enddo
          enddo


2. From setupkham2.F:

             do ia=1,nua
               do iuo=lasto(ia-1)+1,lasto(ia)
                  xo(1,iuo)=xa(1,ia)
                  xo(2,iuo)=xa(2,ia)
                  xo(3,iuo)=xa(3,ia)
               end do           !iuo
            end do              !ia in uc


           do iuo = 1,nuo
            do j = 1,numh(iuo)
              ind = listhptr(iuo) + j
              jo = listh(ind)
              juo = indxuo(jo)
              xij(1,ind)=xij(1,ind)-(xo(1,juo)-xo(1,iuo))
              xij(2,ind)=xij(2,ind)-(xo(2,juo)-xo(2,iuo))
              xij(3,ind)=xij(3,ind)-(xo(3,juo)-xo(3,iuo))
            enddo
            enddo


          do iuo = 1,nuo
            do j = 1,numh(iuo)
              ind = listhptr(iuo) + j
              jo = listh(ind)
              juo = indxuo(jo)
              kxij = (k(1) * xij(1,ind) +
     .                k(2) * xij(2,ind) +
     .                k(3) * xij(3,ind) )
              cphase = cdexp(dcmplx(0d0,1d0)*kxij)
              inn = iuo+(juo-1)*nuo
              Hk(inn) = Hk(inn)+H(ind,ispin)*cphase
              Sk(inn) = Sk(inn)+S(ind)*cphase
            enddo
          enddo
2012-05-28



Guangping Zhang

Responder a