Adam's corrections
[unres.git] / source / unres / src-HCD-5D / readrtns_CSA.F
index cd60d6e..16c0f37 100644 (file)
@@ -171,13 +171,14 @@ c      call readi(controlcard,'IZ_SC',iz_sc,0)
       timlim=60.0D0*timlim
       safety = 60.0d0*safety
       modecalc=0
+      call readi(controlcard,"INTER_LIST_UPDATE",imatupdate,100)
       call reada(controlcard,"T_BATH",t_bath,300.0d0)
       minim=(index(controlcard,'MINIMIZE').gt.0)
       dccart=(index(controlcard,'CART').gt.0)
       overlapsc=(index(controlcard,'OVERLAP').gt.0)
       overlapsc=.not.overlapsc
-      searchsc=(index(controlcard,'NOSEARCHSC').gt.0)
-      searchsc=.not.searchsc
+      searchsc=(index(controlcard,'SEARCHSC').gt.0 .and.
+     &  index(controlcard,'NOSEARCHSC').eq.0)
       sideadd=(index(controlcard,'SIDEADD').gt.0)
       energy_dec=(index(controlcard,'ENERGY_DEC').gt.0)
       mremd_dec=(index(controlcard,'MREMD_DEC').gt.0)
@@ -304,9 +305,16 @@ C Reading the dimensions of box in x,y,z coordinates
       call reada(controlcard,'BOXX',boxxsize,100.0d0)
       call reada(controlcard,'BOXY',boxysize,100.0d0)
       call reada(controlcard,'BOXZ',boxzsize,100.0d0)
+      write(iout,*) "Periodic box dimensions",boxxsize,boxysize,boxzsize
 c Cutoff range for interactions
-      call reada(controlcard,"R_CUT",r_cut,15.0d0)
+      call reada(controlcard,"R_CUT_INT",r_cut_int,25.0d0)
+      call reada(controlcard,"R_CUT_RESPA",r_cut_respa,2.0d0)
       call reada(controlcard,"LAMBDA",rlamb,0.3d0)
+      write (iout,*) "Cutoff on interactions",r_cut_int
+      write (iout,*) 
+     & "Cutoff in switching short and long range interactions in RESPA",
+     & r_cut_respa
+      write (iout,*) "lambda in switch function",rlamb
       call reada(controlcard,"LIPTHICK",lipthick,0.0d0)
       call reada(controlcard,"LIPAQBUF",lipbufthick,0.0d0)
       if (lipthick.gt.0.0d0) then
@@ -539,12 +547,16 @@ c  if performing umbrella sampling, fragments constrained are read from the frag
      &  "Initial time step of numerical integration:",d_time,
      &  " natural units"
        write (iout,'(60x,f10.5,a)') d_time*48.9," fs"
+       write (iout,'(a60,f10.5,a)') "Cutoff on interactions",r_cut_int,
+     &   " A"
+       write(iout,'(a60,i5)')"Frequency of updating interaction list",
+     &   imatupdate
        if (RESPA) then
         write (iout,'(2a,i4,a)') 
      &    "A-MTS algorithm used; initial time step for fast-varying",
      &    " short-range forces split into",ntime_split," steps."
         write (iout,'(a,f5.2,a,f5.2)') "Short-range force cutoff",
-     &   r_cut," lambda",rlamb
+     &   r_cut_respa," lambda",rlamb
        endif
        write (iout,'(2a,f10.5)') 
      &  "Maximum acceleration threshold to reduce the time step",
@@ -2967,10 +2979,11 @@ c    &    sigma_odl_temp(maxres,maxres,max_template)
       character*24 model_ki_dist, model_ki_angle
       character*500 controlcard
       integer ki,i,ii,j,k,l,ii_in_use(maxdim),i_tmp,idomain_tmp,irec,
-     & ik,iistart,iishift
+     & ik,iistart
       integer ilen
       external ilen
-      logical liiflag
+      logical liiflag,lfirst
+      integer i01,i10
 c
 c     FP - Nov. 2014 Temporary specifications for new vars
 c
@@ -3176,6 +3189,8 @@ c    &                       constr_homology
           enddo
         lim_odl=ii
         endif
+c        write (iout,*) "Distance restraints set"
+c        call flush(iout)
 c
 c     Theta, dihedral and SC retraints
 c
@@ -3216,6 +3231,8 @@ c           sigma_dih(k,i)=sigma_dih(k,i)*sigma_dih(k,i)
           enddo
           lim_dih=nct-nnt-2 
         endif
+c        write (iout,*) "Dihedral angle restraints set"
+c        call flush(iout)
 
         if (waga_theta.gt.0.0d0) then
 c         open (ientin,file=tpl_k_sigma_theta,status='old')
