wham & cluster maxres=5000
[unres.git] / source / cluster / wham / src-HCD-5D / energy_p_new.F
index c2d7f85..27e944b 100644 (file)
@@ -126,7 +126,11 @@ C
       endif
 c      print *,"Processor",myrank," computed Utord"
 C
-      call eback_sc_corr(esccor)
+      if (wsccor.gt.0.0d0) then
+        call eback_sc_corr(esccor)
+      else
+        esccor=0.0d0
+      endif
 
       if (wliptran.gt.0) then
         call Eliptransfer(eliptran)
@@ -1272,7 +1276,7 @@ C finding the closest
 c            write (iout,*) i,j,xj,yj,zj
             rrij=1.0D0/(xj*xj+yj*yj+zj*zj)
             rij=dsqrt(rrij)
-            sss=sscale(1.0d0/rij))
+            sss=sscale(1.0d0/rij)
             sssgrad=sscagrad(1.0d0/rij)
             if (sss.le.0.0) cycle
 C Calculate angle-dependent terms of energy and contributions to their
@@ -1771,13 +1775,17 @@ C to calculate the el-loc multibody terms of various order.
 C
 c      write(iout,*) 'SET_MATRICES nphi=',nphi,nres
       do i=3,nres+1
-        if (i.gt. nnt+2 .and. i.lt.nct+2) then
+        ii=ireschain(i-2)
+        if (ii.eq.0) cycle
+        innt=chain_border(1,ii)
+        inct=chain_border(2,ii)
+        if (i.gt. innt+2 .and. i.lt.inct+2) then
           iti = itype2loc(itype(i-2))
         else
           iti=nloctyp
         endif
 c        if (i.gt. iatel_s+1 .and. i.lt.iatel_e+4) then
-        if (i.gt. nnt+1 .and. i.lt.nct+1) then
+        if (i.gt. innt+1 .and. i.lt.inct+1) then
           iti1 = itype2loc(itype(i-1))
         else
           iti1=nloctyp
@@ -1852,6 +1860,19 @@ c        b2tilde(2,i-2)=-b2(2,i-2)
         write (iout,*) 'theta=', theta(i-1)
 #endif
 #else
+        if (i.gt. innt+2 .and. i.lt.inct+2) then
+c        if (i.gt. nnt+2 .and. i.lt.nct+2) then
+          iti = itype2loc(itype(i-2))
+        else
+          iti=nloctyp
+        endif
+c        write (iout,*) "i",i-1," itype",itype(i-2)," iti",iti
+c        if (i.gt. iatel_s+1 .and. i.lt.iatel_e+4) then
+        if (i.gt. nnt+1 .and. i.lt.nct+1) then
+          iti1 = itype2loc(itype(i-1))
+        else
+          iti1=nloctyp
+        endif
 c        if (i.gt. nnt+2 .and. i.lt.nct+2) then
 c          iti = itype2loc(itype(i-2))
 c        else
@@ -2084,9 +2105,9 @@ C The order of matrices is from left to right.
         call transpose2(DtUg2der(1,1,i-1),auxmat(1,1))
         call matmat2(auxmat(1,1),EUg(1,1,i),Ug2DtEUgder(1,1,1,i))
         endif
-#endif
       enddo
       endif
+#endif
       return
       end
 C--------------------------------------------------------------------------
@@ -2113,7 +2134,7 @@ C
       include 'COMMON.INTERACT'
 #ifdef FOURBODY
       include 'COMMON.CONTACTS'
-      include 'COMMON.CONTMAP'
+      include 'COMMON.CONTMAT'
 #endif
       include 'COMMON.CORRMAT'
       include 'COMMON.TORSION'
@@ -2431,7 +2452,7 @@ C-------------------------------------------------------------------------------
       include 'COMMON.INTERACT'
 #ifdef FOURBODY
       include 'COMMON.CONTACTS'
-      include 'COMMON.CONTMAP'
+      include 'COMMON.CONTMAT'
 #endif
       include 'COMMON.CORRMAT'
       include 'COMMON.TORSION'
