1C............................................................... 2C 3 subroutine read_ev(ii2,nat,ivmin,ivmax,evr,freq) 4C 5C reads selected modes only from ii2 ('vector' file), 6C check for consistency, and keeps selected modes only 7C (ivmin to ivmax) 8C 9 implicit none 10 integer ii2,ii,nat,iat,ivmin,ivmax,iev,idum 11 double precision qq(3),dummy(3),small, 12 . freq(ivmin:ivmax),evr(3,nat,ivmin:ivmax) 13 data small/10.e-4/ 14C 15 rewind (ii2) 16 read (ii2,100,err=301) ! leading line 17 read (ii2,101,err=301) (qq(ii),ii=1,3) 18 if (sqrt(qq(1)**2+qq(2)**2+qq(3)**2).gt.small) then 19 write (6,*) ' Cannot vizualize for q.ne.0 !' 20 stop 21 endif 22 do iev=1,nat*3 23 read (ii2,102,err=302,end=401) idum 24 if (idum.ne.iev) then 25 write (6,*) ' Stop in read_ev: expected eigenvector ',iev, 26 . ' but found ',idum 27 stop 28 endif 29 if (iev.lt.ivmin.or.iev.gt.ivmax) then ! -- skip these modes 30 read (ii2,103,err=303) dummy(1) 31 read (ii2,100) ! Eigenvector, real part follows 32 do iat=1,nat 33 read (ii2,104,err=304) (dummy(ii),ii=1,3) 34 enddo 35 read (ii2,100) ! Eigenvector, imag part follows 36 do iat=1,nat 37 read (ii2,104,err=305) (dummy(ii),ii=1,3) 38 enddo 39 if ((dummy(1)**2+dummy(2)**2+dummy(3)**2).gt.small) then 40 print *,' For iev =',iev,' iat =',iat, 41 . ' Imag. part of eigenvector is not zero!', 42 . ' - Unsuited for visualization' 43 stop 44 endif 45 else ! --- selected modes... 46 read (ii2,103,err=303) freq(iev) 47 read (ii2,100) ! Eigenvector, real part follows 48 do iat=1,nat 49 read (ii2,104,err=304) (evr(ii,iat,iev),ii=1,3) 50 enddo 51 read (ii2,100) ! Eigenvector, imag part follows 52 do iat=1,nat 53 read (ii2,104,err=305) (dummy(ii),ii=1,3) 54 enddo 55 if ((dummy(1)**2+dummy(2)**2+dummy(3)**2).gt.small) then 56 print *,' For iev =',iev,' iat =',iat, 57 . ' Imag. part of eigenvector is not zero!', 58 . ' - Unsuited for visualization' 59 stop 60 endif 61 endif 62 enddo 63 return 64 301 print *,' Error in 1st or 2d line of .vector file' 65 stop 66 302 print *,' Error reading Eigenvector line, last iev=',iev 67 stop 68 303 print *,' Error reading Frequency line, iev=',iev 69 stop 70 304 print *,' Error reading real part of eigenvector ',iev, 71 . ' iat=',iat 72 stop 73 305 print *,' Error reading imag part of eigenvector ',iev, 74 . ' iat=',iat 75 stop 76 401 print *,' End of file while expecting eigenvector ',iev 77 stop 78 100 format() 79 101 format(15x,3f12.6) 80 102 format(14x,i6) 81 103 format(14x,f13.6) 82 104 format(3e12.4) 83 end 84