Merge branch 'AFM' of mmka:unres into AFM
[unres.git] / source / unres / src_MD-M / energy_p_new_barrier.F
index e9d67bc..c90fc3a 100644 (file)
@@ -2783,28 +2783,28 @@ c      write(iout,*) 'nphi=',nphi,nres
 #endif
 #ifdef NEWCORR
         if (i.gt. nnt+2 .and. i.lt.nct+2) then
-          iti = itortyp(itype(i-2))
+          iti = itype2loc(itype(i-2))
         else
-          iti=ntortyp+1
+          iti=nloctyp
         endif
 c        if (i.gt. iatel_s+1 .and. i.lt.iatel_e+4) then
         if (i.gt. nnt+1 .and. i.lt.nct+1) then
-          iti1 = itortyp(itype(i-1))
+          iti1 = itype2loc(itype(i-1))
         else
-          iti1=ntortyp+1
+          iti1=nloctyp
         endif
 c        write(iout,*),i
-        b1(1,i-2)=bnew1(1,1,iti)*dsin(theta(i-1)/2.0)
+        b1(1,i-2)=bnew1(1,1,iti)*dsin(theta(i-1)/2.0d0)
      &           +bnew1(2,1,iti)*dsin(theta(i-1))
-     &           +bnew1(3,1,iti)*dcos(theta(i-1)/2.0)
+     &           +bnew1(3,1,iti)*dcos(theta(i-1)/2.0d0)
         gtb1(1,i-2)=bnew1(1,1,iti)*dcos(theta(i-1)/2.0d0)/2.0d0
      &             +bnew1(2,1,iti)*dcos(theta(i-1))
      &             -bnew1(3,1,iti)*dsin(theta(i-1)/2.0d0)/2.0d0
 c     &           +bnew1(3,1,iti)*sin(alpha(i))*cos(beta(i))
 c     &*(cos(theta(i)/2.0)
-        b2(1,i-2)=bnew2(1,1,iti)*dsin(theta(i-1)/2.0)
+        b2(1,i-2)=bnew2(1,1,iti)*dsin(theta(i-1)/2.0d0)
      &           +bnew2(2,1,iti)*dsin(theta(i-1))
-     &           +bnew2(3,1,iti)*dcos(theta(i-1)/2.0)
+     &           +bnew2(3,1,iti)*dcos(theta(i-1)/2.0d0)
 c     &           +bnew2(3,1,iti)*sin(alpha(i))*cos(beta(i))
 c     &*(cos(theta(i)/2.0)
         gtb2(1,i-2)=bnew2(1,1,iti)*dcos(theta(i-1)/2.0d0)/2.0d0
@@ -2843,15 +2843,15 @@ c       write (iout,*) 'theta=', theta(i-1)
        enddo
 #else
         if (i.gt. nnt+2 .and. i.lt.nct+2) then
-          iti = itortyp(itype(i-2))
+          iti = itype2loc(itype(i-2))
         else
-          iti=ntortyp+1
+          iti=nloctyp
         endif
 c        if (i.gt. iatel_s+1 .and. i.lt.iatel_e+4) then
         if (i.gt. nnt+1 .and. i.lt.nct+1) then
-          iti1 = itortyp(itype(i-1))
+          iti1 = itype2loc(itype(i-1))
         else
-          iti1=ntortyp+1
+          iti1=nloctyp
         endif
         b1(1,i-2)=b(3,iti)
         b1(2,i-2)=b(5,iti)
@@ -2940,15 +2940,15 @@ c        if (i.gt. iatel_s+1 .and. i.lt.iatel_e+4) then
         endif
 c        if (i.gt. iatel_s+2 .and. i.lt.iatel_e+5) then
         if (i.gt. nnt+2 .and. i.lt.nct+2) then
-          iti = itortyp(itype(i-2))
+          iti = itype2loc(itype(i-2))
         else
-          iti=ntortyp
+          iti=nloctyp
         endif
 c        if (i.gt. iatel_s+1 .and. i.lt.iatel_e+4) then
         if (i.gt. nnt+1 .and. i.lt.nct+1) then
-          iti1 = itortyp(itype(i-1))
+          iti1 = itype2loc(itype(i-1))
         else
-          iti1=ntortyp
+          iti1=nloctyp
         endif
 cd        write (iout,*) '*******i',i,' iti1',iti
 cd        write (iout,*) 'b1',b1(:,iti)
@@ -2961,8 +2961,8 @@ c        if (i .gt. iatel_s+2) then
           call matvec2(Ug(1,1,i-2),gtb2(1,i-2),gUb2(1,i-2))
 c          write (iout,*) Ug(1,1,i-2),gtb2(1,i-2),gUb2(1,i-2),"chuj"
 #endif
-c          write(iout,*) "co jest kurwa", iti, EE(1,1,iti),EE(2,1,iti),
-c     &    EE(1,2,iti),EE(2,2,iti)
+c          write(iout,*) "co jest kurwa", iti, EE(1,1,i),EE(2,1,i),
+c     &    EE(1,2,iti),EE(2,2,i)
           call matmat2(EE(1,1,i-2),Ug(1,1,i-2),EUg(1,1,i-2))
           call matmat2(gtEE(1,1,i-2),Ug(1,1,i-2),gtEUg(1,1,i-2))
 c          write(iout,*) "Macierz EUG",
@@ -2997,18 +2997,24 @@ c     &    eug(2,2,i-2)
 c        if (i.gt. iatel_s+1 .and. i.lt.iatel_e+4) then
         if (i.gt. nnt+1 .and. i.lt.nct+1) then
           if (itype(i-1).le.ntyp) then
-            iti1 = itortyp(itype(i-1))
+            iti1 = itype2loc(itype(i-1))
           else
-            iti1=ntortyp
+            iti1=nloctyp
           endif
         else
-          iti1=ntortyp
+          iti1=nloctyp
         endif
         do k=1,2
           mu(k,i-2)=Ub2(k,i-2)+b1(k,i-1)
         enddo
-C        write (iout,*) 'mumu',i,b1(1,i-1),Ub2(1,i-2)
-c        write (iout,*) 'mu ',mu(:,i-2),i-2
+#ifdef MUOUT
+        write (iout,'(2hmu,i3,3f8.1,12f10.5)') i-2,rad2deg*theta(i-1),
+     &     rad2deg*theta(i),rad2deg*phi(i),mu(1,i-2),mu(2,i-2),
+     &       -b2(1,i-2),b2(2,i-2),b1(1,i-2),b1(2,i-2),
+     &       dsqrt(b2(1,i-1)**2+b2(2,i-1)**2)
+     &      +dsqrt(b1(1,i-1)**2+b1(2,i-1)**2),
+     &      ((ee(l,k,i-2),l=1,2),k=1,2),eenew(1,itype2loc(iti))
+#endif
 cd        write (iout,*) 'mu1',mu1(:,i-2)
 cd        write (iout,*) 'mu2',mu2(:,i-2)
         if (wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0 .or.wcorr6.gt.0.0d0)
@@ -3295,11 +3301,11 @@ c      endif
 #endif
 #endif
 cd      do i=1,nres
-cd        iti = itortyp(itype(i))
+cd        iti = itype2loc(itype(i))
 cd        write (iout,*) i
 cd        do j=1,2
 cd        write (iout,'(2f10.5,5x,2f10.5,5x,2f10.5)') 
-cd     &  (EE(j,k,iti),k=1,2),(Ug(j,k,i),k=1,2),(EUg(j,k,i),k=1,2)
+cd     &  (EE(j,k,i),k=1,2),(Ug(j,k,i),k=1,2),(EUg(j,k,i),k=1,2)
 cd        enddo
 cd      enddo
       return
@@ -3417,21 +3423,23 @@ C Loop over i,i+2 and i,i+3 pairs of the peptide groups
 C
 C 14/01/2014 TURN3,TUNR4 does no go under periodic boundry condition
       do i=iturn3_start,iturn3_end
-        if (i.le.1) cycle
+c        if (i.le.1) cycle
 C        write(iout,*) "tu jest i",i
         if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1
 C changes suggested by Ana to avoid out of bounds
-     & .or.((i+4).gt.nres)
-     & .or.((i-1).le.0)
+C Adam: Unnecessary: handled by iturn3_end and iturn3_start
+c     & .or.((i+4).gt.nres)
+c     & .or.((i-1).le.0)
 C end of changes by Ana
      &  .or. itype(i+2).eq.ntyp1
      &  .or. itype(i+3).eq.ntyp1) cycle
-        if(i.gt.1)then
-          if(itype(i-1).eq.ntyp1)cycle
-        end if
-        if(i.LT.nres-3)then
-          if (itype(i+4).eq.ntyp1) cycle
-        end if
+C Adam: Instructions below will switch off existing interactions
+c        if(i.gt.1)then
+c          if(itype(i-1).eq.ntyp1)cycle
+c        end if
+c        if(i.LT.nres-3)then
+c          if (itype(i+4).eq.ntyp1) cycle
+c        end if
         dxi=dc(1,i)
         dyi=dc(2,i)
         dzi=dc(3,i)
@@ -3456,14 +3464,14 @@ C end of changes by Ana
         if (i.le.1) cycle
         if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1
 C changes suggested by Ana to avoid out of bounds
-     & .or.((i+5).gt.nres)
-     & .or.((i-1).le.0)
+c     & .or.((i+5).gt.nres)
+c     & .or.((i-1).le.0)
 C end of changes suggested by Ana
      &    .or. itype(i+3).eq.ntyp1
      &    .or. itype(i+4).eq.ntyp1
-     &    .or. itype(i+5).eq.ntyp1
-     &    .or. itype(i).eq.ntyp1
-     &    .or. itype(i-1).eq.ntyp1
+c     &    .or. itype(i+5).eq.ntyp1
+c     &    .or. itype(i).eq.ntyp1
+c     &    .or. itype(i-1).eq.ntyp1
      &                             ) cycle
         dxi=dc(1,i)
         dyi=dc(2,i)
 CTU KURWA
       do i=iatel_s,iatel_e
 C        do i=75,75
