Merge branch 'devel' into AFM
[unres.git] / source / wham / src-NEWSC-NEWCORR / store_parm.F
diff --git a/source/wham/src-NEWSC-NEWCORR/store_parm.F b/source/wham/src-NEWSC-NEWCORR/store_parm.F
new file mode 100644 (file)
index 0000000..0ededff
--- /dev/null
@@ -0,0 +1,547 @@
+      subroutine store_parm(iparm)
+C
+C Store parameters of set IPARM
+C valence angles and the side chains and energy parameters.
+C
+      implicit none
+      include 'DIMENSIONS'
+      include 'DIMENSIONS.ZSCOPT'
+      include 'DIMENSIONS.FREE'
+      include 'COMMON.IOUNITS'
+      include 'COMMON.CHAIN'
+      include 'COMMON.INTERACT'
+      include 'COMMON.GEO'
+      include 'COMMON.LOCAL'
+      include 'COMMON.TORSION'
+      include 'COMMON.FFIELD'
+      include 'COMMON.NAMES'
+      include 'COMMON.SBRIDGE'
+      include 'COMMON.SCROT'
+      include 'COMMON.SCCOR'
+      include 'COMMON.ALLPARM'
+      integer i,j,k,l,m,mm,iparm
+
+c Store weights
+      ww_all(1,iparm)=wsc
+      ww_all(2,iparm)=wscp
+      ww_all(3,iparm)=welec
+      ww_all(4,iparm)=wcorr
+      ww_all(5,iparm)=wcorr5
+      ww_all(6,iparm)=wcorr6
+      ww_all(7,iparm)=wel_loc
+      ww_all(8,iparm)=wturn3
+      ww_all(9,iparm)=wturn4
+      ww_all(10,iparm)=wturn6
+      ww_all(11,iparm)=wang
+      ww_all(12,iparm)=wscloc
+      ww_all(13,iparm)=wtor
+      ww_all(14,iparm)=wtor_d
+      ww_all(15,iparm)=wstrain
+      ww_all(16,iparm)=wvdwpp
+      ww_all(17,iparm)=wbond
+      ww_all(19,iparm)=wsccor
+c Store bond parameters
+      vbldp0_all(iparm)=vbldp0
+      akp_all(iparm)=akp
+      do i=1,ntyp
+        nbondterm_all(i,iparm)=nbondterm(i)
+        do j=1,nbondterm(i)
+          vbldsc0_all(j,i,iparm)=vbldsc0(j,i)
+          aksc_all(j,i,iparm)=aksc(j,i)
+          abond0_all(j,i,iparm)=abond0(j,i)
+        enddo
+      enddo
+c Store bond angle parameters
+#ifdef CRYST_THETA
+      do i=1,ntyp
+        a0thet_all(i,iparm)=a0thet(i)
+        do j=1,2
+          athet_all(j,i,iparm)=athet(j,i)
+          bthet_all(j,i,iparm)=bthet(j,i)
+        enddo
+        do j=0,3
+          polthet_all(j,i,iparm)=polthet(j,i)
+        enddo
+        do j=1,3
+          gthet_all(j,i,iparm)=gthet(j,i)
+        enddo
+        theta0_all(i,iparm)=theta0(i)
+        sig0_all(i,iparm)=sig0(i)
+        sigc0_all(i,iparm)=sigc0(i)
+      enddo
+#else
+      nthetyp_all(iparm)=nthetyp
+      ntheterm_all(iparm)=ntheterm
+      ntheterm2_all(iparm)=ntheterm2
+      ntheterm3_all(iparm)=ntheterm3
+      nsingle_all(iparm)=nsingle
+      ndouble_all(iparm)=ndouble
+      nntheterm_all(iparm)=nntheterm
+      do i=1,ntyp1
+        ithetyp_all(i,iparm)=ithetyp(i)
+      enddo
+      do i=1,maxthetyp1
+        do j=1,maxthetyp1
+          do k=1,maxthetyp1
+            aa0thet_all(i,j,k,iparm)=aa0thet(i,j,k)
+            do l=1,ntheterm
+              aathet_all(l,i,j,k,iparm)=aathet(l,i,j,k)
+            enddo
+            do l=1,ntheterm2
+              do m=1,nsingle
+                bbthet_all(m,l,i,j,k,iparm)=bbthet(m,l,i,j,k)
+                ccthet_all(m,l,i,j,k,iparm)=ccthet(m,l,i,j,k)
+                ddthet_all(m,l,i,j,k,iparm)=ddthet(m,l,i,j,k)
+                eethet_all(m,l,i,j,k,iparm)=eethet(m,l,i,j,k)
+              enddo
+            enddo
+            do l=1,ntheterm3
+              do m=1,ndouble
+                do mm=1,ndouble
+                 ffthet_all(mm,m,l,i,j,k,iparm)=ffthet(mm,m,l,i,j,k)
+                 ggthet_all(mm,m,l,i,j,k,iparm)=ggthet(mm,m,l,i,j,k)
+                enddo
+              enddo
+            enddo
+          enddo
+        enddo
+      enddo
+#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 k=1,3
+            censc_all(k,j,i,iparm)=censc(k,j,i)
+          enddo
+          do k=1,3
+            do l=1,3
+              gaussc_all(l,k,j,i,iparm)=gaussc(l,k,j,i)
+            enddo
+          enddo
+        enddo
+      enddo
+#else
+      do i=1,ntyp
+        do j=1,65
+          sc_parmin_all(j,i,iparm)=sc_parmin(j,i)
+        enddo
+      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  
+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
+      enddo
+c Store parameters of the cumulants
+      do i=1,nloctyp
+        do j=1,2
+          b1_all(j,i,iparm)=b1(j,i)
+          b1tilde_all(j,i,iparm)=b1tilde(j,i)
+          b2_all(j,i,iparm)=b2(j,i)
+        enddo
+        do j=1,2
+          do k=1,2
+            cc_all(k,j,i,iparm)=cc(k,j,i)
+            ctilde_all(k,j,i,iparm)=ctilde(k,j,i)
+            dd_all(k,j,i,iparm)=dd(k,j,i)
+            dtilde_all(k,j,i,iparm)=dtilde(k,j,i)
+            ee_all(k,j,i,iparm)=ee(k,j,i)
+          enddo
+        enddo
+      enddo
+c Store the parameters of electrostatic interactions
+      do i=1,2
+        do j=1,2
+          app_all(j,i,iparm)=app(j,i)
+          bpp_all(j,i,iparm)=bpp(j,i)
+          ael6_all(j,i,iparm)=ael6(j,i)
+          ael3_all(j,i,iparm)=ael3(j,i)
+        enddo
+      enddo
+c Store sidechain parameters
+      do i=1,ntyp
+        do j=1,ntyp
+          aa_all(j,i,iparm)=aa(j,i)
+          bb_all(j,i,iparm)=bb(j,i)
+          r0_all(j,i,iparm)=r0(j,i)
+          sigma_all(j,i,iparm)=sigma(j,i)
+          chi_all(j,i,iparm)=chi(j,i)
+          chipp_all(j,i,iparm)=chipp(j,i)
+          augm_all(j,i,iparm)=augm(j,i)
+          eps_all(j,i,iparm)=eps(j,i)
+          sigmap1_all(j,i,iparm)=sigmap1(j,i)
+          sigmap2_all(j,i,iparm)=sigmap2(j,i)
+          chis_all(j,i,iparm)=chis(j,i)
+          do k=1,4
+            alphasur_all(k,j,i,iparm)=alphasur(k,j,i)
+            wstate_all(k,j,i,iparm)=wstate(k,j,i)
+          enddo
+          nstate_all(j,i,iparm)=nstate(j,i)
+          do k=1,2
+            do l=1,2
+              dhead_all(l,k,j,i,iparm)=dhead(l,k,j,i)
+            enddo
+          enddo
+          do k=1,2
+            dtail_all(k,j,i,iparm)=dtail(k,j,i)
+          enddo
+          epshead_all(j,i,iparm)=epshead(j,i)
+          rborn_all(j,i,iparm)=rborn(j,i)
+          do k=1,2
+            wqdip_all(k,j,i,iparm)=wqdip(k,j,i)
+          enddo
+          wquad_all(j,i,iparm)=wquad(j,i)
+          alphapol_all(j,i,iparm)=alphapol(j,i)
+          do k=1,4
+            alphiso_all(k,j,i,iparm)=alphiso(k,j,i)
+          enddo
+          sigiso1_all(j,i,iparm)=sigiso1(j,i)
+          sigiso2_all(j,i,iparm)=sigiso2(j,i)
+          epsintab_all(j,i,iparm)=epsintab(j,i)
+        enddo
+      enddo
+      do i=1,ntyp
+        chip_all(i,iparm)=chip(i)
+        alp_all(i,iparm)=alp(i)
+      enddo
+c Store the SCp parameters
+      do i=1,ntyp
+        do j=1,2
+          aad_all(i,j,iparm)=aad(i,j)
+          bad_all(i,j,iparm)=bad(i,j)
+        enddo
+      enddo
+c Store disulfide-bond parameters
+      ebr_all(iparm)=ebr
+      d0cm_all(iparm)=d0cm
+      akcm_all(iparm)=akcm
+      akth_all(iparm)=akth
+      akct_all(iparm)=akct
+      v1ss_all(iparm)=v1ss
+      v2ss_all(iparm)=v2ss
+      v3ss_all(iparm)=v3ss
+c Store SC-backbone correlation parameters
+      do i=1,nsccortyp
+       do j=1,nsccortyp
+
+      nterm_sccor_all(j,i,iparm)=nterm_sccor(j,i)
+        do l=1,3
+           do k=1,nterm_sccor(j,i)
+            v1sccor_all(k,l,j,i,iparm)=v1sccor(k,l,j,i)
+            v2sccor_all(k,l,j,i,iparm)=v2sccor(k,l,j,i)
+          enddo
+         enddo
+        enddo
+      enddo
+      return
+      end
+c--------------------------------------------------------------------------
+      subroutine restore_parm(iparm)
+C
+C Store parameters of set IPARM
+C valence angles and the side chains and energy parameters.
+C
+      implicit none
+      include 'DIMENSIONS'
+      include 'DIMENSIONS.ZSCOPT'
+      include 'DIMENSIONS.FREE'
+      include 'COMMON.IOUNITS'
+      include 'COMMON.CHAIN'
+      include 'COMMON.INTERACT'
+      include 'COMMON.GEO'
+      include 'COMMON.LOCAL'
+      include 'COMMON.TORSION'
+      include 'COMMON.FFIELD'
+      include 'COMMON.NAMES'
+      include 'COMMON.SBRIDGE'
+      include 'COMMON.SCROT'
+      include 'COMMON.SCCOR'
+      include 'COMMON.ALLPARM'
+      integer i,j,k,l,m,mm,iparm
+
+c Restore weights
+      wsc=ww_all(1,iparm)
+      wscp=ww_all(2,iparm)
+      welec=ww_all(3,iparm)
+      wcorr=ww_all(4,iparm)
+      wcorr5=ww_all(5,iparm)
+      wcorr6=ww_all(6,iparm)
+      wel_loc=ww_all(7,iparm)
+      wturn3=ww_all(8,iparm)
+      wturn4=ww_all(9,iparm)
+      wturn6=ww_all(10,iparm)
+      wang=ww_all(11,iparm)
+      wscloc=ww_all(12,iparm)
+      wtor=ww_all(13,iparm)
+      wtor_d=ww_all(14,iparm)
+      wstrain=ww_all(15,iparm)
+      wvdwpp=ww_all(16,iparm)
+      wbond=ww_all(17,iparm)
+      wsccor=ww_all(19,iparm)
+c Restore bond parameters
+      vbldp0=vbldp0_all(iparm)
+      akp=akp_all(iparm)
+      do i=1,ntyp
+        nbondterm(i)=nbondterm_all(i,iparm)
+        do j=1,nbondterm(i)
+          vbldsc0(j,i)=vbldsc0_all(j,i,iparm)
+          aksc(j,i)=aksc_all(j,i,iparm)
+          abond0(j,i)=abond0_all(j,i,iparm)
+        enddo
+      enddo
+c Restore bond angle parameters
+#ifdef CRYST_THETA
+      do i=1,ntyp
+        a0thet(i)=a0thet_all(i,iparm)
+        do j=1,2
+          athet(j,i)=athet_all(j,i,iparm)
+          bthet(j,i)=bthet_all(j,i,iparm)
+        enddo
+        do j=0,3
+          polthet(j,i)=polthet_all(j,i,iparm)
+        enddo
+        do j=1,3
+          gthet(j,i)=gthet_all(j,i,iparm)
+        enddo
+        theta0(i)=theta0_all(i,iparm)
+        sig0(i)=sig0_all(i,iparm)
+        sigc0(i)=sigc0_all(i,iparm)
+      enddo
+#else
+      nthetyp=nthetyp_all(iparm)
+      ntheterm=ntheterm_all(iparm)
+      ntheterm2=ntheterm2_all(iparm)
+      ntheterm3=ntheterm3_all(iparm)
+      nsingle=nsingle_all(iparm)
+      ndouble=ndouble_all(iparm)
+      nntheterm=nntheterm_all(iparm)
+      do i=1,ntyp1
+        ithetyp(i)=ithetyp_all(i,iparm)
+      enddo
+      do i=1,maxthetyp1
+        do j=1,maxthetyp1
+          do k=1,maxthetyp1
+            aa0thet(i,j,k)=aa0thet_all(i,j,k,iparm)
+            do l=1,ntheterm
+              aathet(l,i,j,k)=aathet_all(l,i,j,k,iparm)
+            enddo
+            do l=1,ntheterm2
+              do m=1,nsingle
+                bbthet(m,l,i,j,k)=bbthet_all(m,l,i,j,k,iparm)
+                ccthet(m,l,i,j,k)=ccthet_all(m,l,i,j,k,iparm)
+                ddthet(m,l,i,j,k)=ddthet_all(m,l,i,j,k,iparm)
+                eethet(m,l,i,j,k)=eethet_all(m,l,i,j,k,iparm)
+              enddo
+            enddo
+            do l=1,ntheterm3
+              do m=1,ndouble
+                do mm=1,ndouble
+                 ffthet(mm,m,l,i,j,k)=ffthet_all(mm,m,l,i,j,k,iparm)
+                 ggthet(mm,m,l,i,j,k)=ggthet_all(mm,m,l,i,j,k,iparm)
+                enddo
+              enddo
+            enddo
+          enddo
+        enddo
+      enddo
+#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 k=1,3
+            censc(k,j,i)=censc_all(k,j,i,iparm)
+          enddo
+          do k=1,3
+            do l=1,3
+              gaussc(l,k,j,i)=gaussc_all(l,k,j,i,iparm)
+            enddo
+          enddo
+        enddo
+      enddo
+#else
+      do i=1,ntyp
+        do j=1,65
+          sc_parmin(j,i)=sc_parmin_all(j,i,iparm)
+        enddo
+      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  
+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
+      enddo
+c Restore parameters of the cumulants
+      do i=1,nloctyp
+        do j=1,2
+          b1(j,i)=b1_all(j,i,iparm)
+          b1tilde(j,i)=b1tilde_all(j,i,iparm)
+          b2(j,i)=b2_all(j,i,iparm)
+        enddo
+        do j=1,2
+          do k=1,2
+            cc(k,j,i)=cc_all(k,j,i,iparm)
+            ctilde(k,j,i)=ctilde_all(k,j,i,iparm)
+            dd(k,j,i)=dd_all(k,j,i,iparm)
+            dtilde(k,j,i)=dtilde_all(k,j,i,iparm)
+            ee(k,j,i)=ee_all(k,j,i,iparm)
+          enddo
+        enddo
+      enddo
+c Restore the parameters of electrostatic interactions
+      do i=1,2
+        do j=1,2
+          app(j,i)=app_all(j,i,iparm)
+          bpp(j,i)=bpp_all(j,i,iparm)
+          ael6(j,i)=ael6_all(j,i,iparm)
+          ael3(j,i)=ael3_all(j,i,iparm)
+        enddo
+      enddo
+c Restore sidechain parameters
+      do i=1,ntyp
+        do j=1,ntyp
+          aa(j,i)=aa_all(j,i,iparm)
+          bb(j,i)=bb_all(j,i,iparm)
+          r0(j,i)=r0_all(j,i,iparm)
+          sigma(j,i)=sigma_all(j,i,iparm)
+          chi(j,i)=chi_all(j,i,iparm)
+          chipp(j,i)=chipp_all(j,i,iparm)
+          augm(j,i)=augm_all(j,i,iparm)
+          eps(j,i)=eps_all(j,i,iparm)
+          sigmap1(j,i)=sigmap1_all(j,i,iparm)
+          sigmap2(j,i)=sigmap2_all(j,i,iparm)
+          chis(j,i)=chis_all(j,i,iparm)
+          do k=1,4
+            alphasur(k,j,i)=alphasur_all(k,j,i,iparm)
+            wstate(k,j,i)=wstate_all(k,j,i,iparm)
+          enddo
+          nstate(j,i)=nstate_all(j,i,iparm)
+          do k=1,2
+            do l=1,2
+              dhead(l,k,j,i)=dhead_all(l,k,j,i,iparm)
+            enddo
+          enddo
+          do k=1,2
+            dtail(k,j,i)=dtail_all(k,j,i,iparm)
+          enddo
+          epshead(j,i)=epshead_all(j,i,iparm)
+          rborn(j,i)=rborn_all(j,i,iparm)
+          do k=1,2
+            wqdip(k,j,i)=wqdip_all(k,j,i,iparm)
+          enddo
+          wquad(j,i)=wquad_all(j,i,iparm)
+          alphapol(j,i)=alphapol_all(j,i,iparm)
+          do k=1,4
+            alphiso(k,j,i)=alphiso_all(k,j,i,iparm)
+          enddo
+          sigiso1(j,i)=sigiso1_all(j,i,iparm)
+          sigiso2(j,i)=sigiso2_all(j,i,iparm)
+          epsintab(j,i)=epsintab_all(j,i,iparm)
+        enddo
+      enddo
+      do i=1,ntyp
+        chip(i)=chip_all(i,iparm)
+        alp(i)=alp_all(i,iparm)
+      enddo
+c Restore the SCp parameters
+      do i=1,ntyp
+        do j=1,2
+          aad(i,j)=aad_all(i,j,iparm)
+          bad(i,j)=bad_all(i,j,iparm)
+        enddo
+      enddo
+c Restore disulfide-bond parameters
+      ebr=ebr_all(iparm)
+      d0cm=d0cm_all(iparm)
+      akcm=akcm_all(iparm)
+      akth=akth_all(iparm)
+      akct=akct_all(iparm)
+      v1ss=v1ss_all(iparm)
+      v2ss=v2ss_all(iparm)
+      v3ss=v3ss_all(iparm)
+c Restore SC-backbone correlation parameters
+      do i=1,nsccortyp
+       do j=1,nsccortyp
+
+      nterm_sccor(j,i)=nterm_sccor_all(j,i,iparm)
+c      do i=1,20
+c        do j=1,20
+         do l=1,3
+          do k=1,nterm_sccor(j,i)
+            v1sccor(k,l,j,i)=v1sccor_all(k,l,j,i,iparm)
+            v2sccor(k,l,j,i)=v2sccor_all(k,l,j,i,iparm)
+          enddo
+         enddo
+        enddo
+      enddo
+      return
+      end