SUBROUTINE diag_out(nmat, matrix, coord, dcoord, fac, eig, evec, filelabel) USE Numeric_Kinds_Module IMPLICIT NONE CHARACTER(LEN=*),INTENT(IN) :: filelabel INTEGER,INTENT(IN) :: nmat REAL(dp),INTENT(IN) :: matrix(nmat,nmat), coord(nmat), fac, dcoord REAL(dp),INTENT(OUT) :: eig(nmat) , evec(nmat,nmat) INTEGER :: nmatvec, i, j, k REAL(dp) :: scrtch(nmat) REAL(dp),ALLOCATABLE :: matvec(:) SAVE nmatvec=nmat*(nmat+1)/2 ALLOCATE( matvec(nmatvec) ) ! OPEN(111,file=TRIM(BinOutdir)//'t_chi_full.bin',form='unformatted') ! read(111) tchifull ! close(111) eig=0.d0 evec=0.d0 matvec=0.d0 scrtch=0.d0 k=0 DO i=1,nmat DO j=1,i k=k+1 matvec(k)=matrix(i,j)*fac ENDDO ENDDO CALL tdiagrw( matvec , eig , evec , scrtch , nmat , nmat , nmatvec ) evec=evec/SQRT(dcoord) ! chisum1=0.d0 ! Possibly out put all to a binary too! ! OPEN(110,file=TRIM(filelabel)//'_eigvals.txt') ! OPEN(111,FILE=TRIM(filelabel)//'_eigvecs.txt') ! OPEN(112,FILE=TRIM(filelabel)//'_eigvec_01.txt') ! OPEN(113,FILE=TRIM(filelabel)//'_eigvec_02.txt') ! DO i=1,nmat ! WRITE(110,'(i4,ES15.7)') i, eig(i) ! write(111,'(1000(ES15.7))') coord(i), (evec(i, j),j=1,nmat) ! write(112,'(2(ES15.7))') coord(i), evec(i,1) ! write(113,'(2(ES15.7))') coord(i), evec(i,2) ! chisum1=chisum1+rho_evec(i,1)*rho_evec(i,1) ! ENDDO ! CLOSE(110) ! CLOSE(111) ! CLOSE(112) ! CLOSE(113) ! PRINT*,'chisum1 = ',chisum1 DEALLOCATE( matvec ) END SUBROUTINE diag_out