-        if (i.le.1) cycle
+c        if (i.le.1) cycle
         if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1
 C changes suggested by Ana to avoid out of bounds
-     & .or.((i+2).gt.nres)
-     & .or.((i-1).le.0)
+c     & .or.((i+2).gt.nres)
+c     & .or.((i-1).le.0)
 C end of changes by Ana
-     &  .or. itype(i+2).eq.ntyp1
-     &  .or. itype(i-1).eq.ntyp1
+c     &  .or. itype(i+2).eq.ntyp1
+c     &  .or. itype(i-1).eq.ntyp1
      &                ) cycle
         dxi=dc(1,i)
         dyi=dc(2,i)
@@ -3586,11 +3594,11 @@ C          write (iout,*) i,j
          if (j.le.1) cycle
           if (itype(j).eq.ntyp1.or. itype(j+1).eq.ntyp1
 C changes suggested by Ana to avoid out of bounds
-     & .or.((j+2).gt.nres)
-     & .or.((j-1).le.0)
+c     & .or.((j+2).gt.nres)
+c     & .or.((j-1).le.0)
 C end of changes by Ana
-     & .or.itype(j+2).eq.ntyp1
-     & .or.itype(j-1).eq.ntyp1
+c     & .or.itype(j+2).eq.ntyp1
+c     & .or.itype(j-1).eq.ntyp1
      &) cycle
           call eelecij(i,j,ees,evdw1,eel_loc)
         enddo ! j
