zmiana do DiL
authorBartlomiej Zaborowski <bartek.zaborowski@chem.univ.gda.pl>
Tue, 2 Oct 2012 15:44:12 +0000 (17:44 +0200)
committerBartlomiej Zaborowski <bartek.zaborowski@chem.univ.gda.pl>
Tue, 2 Oct 2012 15:44:12 +0000 (17:44 +0200)
source/unres/src_CSA_DiL/COMMON.TORSION
source/unres/src_CSA_DiL/energy_p_new_barrier.F
source/unres/src_CSA_DiL/initialize_p.F
source/unres/src_CSA_DiL/parmread.F

index c42ea1d..a51c1a9 100644 (file)
@@ -1,9 +1,9 @@
 C Torsional constants of the rotation about virtual-bond dihedral angles
       double precision v1,v2,vlor1,vlor2,vlor3,v0
       integer itortyp,ntortyp,nterm,nlor,nterm_old
-      common/torsion/v0(-maxtor:maxtor,-maxtor:maxtor),
-     &    v1(maxterm,-maxtor:maxtor,-maxtor:maxtor),
-     &    v2(maxterm,-maxtor:maxtor,-maxtor:maxtor),
+      common/torsion/v0(-maxtor:maxtor,-maxtor:maxtor,2),
+     &    v1(maxterm,-maxtor:maxtor,-maxtor:maxtor,2),
+     &    v2(maxterm,-maxtor:maxtor,-maxtor:maxtor,2),
      &    vlor1(maxlor,maxtor,maxtor),
      &    vlor2(maxlor,maxtor,maxtor),vlor3(maxlor,maxtor,maxtor),
      &    itortyp(-ntyp:ntyp),ntortyp,
index bb1c8a1..7495d94 100644 (file)
@@ -5609,6 +5609,11 @@ c      lprn=.true.
       etors_ii=0.0D0
        itori=itortyp(itype(i-2))
        itori1=itortyp(itype(i-1))
+        if (iabs(itype(i)).eq.20) then
+        iblock=2
+        else
+        iblock=1
+        endif
         phii=phi(i)
         gloci=0.0D0
 C Proline-Proline pair is a special case...
@@ -5708,9 +5713,9 @@ c     lprn=.true.
         phii=phi(i)
         gloci=0.0D0
 C Regular cosine and sine terms
-        do j=1,nterm(itori,itori1)
-          v1ij=v1(j,itori,itori1)
-          v2ij=v2(j,itori,itori1)
+        do j=1,nterm(itori,itori1,iblock)
+          v1ij=v1(j,itori,itori1,iblock)
+          v2ij=v2(j,itori,itori1,iblock)
           cosphi=dcos(j*phii)
           sinphi=dsin(j*phii)
           etors=etors+v1ij*cosphi+v2ij*sinphi
@@ -5725,7 +5730,7 @@ C          [v2 cos(phi/2)+v3 sin(phi/2)]^2 + 1
 C
         cosphi=dcos(0.5d0*phii)
         sinphi=dsin(0.5d0*phii)
-        do j=1,nlor(itori,itori1)
+        do j=1,nlor(itori,itori1,iblock)
           vl1ij=vlor1(j,itori,itori1)
           vl2ij=vlor2(j,itori,itori1)
           vl3ij=vlor3(j,itori,itori1)
           gloci=gloci+vl1ij*(vl3ij*cosphi-vl2ij*sinphi)*pom
         enddo
 C Subtract the constant term
-        etors=etors-v0(itori,itori1)
+        etors=etors-v0(itori,itori1,iblock)
           if (energy_dec) write (iout,'(a6,i5,0pf7.3)')
-     &         'etor',i,etors_ii-v0(itori,itori1)
+     &         'etor',i,etors_ii-v0(itori,itori1,iblock)
         if (lprn)
      &  write (iout,'(2(a3,2x,i3,2x),2i3,6f8.3/26x,6f8.3/)')
      &  restyp(itype(i-2)),i-2,restyp(itype(i-1)),i-1,itori,itori1,
