include 'COMMON.FFIELD'
include 'COMMON.MD'
include 'COMMON.IOUNITS'
+ include 'COMMON.SCCOR'
external ufparm
integer uiparm(1)
double precision urparm(1)
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'
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
include 'COMMON.CHAIN'
include 'COMMON.VAR'
include 'COMMON.MD'
+ include 'COMMON.SCCOR'
C
C Initialize Cartesian-coordinate gradient
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
+ 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