@@ -4832,9 +4840,9 @@ c        write(iout,*)"WCHODZE W PROGRAM"
         a_temp(1,2)=a23
         a_temp(2,1)=a32
         a_temp(2,2)=a33
-        iti1=itortyp(itype(i+1))
-        iti2=itortyp(itype(i+2))
-        iti3=itortyp(itype(i+3))
+        iti1=itype2loc(itype(i+1))
+        iti2=itype2loc(itype(i+2))
+        iti3=itype2loc(itype(i+3))
 c        write(iout,*) "iti1",iti1," iti2",iti2," iti3",iti3
         call transpose2(EUg(1,1,i+1),e1t(1,1))
         call transpose2(Eug(1,1,i+2),e2t(1,1))
@@ -7473,11 +7481,12 @@ C The rigorous attempt to derive energy function
       include 'COMMON.TORCNSTR'
       include 'COMMON.CONTROL'
       logical lprn
-      double precision thybt1(maxtermkcc),thybt2(maxtermkcc)
+c      double precision thybt1(maxtermkcc),thybt2(maxtermkcc)
 C Set lprn=.true. for debugging
       lprn=.false.
 c     lprn=.true.
 C      print *,"wchodze kcc"
+      if (lprn) write (iout,*) "etor_kcc tor_mode",tor_mode
       if (tor_mode.ne.2) then
       etors=0.0D0
       endif
