removal of CSA from MD version of code
[unres.git] / source / unres / src_MD / energy_p_new_barrier.F
index 51fbd11..85e3dbc 100644 (file)
@@ -493,8 +493,9 @@ cMS$ATTRIBUTES C ::  proc_proc
 #ifdef DEBUG
       write (iout,*) "sum_gradient gvdwc, gvdwx"
       do i=1,nres
-        write (iout,'(i3,3f10.5,5x,3f10.5,5x,f10.5)') 
-     &   i,(gvdwx(j,i),j=1,3),(gvdwc(j,i),j=1,3)
+        write (iout,'(i3,3f10.5,5x,3f10.5,5x,3f10.5,5x,3f10.5)') 
+     &   i,(gvdwx(j,i),j=1,3),(gvdwcT(j,i),j=1,3),(gvdwc(j,i),j=1,3),
+     &   (gvdwcT(j,i),j=1,3)
       enddo
       call flush(iout)
 #endif
@@ -527,6 +528,21 @@ c      enddo
       call flush(iout)
 #endif
 #ifdef SPLITELE
+#ifdef TSCSC
+      do i=1,nct
+        do j=1,3
+          gradbufc(j,i)=wsc*gvdwc(j,i)+wsc*wscT*gvdwcT(j,i)+
+     &                wscp*(gvdwc_scp(j,i)+gvdwc_scpp(j,i))+
+     &                welec*gelc_long(j,i)+wvdwpp*gvdwpp(j,i)+
+     &                wel_loc*gel_loc_long(j,i)+
+     &                wcorr*gradcorr_long(j,i)+
+     &                wcorr5*gradcorr5_long(j,i)+
+     &                wcorr6*gradcorr6_long(j,i)+
+     &                wturn6*gcorr6_turn_long(j,i)+
+     &                wstrain*ghpbc(j,i)
+        enddo
+      enddo 
+#else
       do i=1,nct
         do j=1,3
           gradbufc(j,i)=wsc*gvdwc(j,i)+
@@ -540,6 +556,7 @@ c      enddo
      &                wstrain*ghpbc(j,i)
         enddo
       enddo 
+#endif
 #else
       do i=1,nct
         do j=1,3
@@ -571,6 +588,16 @@ c      enddo
           gradbufc_sum(j,i)=gradbufc(j,i)
         enddo
       enddo
+c      call MPI_AllReduce(gradbufc(1,1),gradbufc_sum(1,1),3*nres,
+c     &    MPI_DOUBLE_PRECISION,MPI_SUM,FG_COMM,IERR)
+c      time_reduce=time_reduce+MPI_Wtime()-time00
+#ifdef DEBUG
+c      write (iout,*) "gradbufc_sum after allreduce"
+c      do i=1,nres
+c        write (iout,'(i3,3f10.5)') i,(gradbufc_sum(j,i),j=1,3)
+c      enddo
+c      call flush(iout)
+#endif
 #ifdef TIMING
 c      time_allreduce=time_allreduce+MPI_Wtime()-time00
 #endif
@@ -585,6 +612,17 @@ c      time_allreduce=time_allreduce+MPI_Wtime()-time00
      &                  " jgrad_end  ",jgrad_end(i),
      &                  i=igrad_start,igrad_end)
 #endif
+c
+c Obsolete and inefficient code; we can make the effort O(n) and, therefore,
+c do not parallelize this part.
+c
+c      do i=igrad_start,igrad_end
+c        do j=jgrad_start(i),jgrad_end(i)
+c          do k=1,3
+c            gradbufc(k,i)=gradbufc(k,i)+gradbufc_sum(k,j)
+c          enddo
+c        enddo
+c      enddo
       do j=1,3
         gradbufc(j,nres-1)=gradbufc_sum(j,nres)
       enddo
@@ -623,6 +661,16 @@ c      time_allreduce=time_allreduce+MPI_Wtime()-time00
           gradbufc(j,i)=gradbufc(j,i+1)+gradbufc_sum(j,i+1)
         enddo
       enddo
+c      do i=nnt,nres-1
+c        do k=1,3
+c          gradbufc(k,i)=0.0d0
+c        enddo
+c        do j=i+1,nres
+c          do k=1,3
+c            gradbufc(k,i)=gradbufc(k,i)+gradbufc(k,j)
+c          enddo
+c        enddo
+c      enddo
 #ifdef DEBUG
       write (iout,*) "gradbufc after summing"
       do i=1,nres
@@ -677,11 +725,20 @@ c      time_allreduce=time_allreduce+MPI_Wtime()-time00
      &                wsccor*gsccorc(j,i)
      &               +wscloc*gscloc(j,i)
 #endif
+#ifdef TSCSC
+          gradx(j,i,icg)=wsc*gvdwx(j,i)+wsc*wscT*gvdwxT(j,i)+
+     &                  wscp*gradx_scp(j,i)+
+     &                  wbond*gradbx(j,i)+
+     &                  wstrain*ghpbx(j,i)+wcorr*gradxorr(j,i)+
+     &                  wsccor*gsccorx(j,i)
+     &                 +wscloc*gsclocx(j,i)
+#else
           gradx(j,i,icg)=wsc*gvdwx(j,i)+wscp*gradx_scp(j,i)+
      &                  wbond*gradbx(j,i)+
      &                  wstrain*ghpbx(j,i)+wcorr*gradxorr(j,i)+
      &                  wsccor*gsccorx(j,i)
      &                 +wscloc*gsclocx(j,i)
+#endif
         enddo
       enddo 
 #ifdef DEBUG
@@ -764,6 +821,10 @@ c
       do i=1,nct
         gvdwc_norm=dsqrt(scalar(gvdwc(1,i),gvdwc(1,i)))
         if (gvdwc_norm.gt.gvdwc_max) gvdwc_max=gvdwc_norm
+#ifdef TSCSC
+        gvdwc_norm=dsqrt(scalar(gvdwcT(1,i),gvdwcT(1,i)))
+        if (gvdwc_norm.gt.gvdwc_max) gvdwc_max=gvdwc_norm          
+#endif
         gvdwc_scp_norm=dsqrt(scalar(gvdwc_scp(1,i),gvdwc_scp(1,i)))
         if (gvdwc_scp_norm.gt.gvdwc_scp_max) 
      &   gvdwc_scp_max=gvdwc_scp_norm
@@ -802,6 +863,10 @@ c
         if (gscloc_norm.gt.gscloc_max) gscloc_max=gscloc_norm
         gvdwx_norm=dsqrt(scalar(gvdwx(1,i),gvdwx(1,i)))
         if (gvdwx_norm.gt.gvdwx_max) gvdwx_max=gvdwx_norm
+#ifdef TSCSC
+        gvdwx_norm=dsqrt(scalar(gvdwxT(1,i),gvdwxT(1,i)))
+        if (gvdwx_norm.gt.gvdwx_max) gvdwx_max=gvdwx_norm
+#endif
         gradx_scp_norm=dsqrt(scalar(gradx_scp(1,i),gradx_scp(1,i)))
         if (gradx_scp_norm.gt.gradx_scp_max) 
      &    gradx_scp_max=gradx_scp_norm