-     &  (v1(j,itori,itori1),j=1,6),(v2(j,itori,itori1),j=1,6)
+     &  (v1(j,itori,itori1,iblock),j=1,6),
+     &  (v2(j,itori,itori1,iblock),j=1,6)
         gloc(i-3,icg)=gloc(i-3,icg)+wtor*gloci
 c       write (iout,*) 'i=',i,' gloc=',gloc(i-3,icg)
       enddo
index bc9b520..f9b654d 100644 (file)
@@ -196,8 +196,8 @@ c      call memmon_print_usage()
        do iblock=1,2
        do j=-maxtor,maxtor
          do k=1,maxterm
-           v1(k,j,i)=0.0D0
-           v2(k,j,i)=0.0D0
+           v1(k,j,i,iblock)=0.0D0
+           v2(k,j,i,iblock)=0.0D0
           enddo
         enddo
       enddo
index d419945..08126c6 100644 (file)
@@ -451,18 +451,28 @@ C Read torsional parameters
 C
       read (itorp,*,end=113,err=113) ntortyp
       read (itorp,*,end=113,err=113) (itortyp(i),i=1,ntyp)
+      do iblock=1,2
+      do i=-ntyp,-1
+       itortyp(i)=-itortyp(-1)
+      enddo
 c      write (iout,*) 'ntortyp',ntortyp
-      do i=1,ntortyp
-       do j=1,ntortyp
-         read (itorp,*,end=113,err=113) nterm(i,j),nlor(i,j)
+      do i=0,ntortyp,ntortyp-1
+       do j=-ntortyp,ntortyp
+         read (itorp,*,end=113,err=113) nterm(i,j,iblock),
+     &          nlor(i,j,iblock)
+           nterm(-i,-j,iblock)=nterm(i,j,iblock)
+           nlor(-i,-j,iblock)=nlor(i,j,iblock)
           v0ij=0.0d0
           si=-1.0d0
-         do k=1,nterm(i,j)
-           read (itorp,*,end=113,err=113) kk,v1(k,i,j),v2(k,i,j) 
-            v0ij=v0ij+si*v1(k,i,j)
+         do k=1,nterm(i,j,iblock)
+           read (itorp,*,end=113,err=113) kk,v1(k,i,j,iblock),
+     &      v2(k,i,j,iblock)
+            v1(k,-i,-j,iblock)=v1(k,i,j,iblock)
+            v2(k,-i,-j,iblock)=-v2(k,i,j,iblock) 
+            v0ij=v0ij+si*v1(k,i,j,iblock)
             si=-si
           enddo
-         do k=1,nlor(i,j)
+         do k=1,nlor(i,j,iblock)
             read (itorp,*,end=113,err=113) kk,vlor1(k,i,j),
      &        vlor2(k,i,j),vlor3(k,i,j) 
             v0ij=v0ij+vlor1(k,i,j)/(1+vlor3(k,i,j)**2)
@@ -477,11 +487,12 @@ c      write (iout,*) 'ntortyp',ntortyp
          do j=1,ntortyp
             write (iout,*) 'ityp',i,' jtyp',j
             write (iout,*) 'Fourier constants'
-            do k=1,nterm(i,j)
-             write (iout,'(2(1pe15.5))') v1(k,i,j),v2(k,i,j)
+            do k=1,nterm(i,j,iblock)
+             write (iout,'(2(1pe15.5))') v1(k,i,j,iblock),
+     &         v2(k,i,j,iblock)
             enddo
             write (iout,*) 'Lorenz constants'
-            do k=1,nlor(i,j)
+            do k=1,nlor(i,j,iblock)
              write (iout,'(3(1pe15.5))') 
      &         vlor1(k,i,j),vlor2(k,i,j),vlor3(k,i,j)
             enddo