src_CSA_DiL removed from prerelease, current version in devel
[unres.git] / source / unres / src_CSA_DiL / minim_jlee.F
diff --git a/source/unres/src_CSA_DiL/minim_jlee.F b/source/unres/src_CSA_DiL/minim_jlee.F
deleted file mode 100644 (file)
index 2b53f11..0000000
+++ /dev/null
@@ -1,452 +0,0 @@
-#ifdef MPI
-      subroutine minim_jlee
-c  controls minimization and sorting routines
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      parameter (liv=60,lv=(77+maxvar*(maxvar+17)/2)) 
-      include 'COMMON.VAR'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.MINIM'
-      include 'COMMON.CONTROL'
-      include 'mpif.h'
-      external func,gradient,fdum
-      real ran1,ran2,ran3
-      include 'COMMON.SETUP'
-      include 'COMMON.GEO'
-      include 'COMMON.FFIELD'
-      include 'COMMON.SBRIDGE'
-      include 'COMMON.DISTFIT'
-      include 'COMMON.CHAIN'
-      dimension muster(mpi_status_size)
-      dimension var(maxvar),erg(mxch*(mxch+1)/2+1)
-      dimension var2(maxvar)
-      integer iffr(maxres),ihpbt(maxdim),jhpbt(maxdim)
-      double precision d(maxvar),v(1:lv+1),garbage(maxvar)                     
-      double precision energia(0:n_ene),time0s,time1s
-      dimension indx(9),info(12)
-      dimension iv(liv)                                               
-      dimension idum(1),rdum(1)
-      dimension icont(2,maxcont)
-      logical check_var,fail
-      integer iloop(2)
-      common /przechowalnia/ v
-      data rad /1.745329252d-2/
-c  receive # of start
-!      print *,'Processor',me,' calling MINIM_JLEE maxfun',maxfun,
-!     &   ' maxmin',maxmin,' tolf',tolf,' rtolf',rtolf
-      nhpb0=nhpb
-   10 continue
-      time0s=MPI_WTIME()
-c      print *, 'MINIM_JLEE: ',me,' is waiting'
-      call mpi_recv(info,12,mpi_integer,king,idint,CG_COMM,
-     *              muster,ierr)
-      time1s=MPI_WTIME()
-      write (iout,'(a12,f10.4,a4)')'Waiting for ',time1s-time0s,' sec'
-      call flush(iout)
-      if (info(1).eq.0.and.info(2).eq.-2) then
-cd       write (iout,*) 'Parallel tmscore for refresh bank'
-cd       call flush(iout)
-       call refresh_bank_worker_tmscore(var)
-       goto 10
-      endif
-       n=info(1)
-c      print *, 'MINIM_JLEE: ',me,' received: ',n
-      
-crc      if (ierr.ne.0) go to 100
-c  if # = 0, return
-      if (n.eq.0) then 
-        write (iout,*) 'Finishing minim_jlee - signal',n,' from master'
-        call flush(iout)
-        return
-      endif
-
-      nfun=0
-      IF (n.lt.0) THEN
-       call mpi_recv(var,nvar,mpi_double_precision,
-     *              king,idreal,CG_COMM,muster,ierr)
-       call mpi_recv(iffr,nres,mpi_integer,
-     *              king,idint,CG_COMM,muster,ierr)
-       call mpi_recv(var2,nvar,mpi_double_precision,
-     *              king,idreal,CG_COMM,muster,ierr)
-      ELSE
-c  receive initial values of variables
-       call mpi_recv(var,nvar,mpi_double_precision,
-     *              king,idreal,CG_COMM,muster,ierr)
-crc       if (ierr.ne.0) go to 100
-      ENDIF
-
-      if(vdisulf.and.info(2).ne.-1) then
-        if(info(4).ne.0)then
-           call mpi_recv(ihpbt,info(4),mpi_integer,
-     *              king,idint,CG_COMM,muster,ierr)
-           call mpi_recv(jhpbt,info(4),mpi_integer,
-     *              king,idint,CG_COMM,muster,ierr)
-        endif
-      endif  
-
-      IF (n.lt.0) THEN
-        n=-n     
-        nhpb=nhpb0
-        link_start=1
-        link_end=nhpb
-        call init_int_table
-        call contact_cp(var,var2,iffr,nfun,n)
-      ENDIF
-
-      if(vdisulf.and.info(2).ne.-1) then
-        nss=0
-        if(info(4).ne.0)then
-cd          write(iout,*) 'SS=',info(4),'N=',info(1),'IT=',info(2)
-          call var_to_geom(nvar,var)
-          call chainbuild
-          do i=1,info(4)
-           if (dist(ihpbt(i),jhpbt(i)).lt.7.0) then
-            nss=nss+1
-            ihpb(nss)=ihpbt(i)
-            jhpb(nss)=jhpbt(i)
-cd            write(iout,*) 'SS  mv=',info(3),
-cd     &         ihpb(nss)-nres,jhpb(nss)-nres,
-cd     &         dist(ihpb(nss),jhpb(nss))
-            dhpb(nss)=dbr
-            forcon(nss)=fbr
-           else
-cd            write(iout,*) 'rm SS  mv=',info(3),
-cd     &         ihpbt(i)-nres,jhpbt(i)-nres,dist(ihpbt(i),jhpbt(i))
-           endif
-          enddo
-        endif
-        nhpb=nss
-        link_start=1
-        link_end=nhpb
-        call init_int_table
-      endif
-
-      if (info(3).eq.14) then
-       write(iout,*) 'calling local_move',info(7),info(8)
-       call local_move_init(.false.)
-       call var_to_geom(nvar,var)
-       call local_move(info(7),info(8),20d0,50d0)
-       call geom_to_var(nvar,var)
-      endif
-
-
-      if (info(3).eq.16) then
-       write(iout,*) 'calling beta_slide',info(7),info(8),
-     &            info(10), info(11), info(12)
-       call var_to_geom(nvar,var)
-       call beta_slide(info(7),info(8),info(10),info(11),info(12)
-     &                                                     ,nfun,n)
-       call geom_to_var(nvar,var)
-      endif
-
-
-      if (info(3).eq.17) then
-       write(iout,*) 'calling beta_zip',info(7),info(8)
-       call var_to_geom(nvar,var)
-       call beta_zip(info(7),info(8),nfun,n)
-       call geom_to_var(nvar,var)
-      endif
-
-
-crc overlap test
-
-      if (overlapsc) then 
-
-          call var_to_geom(nvar,var)
-          call chainbuild
-          call etotal(energia(0))
-          nfun=nfun+1
-          if (energia(1).eq.1.0d20) then  
-            info(3)=-info(3) 
-            write (iout,'(a,1pe14.5)')'#OVERLAP evdw=1d20',energia(1)
-            call overlap_sc(fail)
-            if(.not.fail) then
-             call geom_to_var(nvar,var)
-             call etotal(energia(0))
-             nfun=nfun+1
-             write (iout,'(a,1pe14.5)')'#OVERLAP evdw after',energia(1)
-            else
-             v(10)=1.0d20
-             iv(1)=-1
-             goto 201
-            endif
-          endif
-      endif 
-
-      if (searchsc) then 
-          call var_to_geom(nvar,var)
-          call sc_move(2,nres-1,1,10d0,nft_sc,etot)
-          call geom_to_var(nvar,var)
-cd          write(iout,*) 'sc_move',nft_sc,etot
-      endif 
-
-      if (check_var(var,info)) then 
-           v(10)=1.0d21
-           iv(1)=6
-           goto 201
-      endif
-
-
-crc        
-
-!      write (iout,*) 'MINIM_JLEE: Processor',me,' nvar',nvar
-!      write (iout,'(8f10.4)') (var(i),i=1,nvar)
-!      write (*,*) 'MINIM_JLEE: Processor',me,' received nvar',nvar
-!      write (*,'(8f10.4)') (var(i),i=1,nvar)
-
-       do i=1,nvar
-         garbage(i)=var(i)
-       enddo
-
-      call deflt(2,iv,liv,lv,v)                                         
-* 12 means fresh start, dont call deflt                                 
-      iv(1)=12                                                          
-* max num of fun calls                                                  
-      if (maxfun.eq.0) maxfun=500
-      iv(17)=maxfun
-* max num of iterations                                                 
-      if (maxmin.eq.0) maxmin=1000
-      iv(18)=maxmin
-* controls output                                                       
-      iv(19)=2                                                          
-* selects output unit                                                   
-cd      iv(21)=iout                                                       
-      iv(21)=0
-* 1 means to print out result                                           
-      iv(22)=0                                                          
-cd        iv(22)=1
-* 1 means to print out summary stats                                    
-      iv(23)=0                                                          
-* 1 means to print initial x and d                                      
-      iv(24)=0                                                          
-
-c      if(me.eq.3.and.n.eq.255) then
-c       print *,' CHUJ: stoi'
-c       iv(21)=6
-c       iv(22)=1
-c       iv(23)=1
-c       iv(24)=1                                                          
-c      endif
-
-* min val for v(radfac) default is 0.1                                  
-      v(24)=0.1D0                                                       
-* max val for v(radfac) default is 4.0                                  
-      v(25)=2.0D0                                                       
-c     v(25)=4.0D0                                                       
-* check false conv if (act fnctn decrease) .lt. v(26)*(exp decrease)    
-* the sumsl default is 0.1                                              
-      v(26)=0.1D0
-* false conv if (act fnctn decrease) .lt. v(34)                         
-* the sumsl default is 100*machep                                       
-      v(34)=v(34)/100.0D0                                               
-* absolute convergence                                                  
-      if (tolf.eq.0.0D0) tolf=1.0D-4
-      v(31)=tolf
-* relative convergence                                                  
-      if (rtolf.eq.0.0D0) rtolf=1.0D-4
-      v(32)=rtolf
-* controls initial step size                                            
-       v(35)=1.0D-1                                                    
-* large vals of d correspond to small components of step                
-      do i=1,nphi
-        d(i)=1.0D-1
-      enddo
-      do i=nphi+1,nvar
-        d(i)=1.0D-1
-      enddo
-c  minimize energy
-!      write (iout,*) 'Processor',me,' nvar',nvar
-!      write (iout,*) 'Variables BEFORE minimization:'
-!      write (iout,'(8f10.4)') (rad2deg*var(i),i=1,nvar)
-
-c      print *, 'MINIM_JLEE: ',me,' before SUMSL '
-
-      call func(nvar,var,nf,eee,idum,rdum,fdum)
-      nfun=nfun+1
-      if(eee.ge.1.0d20) then
-c       print *,'MINIM_JLEE: ',me,' CHUJ NASTAPIL'
-c       print *,' energy before SUMSL =',eee
-c       print *,' aborting local minimization'
-       iv(1)=-1
-       v(10)=eee
-       go to 201
-      endif
-
-ct      time0s=MPI_WTIME()
-      call sumsl(nvar,d,var,func,gradient,iv,liv,lv,v,idum,rdum,fdum)
-ct      write(iout,*) 'sumsl time=',MPI_WTIME()-time0s,iv(7),v(10)
-c      print *, 'MINIM_JLEE: ',me,' after SUMSL '
-
-c  find which conformation was returned from sumsl
-        nfun=nfun+iv(7)
-!      print *,'Processor',me,' iv(17)',iv(17),' iv(18)',iv(18),' nf',nf,
-!     & ' retcode',iv(1),' energy',v(10),' tolf',v(31),' rtolf',v(32)
-c        if (iv(1).ne.4 .or. nf.le.1) then
-c          write (*,*) 'Processor',me,' something bad in SUMSL',iv(1),nf
-c         write (*,*) 'Initial Variables'
-c         write (*,'(8f10.4)') (rad2deg*garbage(i),i=1,nvar)
-c         write (*,*) 'Variables'
-c         write (*,'(8f10.4)') (rad2deg*var(i),i=1,nvar)
-c         write (*,*) 'Vector d'
-c         write (*,'(8f10.4)') (d(i),i=1,nvar)
-c         write (iout,*) 'Processor',me,' something bad in SUMSL',
-c    &       iv(1),nf
-c         write (iout,*) 'Initial Variables'
-c         write (iout,'(8f10.4)') (rad2deg*garbage(i),i=1,nvar)
-c         write (iout,*) 'Variables'
-c         write (iout,'(8f10.4)') (rad2deg*var(i),i=1,nvar)
-c         write (iout,*) 'Vector d'
-c         write (iout,'(8f10.4)') (d(i),i=1,nvar)
-c        endif
-c        if (nf.lt.iv(6)-1) then
-c  recalculate intra- and interchain energies
-c         call func(nvar,var,nf,v(10),iv,v,fdum)
-c        else if (nf.eq.iv(6)-1) then
-c  regenerate conformation
-c         call var_to_geom(nvar,var)
-c         call chainbuild
-c        endif
-c  change origin and axes to standard ECEPP format
-c        call var_to_geom(nvar,var)
-!      write (iout,*) 'MINIM_JLEE after minim: Processor',me,' nvar',nvar
-!      write (iout,'(8f10.4)') (var(i),i=1,nvar)
-!      write (iout,*) 'Energy:',v(10)
-c  send back output
-c       print *, 'MINIM_JLEE: ',me,' minimized: ',n
-  201  continue
-        indx(1)=n
-c return code: 6-gradient 9-number of ftn evaluation, etc
-        indx(2)=iv(1)
-c total # of ftn evaluations (for iwf=0, it includes all minimizations).
-        indx(3)=nfun
-        indx(4)=info(2)
-        indx(5)=info(3)
-        indx(6)=nss
-        indx(7)=info(5)
-        indx(8)=info(6)
-        indx(9)=info(9)
-        call mpi_send(indx,9,mpi_integer,king,idint,CG_COMM,
-     *                 ierr)
-c  send back energies
-c al & cc
-c calculate contact order
-#ifdef CO_BIAS
-        call contact(.false.,ncont,icont,co)
-        erg(1)=v(10)-1.0d2*co
-#else
-        erg(1)=v(10)
-#endif
-        j=1
-        call mpi_send(erg,j,mpi_double_precision,king,idreal,
-     *                 CG_COMM,ierr)
-#ifdef CO_BIAS
-        call mpi_send(co,j,mpi_double_precision,king,idreal,
-     *                 CG_COMM,ierr)
-#endif
-c  send back values of variables
-        call mpi_send(var,nvar,mpi_double_precision,
-     *               king,idreal,CG_COMM,ierr)
-!        print * , 'MINIM_JLEE: Processor',me,' send erg and var '
-
-        if(vdisulf.and.info(2).ne.-1.and.nss.ne.0) then
-cd          call intout
-cd          call chainbuild
-cd          call etotal(energia(0))
-cd          etot=energia(0)
-cd          call enerprint(energia(0))
-         call mpi_send(ihpb,nss,mpi_integer,
-     *               king,idint,CG_COMM,ierr)        
-         call mpi_send(jhpb,nss,mpi_integer,
-     *               king,idint,CG_COMM,ierr)        
-        endif
-
-        go to 10
-  100 print *, ' error in receiving message from emperor', me
-      call mpi_abort(mpi_comm_world,ierror,ierrcode)
-      return
-  200 print *, ' error in sending message to emperor'
-      call mpi_abort(mpi_comm_world,ierror,ierrcode)
-      return
-  300 print *, ' error in communicating with emperor'
-      call mpi_abort(mpi_comm_world,ierror,ierrcode)
-      return
-  956 format (' initial energy could not be calculated',41x)
-  957 format (80x)
-  965 format (' convergence code ',i2,' # of function calls ',
-     *  i4,' # of gradient calls ',i4,10x)
-  975 format (' energy ',1p,e12.4,' scaled gradient ',e11.3,32x)
-      end
-#else
-      subroutine minim_jlee
-c  controls minimization and sorting routines
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.IOUNITS'
-      write (iout,*) "Unsupported option for serial version"
-      return
-      end
-#endif
-
-      logical function check_var(var,info)
-      implicit real*8 (a-h,o-z)
-      include 'DIMENSIONS'
-      include 'COMMON.VAR'
-      include 'COMMON.IOUNITS'
-      include 'COMMON.GEO'
-      include 'COMMON.SETUP'
-      dimension var(maxvar)
-      dimension info(3)
-C AL -------
-       check_var=.false.
-       do i=nphi+ntheta+1,nphi+ntheta+nside
-! Check the side chain "valence" angles alpha
-         if (var(i).lt.1.0d-7) then 
-           write (iout,*) 'CHUJ NASTAPIL ABSOLUTNY!!!!!!!!!!!!'
-           write (iout,*) 'Processor',me,'received bad variables!!!!'
-           write (iout,*) 'Variables'
-           write (iout,'(8f10.4)') (rad2deg*var(j),j=1,nvar)
-           write (iout,*) 'Continuing calculations at this point',
-     & ' could destroy the results obtained so far... ABORTING!!!!!!'
-           write (iout,'(a19,i5,f10.4,a4,2i4,a3,i3)') 
-     &     'valence angle alpha',i-nphi-ntheta,var(i),
-     &     'n it',info(1),info(2),'mv ',info(3)
-           write (*,*) 'CHUJ NASTAPIL ABSOLUTNY!!!!!!!!!!!!'
-           write (*,*) 'Processor',me,'received bad variables!!!!'
-           write (*,*) 'Variables'
-           write (*,'(8f10.4)') (rad2deg*var(j),j=1,nvar)
-           write (*,*) 'Continuing calculations at this point',
-     & ' could destroy the results obtained so far... ABORTING!!!!!!'
-           write (*,'(a19,i5,f10.4,a4,2i4,a3,i3)') 
-     &     'valence angle alpha',i-nphi-ntheta,var(i),
-     &     'n it',info(1),info(2),'mv ',info(3)
-           check_var=.true.
-           return
-         endif
-       enddo
-! Check the backbone "valence" angles theta
-       do i=nphi+1,nphi+ntheta
-         if (var(i).lt.1.0d-7) then
-           write (iout,*) 'CHUJ NASTAPIL ABSOLUTNY!!!!!!!!!!!!'
-           write (iout,*) 'Processor',me,'received bad variables!!!!'
-           write (iout,*) 'Variables'
-           write (iout,'(8f10.4)') (rad2deg*var(j),j=1,nvar)
-           write (iout,*) 'Continuing calculations at this point',
-     & ' could destroy the results obtained so far... ABORTING!!!!!!'
-           write (iout,'(a19,i5,f10.4,a4,2i4,a3,i3)') 
-     &     'valence angle theta',i-nphi,var(i),
-     &     'n it',info(1),info(2),'mv ',info(3)
-           write (*,*) 'CHUJ NASTAPIL ABSOLUTNY!!!!!!!!!!!!'
-           write (*,*) 'Processor',me,'received bad variables!!!!'
-           write (*,*) 'Variables'
-           write (*,'(8f10.4)') (rad2deg*var(j),j=1,nvar)
-           write (*,*) 'Continuing calculations at this point',
-     & ' could destroy the results obtained so far... ABORTING!!!!!!'
-           write (*,'(a19,i5,f10.4,a4,2i4,a3,i3)') 
-     &     'valence angle theta',i-nphi,var(i),
-     &     'n it',info(1),info(2),'mv ',info(3)
-           check_var=.true.
-           return
-         endif
-       enddo
-       return
-       end