29       integer nev,iter(*),n,i,j,k,l,m,iii,ksmall,nincrement,
    33       real*8 cc(nev,*),d(*),size
    35       complex*16 a(nev,*),b(nev,*),x(nev,*),eiga(*),eigb(*),eigcorio(*),
    36      &  temp(nev,*),deig,eig,eignew
    48       if(d(i).lt.0.d0) cycle
    53          loop1: 
do m=1,nincrement
    58                eig=dsqrt(d(i))*(1.d0,0.d0)*m/nincrement
    61      &          (dsqrt(d(i))-dsqrt(d(i-1)))*m/nincrement)*(1.d0,0.d0)
    68                      a(k,l)=eig*cc(k,l)*(0.d0,1.d0)
    69                      b(k,l)=-cc(k,l)*(0.d0,1.d0)
    71                   a(k,k)=a(k,k)-eig*eig+d(k)
    72                   b(k,k)=b(k,k)+2.d0*eig
    77                call dlzhes(n,a,n,b,n,temp,n,wantx)
    78                call dlzit(n,a,n,b,n,temp,n,wantx,iter,eiga,eigb)
    80                if(iter(1).eq.-1) 
then    81                   write(*,*) 
'*ERROR in coriolissolve: fatal error'    82                   write(*,*) 
'       in dlzit'    84                elseif(cdabs(eigb(1)).lt.1.d-10) 
then    85                   write(*,*) 
'*ERROR in coriolissolve: eigenvalue'    86                   write(*,*) 
'       out of bounds'    92                      if(cdabs(deig).lt.size) 
then    97                   deig=eiga(ksmall)/eigb(ksmall)
   102                if((cdabs(deig).lt.1.d-3*cdabs(eig)).or.
   103      &              (cdabs(deig).lt.1.d-3).or.(iii.eq.100)) 
then   109                   if((i.ne.1).or.(m.ne.1)) 
then   110                      call ident2(eigcorio,eignew,nevcomplex,ninc,id)
   112                         if((cdabs(eignew-eigcorio(id)).lt.
   113      &                       2.d-3*cdabs(eignew)).or.
   114      &                     (cdabs(eignew).lt.1.d-3)) cycle loop1
   116                      if(id.ne.nevcomplex) 
then   117                         if((cdabs(eignew-eigcorio(id+1)).lt.
   118      &                       2.d-3*cdabs(eignew)).or.
   119      &                     (cdabs(eignew).lt.1.d-3)) cycle loop1
   127                         a(k,l)=eig*cc(k,l)*(0.d0,1.d0)
   128                         b(k,l)=-cc(k,l)*(0.d0,1.d0)
   130                      a(k,k)=a(k,k)-eig*eig+d(k)
   131                      b(k,k)=b(k,k)+2.d0*eig
   134                   call dlzhes(n,a,n,b,n,temp,n,wantx)
   135                   call dlzit(n,a,n,b,n,temp,n,wantx,iter,eiga,eigb)
   139                   nevcomplex=nevcomplex+1
   141                   do k=nevcomplex,id+2,-1
   142                      eigcorio(k)=eigcorio(k-1)
   149                      x(j,id+1)=temp(j,ksmall)
   151                   eigcorio(id+1)=eignew
   153                   if(nevcomplex.eq.nev) 
exit loop2
 subroutine dlzhes(N, A, NA, B, NB, X, NX, WANTX)
Definition: dlz.f:7
 
subroutine ident2(x, px, n, ninc, id)
Definition: ident2.f:27
 
subroutine dlzit(N, A, NA, B, NB, X, NX, WANTX, ITER, EIGA, EIGB)
Definition: dlz.f:161