@@ -3476,7 +3497,7 @@ C Third- and fourth-order contributions from turns
       include 'COMMON.CHAIN'
       include 'COMMON.DERIV'
       include 'COMMON.INTERACT'
-      include 'COMMON.CONTACTS'
+      include 'COMMON.CORRMAT'
       include 'COMMON.TORSION'
       include 'COMMON.VECTORS'
       include 'COMMON.FFIELD'
@@ -3663,7 +3684,7 @@ C Third- and fourth-order contributions from turns
       include 'COMMON.CHAIN'
       include 'COMMON.DERIV'
       include 'COMMON.INTERACT'
-      include 'COMMON.CONTACTS'
+      include 'COMMON.CORRMAT'
       include 'COMMON.TORSION'
       include 'COMMON.VECTORS'
       include 'COMMON.FFIELD'
@@ -4516,6 +4537,10 @@ c
       estr1=0.0d0
 c      write (iout,*) "distchainmax",distchainmax
       do i=nnt+1,nct
+#ifdef FIVEDIAG
+        if (itype(i-1).eq.ntyp1 .or. itype(i).eq.ntyp1) cycle
+        diff = vbld(i)-vbldp0
+#else
         if (itype(i-1).eq.ntyp1 .and. itype(i).eq.ntyp1) cycle
 C          estr1=estr1+gnmr1(vbld(i),-1.0d0,distchainmax)
 C          do j=1,3
@@ -4533,6 +4558,9 @@ C         write(iout,*) i,diff
           diff = vbld(i)-vbldp0
 c          write (iout,*) i,vbld(i),vbldp0,diff,AKP*diff*diff
          endif
+#endif
+        if (energy_dec) write (iout,'(a7,i5,4f7.3)')
+     &     "estr bb",i,vbld(i),vbldp0,diff,AKP*diff*diff
           estr=estr+diff*diff
           do j=1,3
             gradb(j,i-1)=AKP*diff*dc(j,i-1)/vbld(i)
@@ -4551,8 +4579,9 @@ c
           nbi=nbondterm(iti)
           if (nbi.eq.1) then
             diff=vbld(i+nres)-vbldsc0(1,iti)
-C            write (iout,*) i,iti,vbld(i+nres),vbldsc0(1,iti),diff,
-C     &      AKSC(1,iti),AKSC(1,iti)*diff*diff
+            if (energy_dec) write (iout,*) 
+     &      i,iti,vbld(i+nres),vbldsc0(1,iti),diff,
+     &      AKSC(1,iti),AKSC(1,iti)*diff*diff
             estr=estr+0.5d0*AKSC(1,iti)*diff*diff
             do j=1,3
               gradbx(j,i)=AKSC(1,iti)*diff*dc(j,i+nres)/vbld(i+nres)
@@ -4923,14 +4952,14 @@ C        if (itype(i-1).eq.ntyp1) cycle
           coskt(k)=dcos(k*theti2)
           sinkt(k)=dsin(k*theti2)
         enddo
-        if (i.eq.3) then 
-          phii=0.0d0
-          ityp1=nthetyp+1
-          do k=1,nsingle
-            cosph1(k)=0.0d0
-            sinph1(k)=0.0d0
-          enddo
-        else
+cu        if (i.eq.3) then 
+cu          phii=0.0d0
+cu          ityp1=nthetyp+1
+cu          do k=1,nsingle
+cu            cosph1(k)=0.0d0
+cu            sinph1(k)=0.0d0
+cu          enddo
+cu        else
         if (i.gt.3 .and. itype(i-3).ne.ntyp1) then
 #ifdef OSF
           phii=phi(i)
@@ -4952,7 +4981,6 @@ c          ityp1=nthetyp+1
             sinph1(k)=0.0d0
           enddo 
         endif
-        endif
         if (i.lt.nres .and. itype(i+1).ne.ntyp1) then
 #ifdef OSF
           phii1=phi(i+1)