By Adam
[unres.git] / source / unres / src_MD / int_to_cart.f
index 149e86f..6d0fb1b 100644 (file)
@@ -13,9 +13,15 @@ c-------------------------------------------------------------
       include 'COMMON.INTERACT'
       include 'COMMON.MD'
       include 'COMMON.IOUNITS'
-      
+      include 'COMMON.SCCOR' 
 c   calculating dE/ddc1      
        if (nres.lt.3) goto 18
+c       do i=1,nres
+c c       do intertyp=1,3
+c          write (iout,*) "przed tosyjnymi",i,intertyp,gcart(intertyp,i)
+c     &,gloc_sc(1,i,icg),gloc(i,icg)
+c          enddo
+c       enddo
        do j=1,3
          gcart(j,1)=gcart(j,1)+gloc(1,icg)*dphi(j,1,4)
      &     +gloc(nres-2,icg)*dtheta(j,1,3)      
@@ -119,9 +125,22 @@ C INTERTYP=2 Ca...Ca...Ca...SC
 C INTERTYP=3 SC...Ca...Ca...SC
 c   calculating dE/ddc1      
   18   continue
+c       do i=1,nres
+c       gloc(i,icg)=0.0D0
+c          write (iout,*) "poczotkoawy",i,gloc_sc(1,i,icg)
+c       enddo
+c       write (iout,*) "dtauangle"
+c       do i=1,nres
+c         write (iout,*) i
+c         do j=1,3
+c           do k=1,3
+c             write (iout,*) (dtauangle(l,k,j,i),l=1,3)
+c           enddo
+c         enddo
+c       enddo
        if (nres.lt.2) return
        if ((nres.lt.3).and.(itype(1).eq.10)) return
-       if (itype(1).ne.10) then
+       if ((itype(1).ne.10).and.(itype(1).ne.21)) then
         do j=1,3
 cc Derviative was calculated for oposite vector of side chain therefore
 c there is "-" sign before gloc_sc
@@ -129,15 +148,16 @@ c there is "-" sign before gloc_sc
      &     dtauangle(j,1,1,3)
          gcart(j,1)=gcart(j,1)+gloc_sc(1,0,icg)*
      &     dtauangle(j,1,2,3)
-          if (itype(2).ne.10) then
+          if ((itype(2).ne.10).and.(itype(2).ne.21)) then
          gxcart(j,1)= gxcart(j,1)
      &               -gloc_sc(3,0,icg)*dtauangle(j,3,1,3)
          gcart(j,1)=gcart(j,1)+gloc_sc(3,0,icg)*
-            dtauangle(j,3,2,3)
+     &       dtauangle(j,3,2,3)
           endif
        enddo
        endif
-         if (nres.ge.3).and.(itype(3).ne.10) then
+         if ((nres.ge.3).and.(itype(3).ne.10).and.(itype(3).ne.21))
+     & then
          do j=1,3
          gcart(j,1)=gcart(j,1)+gloc_sc(2,1,icg)*dtauangle(j,2,1,4)
          enddo
@@ -148,36 +168,51 @@ c     &     +gloc_sc(intertyp,nres-2,icg)*dtheta(j,1,3)
      
 c     Calculating the remainder of dE/ddc2
        do j=1,3
-         if(itype(2).ne.10) then
-           if (itype(1).ne.10) gxcart=(j,2)=gxcart(j,2)+
+         if((itype(2).ne.10).and.(itype(2).ne.21)) then
+           if (itype(1).ne.10) gxcart(j,2)=gxcart(j,2)+
      &                         gloc_sc(3,0,icg)*dtauangle(j,3,3,3)
-          if ((itype(3).ne.10).and.(nres.ge.3)) then
+        if ((itype(3).ne.10).and.(nres.ge.3).and.(itype(3).ne.21)) then
            gxcart(j,2)=gxcart(j,2)-gloc_sc(3,1,icg)*dtauangle(j,3,1,4)
 cc                  the   - above is due to different vector direction
            gcart(j,2)=gcart(j,2)+gloc_sc(3,1,icg)*dtauangle(j,3,2,4)
           endif
           if (nres.gt.3) then
-           gxcart(j,2)=gxcart(j,2)-gloc_sc(2,1,icg)*dtauangle(j,1,1,4)
+           gxcart(j,2)=gxcart(j,2)-gloc_sc(1,1,icg)*dtauangle(j,1,1,4)
 cc                  the   - above is due to different vector direction
-           gcart(j,2)=gcart(j,2)+gloc_sc(2,1,icg)*dtauangle(j,1,2,4)
+           gcart(j,2)=gcart(j,2)+gloc_sc(1,1,icg)*dtauangle(j,1,2,4)
+c          write(iout,*) gloc_sc(1,1,icg),dtauangle(j,1,2,4),"gcart"
+c           write(iout,*) gloc_sc(1,1,icg),dtauangle(j,1,1,4),"gx"
           endif
          endif
-         if (itype(1).ne.10) then
+         if ((itype(1).ne.10).and.(itype(1).ne.21)) then
           gcart(j,2)=gcart(j,2)+gloc_sc(1,0,icg)*dtauangle(j,1,3,3)
+c           write(iout,*)  gloc_sc(1,0,icg),dtauangle(j,1,3,3)
          endif
