1st running version of UNRES HM by FP and AL
[unres.git] / source / unres / src_MD / gradient_p.F
index 7fec1e8..8606ba4 100644 (file)
@@ -252,10 +252,15 @@ cd      enddo
 C-------------------------------------------------------------------------
       subroutine cartgrad
       implicit real*8 (a-h,o-z)
+c
+c     integer iistart,iiend
+c
       include 'DIMENSIONS'
+      include 'COMMON.LOCAL'
 #ifdef MPI
       include 'mpif.h'
 #endif
+      include 'COMMON.CONTROL'
       include 'COMMON.CHAIN'
       include 'COMMON.DERIV'
       include 'COMMON.VAR'
@@ -277,30 +282,66 @@ c        enddo
       time00=MPI_Wtime()
 #endif
       icg=1
+#ifdef DEBUG
+c     write (iout,*) "in cartgrad before sum_: duscdiff and duscdiffx"
+      write (iout,*) "------ Before call sum_ in cargrad ------"
+      do i=1,nres
+         write (iout,*) i,(duscdiff(j,i),j=1,3)
+         write (iout,*) i,(duscdiffx(j,i),j=1,3)
+c        write (iout,*) "nphi+i",nphi+i," gloc",gloc(nphi+i,icg)
+c        write (iout,*) "i",i," gradc",(gradc(j,i,icg),j=1,3)
+c        write (iout,*) "i",i," gradx",(gradx(j,i,icg),j=1,3)
+      enddo
+#endif
       call sum_gradient
+c
 #ifdef TIMING
 #endif
 c        do i=1,nres
 c        write (iout,*) "checkgrad", gloc_sc(1,i,icg),gloc(i,icg)
 c        enddo     
-cd      write (iout,*) "After sum_gradient"
-cd      do i=1,nres-1
-cd        write (iout,*) i," gradc  ",(gradc(j,i,icg),j=1,3)
-cd        write (iout,*) i," gradx  ",(gradx(j,i,icg),j=1,3)
-cd      enddo
+#ifdef DEBUG
+        write (iout,*) "------ After sum_gradient in cartgrad ------"
+c       do i=1,nres-1
+        do i=1,nres
+         write (iout,*) "nphi+i",nphi+i," gloc",gloc(nphi+i,icg)
+         write (iout,*) "i",i," gradc",(gradc(j,i,icg),j=1,3)
+         write (iout,*) "i",i," gradx",(gradx(j,i,icg),j=1,3)
+        enddo
+#endif
 c If performing constraint dynamics, add the gradients of the constraint energy
-      if(usampl.and.totT.gt.eq_time) then
+#ifdef DEBUG
+      write (iout,*) "in cartgrad: dutheta, duscdiff and duscdiffx"
+      do i=1,nres
+        write (iout,*) i,dutheta(i)
+        write (iout,*) i,(duscdiff(j,i),j=1,3)
+        write (iout,*) i,(duscdiffx(j,i),j=1,3)
+      enddo
+#endif
+c     if(usampl.and.totT.gt.eq_time) then
+      if(usampl.and.totT.gt.eq_time .or. constr_homology.gt.0) then
+c
+c     Setting suited bounds for HM restrs
+c
          do i=1,nct
            do j=1,3
              gradc(j,i,icg)=gradc(j,i,icg)+dudconst(j,i)+duscdiff(j,i)
              gradx(j,i,icg)=gradx(j,i,icg)+dudxconst(j,i)+duscdiffx(j,i)
            enddo
+#ifdef DEBUG
+         write (iout,*) "i",i," gradc",(gradc(j,i,icg),j=1,3)
+         write (iout,*) "i",i," gradx",(gradx(j,i,icg),j=1,3)
+#endif
          enddo
          do i=1,nres-3
            gloc(i,icg)=gloc(i,icg)+dugamma(i)
          enddo
+c
          do i=1,nres-2
            gloc(nphi+i,icg)=gloc(nphi+i,icg)+dutheta(i)
+#ifdef DEBUG
+         write (iout,*) "nphi+i",nphi+i," gloc",gloc(nphi+i,icg)
+#endif
          enddo
       endif 
 #ifdef TIMING
@@ -389,6 +430,17 @@ C
           enddo
         enddo
       enddo
+c
+c Initialize the gradients of local restraints
+c
+      do i=1,nres
+        dutheta(i)=0.0d0
+        dugamma(i)=0.0d0
+        do j=1,3
+          duscdiff(j,i)=0.0d0
+          duscdiffx(j,i)=0.0d0
+        enddo
+      enddo
 C
 C Initialize the gradient of local energy terms.
 C