@@ -7497,60 +7506,86 @@ c     &      ((itype(i-1).eq.ntyp1).and.(itype(i).eq.ntyp1))) cycle
         sumnonchebyshev=0.0d0
         sumchebyshev=0.0d0
 C to avoid multiple devision by 2
-        theti22=0.5d0*theta(i)
+c        theti22=0.5d0*theta(i)
 C theta 12 is the theta_1 /2
 C theta 22 is theta_2 /2
-        theti12=0.5d0*theta(i-1)
+c        theti12=0.5d0*theta(i-1)
 C and appropriate sinus function
-        sinthet2=dsin(theta(i))
         sinthet1=dsin(theta(i-1))
+        sinthet2=dsin(theta(i))
         costhet1=dcos(theta(i-1))
         costhet2=dcos(theta(i))
+c Cosines of halves thetas
+        costheti12=0.5d0*(1.0d0+costhet1)
+        costheti22=0.5d0*(1.0d0+costhet2)
 C to speed up lets store its mutliplication
-         sint1t2=sinthet2*sinthet1        
+        sint1t2=sinthet2*sinthet1        
+        sint1t2n=1.0d0
 C \sum_{i=1}^n (sin(theta_1) * sin(theta_2))^n * (c_n* cos(n*gamma)
 C +d_n*sin(n*gamma)) *
 C \sum_{i=1}^m (1+a_m*Tb_m(cos(theta_1 /2))+b_m*Tb_m(cos(theta_2 /2))) 
 C we have two sum 1) Non-Chebyshev which is with n and gamma
+        etori=0.0d0
         do j=1,nterm_kcc(itori,itori1)
 
+          nval=nterm_kcc_Tb(itori,itori1)
           v1ij=v1_kcc(j,itori,itori1)
           v2ij=v2_kcc(j,itori,itori1)
+c          write (iout,*) "i",i," j",j," v1",v1ij," v2",v2ij
 C v1ij is c_n and d_n in euation above
           cosphi=dcos(j*phii)
           sinphi=dsin(j*phii)
-          sint1t2n=sint1t2**j
-          sumnonchebyshev=
-     &                    sint1t2n*(v1ij*cosphi+v2ij*sinphi)
-          actval=sint1t2n*(v1ij*cosphi+v2ij*sinphi)
+          sint1t2n1=sint1t2n
+          sint1t2n=sint1t2n*sint1t2
+          sumth1tyb1=tschebyshev(1,nval,v11_chyb(1,j,itori,itori1),
+     &        costheti12)
+          gradth1tyb1=-0.5d0*sinthet1*gradtschebyshev(0,nval-1,
+     &        v11_chyb(1,j,itori,itori1),costheti12)
+c          write (iout,*) "v11",(v11_chyb(k,j,itori,itori1),k=1,nval),
+c     &      " sumth1tyb1",sumth1tyb1," gradth1tyb1",gradth1tyb1
+          sumth2tyb1=tschebyshev(1,nval,v21_chyb(1,j,itori,itori1),
+     &        costheti22)
+          gradth2tyb1=-0.5d0*sinthet2*gradtschebyshev(0,nval-1,
+     &        v21_chyb(1,j,itori,itori1),costheti22)
+c          write (iout,*) "v21",(v21_chyb(k,j,itori,itori1),k=1,nval),
+c     &      " sumth2tyb1",sumth2tyb1," gradth2tyb1",gradth2tyb1
+          sumth1tyb2=tschebyshev(1,nval,v12_chyb(1,j,itori,itori1),
+     &        costheti12)
+          gradth1tyb2=-0.5d0*sinthet1*gradtschebyshev(0,nval-1,
+     &        v12_chyb(1,j,itori,itori1),costheti12)
+c          write (iout,*) "v12",(v12_chyb(k,j,itori,itori1),k=1,nval),
+c     &      " sumth1tyb2",sumth1tyb2," gradth1tyb2",gradth1tyb2
+          sumth2tyb2=tschebyshev(1,nval,v22_chyb(1,j,itori,itori1),
+     &        costheti22)
+          gradth2tyb2=-0.5d0*sinthet2*gradtschebyshev(0,nval-1,
+     &        v22_chyb(1,j,itori,itori1),costheti22)
+c          write (iout,*) "v22",(v22_chyb(k,j,itori,itori1),k=1,nval),
+c     &      " sumth2tyb2",sumth2tyb2," gradth2tyb2",gradth2tyb2
 C          etors=etors+sint1t2n*(v1ij*cosphi+v2ij*sinphi)
 C          if (energy_dec) etors_ii=etors_ii+
 C     &                v1ij*cosphi+v2ij*sinphi
 C glocig is the gradient local i site in gamma
