!----------------------------------------------------------------------- subroutine eigrot(nspin,nx,nupdwn,iupdwn,f,lambda,c0,cm) !----------------------------------------------------------------------- ! computes: the eigenvalues of the real symmetric matrix lambda ! the eigenvalues are printed out in electron volts. ! rotate wavefunctions to get eigenfunctions use elct ,only: ngw ,n use gvec ,only: ng #ifdef PARA use para_mod ,only: me #endif implicit none integer nspin, nx, nupdwn(nspin), iupdwn(nspin) real(kind=8) lambda(nx,nx), f(nx) ! local variables real(kind=8) lambdar(nx,nx), wr(nx), fv1(nx),fm1(2,nx),u(nx,nx) real(kind=8) au integer iss,j,i,ierr,ivec,in,ig,inp complex(kind=8) c0(ngw,nx), cm(ngw,nx) write(6,*) write(6,*) '---> entering EIGROT' write(6,*) au=27.212 ierr=0 ivec=1 do iss=1,nspin do i=1,nupdwn(iss) do j=1,nupdwn(iss) lambdar(j,i)=lambda(iupdwn(iss)-1+j,iupdwn(iss)-1+i) end do end do call rs(nx,nupdwn(iss),lambdar,wr,ivec,u,fv1,fm1,ierr) do i=1,nupdwn(iss) if (f(iupdwn(iss)-1+i).gt.1.e-6) then wr(i)=au*wr(i)/f(iupdwn(iss)-1+i) else wr(i)=0.0 end if end do ! print out eigenvalues write(6,12) 0., 0., 0. write(6,14) (wr(i),i=1,nupdwn(iss)) #ifdef PARA if (me.eq.1) then #endif do i=1,nupdwn(iss) write(104,'(f12.5)') wr(i) end do #ifdef PARA end if #endif end do 12 format(//' eigenvalues at k-point: ',3f6.3) 14 format(7f12.5) write(6,*) !rotate wave function do in=1,n do ig=1,ngw c0(ig,in)=(0.,0.) end do end do do in=1,n do ig=1,ngw do inp=1,n c0(ig,in)=c0(ig,in)+cm(ig,inp)*u(inp,in) end do end do end do do in=1,n do ig=1,ngw cm(ig,in)=c0(ig,in) end do end do write(6,*) write(6,*) '<--- exiting EIGROT' write(6,*) return end