poprawka w pametrach
[unres.git] / source / unres / src_MD / parmread.F
index 88c55d9..f6ea06a 100644 (file)
@@ -28,6 +28,7 @@ C
       include 'COMMON.SETUP'
       character*1 t1,t2,t3
       character*1 onelett(4) /"G","A","P","D"/
+      character*1 toronelet(-2:2) /"p","a","G","A","P"/
       logical lprint,LaTeX
       dimension blower(3,3,maxlob)
       dimension b(13)
@@ -102,13 +103,48 @@ C Read the parameters of the probability distribution/energy expression
 C of the virtual-bond valence angles theta
 C
       do i=1,ntyp
-        read (ithep,*,err=111,end=111) a0thet(i),(athet(j,i),j=1,2),
-     &    (bthet(j,i),j=1,2)
+        read (ithep,*,err=111,end=111) a0thet(i),(athet(j,i,1,1),j=1,2),
+     &    (bthet(j,i,1,1),j=1,2)
         read (ithep,*,err=111,end=111) (polthet(j,i),j=0,3)
-       read (ithep,*,err=111,end=111) (gthet(j,i),j=1,3)
-       read (ithep,*,err=111,end=111) theta0(i),sig0(i),sigc0(i)
-       sigc0(i)=sigc0(i)**2
+        read (ithep,*,err=111,end=111) (gthet(j,i),j=1,3)
+        read (ithep,*,err=111,end=111) theta0(i),sig0(i),sigc0(i)
+        sigc0(i)=sigc0(i)**2
+      enddo
+      do i=1,ntyp
+      athet(1,i,1,-1)=athet(1,i,1,1)
+      athet(2,i,1,-1)=athet(2,i,1,1)
+      bthet(1,i,1,-1)=-bthet(1,i,1,1)
+      bthet(2,i,1,-1)=-bthet(2,i,1,1)
+      athet(1,i,-1,1)=-athet(1,i,1,1)
+      athet(2,i,-1,1)=-athet(2,i,1,1)
+      bthet(1,i,-1,1)=bthet(1,i,1,1)
+      bthet(2,i,-1,1)=bthet(2,i,1,1)
       enddo
+      do i=-ntyp,-1
+      a0thet(i)=a0thet(-i)
+      athet(1,i,-1,-1)=athet(1,-i,1,1)
+      athet(2,i,-1,-1)=-athet(2,-i,1,1)
+      bthet(1,i,-1,-1)=bthet(1,-i,1,1)
+      bthet(2,i,-1,-1)=-bthet(2,-i,1,1)
+      athet(1,i,-1,1)=athet(1,-i,1,1)
+      athet(2,i,-1,1)=-athet(2,-i,1,1)
+      bthet(1,i,-1,1)=-bthet(1,-i,1,1)
+      bthet(2,i,-1,1)=bthet(2,-i,1,1)
+      athet(1,i,1,-1)=-athet(1,-i,1,1)
+      athet(2,i,1,-1)=athet(2,-i,1,1)
+      bthet(1,i,1,-1)=bthet(1,-i,1,1)
+      bthet(2,i,1,-1)=-bthet(2,-i,1,1)
+      theta0(i)=theta0(-i)
+      sig0(i)=sig0(-i)
+      sigc0(i)=sigc0(-i)
+       do j=0,3
+        polthet(j,i)=polthet(j,-i)
+       enddo
+       do j=1,3
+         gthet(j,i)=gthet(j,-i)
+       enddo
+      enddo
+
       close (ithep)
       if (lprint) then
       if (.not.LaTeX) then
@@ -119,7 +155,7 @@ C
      & '        B1    ','         B2   '        
         do i=1,ntyp
           write(iout,'(a3,i4,2x,5(1pe14.5))') restyp(i),i,
-     &        a0thet(i),(athet(j,i),j=1,2),(bthet(j,i),j=1,2)
+     &        a0thet(i),(athet(j,i,1,1),j=1,2),(bthet(j,i,1,1),j=1,2)
         enddo
         write (iout,'(/a/9x,5a/79(1h-))') 
      & 'Parameters of the expression for sigma(theta_c):',
@@ -146,7 +182,8 @@ C
      & '   b1*10^1    ','    b2*10^1   '        
         do i=1,ntyp
           write(iout,'(a3,1h&,2x,5(f8.3,1h&))') restyp(i),