-          glocig=j*(v2ij*cosphi-v1ij*sinphi)*sint1t2n
+          actval1=v1ij*cosphi*(1.0d0+sumth1tyb1+sumth2tyb1)
+          actval2=v2ij*sinphi*(1.0d0+sumth1tyb2+sumth2tyb2)
+          etori=etori+sint1t2n*(actval1+actval2)
+          glocig=glocig+
+     &        j*sint1t2n*(v2ij*cosphi*(1.0d0+sumth1tyb2+sumth2tyb2)
+     &        -v1ij*sinphi*(1.0d0+sumth1tyb1+sumth2tyb1))
 C now gradient over theta_1
-          glocit1=actval/sinthet1*j*costhet1
-          glocit2=actval/sinthet2*j*costhet2
+          glocit1=glocit1+
+     &       j*sint1t2n1*costhet1*sinthet2*(actval1+actval2)+
+     &       sint1t2n*(v1ij*cosphi*gradth1tyb1+v2ij*sinphi*gradth1tyb2)
+          glocit2=glocit2+
+     &       j*sint1t2n1*sinthet1*costhet2*(actval1+actval2)+
+     &       sint1t2n*(v1ij*cosphi*gradth2tyb1+v2ij*sinphi*gradth2tyb2)
 
 C now the Czebyshev polinominal sum
-        do k=1,nterm_kcc_Tb(itori,itori1)
-         thybt1(k)=v1_chyb(k,j,itori,itori1)
-         thybt2(k)=v2_chyb(k,j,itori,itori1)
+c        do k=1,nterm_kcc_Tb(itori,itori1)
+c         thybt1(k)=v1_chyb(k,j,itori,itori1)
+c         thybt2(k)=v2_chyb(k,j,itori,itori1)
 C         thybt1(k)=0.0
 C         thybt2(k)=0.0
-        enddo 
-        sumth1thyb=tschebyshev
-     &         (1,nterm_kcc_Tb(itori,itori1),thybt1(1),dcos(theti12)**2)
-        gradthybt1=gradtschebyshev
-     &         (0,nterm_kcc_Tb(itori,itori1)-1,thybt1(1),
-     &        dcos(theti12)**2)
-     & *dcos(theti12)*(-dsin(theti12))
-        sumth2thyb=tschebyshev
-     &         (1,nterm_kcc_Tb(itori,itori1),thybt2(1),dcos(theti22)**2)
-        gradthybt2=gradtschebyshev
-     &         (0,nterm_kcc_Tb(itori,itori1)-1,thybt2(1),
-     &         dcos(theti22)**2)
-     & *dcos(theti22)*(-dsin(theti22))
+c        enddo 
 C        print *, sumth1thyb, gradthybt1, sumth2thyb, gradthybt2,
 C     &         gradtschebyshev
 C     &         (0,nterm_kcc_Tb(itori,itori1)-1,thybt2(1),
@@ -7558,22 +7593,19 @@ C     &         dcos(theti22)**2),
 C     &         dsin(theti22)
 
 C now overal sumation
