28 logical global,cycmpcactive
31 character*20 solver,labmpc(*)
32 character*132 textpart(16)
34 integer nmethod,mei(4),ncv,mxiter,istep,istat,iperturb(2),i,
36 & n,key,iline,ipol,inl,ipoinp(2,*),inp(3,*),nev,ithermal,isolver,
37 & ipoinpc(0:*),nmpcred,kflag,ipompc(*),ikmpc(*),ilmpc(*),nmpc
39 real*8 fei(3),pi,fmin,fmax,tol,xboun(*),fmpc(*)
53 write(*,*)
'*ERROR in frequencies: *FREQUENCY can only be used' 54 write(*,*)
' within a STEP' 60 if(ithermal.gt.1)
then 68 solver(1:20)=
'SPOOLES ' 69 elseif(isolver.eq.2)
then 70 solver(1:16)=
'ITERATIVESCALING' 71 elseif(isolver.eq.3)
then 72 solver(1:17)=
'ITERATIVECHOLESKY' 73 elseif(isolver.eq.4)
then 75 elseif(isolver.eq.5)
then 77 elseif(isolver.eq.7)
then 82 if(textpart(i)(1:7).eq.
'SOLVER=')
then 83 read(textpart(i)(8:27),
'(a20)') solver
84 elseif(textpart(i)(1:11).eq.
'STORAGE=YES')
then 86 elseif(textpart(i)(1:9).eq.
'GLOBAL=NO')
then 88 elseif(textpart(i)(1:15).eq.
'CYCMPC=INACTIVE')
then 92 &
'*WARNING in frequencies: parameter not recognized:' 94 & textpart(i)(1:index(textpart(i),
' ')-1)
100 if(solver(1:7).eq.
'SPOOLES')
then 102 elseif(solver(1:16).eq.
'ITERATIVESCALING')
then 103 write(*,*)
'*WARNING in frequencies: the iterative scaling' 104 write(*,*)
' procedure is not available for frequency' 105 write(*,*)
' calculations; the default solver is used' 106 elseif(solver(1:17).eq.
'ITERATIVECHOLESKY')
then 107 write(*,*)
'*WARNING in frequencies: the iterative scaling' 108 write(*,*)
' procedure is not available for frequency' 109 write(*,*)
' calculations; the default solver is used' 110 elseif(solver(1:3).eq.
'SGI')
then 112 elseif(solver(1:5).eq.
'TAUCS')
then 114 elseif(solver(1:13).eq.
'MATRIXSTORAGE')
then 116 elseif(solver(1:7).eq.
'PARDISO')
then 119 write(*,*)
'*WARNING in frequencies: unknown solver;' 120 write(*,*)
' the default solver is used' 123 if((isolver.eq.2).or.(isolver.eq.3))
then 124 write(*,*)
'*ERROR in frequencies: the default solver ',
126 write(*,*)
' cannot be used for frequency calculations ' 131 if(iperturb(1).gt.1) iperturb(1)=0
134 if(isolver.ne.6)
then 135 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
136 & ipoinp,inp,ipoinpc)
137 if((istat.lt.0).or.(key.eq.1))
then 138 write(*,*)
'*ERROR in frequencies: definition not complete' 144 read(textpart(1)(1:10),
'(i10)',iostat=istat) nev
145 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
148 write(*,*)
'*ERROR in frequencies: less than 1 eigenvalue re 156 if(textpart(2)(1:1).ne.
' ')
then 157 read(textpart(2)(1:20),
'(f20.0)',iostat=istat) fmin
158 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
161 if(textpart(3)(1:1).ne.
' ')
then 162 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) fmax
163 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
184 if(.not.cycmpcactive)
then 191 call isortii(ilmpc,ikmpc,nmpc,kflag)
194 if((labmpc(i)(1:6).eq.
'CYCLIC').or.
195 & (labmpc(i)(1:9).eq.
'SUBCYCLIC')) cycle
197 ipompc(nmpcred)=ipompc(i)
198 labmpc(nmpcred)=labmpc(i)
199 fmpc(nmpcred)=fmpc(i)
200 ikmpc(nmpcred)=ikmpc(i)
201 ilmpc(nmpcred)=nmpcred
205 call isortii(ikmpc,ilmpc,nmpc,kflag)
215 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
216 & ipoinp,inp,ipoinpc)
subroutine isortii(ix, iy, n, kflag)
Definition: isortii.f:6
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21