-     &        a0thet(i),(100*athet(j,i),j=1,2),(10*bthet(j,i),j=1,2)
+     &        a0thet(i),(100*athet(j,i,1,1),j=1,2),
+     &        (10*bthet(j,i,1,1),j=1,2)
         enddo
        write (iout,'(/a/9x,5a/79(1h-))') 
      & 'Parameters of the expression for sigma(theta_c):',
@@ -174,7 +211,9 @@ C
       read (ithep,*,err=111,end=111) nthetyp,ntheterm,ntheterm2,
      &  ntheterm3,nsingle,ndouble
       nntheterm=max0(ntheterm,ntheterm2,ntheterm3)
+      write(iout,*) "I am here",ntyp1
       read (ithep,*,err=111,end=111) (ithetyp(i),i=1,ntyp1)
+C      write(iout,*) "I am herew"
       do i=-ntyp1,-1
         ithetyp(i)=-ithetyp(-i)
       enddo
@@ -565,38 +604,54 @@ C Read torsional parameters
 C
       read (itorp,*,end=113,err=113) ntortyp
       read (itorp,*,end=113,err=113) (itortyp(i),i=1,ntyp)
-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 iblock=1,2
+      do i=-ntyp,-1
+       itortyp(i)=-itortyp(-i)
+      enddo
+      write (iout,*) 'ntortyp',ntortyp
+      do i=0,ntortyp-1
+        do j=-ntortyp+1,ntortyp-1
+          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
+c         write(iout,*) i,j,k,iblock,nterm(i,j,iblock)
+c         write(iout,*) v1(k,-i,-j,iblock),v1(k,i,j,iblock),
+c      &v2(k,-i,-j,iblock),v2(k,i,j,iblock)
           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) 
+     &        vlor2(k,i,j),vlor3(k,i,j)
             v0ij=v0ij+vlor1(k,i,j)/(1+vlor3(k,i,j)**2)
           enddo
-          v0(i,j)=v0ij
+          v0(i,j,iblock)=v0ij
+          v0(-i,-j,iblock)=v0ij
         enddo
       enddo
+      enddo
       close (itorp)
       if (lprint) then
-       write (iout,'(/a/)') 'Torsional constants:'
-       do i=1,ntortyp
-         do j=1,ntortyp
+        write (iout,'(/a/)') 'Torsional constants:'
+        do i=1,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)
-             write (iout,'(3(1pe15.5))') 
+            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
           enddo
@@ -605,9 +660,13 @@ c      write (iout,*) 'ntortyp',ntortyp
 C
 C 6/23/01 Read parameters for double torsionals
 C
-      do i=1,ntortyp
-        do j=1,ntortyp
-          do k=1,ntortyp
+C      do i=1,ntortyp
+C        do j=1,ntortyp
+C          do k=1,ntortyp
+      do iblock=1,2
+      do i=0,ntortyp-1
+        do j=-ntortyp+1,ntortyp-1
+          do k=-ntortyp+1,ntortyp-1
             read (itordp,'(3a1)',end=114,err=114) t1,t2,t3
 c              write (iout,*) "OK onelett",
 c     &         i,j,k,t1,t2,t3
@@ -621,55 +680,81 @@ c     &         i,j,k,t1,t2,t3
 #endif
                stop "Error in double torsional parameter file"
             endif
