D i L aminokwasy dzialajace dla src_CSA
[unres.git] / source / unres / src_CSA_DiL / energy_p_new_barrier.F
index 9b16c3e..8f1e838 100644 (file)
@@ -4485,6 +4485,18 @@ c     write (*,'(a,i2)') 'EBEND ICG=',icg
 C Zero the energy function and its derivative at 0 or pi.
         call splinthet(theta(i),0.5d0*delta,ss,ssd)
         it=itype(i-1)
+        ichir1=isign(1,itype(i-2))
+        ichir2=isign(1,itype(i))
+        if (itype(i-2).eq.10) ichir1=isign(1,itype(i-1))
+        if (itype(i).eq.10) ichir2=isign(1,itype(i-1))
+        if (itype(i-1).eq.10) then
+         itype1=isign(10,itype(i-2))
+         ichir11=isign(1,itype(i-2))
+         ichir12=isign(1,itype(i-2))
+         itype2=isign(10,itype(i))
+         ichir21=isign(1,itype(i))
+         ichir22=isign(1,itype(i))
+        endif
         if (i.gt.3) then
 #ifdef OSF
          phii=phi(i)
@@ -4518,15 +4530,27 @@ C dependent on the adjacent virtual-bond-valence angles (gamma1 & gamma2).
 C In following comments this theta will be referred to as t_c.
         thet_pred_mean=0.0d0
         do k=1,2
-          athetk=athet(k,it)
-          bthetk=bthet(k,it)
+          athetk=athet(k,it,ichir1,ichir2)
+          bthetk=bthet(k,it,ichir1,ichir2)
+        if (it.eq.10) then
+           athetk=athet(k,itype1,ichir11,ichir12)
+           bthetk=bthet(k,itype2,ichir21,ichir22)
+        endif
           thet_pred_mean=thet_pred_mean+athetk*y(k)+bthetk*z(k)
         enddo
         dthett=thet_pred_mean*ssd
         thet_pred_mean=thet_pred_mean*ss+a0thet(it)
 C Derivatives of the "mean" values in gamma1 and gamma2.
-        dthetg1=(-athet(1,it)*y(2)+athet(2,it)*y(1))*ss
-        dthetg2=(-bthet(1,it)*z(2)+bthet(2,it)*z(1))*ss
+        dthetg1=(-athet(1,it,ichir1,ichir2)*y(2)
+     &+athet(2,it,ichir1,ichir2)*y(1))*ss
+        dthetg2=(-bthet(1,it,ichir1,ichir2)*z(2)
+     &          +bthet(2,it,ichir1,ichir2)*z(1))*ss
+        if (it.eq.10) then
+      dthetg1=(-athet(1,itype1,ichir11,ichir12)*y(2)
+     &+athet(2,itype1,ichir11,ichir12)*y(1))*ss
+        dthetg2=(-bthet(1,itype2,ichir21,ichir22)*z(2)
+     &         +bthet(2,itype2,ichir21,ichir22)*z(1))*ss
+        endif
         if (theta(i).gt.pi-delta) then
           call theteng(pi-delta,thet_pred_mean,theta0(it),f0,fprim0,
      &         E_tc0)
@@ -5798,7 +5822,7 @@ c     lprn=.true.
         itori1=itortyp(itype(i-1))
         itori2=itortyp(itype(i))
         iblock=1
-        if (iabs(itype(i+1).eq.20)) iblock=2
+        if (iabs(itype(i+1)).eq.20) iblock=2
         phii=phi(i)
         phii1=phi(i+1)
         gloci1=0.0D0