DIST2_CUT introduced for homology to remove restraints
authorCezary Czaplewski <czarek@chem.univ.gda.pl>
Fri, 29 Apr 2016 17:01:42 +0000 (19:01 +0200)
committerCezary Czaplewski <czarek@chem.univ.gda.pl>
Fri, 29 Apr 2016 17:01:42 +0000 (19:01 +0200)
source/unres/src_MD/COMMON.CONTROL
source/unres/src_MD/readrtns.F

index 4895b45..e2b4b80 100644 (file)
@@ -1,7 +1,8 @@
       integer modecalc,iscode,indpdb,indback,indphi,iranconf,icheckgrad,
      & iprint,i2ndstr,mucadyn,constr_dist,constr_homology,homol_nset
       real*8 waga_homology
-      real*8 waga_dist, waga_angle, waga_theta, waga_d, dist_cut
+      real*8 waga_dist, waga_angle, waga_theta, waga_d, dist_cut,
+     &  dist2_cut
       logical minim,refstr,pdbref,outpdb,outmol2,outx,overlapsc,
      &                 energy_dec,
      &                 sideadd,lsecondary,read_cart,unres_pdb,
@@ -16,6 +17,6 @@
      & constr_dist,gnorm_check,gradout,split_ene,constr_homology,
      & homol_nset,read2sigma,start_from_model
       common /homol/ waga_homology(maxprocs/20),
-     & waga_dist, waga_angle, waga_theta, waga_d, dist_cut
+     & waga_dist, waga_angle, waga_theta, waga_d, dist_cut,dist2_cut
 C... minim = .true. means DO minimization.
 C... energy_dec = .true. means print energy decomposition matrix
index eb10b7f..6b59d69 100644 (file)
@@ -2581,6 +2581,7 @@ c      call flush(iout)
       call readi(controlcard,"NPAIR",npair_,0)
       call readi(controlcard,"NDIST",ndist_,0)
       call reada(controlcard,'DIST_CUT',dist_cut,5.0d0)
+      call reada(controlcard,'DIST2_CUT',dist2_cut,9999.0d0)
       call multreadi(controlcard,"IFRAG",ifrag_(1,1),2*nfrag_,0)
       call multreadi(controlcard,"IPAIR",ipair_(1,1),2*npair_,0)
       call multreada(controlcard,"WFRAG",wfrag_(1),nfrag_,0.0d0)
@@ -2885,8 +2886,15 @@ c           write(iout,*) "rescore(",k,irec,") =",rescore(k,irec)
           do i = nnt,nct-2 
             do j=i+2,nct 
 
-            if (idomain(k,i).eq.idomain(k,j).and.idomain(k,i).ne.0) then
-                  
+              x12=c(1,i)-c(1,j)
+              y12=c(2,i)-c(2,j)
+              z12=c(3,i)-c(3,j)
+              distal=dsqrt(x12*x12+y12*y12+z12*z12) 
+
+
+            if (idomain(k,i).eq.idomain(k,j).and.idomain(k,i).ne.0
+     &            .and. distal.le.dist2_cut ) then
+
               ii=ii+1
               ii_in_use(ii)=1
               l_homo(k,ii)=.true.
@@ -2896,13 +2904,6 @@ c             write (iout,*) "i",i," j",j," constr_homology",
 c    &                       constr_homology
               ires_homo(ii)=i
               jres_homo(ii)=j
-c
-c Attempt to replace dist(i,j) by its definition in ...
-c
-              x12=c(1,i)-c(1,j)
-              y12=c(2,i)-c(2,j)
-              z12=c(3,i)-c(3,j)
-              distal=dsqrt(x12*x12+y12*y12+z12*z12)
               odl(k,ii)=distal
               if (read2sigma) then
                 sigma_odl(k,ii)=0
      &        sigma_odl(k,ii)*dexp(0.5d0*(odl(k,ii)/dist_cut)**2-0.5d0)
               else
                 if (odl(k,ii).le.dist_cut) then
-                 sigma_odl(k,ii)=rescore(k,i)+rescore(k,j) ! other exprs possible
-c                sigma_odl(k,ii)=hmscore(k)*rescore(k,i)*rescore(k,j)
+                 sigma_odl(k,ii)=rescore(k,i)+rescore(k,j) 
                 else
 #ifdef OLDSIGMA
-                 sigma_odl(k,ii)=(rescore(k,i)+rescore(k,j))* ! sigma ~ rescore ~ error 
+                 sigma_odl(k,ii)=(rescore(k,i)+rescore(k,j))* 
      &                      dexp(0.5d0*(odl(k,ii)/dist_cut)**2)
 #else
-                 sigma_odl(k,ii)=(rescore(k,i)+rescore(k,j))* ! sigma ~ rescore ~ error 
+                 sigma_odl(k,ii)=(rescore(k,i)+rescore(k,j))* 
      &                      dexp(0.5d0*(odl(k,ii)/dist_cut)**2-0.5d0)
 #endif
                 endif
               endif
-c   Following expr replaced by a positive exp argument
-c             sigma_odl(k,ii)=(rescore(k,i)+rescore(k,j))*
-c    &                      dexp(-0.5d0*(odl(k,ii)/dist_cut)**2)
-
-c             sigma_odl(k,ii)=hmscore(k)*rescore(k,i)*rescore(k,j)*
-c    &                      dexp(-0.5d0*(odl(k,ii)/dist_cut)**2)
-c
-              sigma_odl(k,ii)=1.0d0/(sigma_odl(k,ii)*sigma_odl(k,ii)) ! rescore ~ error
-c             sigma_odl(k,ii)=sigma_odl(k,ii)*sigma_odl(k,ii)
-c
-c             sigma_odl(k,ii)=sigma_odl_temp(i,j,k)* ! new var read from file (?)
-c    &                        sigma_odl_temp(i,j,k)  ! not inverse because of use of res. similarity
+              sigma_odl(k,ii)=1.0d0/(sigma_odl(k,ii)*sigma_odl(k,ii)) 
             else
               ii=ii+1
               l_homo(k,ii)=.false.