-            read (itordp,*,end=114,err=114) ntermd_1(i,j,k),
-     &         ntermd_2(i,j,k)
-            read (itordp,*,end=114,err=114) (v1c(1,l,i,j,k),l=1,
-     &         ntermd_1(i,j,k))
-            read (itordp,*,end=114,err=114) (v1s(1,l,i,j,k),l=1,
-     &         ntermd_1(i,j,k))
-            read (itordp,*,end=114,err=114) (v1c(2,l,i,j,k),l=1,
-     &         ntermd_1(i,j,k))
-            read (itordp,*,end=114,err=114) (v1s(2,l,i,j,k),l=1,
-     &         ntermd_1(i,j,k))
-            read (itordp,*,end=114,err=114) ((v2c(l,m,i,j,k),
-     &         v2c(m,l,i,j,k),v2s(l,m,i,j,k),v2s(m,l,i,j,k),
-     &         m=1,l-1),l=1,ntermd_2(i,j,k))
-          enddo
-        enddo
-      enddo
+           read (itordp,*,end=114,err=114) ntermd_1(i,j,k,iblock),
+     &         ntermd_2(i,j,k,iblock)
+            ntermd_1(-i,-j,-k,iblock)=ntermd_1(i,j,k,iblock)
+            ntermd_2(-i,-j,-k,iblock)=ntermd_2(i,j,k,iblock)
+            read (itordp,*,end=114,err=114) (v1c(1,l,i,j,k,iblock),l=1,
+     &         ntermd_1(i,j,k,iblock))
+            read (itordp,*,end=114,err=114)(v1s(1,l,i,j,k,iblock),l=1,
+     &         ntermd_1(i,j,k,iblock))
+            read (itordp,*,end=114,err=114)(v1c(2,l,i,j,k,iblock),l=1,
+     &         ntermd_1(i,j,k,iblock))
+            read (itordp,*,end=114,err=114)(v1s(2,l,i,j,k,iblock),l=1,
+     &         ntermd_1(i,j,k,iblock))
+C Martix of D parameters for one dimesional foureir series
+            do l=1,ntermd_1(i,j,k,iblock)
+             v1c(1,l,-i,-j,-k,iblock)=v1c(1,l,i,j,k,iblock)
+             v1s(1,l,-i,-j,-k,iblock)=-v1s(1,l,i,j,k,iblock)
+             v1c(2,l,-i,-j,-k,iblock)=v1c(2,l,i,j,k,iblock)
+             v1s(2,l,-i,-j,-k,iblock)=-v1s(2,l,i,j,k,iblock)
+c            write(iout,*) "whcodze" ,
+c     & v1s(2,l,-i,-j,-k,iblock),v1s(2,l,i,j,k,iblock)
+            enddo
+            read (itordp,*,end=114,err=114) ((v2c(l,m,i,j,k,iblock),
+     &         v2c(m,l,i,j,k,iblock),v2s(l,m,i,j,k,iblock),
+     &         v2s(m,l,i,j,k,iblock),
+     &         m=1,l-1),l=1,ntermd_2(i,j,k,iblock))
+C Martix of D parameters for two dimesional fourier series
+            do l=1,ntermd_2(i,j,k,iblock)
+             do m=1,l-1
+             v2c(l,m,-i,-j,-k,iblock)=v2c(l,m,i,j,k,iblock)
+             v2c(m,l,-i,-j,-k,iblock)=v2c(m,l,i,j,k,iblock)
+             v2s(l,m,-i,-j,-k,iblock)=-v2s(l,m,i,j,k,iblock)
+             v2s(m,l,-i,-j,-k,iblock)=-v2s(m,l,i,j,k,iblock)
+             enddo!m
+            enddo!l
+          enddo!k
+        enddo!j
+      enddo!i
+      enddo!iblock
       if (lprint) then
-      write (iout,*) 
+      write (iout,*)
       write (iout,*) 'Constants for double torsionals'
       do iblock=1,2
       do i=0,ntortyp-1
         do j=-ntortyp+1,ntortyp-1
           do k=-ntortyp+1,ntortyp-1
             write (iout,*) 'ityp',i,' jtyp',j,' ktyp',k,
-     &        ' nsingle',ntermd_1(i,j,k),' ndouble',ntermd_2(i,j,k)
+     &        ' nsingle',ntermd_1(i,j,k,iblock),
+     &        ' ndouble',ntermd_2(i,j,k,iblock)
             write (iout,*)
             write (iout,*) 'Single angles:'
-            do l=1,ntermd_1(i,j,k)
-              write (iout,'(i5,2f10.5,5x,2f10.5)') l,
-     &           v1c(1,l,i,j,k),v1s(1,l,i,j,k),
-     &           v1c(2,l,i,j,k),v1s(2,l,i,j,k)
+            do l=1,ntermd_1(i,j,k,iblock)
+              write (iout,'(i5,2f10.5,5x,2f10.5,5x,2f10.5)') l,
+     &           v1c(1,l,i,j,k,iblock),v1s(1,l,i,j,k,iblock),
+     &           v1c(2,l,i,j,k,iblock),v1s(2,l,i,j,k,iblock),
+     &           v1s(1,l,-i,-j,-k,iblock),v1s(2,l,-i,-j,-k,iblock)
             enddo
             write (iout,*)
             write (iout,*) 'Pairs of angles:'
