Dzialajaczy dla D aminokwasow whama(mono) psuedosymetria dla GABowego
[unres.git] / source / wham / src / store_parm.F
index 6aa33c5..a2960a9 100644 (file)
@@ -19,7 +19,7 @@ C
       include 'COMMON.SCROT'
       include 'COMMON.SCCOR'
       include 'COMMON.ALLPARM'
-      integer i,j,k,l,m,mm,iparm
+      integer i,j,k,l,m,mm,iparm,ichir1,ichir2,iblock,iii
 
 c Store weights
       ww_all(1,iparm)=wsc
@@ -53,11 +53,15 @@ c Store bond parameters
       enddo
 c Store bond angle parameters
 #ifdef CRYST_THETA
-      do i=1,ntyp
+      do i=-ntyp,ntyp
         a0thet_all(i,iparm)=a0thet(i)
+        do ichir1=-1,1
+        do ichir2=-1,1
         do j=1,2
-          athet_all(j,i,iparm)=athet(j,i)
-          bthet_all(j,i,iparm)=bthet(j,i)
+          athet_all(j,i,ichir1,ichir2,iparm)=athet(j,i,ichir1,ichir2)
+          bthet_all(j,i,ichir1,ichir2,iparm)=bthet(j,i,ichir1,ichir2)
+        enddo
+        enddo
         enddo
         do j=0,3
           polthet_all(j,i,iparm)=polthet(j,i)
@@ -109,10 +113,12 @@ c Store bond angle parameters
 #endif
 #ifdef CRYST_SC
 c Store the sidechain rotamer parameters
-      do i=1,ntyp
-        nlob_all(i,iparm)=nlob(i)
-        do j=1,nlob(i)
-          bsc_all(j,i,iparm)=bsc(j,i)
+      do i=-ntyp,ntyp
+       iii=iabs(i)
+       if (i.eq.0) cycle
+        nlob_all(iii,iparm)=nlob(iii)
+        do j=1,nlob(iii)
+          bsc_all(j,iii,iparm)=bsc(j,iii)
           do k=1,3
             censc_all(k,j,i,iparm)=censc(k,j,i)
           enddo
@@ -131,44 +137,48 @@ c Store the sidechain rotamer parameters
       enddo
 #endif
 c Store the torsional parameters
-      do i=1,ntortyp
-        do j=1,ntortyp
-          v0_all(i,j,iparm)=v0(i,j)
-          nterm_all(i,j,iparm)=nterm(i,j)
-          nlor_all(i,j,iparm)=nlor(i,j)
-          do k=1,nterm(i,j)
-            v1_all(k,i,j,iparm)=v1(k,i,j)
-            v2_all(k,i,j,iparm)=v2(i,i,j)
-          enddo
-          do k=1,nlor(i,j)
-            vlor1_all(k,i,j,iparm)=vlor1(k,i,j)
-            vlor2_all(k,i,j,iparm)=vlor2(k,i,j)
-            vlor3_all(k,i,j,iparm)=vlor3(k,i,j)
-          enddo
-        enddo
-      enddo  
+      do iblock=1,2
+      do i=-ntortyp+1,ntortyp-1
+        do j=-ntortyp+1,ntortyp-1
+          v0_all(i,j,iblock,iparm)=v0(i,j,iblock)
+          nterm_all(i,j,iblock,iparm)=nterm(i,j,iblock)
+          nlor_all(i,j,iblock,iparm)=nlor(i,j,iblock)
+          do k=1,nterm(i,j,iblock)
+            v1_all(k,i,j,iblock,iparm)=v1(k,i,j,iblock)
+            v2_all(k,i,j,iblock,iparm)=v2(k,i,j,iblock)
+           enddo
+          do k=1,nlor(i,j,iblock)
+             vlor1_all(k,i,j,iparm)=vlor1(k,i,j)
+             vlor2_all(k,i,j,iparm)=vlor2(k,i,j)
+             vlor3_all(k,i,j,iparm)=vlor3(k,i,j)
+           enddo
+         enddo
+      enddo
+       enddo  
 c Store the double torsional parameters