@@ -3251,6 +3268,8 @@ c                             rescore(k,i-2) !  right expression ?
 c            sigma_theta(k,i)=sigma_theta(k,i)*sigma_theta(k,i)
           enddo
         endif
+c        write (iout,*) "Angle restraints set"
+c        call flush(iout)
 
         if (waga_d.gt.0.0d0) then
 c       open (ientin,file=tpl_k_sigma_d,status='old')
@@ -3286,51 +3305,66 @@ c              read (ientin,*) sigma_d(k,i) ! 1st variant
           enddo
         endif
       enddo
+c      write (iout,*) "SC restraints set"
+c      call flush(iout)
 c
 c remove distance restraints not used in any model from the list
 c shift data in all arrays
 c
+c      write (iout,*) "waga_dist",waga_dist," nnt",nnt," nct",nct
       if (waga_dist.ne.0.0d0) then
         ii=0
         liiflag=.true.
+        lfirst=.true.
         do i=nnt,nct-2 
          do j=i+2,nct 
           ii=ii+1
-          if (ii_in_use(ii).eq.0.and.liiflag) then
+c          if (idomain(k,i).eq.idomain(k,j).and.idomain(k,i).ne.0
+c     &            .and. distal.le.dist2_cut ) then
+c          write (iout,*) "i",i," j",j," ii",ii
+c          call flush(iout)
+          if (ii_in_use(ii).eq.0.and.liiflag.or.
+     &     ii_in_use(ii).eq.1.and.liiflag.and.ii.eq.lim_odl) then
             liiflag=.false.
-            iistart=ii
+            i10=ii
+            if (lfirst) then
+              lfirst=.false.
+              iistart=ii
+            else
+              if(i10.eq.lim_odl) i10=i10+1
+              do ki=0,i10-i01-1
+               ires_homo(iistart+ki)=ires_homo(ki+i01)
+               jres_homo(iistart+ki)=jres_homo(ki+i01)
+               ii_in_use(iistart+ki)=ii_in_use(ki+i01)
+               do k=1,constr_homology
+                odl(k,iistart+ki)=odl(k,ki+i01)
+                sigma_odl(k,iistart+ki)=sigma_odl(k,ki+i01)
+                l_homo(k,iistart+ki)=l_homo(k,ki+i01)
+               enddo
+              enddo
+              iistart=iistart+i10-i01
+            endif
           endif
-          if (ii_in_use(ii).ne.0.and..not.liiflag.or.
-     &                   .not.liiflag.and.ii.eq.lim_odl) then
-             if (ii.eq.lim_odl) then
-              iishift=ii-iistart+1
-             else
-              iishift=ii-iistart
-             endif
+          if (ii_in_use(ii).ne.0.and..not.liiflag) then
+             i01=ii
              liiflag=.true.
-             do ki=iistart,lim_odl-iishift
-              ires_homo(ki)=ires_homo(ki+iishift)
-              jres_homo(ki)=jres_homo(ki+iishift)
-              ii_in_use(ki)=ii_in_use(ki+iishift)
-              do k=1,constr_homology
-               odl(k,ki)=odl(k,ki+iishift)
-               sigma_odl(k,ki)=sigma_odl(k,ki+iishift)
-               l_homo(k,ki)=l_homo(k,ki+iishift)
-              enddo
-             enddo
-             ii=ii-iishift
-             lim_odl=lim_odl-iishift
           endif
          enddo
         enddo
+        lim_odl=iistart-1
       endif
-
+c      write (iout,*) "Removing distances completed"
+c      call flush(iout)
       endif ! .not. klapaucjusz
 
       if (constr_homology.gt.0) call homology_partition
+c      write (iout,*) "After homology_partition"
+c      call flush(iout)
       if (constr_homology.gt.0) call init_int_table
-c     write (iout,*) "ithet_start =",ithet_start,"ithet_end =",ithet_end
-c     write (iout,*) "loc_start =",loc_start,"loc_end =",loc_end
+c      write (iout,*) "After init_int_table"
+c      call flush(iout)
+c      write (iout,*) "ithet_start =",ithet_start,"ithet_end =",ithet_end
+c      write (iout,*) "loc_start =",loc_start,"loc_end =",loc_end
 c
 c Print restraints
 c
@@ -3603,7 +3637,7 @@ c           write (iout,*) "c(",j,i,") =",c(j,i)
           enddo
         enddo
         call int_from_cart(.true.,.false.)
-        call sc_loc_geom(.true.)
+        call sc_loc_geom(.false.)
         do i=1,nres
           thetaref(i)=theta(i)
           phiref(i)=phi(i)