-         etors=etors+(1.0d0+sumth1thyb+sumth2thyb)*sumnonchebyshev
 C         print *,"sumnon", sumnonchebyshev,sumth1thyb+sumth2thyb
+        enddo ! j
+        etors=etors+etori
 C derivative over gamma
-         gloc(i-3,icg)=gloc(i-3,icg)+wtor*glocig
-     &   *(1.0d0+sumth1thyb+sumth2thyb)
+        gloc(i-3,icg)=gloc(i-3,icg)+wtor*glocig
 C derivative over theta1
-        gloc(nphi+i-3,icg)=gloc(nphi+i-3,icg)+wtor*
-     &  (glocit1*(1.0d0+sumth1thyb+sumth2thyb)+
-     &   sumnonchebyshev*gradthybt1)
+        gloc(nphi+i-3,icg)=gloc(nphi+i-3,icg)+wtor*glocit1
 C now derivative over theta2
-        gloc(nphi+i-2,icg)=gloc(nphi+i-2,icg)+wtor*
-     &  (glocit2*(1.0d0+sumth1thyb+sumth2thyb)+
-     &   sumnonchebyshev*gradthybt2)
-       enddo
+        gloc(nphi+i-2,icg)=gloc(nphi+i-2,icg)+wtor*glocit2
+        if (lprn) 
+     &    write (iout,*) i-2,i-1,itype(i-2),itype(i-1),itori,itori1,
+     &       theta(i-1)*rad2deg,theta(i)*rad2deg,phii*rad2deg,etori
       enddo
-     
 C        gloc(i-3,icg)=gloc(i-3,icg)+wtor*gloci
 ! 6/20/98 - dihedral angle constraints
       if (tor_mode.ne.2) then
@@ -7622,7 +7654,8 @@ C Set lprn=.true. for debugging
       lprn=.false.
 c     lprn=.true.
 C      print *,"wchodze kcc"
