Merge branch 'prerelease-3.2.1' into czarek
[unres.git] / source / unres / src_CSA_DiL / bank.F
diff --git a/source/unres/src_CSA_DiL/bank.F b/source/unres/src_CSA_DiL/bank.F
deleted file mode 100644 (file)
index fc365e3..0000000
+++ /dev/null
@@ -1,1353 +0,0 @@
-#ifdef MPI
-cc---------------------------------
-      subroutine refresh_bank(ntrial)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'mpif.h'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.CHAIN'
-      include 'COMMON.VAR'
-      include 'COMMON.CONTROL'
-      character chacc
-      integer iaccn
-      double precision l_diff(mxio),denep
-
-      do i=0,mxmv
-        do j=1,3
-          nstatnx_tot(i,j)=nstatnx_tot(i,j)+nstatnx(i,j)
-          nstatnx(i,j)=0
-        enddo
-      enddo
-
-c loop over all newly obtained conformations
-      do n=1,ntrial
-       chacc=' '
-       iaccn=0
-       nstatnx(movernx(n),1)=nstatnx(movernx(n),1)+1
-cccccccccccccccccccccccccccccccccccccccccccc
-cjlee
-       if(iref.ne.0) then
-        if(rmsn(n).gt.rmscut.or.pncn(n).lt.pnccut) goto 100
-       endif
-cjlee
-       if(etot(n).gt.ebmax) goto 100
-c Find the conformation closest to the conformation n in the bank
-       difmin=9.d9
-       do m=1,nbank
-        call get_diff12(dihang(1,1,1,n),bvar(1,1,1,m),l_diff(m))
-        if(l_diff(m).lt.difmin) then
-         difmin=l_diff(m)
-         idmin=m
-        endif
-       enddo
-
-       if(difmin.lt.cutdif) then
-c n is redundant to idmin
-        if(etot(n).lt.bene(idmin)) then
-         if(etot(n).lt.bene(idmin)-0.01d0) then
-          ibank(idmin)=0
-          jbank(idmin)=0
-         endif
-         denep=bene(idmin)-etot(n)
-         call replace_bvar(idmin,n)
-crc Update dij
-         do i1=1,nbank
-           if (i1.ne.idmin) then
-            dij(i1,idmin)=l_diff(i1)
-            dij(idmin,i1)=l_diff(i1)
-           endif
-         enddo
-         chacc='c'
-         iaccn=idmin
-         nstatnx(movernx(n),2)=nstatnx(movernx(n),2)+1
-         if(idmin.eq.ibmax) call find_max
-        endif
-       else
-c got new conformation
-        del_ene=0.0d0
-        if(ebmax-ebmin.gt.del_ene) then
-         denep=ebmax-etot(n)
-         call replace_bvar(ibmax,n)
-crc Update dij
-         do i1=1,nbank
-           if (i1.ne.ibmax) then
-            dij(i1,ibmax)=l_diff(i1)
-            dij(ibmax,i1)=l_diff(i1)
-           endif
-         enddo
-         chacc='f'
-         iaccn=ibmax
-         nstatnx(movernx(n),3)=nstatnx(movernx(n),3)+1
-         ibank(ibmax)=0
-         jbank(ibmax)=0
-         call find_max
-        else
-         if(del_ene.lt.0.0001) then
-          write (iout,*) 'ERROR in refresh_bank: '
-          write (iout,*) 'ebmax: ',ebmax
-          write (iout,*) 'ebmin: ',ebmin
-          write (iout,*) 'del_ene: ',del_ene
-crc          call mpi_abort(mpi_comm_world,ierror,ierrcode)
-         endif
-cjp nbmax is never defined so condition below is always false
-c         if(nbank.lt.nbmax) then
-c          nbank=nbank+1
-c          call replace_bvar(nbank,n)
-c          ibank(nbank)=0
-c          jbank(nbank)=0
-c         else
-          call replace_bvar(ibmax,n)
-          ibank(ibmax)=0
-          jbank(ibmax)=0
-          call find_max
-c         endif
-        endif
-       endif
-cccccccccccccccccccccccccccccccccccccccccccc
-  100 continue
-       if (iaccn.eq.0) then
-        if (iref.eq.0) then 
-         write(iout,'(i3,a3,i4,i5,a6,1pe12.4,a4,i3,i4,3i5)') 
-     &    indb(n,2),' e ',indb(n,3),indb(n,1),' etot ',etot(n),' mv ',
-     &    indb(n,5),indb(n,4),indb(n,7),indb(n,8),indb(n,9)
-        else
-      write(iout,'(i3,a3,i4,i5,a6,1pe12.4,a4,i3,i4,3i5
-     &       ,a5,0pf4.1,a5,f3.0)') 
-     &    indb(n,2),' e ',indb(n,3),indb(n,1),' etot ',etot(n),' mv ',
-     &    indb(n,5),indb(n,4),indb(n,7),indb(n,8),indb(n,9),
-     &    ' rms ',rmsn(n),' %NC ',pncn(n)*100
-        endif
-       else
-        if (iref.eq.0) then
-        write(iout,'(i3,a3,i4,i5,a6,1pe12.4,a4,i3,i4,3i5,
-     &         1x,a1,i4,0pf8.1,0pf8.1)') 
-     &    indb(n,2),' e ',indb(n,3),indb(n,1),' etot ',etot(n),' mv ',
-     &    indb(n,5),indb(n,4),indb(n,7),indb(n,8),indb(n,9),
-     &    chacc,iaccn,difmin,denep
-        else
-         write(iout,'(i3,a3,i4,i5,a6,1pe12.4,a4,i3,i4,3i5,a5,
-     &                   0pf4.1,a5,f3.0,1x,a1,i4,0pf8.1,0pf8.1)') 
-     &    indb(n,2),' e ',indb(n,3),indb(n,1),' etot ',etot(n),' mv ',
-     &    indb(n,5),indb(n,4),indb(n,7),indb(n,8),indb(n,9),
-     &    ' rms ',rmsn(n),' %NC ',pncn(n)*100,
-     &     chacc,iaccn,difmin,denep
-        endif
-       endif
-      enddo
-c end of loop over all newly obtained conformations
-      call print_mv_stat
-crc Update dij
-crc moved up, saves some get_diff12 calls 
-crc
-crc      do i1=1,nbank-1
-crc       do i2=i1+1,nbank
-crc        if(jbank(i1).eq.0.or.jbank(i2).eq.0) then
-crc         call get_diff12(bvar(1,1,1,i1),bvar(1,1,1,i2),diff)
-crc         dij(i1,i2)=diff
-crc         dij(i2,i1)=diff
-crc        endif
-crc       enddo
-crc      enddo
-
-      do i=1,nbank
-       jbank(i)=1
-      enddo
-
-      return
-      end
-c---------------------------------
-      subroutine replace_bvar(iold,inew)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'mpif.h'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      include 'COMMON.CHAIN'
-      include 'COMMON.CONTROL'
-      include 'COMMON.SBRIDGE'
-
-      if (iold.gt.mxio .or. iold.lt.1 .or. inew.gt.mxio .or. inew.lt.1) 
-     &  then
-        write (iout,*) 'Dimension ERROR in REPLACE_BVAR: IOLD',iold,
-     &  ' INEW',inew
-        call mpi_abort(mpi_comm_world,ierror,ierrcode)
-      endif
-      do k=1,numch
-       do j=2,nres-1
-        do i=1,4
-         bvar(i,j,k,iold)=dihang(i,j,k,inew)
-        enddo
-       enddo
-      enddo
-      bene(iold)=etot(inew)
-      brmsn(iold)=rmsn(inew)
-      bpncn(iold)=pncn(inew)
-
-      if(bene(iold).lt.ebmin) then
-        ebmin=bene(iold)
-        ibmin=iold
-      endif
-
-      if(vdisulf) then
-        bvar_nss(iold)=nss_out(inew)
-cd        write(iout,*) 'SS BANK',iold,bvar_nss(iold)
-        do i=1,bvar_nss(iold)
-          bvar_ss(1,i,iold)=iss_out(i,inew)
-          bvar_ss(2,i,iold)=jss_out(i,inew)
-cd          write(iout,*) 'SS',bvar_ss(1,i,iold)-nres,
-cd     &          bvar_ss(2,i,iold)-nres
-        enddo
-
-       bvar_ns(iold)=ns-2*bvar_nss(iold)
-cd        write(iout,*) 'CYS #free ', bvar_ns(iold)
-          k=0
-          do i=1,ns
-            j=1
-            do while( iss(i).ne.iss_out(j,inew)-nres .and. 
-     &                 iss(i).ne.jss_out(j,inew)-nres .and. 
-     &                 j.le.nss_out(inew))
-               j=j+1 
-            enddo
-            if (j.gt.nss_out(inew)) then            
-              k=k+1   
-               bvar_s(k,iold)=iss(i)
-             endif
-           enddo
-cd         write(iout,*) 'CYS free',(bvar_s(k,iold),k=1,bvar_ns(iold))
-      endif
-
-      return
-      end
-c---------------------------------------
-      subroutine write_rbank(jlee,adif,nft)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      include 'COMMON.CHAIN'
-      include 'COMMON.GEO'
-
-      open(icsa_rbank,file=csa_rbank,status="unknown")
-      write (icsa_rbank,900) jlee,nbank,nstep,nft,icycle,adif
-      do k=1,nbank
-       write (icsa_rbank,952) k,rene(k),rrmsn(k),rpncn(k)
-       do j=1,numch
-        do l=2,nres-1
-         write (icsa_rbank,850) (rad2deg*rvar(i,l,j,k),i=1,4)
-        enddo
-       enddo
-      enddo
-      close(icsa_rbank)
-
-  850 format (10f8.3)
-  900 format (1x,"jlee =",i3,3x,"nbank =",i4,3x,"nstep =",
-     &        i8,i10,i2,f15.5)
-  952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3
-     &           ,' %NC ',0pf5.2)
-
-      return
-      end
-c---------------------------------------
-      subroutine read_rbank(jlee,adif)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'mpif.h'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      include 'COMMON.CHAIN'
-      include 'COMMON.GEO'
-      include 'COMMON.SETUP'
-      character*80 karta
-
-      open(icsa_rbank,file=csa_rbank,status="old")
-      read (icsa_rbank,901) jleer,nbankr,nstepr,nftr,icycler,adif
-      print *,jleer,nbankr,nstepr,nftr,icycler,adif
-c       print *, 'adif from read_rbank ',adif
-      if(nbankr.ne.nbank) then
-        write (iout,*) 'ERROR in READ_BANK: NBANKR',nbankr,
-     &  ' NBANK',nbank
-        call mpi_abort(mpi_comm_world,ierror,ierrcode)
-      endif
-      if(jleer.ne.jlee) then
-        write (iout,*) 'ERROR in READ_BANK: JLEER',jleer,
-     &  ' JLEE',jlee
-        call mpi_abort(mpi_comm_world,ierror,ierrcode)
-      endif
-
-      kk=0
-      do k=1,nbankr
-        read (icsa_rbank,'(a80)') karta
-        write(iout,*) "READ_RBANK: kk=",kk
-        write(iout,*) karta
-c        if (index(karta,"*").gt.0) then
-c          write (iout,*) "***** Stars in bankr ***** k=",k,
-c     &      " skipped"
-c          do j=1,numch
-c            do l=2,nres-1
-c              read (30,850) (rdummy,i=1,4)
-c            enddo
-c          enddo
-c        else
-          kk=kk+1
-          call reada(karta,"total E",rene(kk),1.0d20)
-          call reada(karta,"rmsd from N",rrmsn(kk),0.0d0)
-          call reada(karta,"%NC",rpncn(kk),0.0d0)
-          write(iout,*)"total E",bene(kk),"rmsd from N",brmsn(kk),
-     &      "%NC",bpncn(kk),ibank(kk)
-c          read (icsa_rbank,953) kdummy,rene(kk),rrmsn(kk),rpncn(kk)
-          do j=1,numch
-            do l=2,nres-1
-              read (icsa_rbank,850) (rvar(i,l,j,kk),i=1,4)
-c              write (iout,850) (rvar(i,l,j,kk),i=1,4)
-              do i=1,4
-                rvar(i,l,j,kk)=deg2rad*rvar(i,l,j,kk)
-              enddo
-            enddo
-          enddo
-c        endif
-      enddo
-cd      write (*,*) "read_rbank ******************* kk",kk,
-cd     &  "nbankr",nbankr
-      if (kk.lt.nbankr) nbankr=kk
-cd      do kk=1,nbankr
-cd          print *,"kk=",kk
-cd          do j=1,numch
-cd            do l=2,nres-1
-cd              write (*,850) (rvar(i,l,j,kk),i=1,4)
-cd            enddo
-cd          enddo
-cd      enddo
-      close(icsa_rbank)
-
-  850 format (10f8.3)
-  901 format (1x,6x,i3,3x,7x,i4,3x,7x,i8,i10,i2,f15.5)
-  953 format (1x,1x,i4,9x,f12.3,13x,f8.3,5x,f5.2)
-
-      return
-      end
-c---------------------------------------
-      subroutine write_bank(jlee,nft)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      include 'COMMON.CHAIN'
-      include 'COMMON.GEO'
-      include 'COMMON.SBRIDGE'
-      include 'COMMON.CONTROL'
-      character*7 chtmp
-      character*40 chfrm
-      external ilen
-
-      open(icsa_bank,file=csa_bank,status="unknown")
-      write (icsa_bank,900) jlee,nbank,nstep,nft,icycle,cutdif
-      write (icsa_bank,902) nglob_csa, eglob_csa
-      open (igeom,file=intname,status='UNKNOWN')
-      do k=1,nbank
-       write (icsa_bank,952) k,bene(k),brmsn(k),bpncn(k),ibank(k)
-       if (vdisulf) write (icsa_bank,'(101i4)') 
-     &    bvar_nss(k),((bvar_ss(j,i,k),j=1,2),i=1,bvar_nss(k))
-       do j=1,numch
-        do l=2,nres-1
-         write (icsa_bank,850) (rad2deg*bvar(i,l,j,k),i=1,4)
-        enddo
-       enddo
-       if (bvar_nss(k).le.9) then
-         write (igeom,'(I5,F10.2,I2,9(1X,2I3))') k,bene(k),
-     &     bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,bvar_nss(k))
-       else
-         write (igeom,'(I5,F10.2,I2,9(1X,2I3))') k,bene(k),
-     &     bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,9)
-         write (igeom,'(3X,11(1X,2I3))') (bvar_ss(1,i,k),
-     &                                bvar_ss(2,i,k),i=10,bvar_nss(k))
-       endif
-       write (igeom,200) (rad2deg*bvar(1,i,1,k),i=2,nres-1)
-       write (igeom,200) (rad2deg*bvar(2,i,1,k),i=2,nres-2)
-       write (igeom,200) (rad2deg*bvar(3,i,1,k),i=2,nres-1)
-       write (igeom,200) (rad2deg*bvar(4,i,1,k),i=2,nres-1)
-      enddo
-      close(icsa_bank)
-      close(igeom)
-
-      if (nstep/200.gt.ilastnstep) then
-
-       ilastnstep=(ilastnstep+1)*1.5
-       write(chfrm,'(a2,i1,a1)') '(i',int(dlog10(dble(nstep))+1),')'
-       write(chtmp,chfrm) nstep
-       open(icsa_int,file=prefix(:ilen(prefix))
-     &         //'_'//chtmp(:ilen(chtmp))//'.int',status='UNKNOWN')
-       do k=1,nbank
-        if (bvar_nss(k).le.9) then
-         write (icsa_int,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),
-     &  bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,bvar_nss(k))
-        else
-         write (icsa_int,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),
-     &     bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,9)
-         write (icsa_int,'(3X,11(1X,2I3))') (bvar_ss(1,i,k),
-     &                         bvar_ss(2,i,k),i=10,bvar_nss(k))
-        endif
-        write (icsa_int,200) (rad2deg*bvar(1,i,1,k),i=2,nres-1)
-        write (icsa_int,200) (rad2deg*bvar(2,i,1,k),i=2,nres-2)
-        write (icsa_int,200) (rad2deg*bvar(3,i,1,k),i=2,nres-1)
-        write (icsa_int,200) (rad2deg*bvar(4,i,1,k),i=2,nres-1)
-       enddo
-       close(icsa_int)
-      endif
-
-
-  200 format (8f10.4)
-  850 format (10f8.3)
-  900 format (1x,"jlee =",i3,3x,"nbank =",i4,3x,"nstep =",
-     &        i8,i10,i2,f15.5)
-  902 format (1x,'nglob_csa =',i4,' eglob_csa =',1pe14.5)
-  952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3,
-     &        ' %NC ',0pf5.2,i5)
-
-      return
-      end
-c---------------------------------------
-      subroutine write_bank_reminimized(jlee,nft)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      include 'COMMON.CHAIN'
-      include 'COMMON.GEO'
-      include 'COMMON.SBRIDGE'
-
-      open(icsa_bank_reminimized,file=csa_bank_reminimized,
-     &  status="unknown")
-      write (icsa_bank_reminimized,900) 
-     &  jlee,nbank,nstep,nft,icycle,cutdif
-      open (igeom,file=intname,status='UNKNOWN')
-      do k=1,nbank
-       write (icsa_bank_reminimized,952) k,bene(k),brmsn(k),
-     &  bpncn(k),ibank(k)
-       do j=1,numch
-        do l=2,nres-1
-         write (icsa_bank_reminimized,850) (rad2deg*bvar(i,l,j,k),i=1,4)
-        enddo
-       enddo
-       if (nss.le.9) then
-         write (igeom,'(I5,F10.2,I2,9(1X,2I3))') k,bene(k),
-     &     nss,(ihpb(i),jhpb(i),i=1,nss)
-       else
-         write (igeom,'(I5,F10.2,I2,9(1X,2I3))') k,bene(k),
-     &     nss,(ihpb(i),jhpb(i),i=1,9)
-         write (igeom,'(3X,11(1X,2I3))') (ihpb(i),jhpb(i),i=10,nss)
-       endif
-       write (igeom,200) (rad2deg*bvar(1,i,1,k),i=2,nres-1)
-       write (igeom,200) (rad2deg*bvar(2,i,1,k),i=2,nres-2)
-       write (igeom,200) (rad2deg*bvar(3,i,1,k),i=2,nres-1)
-       write (igeom,200) (rad2deg*bvar(4,i,1,k),i=2,nres-1)
-      enddo
-      close(icsa_bank_reminimized)
-      close(igeom)
-
-  200 format (8f10.4)
-  850 format (10f8.3)
-  900 format (1x,"jlee =",i3,3x,"nbank =",i4,3x,"nstep =",
-     &        i8,i10,i2,f15.5)
-  952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3
-     &        ,' %NC ',0pf5.2,i5)
-
-      return
-      end
-c---------------------------------
-      subroutine read_bank(jlee,nft,cutdifr)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      include 'COMMON.CHAIN'
-      include 'COMMON.GEO'
-      include 'COMMON.CONTROL'
-      include 'COMMON.SBRIDGE'
-      character*80 karta
-      integer ilen
-      external ilen
-
-      open(icsa_bank,file=csa_bank,status="old")
-       read (icsa_bank,901) jlee,nbank,nstep,nft,icycle,cutdifr
-       read (icsa_bank,902) nglob_csa, eglob_csa
-c      if(jleer.ne.jlee) then
-c        write (iout,*) 'ERROR in READ_BANK: JLEER',jleer,
-c    &   ' JLEE',jlee
-c        call mpi_abort(mpi_comm_world,ierror,ierrcode)
-c      endif
-
-      kk=0
-      do k=1,nbank
-        read (icsa_bank,'(a80)') karta
-        write(iout,*) "READ_BANK: kk=",kk
-        write(iout,*) karta
-c        if (index(karta,"*").gt.0) then
-c          write (iout,*) "***** Stars in bank ***** k=",k,
-c     &      " skipped"
-c          do j=1,numch
-c            do l=2,nres-1
-c              read (33,850) (rdummy,i=1,4)
-c            enddo
-c          enddo
-c        else
-          kk=kk+1
-          call reada(karta,"total E",bene(kk),1.0d20)
-          call reada(karta,"rmsd from N",brmsn(kk),0.0d0)
-          call reada(karta,"%NC",bpncn(kk),0.0d0)
-          read (karta(ilen(karta)-1:),*,end=111,err=111) ibank(kk)
-          goto 112
-  111     ibank(kk)=0
-  112     continue
-          write(iout,*)"total E",bene(kk),"rmsd from N",brmsn(kk),
-     &      "%NC",bpncn(kk),ibank(kk)
-c          read (icsa_bank,953) kdummy,bene(k),brmsn(k),bpncn(k),ibank(k)
-          if (vdisulf) then 
-            read (icsa_bank,'(101i4)') 
-     &        bvar_nss(kk),((bvar_ss(j,i,kk),j=1,2),i=1,bvar_nss(kk))
-            bvar_ns(kk)=ns-2*bvar_nss(kk)
-            write(iout,*) 'read SSBOND',bvar_nss(kk),
-     &                    ((bvar_ss(j,i,kk),j=1,2),i=1,bvar_nss(kk))
-cd          write(iout,*) 'read CYS #free ', bvar_ns(kk)
-            l=0
-            do i=1,ns
-             j=1
-             do while( iss(i).ne.bvar_ss(1,j,kk)-nres .and. 
-     &                 iss(i).ne.bvar_ss(2,j,kk)-nres .and. 
-     &                 j.le.bvar_nss(kk))
-                j=j+1 
-             enddo
-             if (j.gt.bvar_nss(kk)) then            
-               l=l+1   
-               bvar_s(l,kk)=iss(i)
-             endif
-            enddo
-cd            write(iout,*)'read CYS free',(bvar_s(l,kk),l=1,bvar_ns(kk))
-          endif
-          do j=1,numch
-            do l=2,nres-1
-              read (icsa_bank,850) (bvar(i,l,j,kk),i=1,4)
-c              write (iout,850) (bvar(i,l,j,kk),i=1,4)
-              do i=1,4
-                bvar(i,l,j,kk)=deg2rad*bvar(i,l,j,kk)
-              enddo ! l
-            enddo ! l
-          enddo ! j
-c        endif
-      enddo ! k
-
-      if (kk.lt.nbank) nbank=kk
-cd      write (*,*) "read_bank ******************* kk",kk,
-cd     &  "nbank",nbank
-cd      do kk=1,nbank
-cd          print *,"kk=",kk
-cd          do j=1,numch
-cd            do l=2,nres-1
-cd              write (*,850) (bvar(i,l,j,kk),i=1,4)
-cd            enddo
-cd          enddo
-cd      enddo
-
-c       do k=1,nbank
-c        read (33,953) kdummy,bene(k),brmsn(k),bpncn(k),ibank(k)
-c        do j=1,numch
-c         do l=2,nres-1
-c          read (33,850) (bvar(i,l,j,k),i=1,4)
-c          do i=1,4
-c           bvar(i,l,j,k)=deg2rad*bvar(i,l,j,k)
-c          enddo
-c         enddo
-c        enddo
-c       enddo
-      close(icsa_bank)
-
-  850 format (10f8.3)
-  952 format (1x,'#',i4,' total E ',f12.3,' rmsd from N ',f8.3,i5)
-  901 format (1x,6x,i3,3x,7x,i4,3x,7x,i8,i10,i2,f15.5)
-  902 format (1x,11x,i4,12x,1pe14.5)
-  953 format (1x,1x,i4,9x,f12.3,13x,f8.3,5x,f5.2,i5)
-
-      return
-      end
-c---------------------------------------
-      subroutine write_bank1(jlee)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      include 'COMMON.CHAIN'
-      include 'COMMON.GEO'
-
-#if defined(AIX) || defined(PGI)
-      open(icsa_bank1,file=csa_bank1,position="append")
-#else
-      open(icsa_bank1,file=csa_bank1,access="append")
-#endif
-      write (icsa_bank1,900) jlee,nbank,nstep,cutdif
-      do k=1,nbank
-       write (icsa_bank1,952) k,bene(k),brmsn(k),bpncn(k),ibank(k)
-       do j=1,numch
-        do l=2,nres-1
-         write (icsa_bank1,850) (rad2deg*bvar(i,l,j,k),i=1,4)
-        enddo
-       enddo
-      enddo
-      close(icsa_bank1)
-  850 format (10f8.3)
-  900 format (4x,"jlee =",i5,3x,"nbank =",i5,3x,"nstep =",i10,f15.5)
-  952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3
-     &       ,' %NC ',0pf5.2,i5)
-
-      return
-      end
-c---------------------------------
-      subroutine save_is(ind)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'mpif.h'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      include 'COMMON.CHAIN'
-
-      index=nbank+ind
-c     print *, "nbank,ind,index,is(ind) ",nbank,ind,index,is(ind)
-      if (index.gt.mxio .or. index.lt.1 .or. 
-     &  is(ind).gt.mxio .or. is(ind).lt.1) then
-        write (iout,*) 'Dimension ERROR in SAVE_IS: INDEX',index,
-     &  ' IND',ind,' IS',is(ind)
-        call mpi_abort(mpi_comm_world,ierror,ierrcode)
-      endif
-      do k=1,numch
-       do j=2,nres-1
-        do i=1,4
-         bvar(i,j,k,index)=bvar(i,j,k,is(ind))
-        enddo
-       enddo
-      enddo
-      bene(index)=bene(is(ind))
-      ibank(is(ind))=1
-
-      return
-      end
-c---------------------------------
-      subroutine select_is(n,ifar,idum)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      dimension itag(mxio),adiff(mxio)
-
-      iuse=0
-      do i=1,nbank
-       if(ibank(i).eq.0) then
-        iuse=iuse+1
-        itag(iuse)=i
-       endif
-      enddo
-      iusesv=iuse
-
-      if(iuse.eq.0) then
-       icycle=icycle+1
-       do i=1,nbank
-        if(ibank(i).eq.2) then
-         ibank(i)=1
-        else
-         ibank(i)=0
-        endif
-       enddo
-       imade=0
-       call get_is(idum,ifar,n,imade,0)
-ctest3       call get_is_max(idum,ifar,n,imade,0)
-      else if(iuse.eq.n) then
-       do i=1,iuse
-        is(i)=itag(i)
-        call save_is(i)
-       enddo
-      else if(iuse.lt.n) then
-c      if(icycle.eq.0) then
-c       do i=1,n
-c        ind=mod(i-1,iuse)+1
-c        is(i)=itag(ind)
-c        call save_is(i)
-c       enddo
-c      else
-c      endif
-       do i=1,iuse
-        is(i)=itag(i)
-        call save_is(i)
-       enddo
-       imade=iuse
-c      call get_is_ran(idum,n,imade,1)
-       call get_is(idum,ifar,n,imade,1)
-ctest3       call get_is_max(idum,ifar,n,imade,1)
-c      if(iusesv.le.n/10) then
-       if(iusesv.le.0) then
-        icycle=icycle+1
-        do i=1,nbank
-c        if(ibank(i).eq.2) then
-c         ibank(i)=1
-         if(ibank(i).ge.2) then
-          ibank(i)=ibank(i)-1
-         else
-          ibank(i)=0
-         endif
-        enddo
-       endif
-      else
-       imade=0
-       call get_is(idum,ifar,n,imade,0)
-ctest3       call get_is_max(idum,ifar,n,imade,0)
-      endif
-      iuse=iusesv
-
-      if (iuse.le.iucut) then
-         icycle=icycle+1
-         do i=1, nbank  
-            ibank(i)=0
-         enddo
-      endif  
-
-
-      return
-      end
-c---------------------------------
-      subroutine get_is_ran(idum,n,imade,k)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      real ran1,ran2
-      dimension itag(mxio),adiff(mxio)
-
-      do j=imade+1,n
-       iuse=0
-       do i=1,nbank
-        if(ibank(i).eq.k) then
-         iuse=iuse+1
-         itag(iuse)=i
-        endif
-       enddo
-       iran=iuse*  ran1(idum)+1
-       is(j)=itag(iran)
-       call save_is(j)
-      enddo
-
-      return
-      end
-c---------------------------------
-      subroutine get_is(idum,ifar,n,imade,k)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      real ran1,ran2
-      dimension itag(mxio),adiff(mxio)
-
-      iuse=0
-      do i=1,nbank
-       if(ibank(i).eq.k) then
-        iuse=iuse+1
-        itag(iuse)=i
-       endif
-      enddo
-      iran=iuse*  ran1(idum)+1
-      imade=imade+1
-      is(imade)=itag(iran)
-      call save_is(imade)
-
-      do i=imade+1,ifar-1
-       if(icycle.eq.-1) then
-        call select_iseed_max(i,k)
-       else
-        call select_iseed_min(i,k)
-ctest4  call select_iseed_max(i,k)
-       endif
-       call save_is(i)
-      enddo
-
-      do i=ifar,n
-       call select_iseed_far(i,k)
-       call save_is(i)
-      enddo
-
-      return
-      end
-c---------------------------------
-      subroutine select_iseed_max(imade1,ik)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      dimension itag(mxio),adiff(mxio)
-
-      iuse=0
-      avedif=0.d0
-      difmax=0.d0
-      do n=1,nbank
-       if(ibank(n).eq.ik) then
-        iuse=iuse+1
-        diffmn=9.d190
-        do imade=1,imade1-1
-c        m=nbank+imade
-c        call get_diff12(bvar(1,1,1,n),bvar(1,1,1,m),diff,idiff)
-         m=is(imade)
-         diff=dij(n,m)
-         if(diff.lt.diffmn) diffmn=diff
-        enddo
-        if(diffmn.gt.difmax) difmax=diffmn
-        adiff(iuse)=diffmn
-        itag(iuse)=n
-        avedif=avedif+diffmn
-       endif
-      enddo
-
-      avedif=avedif/iuse
-c     avedif=(avedif+difmax)/2
-      emax=-9.d190
-      do i=1,iuse
-       if(adiff(i).ge.avedif) then
-        itagi=itag(i)
-        benei=bene(itagi)
-        if(benei.gt.emax) then
-         emax=benei
-         is(imade1)=itagi  
-        endif
-       endif
-      enddo
-
-      if(ik.eq.0) iuse=iuse-1
-
-      return
-      end
-c---------------------------------
-      subroutine select_iseed_min(imade1,ik)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      dimension itag(mxio),adiff(mxio)
-
-      iuse=0
-      avedif=0.d0
-      difmax=0.d0
-      do n=1,nbank
-       if(ibank(n).eq.ik) then
-        iuse=iuse+1
-        diffmn=9.d190
-        do imade=1,imade1-1
-c        m=nbank+imade
-c        call get_diff12(bvar(1,1,1,n),bvar(1,1,1,m),diff,idiff)
-         m=is(imade)
-         diff=dij(n,m)
-         if(diff.lt.diffmn) diffmn=diff
-        enddo
-        if(diffmn.gt.difmax) difmax=diffmn
-        adiff(iuse)=diffmn
-        itag(iuse)=n
-        avedif=avedif+diffmn
-       endif
-      enddo
-
-      avedif=avedif/iuse
-c     avedif=(avedif+difmax)/2
-      emin=9.d190
-      do i=1,iuse
-c      print *,"i, adiff(i),avedif : ",i,adiff(i),avedif
-       if(adiff(i).ge.avedif) then
-        itagi=itag(i)
-        benei=bene(itagi)
-c       print *,"i, benei,emin : ",i,benei,emin
-        if(benei.lt.emin) then
-         emin=benei
-         is(imade1)=itagi  
-        endif
-       endif
-      enddo
-
-      if(ik.eq.0) iuse=iuse-1
-
-c     print *, "exiting select_iseed_min",is(imade1)
-
-      return
-      end
-c---------------------------------
-      subroutine select_iseed_far(imade1,ik)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-
-      dmax=-9.d190
-      do n=1,nbank
-       if(ibank(n).eq.ik) then
-        diffmn=9.d190
-        do imade=1,imade1-1
-c        m=nbank+imade
-c        call get_diff12(bvar(1,1,1,n),bvar(1,1,1,m),diff,idiff)
-         m=is(imade)
-         diff=dij(n,m)
-         if(diff.lt.diffmn) diffmn=diff
-        enddo
-       endif
-       if(diffmn.gt.dmax) then
-        dmax=diffmn
-        is(imade1)=n  
-       endif
-      enddo
-
-      return
-      end
-c---------------------------------
-      subroutine find_min
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      
-      ebmin=9.d190
-
-      do i=1,nbank
-       benei=bene(i)
-       if(benei.lt.ebmin) then
-        ebmin=benei
-        ibmin=i
-       endif   
-      enddo    
-
-      return
-      end   
-c---------------------------------
-      subroutine write_csa_pdb(var,ene,nft,ik,iw_pdb)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      include 'COMMON.VAR'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.MINIM'
-      include 'COMMON.SETUP'
-      include 'COMMON.GEO'
-      include 'COMMON.CHAIN'
-      include 'COMMON.LOCAL'
-      include 'COMMON.INTERACT'
-      include 'COMMON.NAMES'
-      include 'COMMON.SBRIDGE'
-      integer lenpre,lenpot,ilen
-      external ilen
-      dimension var(maxvar)
-      character*50 titelloc
-      character*3 zahl
-
-      nmin_csa=nmin_csa+1
-      if(ene.lt.eglob_csa) then
-        eglob_csa=ene
-        nglob_csa=nglob_csa+1
-        call numstr(nglob_csa,zahl)
-
-        call var_to_geom(nvar,var)
-        call chainbuild
-        call secondary2(.false.)
-
-        lenpre=ilen(prefix)
-        open(icsa_pdb,file=prefix(:lenpre)//'@'//zahl//'.pdb')
-
-        if (iw_pdb.eq.1) then 
-          write(titelloc,'(a2,i3,a3,i9,a3,i6)')
-     &    'GM',nglob_csa,' e ',nft,' m ',nmin_csa
-        else
-          write(titelloc,'(a2,i3,a3,i9,a3,i6,a5,f5.2,a5,f5.1)') 
-     &   'GM',nglob_csa,' e ',nft,' m ',nmin_csa,' rms '
-     &        ,rmsn(ik),' %NC ',pncn(ik)*100          
-        endif
-        call pdbout(eglob_csa,titelloc,icsa_pdb)
-        close(icsa_pdb)
-      endif
-
-      return
-      end
-c---------------------------------
-      subroutine find_max
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      
-      ebmax=-9.d190
-
-      do i=1,nbank
-       benei=bene(i)
-       if(benei.gt.ebmax) then
-        ebmax=benei
-        ibmax=i
-       endif
-      enddo
-
-      return
-      end
-c---------------------------------
-      subroutine get_diff
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-
-      tdiff=0.d0
-      difmin=9.d190
-      do i1=1,nbank-1
-       do i2=i1+1,nbank
-        if(jbank(i1).eq.0.or.jbank(i2).eq.0) then
-         call get_diff12(bvar(1,1,1,i1),bvar(1,1,1,i2),diff)
-         dij(i1,i2)=diff
-         dij(i2,i1)=diff
-        else
-         diff=dij(i1,i2)
-        endif
-        tdiff=tdiff+diff
-        if(diff.lt.difmin) difmin=diff
-       enddo
-       dij(i1,i1)=0.0
-      enddo
-
-      do i=1,nbank
-       jbank(i)=1
-      enddo
-
-      avedif=tdiff/nbank/(nbank-1)*2
-
-      return
-      end
-c---------------------------------
-      subroutine get_diff_p
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      include 'COMMON.SETUP'
-      include 'COMMON.IOUNITS'
-      include 'mpif.h'      
-      integer ij(mxio*mxio/2,2)
-      double precision dij_local(mxio,mxio)
-
-c      write (iout,*) 'Processor ',me,' broadcasting'
-      call mpi_bcast(nbank,1,mpi_integer,0,CG_COMM,ierr)
-      call mpi_bcast(numch,1,mpi_integer,0,CG_COMM,ierr)
-      call mpi_bcast(bvar,mxang*maxres*mxch*nbank,
-     &           mpi_double_precision,0,CG_COMM,ierr)
-      call mpi_bcast(jbank,nbank,mpi_integer,0,CG_COMM,ierr)
-c      write (iout,*) 'Processor ',me,' after broadcasting'
-c      call flush(iout)
-
-      k=0
-      do i1=1,nbank-1
-       do i2=i1+1,nbank
-        k=k+1
-        ij(k,1)=i1
-        ij(k,2)=i2
-        dij_local(i1,i2)=0.0
-        dij_local(i2,i1)=0.0
-        if(jbank(i1).eq.0.or.jbank(i2).eq.0) then
-         dij(i1,i2)=0.0
-         dij(i2,i1)=0.0
-        else
-         if(me.eq.king) then
-           dij_local(i1,i2)=dij(i1,i2)
-           dij_local(i2,i1)=dij(i2,i1)
-         endif
-        endif
-       enddo
-       dij(i1,i1)=0.0
-       dij_local(i1,i1)=0.0
-      enddo
-
-      do i12=me+1,nbank*(nbank-1)/2,nodes
-        i1=ij(i12,1)
-        i2=ij(i12,2)
-        if(jbank(i1).eq.0.or.jbank(i2).eq.0) then
-         call get_diff12(bvar(1,1,1,i1),bvar(1,1,1,i2),diff)
-         dij_local(i1,i2)=diff
-         dij_local(i2,i1)=diff
-        endif
-      enddo
-
-      call mpi_reduce(dij_local,dij,mxio*nbank,
-     &           mpi_double_precision,mpi_sum,0,CG_COMM,ierr)
-
-
-      if (me.eq.king) then
-
-       tdiff=0.d0
-       difmin=9.d190
-       do i1=1,nbank-1
-        do i2=i1+1,nbank
-cd         write (iout,*) "!!!ppp",i1,i2,dij(i1,i2)
-cd         call get_diff12(bvar(1,1,1,i1),bvar(1,1,1,i2),diff)
-cd         write (iout,*) "!!!",i1,i2,diff
-         tdiff=tdiff+dij(i1,i2)
-         if(diff.lt.difmin) difmin=diff
-        enddo
-       enddo
-
-       do i=1,nbank
-        jbank(i)=1
-       enddo
-
-       avedif=tdiff/nbank/(nbank-1)*2
-      
-      endif
-       
-      return
-      end
-
-c---------------------------------
-      subroutine estimate_cutdif(adif,xct,cutdifr)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      
-      ctdif1=adif/cut2
-
-      exponent = cutdifr*cut1/adif
-      exponent = dlog(exponent)/dlog(xct)
-
-      nexp=exponent+0.25
-      cutdif= adif/cut1*xct**nexp
-      if(cutdif.lt.ctdif1) cutdif=ctdif1
-
-      return
-      end
-c---------------------------------
-      subroutine get_is_max(idum,ifar,n,imade,k)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      double precision emax
-
-      do i=imade+1,n
-       emax=-9.d190
-       do j=1,nbank
-        if(ibank(j).eq.k .and. bene(j).gt.emax) then
-           emax=bene(j)
-           is(i)=j
-        endif
-       enddo
-       call save_is(i)
-      enddo
-
-      return
-      end
-c-----------------------------------------
-      subroutine refresh_bank_master_tmscore(ifrom,econf,n)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.CSA'
-      include 'COMMON.BANK'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.CHAIN'
-      include 'COMMON.VAR'
-      include 'COMMON.CONTROL'
-      include 'COMMON.SETUP'
-      include 'mpif.h'
-      character chacc
-      integer iaccn
-      double precision l_diff(mxio),denep
-      integer info(12),idmin
-
-cd      write(iout,*) 'refresh_bank_master_tmscore',ifrom
-cd      flush(iout)
-
-      info(1)=0
-      info(2)=-2
-      call mpi_send(info,12,mpi_integer,ifrom,idint,CG_COMM,
-     *                  ierr)
-      call mpi_send(bvar,mxang*maxres*mxch*nbank,mpi_double_precision,
-     *                  ifrom,idreal,CG_COMM,ierr)
-      call mpi_recv(idmin,1,mpi_integer,
-     *             ifrom,idint,CG_COMM,muster,ierr)    
-      call mpi_recv(l_diff,nbank,mpi_double_precision,
-     *             ifrom,idreal,CG_COMM,muster,ierr)    
-
-       chacc=' '
-       iaccn=0
-       nstatnx(movernx(n),1)=nstatnx(movernx(n),1)+1
-
-       difmin=l_diff(idmin)
-       if(difmin.lt.cutdif) then
-c n is redundant to idmin
-        if(econf.lt.bene(idmin)) then
-         if(econf.lt.bene(idmin)-0.01d0) then
-          ibank(idmin)=0
-          jbank(idmin)=0
-         endif
-         denep=bene(idmin)-econf
-         call replace_bvar(idmin,n)
-crc Update dij
-         do i1=1,nbank
-           if (i1.ne.idmin) then
-            dij(i1,idmin)=l_diff(i1)
-            dij(idmin,i1)=l_diff(i1)
-           endif
-         enddo
-         chacc='c'
-         iaccn=idmin
-         nstatnx(movernx(n),2)=nstatnx(movernx(n),2)+1
-         if(idmin.eq.ibmax) call find_max
-        endif
-       else
-c got new conformation
-        del_ene=0.0d0
-        if(ebmax-ebmin.gt.del_ene) then
-         denep=ebmax-econf
-         call replace_bvar(ibmax,n)
-crc Update dij
-         do i1=1,nbank
-           if (i1.ne.ibmax) then
-            dij(i1,ibmax)=l_diff(i1)
-            dij(ibmax,i1)=l_diff(i1)
-           endif
-         enddo
-         chacc='f'
-         iaccn=ibmax
-         nstatnx(movernx(n),3)=nstatnx(movernx(n),3)+1
-         ibank(ibmax)=0
-         jbank(ibmax)=0
-         call find_max
-        else
-          call replace_bvar(ibmax,n)
-          ibank(ibmax)=0
-          jbank(ibmax)=0
-          call find_max
-        endif
-       endif
-cccccccccccccccccccccccccccccccccccccccccccc
-       if (iaccn.eq.0) then
-        if (iref.eq.0) then 
-         write(iout,'(i3,a3,i4,i5,a6,1pe12.4,a4,i3,i4,3i5)') 
-     &    indb(n,2),' e ',indb(n,3),indb(n,1),' etot ',econf,' mv ',
-     &    indb(n,5),indb(n,4),indb(n,7),indb(n,8),indb(n,9)
-        else
-      write(iout,'(i3,a3,i4,i5,a6,1pe12.4,a4,i3,i4,3i5
-     &       ,a5,0pf4.1,a5,f3.0)') 
-     &    indb(n,2),' e ',indb(n,3),indb(n,1),' etot ',econf,' mv ',
-     &    indb(n,5),indb(n,4),indb(n,7),indb(n,8),indb(n,9),
-     &    ' rms ',rmsn(n),' %NC ',pncn(n)*100
-        endif
-       else
-        if (iref.eq.0) then
-        write(iout,'(i3,a3,i4,i5,a6,1pe12.4,a4,i3,i4,3i5,
-     &         1x,a1,i4,0pf8.2,0pf9.1)') 
-     &    indb(n,2),' e ',indb(n,3),indb(n,1),' etot ',econf,' mv ',
-     &    indb(n,5),indb(n,4),indb(n,7),indb(n,8),indb(n,9),
-     &    chacc,iaccn,difmin,denep
-        else
-         write(iout,'(i3,a3,i4,i5,a6,1pe12.4,a4,i3,i4,3i5,a5,
-     &                   0pf4.1,a5,f3.0,1x,a1,i4,0pf8.2,0pf9.1)') 
-     &    indb(n,2),' e ',indb(n,3),indb(n,1),' etot ',econf,' mv ',
-     &    indb(n,5),indb(n,4),indb(n,7),indb(n,8),indb(n,9),
-     &    ' rms ',rmsn(n),' %NC ',pncn(n)*100,
-     &     chacc,iaccn,difmin,denep
-        endif
-       endif
-
-      do i=1,nbank
-       jbank(i)=1
-      enddo
-
-      return
-      end
-c-----------------------------------------
-      subroutine refresh_bank_worker_tmscore(var)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.BANK'
-      include 'COMMON.VAR'
-      include 'COMMON.CHAIN'
-      include 'COMMON.SETUP'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.CSA'
-      include 'mpif.h'
-      integer muster(mpi_status_size)
-      double precision var(maxvar)
-      double precision dihang_l(mxang,maxres,mxch)
-      double precision l_diff(mxio)
-
-      call mpi_recv(bvar,mxang*maxres*mxch*nbank,mpi_double_precision,
-     *             0,idreal,CG_COMM,muster,ierr)    
-
-      call var_to_geom(nvar,var)
-      do j=2,nres-1
-        dihang_l(1,j,1)=theta(j+1)
-        dihang_l(2,j,1)=phi(j+2)
-        dihang_l(3,j,1)=alph(j)
-        dihang_l(4,j,1)=omeg(j)
-      enddo
-
-       difmin=9.d9
-       do m=1,nbank
-        call get_diff12(dihang_l,bvar(1,1,1,m),l_diff(m))
-        if(l_diff(m).lt.difmin) then
-         difmin=l_diff(m)
-         idmin=m
-        endif
-       enddo
-      tm_score=.false.
-      call get_diff12(dihang_l,bvar(1,1,1,idmin),a_diff)
-      tm_score=.true.
-
-cd      write(iout,*) idmin,l_diff(idmin),a_diff
-      call mpi_send(idmin,1,mpi_integer,0,idint,CG_COMM,
-     *                  ierr)
-      call mpi_send(l_diff,nbank,mpi_double_precision,
-     *                  0,idreal,CG_COMM,ierr)
-
-      return
-      end
-c------------------------------------------------
-      subroutine print_mv_stat
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.BANK'
-      include 'COMMON.IOUNITS'
-
-      do i=0,mxmv
-        if(nstatnx(i,1).ne.0) then
-         if (i.le.9) then
-         write(iout,'(a4,i1,a7,i4,a7,i4,a5,i4,a5,f5.1)') 
-     &          '## N',i,' total=',nstatnx(i,1),
-     &          ' close=',nstatnx(i,2),' far=',nstatnx(i,3),
-     &          ' %acc',(nstatnx(i,2)+nstatnx(i,3))*100.0/nstatnx(i,1)
-         else
-         write(iout,'(a3,i2,a7,i4,a7,i4,a5,i4,a5,f5.1)') 
-     &          '##N',i,' total=',nstatnx(i,1),
-     &          ' close=',nstatnx(i,2),' far=',nstatnx(i,3),
-     &          ' %acc',(nstatnx(i,2)+nstatnx(i,3))*100.0/nstatnx(i,1)
-         endif
-        else
-         if (i.le.9) then        
-         write(iout,'(a4,i1,a7,i4,a7,i4,a5,i4,a5,f5.1)') 
-     &          '## N',i,' total=',nstatnx(i,1),
-     &          ' close=',nstatnx(i,2),' far=',nstatnx(i,3),
-     &          ' %acc',0.0
-         else
-         write(iout,'(a3,i2,a7,i4,a7,i4,a5,i4,a5,f5.1)') 
-     &          '##N',i,' total=',nstatnx(i,1),
-     &          ' close=',nstatnx(i,2),' far=',nstatnx(i,3),
-     &          ' %acc',0.0
-         endif
-        endif
-      enddo
-      call flush(iout)
-      return
-      end
-#endif