-      do i=1,ntortyp
-        do j=1,ntortyp
-          do k=1,ntortyp
-            ntermd1_all(i,j,k,iparm)=ntermd_1(i,j,k)
-            ntermd2_all(i,j,k,iparm)=ntermd_2(i,j,k)
-            do l=1,ntermd_1(i,j,k)
-              v1c_all(1,l,i,j,k,iparm)=v1c(1,l,i,j,k)
-              v1c_all(2,l,i,j,k,iparm)=v1c(2,l,i,j,k)
-              v2c_all(1,l,i,j,k,iparm)=v2c(1,l,i,j,k)
-              v2c_all(2,l,i,j,k,iparm)=v2c(2,l,i,j,k)
-            enddo
-            do l=1,ntermd_2(i,j,k)
-              do m=1,ntermd_2(i,j,k)
-                v2s_all(l,m,i,j,k,iparm)=v2s(l,m,i,j,k)
-              enddo
-            enddo
-          enddo
-        enddo
+      do iblock=1,2
+      do i=-ntortyp+1,ntortyp-1
+        do j=-ntortyp+1,ntortyp-1
+          do k=-ntortyp+1,ntortyp-1
+            ntermd1_all(i,j,k,iblock,iparm)=ntermd_1(i,j,k,iblock)
+            ntermd2_all(i,j,k,iblock,iparm)=ntermd_2(i,j,k,iblock)
+            do l=1,ntermd_1(i,j,k,iblock)
+              v1c_all(1,l,i,j,k,iblock,iparm)=v1c(1,l,i,j,k,iblock)
+              v1c_all(2,l,i,j,k,iblock,iparm)=v1c(2,l,i,j,k,iblock)
+              v2c_all(1,l,i,j,k,iblock,iparm)=v2c(1,l,i,j,k,iblock)
+              v2c_all(2,l,i,j,k,iblock,iparm)=v2c(2,l,i,j,k,iblock)
+             enddo
+            do l=1,ntermd_2(i,j,k,iblock)
+              do m=1,ntermd_2(i,j,k,iblock)
+                v2s_all(l,m,i,j,k,iblock,iparm)=v2s(l,m,i,j,k,iblock)
+               enddo
+             enddo
+           enddo
+         enddo
+       enddo
       enddo
 c Store parameters of the cumulants
-      do i=1,nloctyp
+      do i=-nloctyp,nloctyp
         do j=1,2
           b1_all(j,i,iparm)=b1(j,i)
           b1tilde_all(j,i,iparm)=b1tilde(j,i)
@@ -262,7 +272,7 @@ C
       include 'COMMON.SCROT'
       include 'COMMON.SCCOR'
       include 'COMMON.ALLPARM'
-      integer i,j,k,l,m,mm,iparm
+      integer i,j,k,l,m,mm,iparm,ichir1,ichir2,iblock,iii
 
 c Restore weights
       wsc=ww_all(1,iparm)
@@ -296,12 +306,17 @@ c Restore bond parameters
       enddo
 c Restore bond angle parameters
 #ifdef CRYST_THETA
-      do i=1,ntyp
+      do i=-ntyp,ntyp
         a0thet(i)=a0thet_all(i,iparm)
+
+        do ichir1=-1,1
+        do ichir2=-1,1
         do j=1,2
-          athet(j,i)=athet_all(j,i,iparm)
-          bthet(j,i)=bthet_all(j,i,iparm)
-        enddo
+          athet(j,i,ichir1,ichir2)=athet_all(j,i,ichir1,ichir2,iparm)
+          bthet(j,i,ichir1,ichir2)=bthet_all(j,i,ichir1,ichir2,iparm)
+       enddo
+       enddo
+       enddo
         do j=0,3
           polthet(j,i)=polthet_all(j,i,iparm)
         enddo
@@ -352,10 +367,12 @@ c Restore bond angle parameters
 #endif
 c Restore the sidechain rotamer parameters
 #ifdef CRYST_SC
-      do i=1,ntyp
-        nlob(i)=nlob_all(i,iparm)
-        do j=1,nlob(i)
-          bsc(j,i)=bsc_all(j,i,iparm)
+      do i=-ntyp,ntyp
+        if (i.eq.0) cycle
+        iii=iabs(i)
+        nlob(iii)=nlob_all(iii,iparm)
+        do j=1,nlob(iii)
+          bsc(j,iii)=bsc_all(j,iii,iparm)
           do k=1,3
             censc(k,j,i)=censc_all(k,j,i,iparm)
           enddo
@@ -374,44 +391,48 @@ c Restore the sidechain rotamer parameters
       enddo
 #endif
 c Restore the torsional parameters