-            write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k))
-            do l=1,ntermd_2(i,j,k)
-              write (iout,'(i5,20f10.5)') 
-     &         l,(v2c(l,m,i,j,k),m=1,ntermd_2(i,j,k))
+            write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k,iblock))
+            do l=1,ntermd_2(i,j,k,iblock)
+              write (iout,'(i5,20f10.5)')
+     &         l,(v2c(l,m,i,j,k,iblock),m=1,ntermd_2(i,j,k,iblock))
             enddo
             write (iout,*)
-            write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k))
-            do l=1,ntermd_2(i,j,k)
-              write (iout,'(i5,20f10.5)') 
-     &         l,(v2s(l,m,i,j,k),m=1,ntermd_2(i,j,k))
+            write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k,iblock))
+            do l=1,ntermd_2(i,j,k,iblock)
+              write (iout,'(i5,20f10.5)')
+     &         l,(v2s(l,m,i,j,k,iblock),m=1,ntermd_2(i,j,k,iblock)),
+     &         (v2s(l,m,-i,-j,-k,iblock),m=1,ntermd_2(i,j,k,iblock))
             enddo
             write (iout,*)
           enddo
         enddo
       enddo
+      enddo
       endif
 #endif
 C Read of Side-chain backbone correlation parameters
@@ -678,18 +763,19 @@ CCC
 C
       read (isccor,*,end=1113,err=1113) nsccortyp
 #ifdef SCCORPDB
+      write (iout,*) "Tu wchodze"
       read (isccor,*,end=1113,err=1113) (isccortyp(i),i=1,ntyp)
       do i=-ntyp,-1
         isccortyp(i)=-isccortyp(-i)
       enddo
       iscprol=isccortyp(20)
-c      write (iout,*) 'ntortyp',ntortyp
+C      write (iout,*) 'ntortyp',ntortyp
       maxinter=3
 cc maxinter is maximum interaction sites
       do l=1,maxinter    
       do i=1,nsccortyp
-       do j=1,nsccortyp
-         read (isccor,*,end=1113,err=1113) nterm_sccor(i,j),
+        do j=1,nsccortyp
+         read (isccor,*,end=1113,err=1113) nterm_sccor(i,j),
      &             nlor_sccor(i,j)
           v0ijsccor=0.0d0
           v0ijsccor1=0.0d0
@@ -699,9 +785,10 @@ cc maxinter is maximum interaction sites
           nterm_sccor(-i,j)=nterm_sccor(i,j)
           nterm_sccor(-i,-j)=nterm_sccor(i,j)
           nterm_sccor(i,-j)=nterm_sccor(i,j)  
-         do k=1,nterm_sccor(i,j)
-           read (isccor,*,end=119,err=119) kk,v1sccor(k,l,i,j)
+          do k=1,nterm_sccor(i,j)
+           read (isccor,*,end=1113,err=1113) kk,v1sccor(k,l,i,j)
      &    ,v2sccor(k,l,i,j)
+c            write(iout,*) "k=",kk
             if (j.eq.iscprol) then
               if (i.eq.isccortyp(10)) then
               v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)
@@ -734,15 +821,15 @@ cc maxinter is maximum interaction sites
             endif
              endif
              endif 
-           read (isccor,*,end=1113,err=1113) kk,v1sccor(k,l,i,j)
-     &    ,v2sccor(k,l,i,j) 
+C         read (isccor,*,end=1113,err=1113) kk,v1sccor(k,l,i,j)
+C     &    ,v2sccor(k,l,i,j) 
             v0ijsccor=v0ijsccor+si*v1sccor(k,l,i,j)
             v0ijsccor1=v0ijsccor+si*v1sccor(k,l,-i,j)
             v0ijsccor2=v0ijsccor+si*v1sccor(k,l,i,-j)
             v0ijsccor3=v0ijsccor+si*v1sccor(k,l,-i,-j)
             si=-si
           enddo
-         do k=1,nlor_sccor(i,j)
+         do k=1,nlor_sccor(i,j)
             read (isccor,*,end=1113,err=1113) kk,vlor1sccor(k,i,j),
      &        vlor2sccor(k,i,j),vlor3sccor(k,i,j) 
             v0ijsccor=v0ijsccor+vlor1sccor(k,i,j)/
@@ -757,6 +844,7 @@ cc maxinter is maximum interaction sites
       enddo
       close (isccor)
 #else
+      write(iout,*) "a tu nie wchodze"
       read (isccor,*,end=119,err=119) (isccortyp(i),i=1,ntyp)
 c      write (iout,*) 'ntortyp',ntortyp
       maxinter=3