-      if (tormode.ne.2) etheta=0.0D0
+      if (lprn) write (iout,*) "ebend_kcc tor_mode",tor_mode
+      if (tor_mode.ne.2) etheta=0.0D0
       do i=ithet_start,ithet_end
 c        print *,i,itype(i-1),itype(i),itype(i-2)
         if ((itype(i-1).eq.ntyp1).or.itype(i-2).eq.ntyp1
@@ -7635,6 +7668,8 @@ c        print *,i,itype(i-1),itype(i),itype(i-2)
          enddo
          sumth1thyb=tschebyshev
      &         (1,nbend_kcc_Tb(iti),thybt1(1),costhet)
+        if (lprn) write (iout,*) i-1,itype(i-1),iti,theta(i)*rad2deg,
+     &    sumth1thyb
         ihelp=nbend_kcc_Tb(iti)-1
         gradthybt1=gradtschebyshev
      &         (0,ihelp,thybt1(1),costhet)
@@ -7643,7 +7678,7 @@ C        print *,sumth1thyb,gradthybt1,sinthet*(-0.5d0)
         gloc(nphi+i-2,icg)=gloc(nphi+i-2,icg)+wang*
      &   gradthybt1*sinthet*(-0.5d0)
       enddo
-      if (tormode.ne.2) then
+      if (tor_mode.ne.2) then
       ethetacnstr=0.0d0
 C      print *,ithetaconstr_start,ithetaconstr_end,"TU"
       do i=ithetaconstr_start,ithetaconstr_end
@@ -8839,9 +8874,9 @@ C---------------------------------------------------------------------------
      &  auxmat(2,2)
       iti1 = itortyp(itype(i+1))
       if (j.lt.nres-1) then
-        itj1 = itortyp(itype(j+1))
+        itj1 = itype2loc(itype(j+1))
       else
-        itj1=ntortyp
+        itj1=nloctyp
       endif
       do iii=1,2
         dipi(iii,1)=Ub2(iii,i)
@@ -8929,16 +8964,16 @@ cd      write (iout,*) "a_chujkl",((a_chuj(iii,jjj,kk,k),iii=1,2),jjj=1,2)
       if (l.eq.j+1) then
 C parallel orientation of the two CA-CA-CA frames.
         if (i.gt.1) then
-          iti=itortyp(itype(i))
+          iti=itype2loc(itype(i))
         else
-          iti=ntortyp
+          iti=nloctyp
         endif
-        itk1=itortyp(itype(k+1))
-        itj=itortyp(itype(j))
+        itk1=itype2loc(itype(k+1))
+        itj=itype2loc(itype(j))
         if (l.lt.nres-1) then
-          itl1=itortyp(itype(l+1))
+          itl1=itype2loc(itype(l+1))
         else
-          itl1=ntortyp
+          itl1=nloctyp
         endif
 C A1 kernel(j+1) A2T
 cd        do iii=1,2
@@ -9082,17 +9117,17 @@ C End vectors
       else
 C Antiparallel orientation of the two CA-CA-CA frames.
         if (i.gt.1) then
-          iti=itortyp(itype(i))
+          iti=itype2loc(itype(i))
         else
-          iti=ntortyp
+          iti=nloctyp
         endif
-        itk1=itortyp(itype(k+1))
-        itl=itortyp(itype(l))
-        itj=itortyp(itype(j))
+        itk1=itype2loc(itype(k+1))
+        itl=itype2loc(itype(l))
+        itj=itype2loc(itype(j))
         if (j.lt.nres-1) then
-          itj1=itortyp(itype(j+1))
+          itj1=itype2loc(itype(j+1))
         else 
-          itj1=ntortyp
+          itj1=nloctyp
         endif
 C A2 kernel(j-1)T A1T
         call kernel(aa1(1,1),aa2t(1,1),a_chuj_der(1,1,1,1,jj,i),
@@ -9430,9 +9465,9 @@ cd      endif
 cd      write (iout,*)
 cd     &   'EELLO5: Contacts have occurred for peptide groups',i,j,
 cd     &   ' and',k,l
-      itk=itortyp(itype(k))
-      itl=itortyp(itype(l))
-      itj=itortyp(itype(j))
+      itk=itype2loc(itype(k))
+      itl=itype2loc(itype(l))
+      itj=itype2loc(itype(j))
       eello5_1=0.0d0
       eello5_2=0.0d0
       eello5_3=0.0d0
@@ -9501,7 +9536,7 @@ C Cartesian gradient
 c      goto 1112
 c1111  continue
 C Contribution from graph II 
-      call transpose2(EE(1,1,itk),auxmat(1,1))
+      call transpose2(EE(1,1,k),auxmat(1,1))
       call matmat2(auxmat(1,1),AEA(1,1,1),pizda(1,1))
       vv(1)=pizda(1,1)+pizda(2,2)
       vv(2)=pizda(2,1)-pizda(1,2)
@@ -9582,7 +9617,7 @@ C Cartesian gradient
 cd        goto 1112
 C Contribution from graph IV
 cd1110    continue
-        call transpose2(EE(1,1,itl),auxmat(1,1))
+        call transpose2(EE(1,1,l),auxmat(1,1))
         call matmat2(auxmat(1,1),AEA(1,1,2),pizda(1,1))
         vv(1)=pizda(1,1)+pizda(2,2)
         vv(2)=pizda(2,1)-pizda(1,2)
@@ -9655,7 +9690,7 @@ C Cartesian gradient
 cd        goto 1112
 C Contribution from graph IV
 1110    continue
-        call transpose2(EE(1,1,itj),auxmat(1,1))
+        call transpose2(EE(1,1,j),auxmat(1,1))
         call matmat2(auxmat(1,1),AEA(1,1,2),pizda(1,1))
         vv(1)=pizda(1,1)+pizda(2,2)
         vv(2)=pizda(2,1)-pizda(1,2)
@@ -9952,7 +9987,7 @@ C       o     o       o     o                                                  C
 C       i             i                                                        C
 C                                                                              C
 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
-      itk=itortyp(itype(k))
+      itk=itype2loc(itype(k))
       s1= scalar2(AEAb1(1,2,imat),CUgb2(1,i))
       s2=-scalar2(AEAb2(1,1,imat),Ug2Db1t(1,k))
       s3= scalar2(AEAb2(1,1,imat),CUgb2(1,k))
@@ -10244,16 +10279,16 @@ C 4/7/01 AL Component s1 was removed, because it pertains to the respective
 C           energy moment and not to the cluster cumulant.
       iti=itortyp(itype(i))
       if (j.lt.nres-1) then
-        itj1=itortyp(itype(j+1))
+        itj1=itype2loc(itype(j+1))
       else
-        itj1=ntortyp
+        itj1=nloctyp
       endif
-      itk=itortyp(itype(k))
-      itk1=itortyp(itype(k+1))
+      itk=itype2loc(itype(k))
+      itk1=itype2loc(itype(k+1))
       if (l.lt.nres-1) then
-        itl1=itortyp(itype(l+1))
+        itl1=itype2loc(itype(l+1))
       else
-        itl1=ntortyp
+        itl1=nloctyp
       endif
 #ifdef MOMENT
       s1=dip(4,jj,i)*dip(4,kk,k)
@@ -10262,7 +10297,7 @@ C           energy moment and not to the cluster cumulant.
       s2=0.5d0*scalar2(b1(1,k),auxvec(1))
       call matvec2(AECA(1,1,2),b1(1,l+1),auxvec(1))
       s3=0.5d0*scalar2(b1(1,j+1),auxvec(1))
-      call transpose2(EE(1,1,itk),auxmat(1,1))
+      call transpose2(EE(1,1,k),auxmat(1,1))
       call matmat2(auxmat(1,1),AECA(1,1,1),pizda(1,1))
       vv(1)=pizda(1,1)+pizda(2,2)
       vv(2)=pizda(2,1)-pizda(1,2)
 C 4/7/01 AL Component s1 was removed, because it pertains to the respective 
 C           energy moment and not to the cluster cumulant.
 cd      write (2,*) 'eello_graph4: wturn6',wturn6
-      iti=itortyp(itype(i))
-      itj=itortyp(itype(j))
+      iti=itype2loc(itype(i))
+      itj=itype2loc(itype(j))
       if (j.lt.nres-1) then
-        itj1=itortyp(itype(j+1))
+        itj1=itype2loc(itype(j+1))
       else
-        itj1=ntortyp
+        itj1=nloctyp
       endif
-      itk=itortyp(itype(k))
+      itk=itype2loc(itype(k))
       if (k.lt.nres-1) then
-        itk1=itortyp(itype(k+1))
+        itk1=itype2loc(itype(k+1))
       else
-        itk1=ntortyp
+        itk1=nloctyp
       endif
-      itl=itortyp(itype(l))
+      itl=itype2loc(itype(l))
       if (l.lt.nres-1) then
-        itl1=itortyp(itype(l+1))
+        itl1=itype2loc(itype(l+1))
       else
-        itl1=ntortyp
+        itl1=nloctyp
       endif
 cd      write (2,*) 'eello6_graph4:','i',i,' j',j,' k',k,' l',l
 cd      write (2,*) 'iti',iti,' itj',itj,' itj1',itj1,' itk',itk,
       j=i+4
       k=i+1
       l=i+3
-      iti=itortyp(itype(i))
-      itk=itortyp(itype(k))
-      itk1=itortyp(itype(k+1))
-      itl=itortyp(itype(l))
-      itj=itortyp(itype(j))
+      iti=itype2loc(itype(i))
+      itk=itype2loc(itype(k))
+      itk1=itype2loc(itype(k+1))
+      itl=itype2loc(itype(l))
+      itj=itype2loc(itype(j))
 cd      write (2,*) 'itk',itk,' itk1',itk1,' itl',itl,' itj',itj
 cd      write (2,*) 'i',i,' k',k,' j',j,' l',l
 cd      if (i.ne.1 .or. j.ne.3 .or. k.ne.2 .or. l.ne.4) then
@@ -11441,7 +11476,7 @@ C--------------------------------------------------------------------------
       include "DIMENSIONS"
       integer i,m,n
       double precision x(n+1),y,yy(0:maxvar),aux
-c Tschebyshev polynomial. Note that the first term is omitted 
+c Tschebyshev polynomial. Note that the first term is omitted
 c m=0: the constant term is included
 c m=1: the constant term is not included
       yy(0)=1.0d0