restoring read2sigma code after wrong merge
[unres.git] / source / unres / src_MD / gradient_p.F
index 375fcf4..a29f83a 100644 (file)
@@ -8,6 +8,7 @@
       include 'COMMON.FFIELD'
       include 'COMMON.MD'
       include 'COMMON.IOUNITS'
+      include 'COMMON.SCCOR'
       external ufparm
       integer uiparm(1)
       double precision urparm(1)
@@ -251,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'
@@ -263,35 +269,79 @@ C-------------------------------------------------------------------------
       include 'COMMON.MD'
       include 'COMMON.IOUNITS'
       include 'COMMON.TIME1'
+      include 'COMMON.SCCOR'
 c
 c This subrouting calculates total Cartesian coordinate gradient. 
 c The subroutine chainbuild_cart and energy MUST be called beforehand.
 c
+c        do i=1,nres
+c        write (iout,*) "przed sum_grad", gloc_sc(1,i,icg),gloc(i,icg)
+c        enddo
+
 #ifdef TIMING
       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
-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
+c        do i=1,nres
+c        write (iout,*) "checkgrad", gloc_sc(1,i,icg),gloc(i,icg)
+c        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
+#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
       if(usampl.and.totT.gt.eq_time) then
+c      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)
+             gradc(j,i,icg)=gradc(j,i,icg)+dudconst(j,i)
+             gradx(j,i,icg)=gradx(j,i,icg)+dudxconst(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
@@ -337,6 +387,7 @@ C-------------------------------------------------------------------------
       include 'COMMON.CHAIN'
       include 'COMMON.VAR'
       include 'COMMON.MD'
+      include 'COMMON.SCCOR'
 C
 C Initialize Cartesian-coordinate gradient
 C
@@ -374,6 +425,26 @@ C
           gradx(j,i,icg)=0.0d0
           gscloc(j,i)=0.0d0
           gsclocx(j,i)=0.0d0
+          do intertyp=1,3
+           gloc_sc(intertyp,i,icg)=0.0d0
+          enddo
+#ifndef DFA
+          gdfad(j,i)=0.0d0
+          gdfat(j,i)=0.0d0
+          gdfan(j,i)=0.0d0
+          gdfab(j,i)=0.0d0
+#endif
+        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