-         if ((itype(3).ne.10).and(nres.ge.3)) then
+         if ((itype(3).ne.10).and.(nres.ge.3)) then
           gcart(j,2)=gcart(j,2)+gloc_sc(2,1,icg)*dtauangle(j,2,2,4)
+c           write(iout,*) gloc_sc(2,1,icg),dtauangle(j,2,2,4)
+         endif
+         if ((itype(4).ne.10).and.(nres.ge.4)) then
+          gcart(j,2)=gcart(j,2)+gloc_sc(2,2,icg)*dtauangle(j,2,1,5)
+c           write(iout,*) gloc_sc(2,2,icg),dtauangle(j,2,1,5)
          endif
+
+c      write(iout,*) gcart(j,2),itype(2),itype(1),itype(3), "gcart2"
+       enddo
 c    If there are more than five residues
       if(nres.ge.5) then                          
         do i=3,nres-2
          do j=1,3
+c          write(iout,*) "before", gcart(j,i)
           if (itype(i).ne.10) then
           gxcart(j,i)=gxcart(j,i)+gloc_sc(2,i-2,icg)
      &    *dtauangle(j,2,3,i+1)
-     &    -gloc_sc(1,i-1,icg)*dtauangle(j,1,1i+2)
-          gcart(j,i)=gcart(j,i)+gloc_sc(1,i-1,icg)*
+     &    -gloc_sc(1,i-1,icg)*dtauangle(j,1,1,i+2)
+          gcart(j,i)=gcart(j,i)+gloc_sc(1,i-1,icg)
      &    *dtauangle(j,1,2,i+2)
+c                   write(iout,*) "new",j,i,
+c     &  gcart(j,i),gloc_sc(1,i-1,icg),dtauangle(j,1,2,i+2)
+
           if (itype(i-1).ne.10) then
            gxcart(j,i)=gxcart(j,i)+gloc_sc(3,i-2,icg)
      &*dtauangle(j,3,3,i+1)
@@ -196,6 +231,8 @@ c    If there are more than five residues
           if (itype(i+1).ne.10) then
            gcart(j,i)=gcart(j,i)+gloc_sc(2,i-1,icg)*
      &     dtauangle(j,2,2,i+2)
+c          write(iout,*) "numer",i,gloc_sc(2,i-1,icg),
+c     &    dtauangle(j,2,2,i+2)
           endif
           if (itype(i+2).ne.10) then
            gcart(j,i)=gcart(j,i)+gloc_sc(2,i,icg)*
@@ -207,37 +244,42 @@ c    If there are more than five residues
 c  Setting dE/ddnres-1       
       if(nres.ge.4) then
          do j=1,3
-         if (itype(nres-1).ne.10) then
+         if ((itype(nres-1).ne.10).and.(itype(nres-1).ne.21)) then
          gxcart(j,nres-1)=gxcart(j,nres-1)+gloc_sc(2,nres-3,icg)
      &    *dtauangle(j,2,3,nres)
+c          write (iout,*) "gxcart(nres-1)", gloc_sc(2,nres-3,icg),
+c     &     dtauangle(j,2,3,nres), gxcart(j,nres-1)
          if (itype(nres-2).ne.10) then
         gxcart(j,nres-1)=gxcart(j,nres-1)+gloc_sc(3,nres-3,icg)
      &    *dtauangle(j,3,3,nres)
           endif
-         if (itype(nres).ne.10) then
+         if ((itype(nres).ne.10).and.(itype(nres).ne.21)) then
         gxcart(j,nres-1)=gxcart(j,nres-1)-gloc_sc(3,nres-2,icg)
      &    *dtauangle(j,3,1,nres+1)
         gcart(j,nres-1)=gcart(j,nres-1)+gloc_sc(3,nres-2,icg)
      &    *dtauangle(j,3,2,nres+1)
           endif
          endif
-         if (itype(nres-2).ne.10) then
-            gcart(j,nres-1)=gcart(j,nres-1)+gloc_sc(2,nres-3,icg)*
-     &   *dtauangle(j,2,3,nres)
+         if ((itype(nres-2).ne.10).and.(itype(nres-2).ne.21)) then
+            gcart(j,nres-1)=gcart(j,nres-1)+gloc_sc(1,nres-3,icg)*
+     &   dtauangle(j,1,3,nres)
          endif
-          if (itype(nres).ne.10) then
+          if ((itype(nres).ne.10).and.(itype(nres).ne.21)) then
             gcart(j,nres-1)=gcart(j,nres-1)+gloc_sc(2,nres-2,icg)*
-          *dtauangle(j,2,2,nres+1)
+     &     dtauangle(j,2,2,nres+1)
+c           write (iout,*) "gcart(nres-1)", gloc_sc(2,nres-2,icg),
+c     &     dtauangle(j,2,2,nres+1), itype(nres-1),itype(nres)
            endif
          enddo
       endif 
 c  Settind dE/ddnres       
-       if (nres.ge.3).and(itype(nres).ne.10)then
+       if ((nres.ge.3).and.(itype(nres).ne.10))then
        do j=1,3
         gxcart(j,nres)=gxcart(j,nres)+gloc_sc(3,nres-2,icg)
      & *dtauangle(j,3,3,nres+1)+gloc_sc(2,nres-2,icg)
      & *dtauangle(j,2,3,nres+1)
         enddo
+       endif
 c   The side-chain vector derivatives
       return
       end