-      do i=1,ntortyp
-        do j=1,ntortyp
-          v0(i,j)=v0_all(i,j,iparm)
-          nterm(i,j)=nterm_all(i,j,iparm)
-          nlor(i,j)=nlor_all(i,j,iparm)
-          do k=1,nterm(i,j)
-            v1(k,i,j)=v1_all(k,i,j,iparm)
-            v2(i,i,j)=v2_all(k,i,j,iparm)
-          enddo
-          do k=1,nlor(i,j)
-            vlor1(k,i,j)=vlor1_all(k,i,j,iparm)
-            vlor2(k,i,j)=vlor2_all(k,i,j,iparm)
-            vlor3(k,i,j)=vlor3_all(k,i,j,iparm)
-          enddo
-        enddo
-      enddo  
+      do iblock=1,2
+      do i=-ntortyp+1,ntortyp-1
+        do j=-ntortyp+1,ntortyp-1
+          v0(i,j,iblock)=v0_all(i,j,iblock,iparm)
+          nterm(i,j,iblock)=nterm_all(i,j,iblock,iparm)
+          nlor(i,j,iblock)=nlor_all(i,j,iblock,iparm)
+          do k=1,nterm(i,j,iblock)
+            v1(k,i,j,iblock)=v1_all(k,i,j,iblock,iparm)
+            v2(k,i,j,iblock)=v2_all(k,i,j,iblock,iparm)
+           enddo
+          do k=1,nlor(i,j,iblock)
+             vlor1(k,i,j)=vlor1_all(k,i,j,iparm)
+             vlor2(k,i,j)=vlor2_all(k,i,j,iparm)
+             vlor3(k,i,j)=vlor3_all(k,i,j,iparm)
+           enddo
+         enddo
+       enddo  
+      enddo
 c Restore the double torsional parameters
-      do i=1,ntortyp
-        do j=1,ntortyp
-          do k=1,ntortyp
-            ntermd_1(i,j,k)=ntermd1_all(i,j,k,iparm)
-            ntermd_2(i,j,k)=ntermd2_all(i,j,k,iparm)
-            do l=1,ntermd_1(i,j,k)
-              v1c(1,l,i,j,k)=v1c_all(1,l,i,j,k,iparm)
-              v1c(2,l,i,j,k)=v1c_all(2,l,i,j,k,iparm)
-              v2c(1,l,i,j,k)=v2c_all(1,l,i,j,k,iparm)
-              v2c(2,l,i,j,k)=v2c_all(2,l,i,j,k,iparm)
-            enddo
-            do l=1,ntermd_2(i,j,k)
-              do m=1,ntermd_2(i,j,k)
-                v2s(l,m,i,j,k)=v2s_all(l,m,i,j,k,iparm)
-              enddo
-            enddo
-          enddo
-        enddo
+      do iblock=1,2
+      do i=-ntortyp+1,ntortyp-1
+        do j=-ntortyp+1,ntortyp-1
+          do k=-ntortyp+1,ntortyp-1
+            ntermd_1(i,j,k,iblock)=ntermd1_all(i,j,k,iblock,iparm)
+            ntermd_2(i,j,k,iblock)=ntermd2_all(i,j,k,iblock,iparm)
+            do l=1,ntermd_1(i,j,k,iblock)
+              v1c(1,l,i,j,k,iblock)=v1c_all(1,l,i,j,k,iblock,iparm)
+              v1c(2,l,i,j,k,iblock)=v1c_all(2,l,i,j,k,iblock,iparm)
+              v2c(1,l,i,j,k,iblock)=v2c_all(1,l,i,j,k,iblock,iparm)
+              v2c(2,l,i,j,k,iblock)=v2c_all(2,l,i,j,k,iblock,iparm)
+             enddo
+            do l=1,ntermd_2(i,j,k,iblock)
+              do m=1,ntermd_2(i,j,k,iblock)
+                v2s(l,m,i,j,k,iblock)=v2s_all(l,m,i,j,k,iblock,iparm)
+               enddo
+             enddo
+           enddo
+         enddo
+       enddo
       enddo
 c Restore parameters of the cumulants
-      do i=1,nloctyp
+      do i=-nloctyp,nloctyp
         do j=1,2
           b1(j,i)=b1_all(j,i,iparm)
           b1tilde(j,i)=b1tilde_all(j,i,iparm)