X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=source%2Funres%2Fsrc_MD-M%2FssMD.F;h=51ad513691ef284fcb56633ad238941623b6ade1;hb=75c81b9dbe2f7e18e73a9d61ee02980790335164;hp=8b7f2a4f16d20ab7773207f31e4b9e4165b2889e;hpb=25cf4acee8e56498ffe13a204a90853d8c415869;p=unres.git diff --git a/source/unres/src_MD-M/ssMD.F b/source/unres/src_MD-M/ssMD.F index 8b7f2a4..51ad513 100644 --- a/source/unres/src_MD-M/ssMD.F +++ b/source/unres/src_MD-M/ssMD.F @@ -655,38 +655,7 @@ c & "SSBOND_FORM",totT,t_bath,newihpb(i),newjhpb(i) return end -c---------------------------------------------------------------------------- - -#ifdef WHAM - subroutine read_ssHist - implicit none - -c Includes - include 'DIMENSIONS' - include "DIMENSIONS.FREE" - include 'COMMON.FREE' - -c Local variables - integer i,j - character*80 controlcard - - do i=1,dyn_nssHist - call card_concat(controlcard,.true.) - read(controlcard,*) - & dyn_ssHist(i,0),(dyn_ssHist(i,j),j=1,2*dyn_ssHist(i,0)) - enddo - - return - end -#endif -c---------------------------------------------------------------------------- - - -C----------------------------------------------------------------------------- -C----------------------------------------------------------------------------- -C----------------------------------------------------------------------------- -C----------------------------------------------------------------------------- C----------------------------------------------------------------------------- C----------------------------------------------------------------------------- C----------------------------------------------------------------------------- @@ -1990,6 +1959,7 @@ c integer itypi,itypj,k,l double precision ssA,ssB,ssC,ssXs double precision ssxm,ljxm,ssm,ljm double precision d_ssxm(1:3),d_ljxm(1:3),d_ssm(1:3),d_ljm(1:3) + eij=0.0 if (dtriss.eq.0) return i=resi j=resj @@ -2042,11 +2012,23 @@ C The first case the ith atom is the center C Energy function is E=d/(a*(x-y)**2+b*(x+y)**2+c) where x is first C distance y is second distance the a,b,c,d are parameters derived for C this problem d parameter was set as a penalty currenlty set to 1. - eij1=dtriss/(atriss*(rij-rik)**2+btriss*(rij+rik)**2+ctriss) + if ((iabs(j-i).le.2).or.(iabs(i-k).le.2)) then + eij1=0.0d0 + else + eij1=dtriss/(atriss*(rij-rik)**2+btriss*(rij+rik)**6+ctriss) + endif C second case jth atom is center - eij2=dtriss/(atriss*(rij-rjk)**2+btriss*(rij+rjk)**2+ctriss) + if ((iabs(j-i).le.2).or.(iabs(j-k).le.2)) then + eij2=0.0d0 + else + eij2=dtriss/(atriss*(rij-rjk)**2+btriss*(rij+rjk)**6+ctriss) + endif C the third case kth atom is the center - eij3=dtriss/(atriss*(rik-rjk)**2+btriss*(rik+rjk)**2+ctriss) + if ((iabs(i-k).le.2).or.(iabs(j-k).le.2)) then + eij3=0.0d0 + else + eij3=dtriss/(atriss*(rik-rjk)**2+btriss*(rik+rjk)**6+ctriss) + endif C eij2=0.0 C eij3=0.0 C eij1=0.0 @@ -2054,8 +2036,8 @@ C eij1=0.0 C write(iout,*)i,j,k,eij C The energy penalty calculated now time for the gradient part C derivative over rij - fac=-eij1**2/dtriss*(2.0*atriss*(rij-rik)+2.0*btriss*(rij+rik)) - &-eij2**2/dtriss*(2.0*atriss*(rij-rjk)+2.0*btriss*(rij+rjk)) + fac=-eij1**2/dtriss*(2.0*atriss*(rij-rik)+6.0*btriss*(rij+rik)**5) + &-eij2**2/dtriss*(2.0*atriss*(rij-rjk)+6.0*btriss*(rij+rjk)**5) gg(1)=xij*fac/rij gg(2)=yij*fac/rij gg(3)=zij*fac/rij @@ -2068,8 +2050,9 @@ C derivative over rij gvdwc(l,j)=gvdwc(l,j)+gg(l) enddo C now derivative over rik - fac=-eij1**2/dtriss*(-2.0*atriss*(rij-rik)+2.0*btriss*(rij+rik)) - &-eij3**2/dtriss*(2.0*atriss*(rik-rjk)+2.0*btriss*(rik+rjk)) + fac=-eij1**2/dtriss* + &(-2.0*atriss*(rij-rik)+6.0*btriss*(rij+rik)**5) + &-eij3**2/dtriss*(2.0*atriss*(rik-rjk)+6.0*btriss*(rik+rjk)**5) gg(1)=xik*fac/rik gg(2)=yik*fac/rik gg(3)=zik*fac/rik @@ -2082,8 +2065,9 @@ C now derivative over rik gvdwc(l,k)=gvdwc(l,k)+gg(l) enddo C now derivative over rjk - fac=-eij2**2/dtriss*(-2.0*atriss*(rij-rjk)+2.0*btriss*(rij+rjk))- - &eij3**2/dtriss*(-2.0*atriss*(rik-rjk)+2.0*btriss*(rik+rjk)) + fac=-eij2**2/dtriss* + &(-2.0*atriss*(rij-rjk)+6.0*btriss*(rij+rjk)**5)- + &eij3**2/dtriss*(-2.0*atriss*(rik-rjk)+6.0*btriss*(rik+rjk)**5) gg(1)=xjk*fac/rjk gg(2)=yjk*fac/rjk gg(3)=zjk*fac/rjk