double precision b1,b2,cc,dd,ee,ctilde,dtilde,b2tilde,b1tilde,
& b,bnew1,bnew2,eenew,gtb1,gtb2,eeold,gtee
integer nloctyp,iloctyp(-ntyp1:ntyp1),itype2loc(-ntyp1:ntyp1)
- common/fourier/ b1(2,maxres),b2(2,maxres),b(13,-ntyp:ntyp),
+ common/fourier/ b1(2,-maxres:maxres),b2(2,-maxres:maxres),
+ & b(13,-ntyp:ntyp),
& bnew1(3,2,-ntyp:ntyp),bnew2(3,2,-ntyp:ntyp),
& cc(2,2,-ntyp:ntyp),
& dd(2,2,-ntyp:ntyp),eeold(2,2,-ntyp:ntyp),
& eenew(2,-ntyp:ntyp),
& ee(2,2,maxres),
& ctilde(2,2,-ntyp:ntyp),
- & dtilde(2,2,-ntyp:ntyp),b1tilde(2,maxres),
- & b2tilde(2,maxres),
+ & dtilde(2,2,-ntyp:ntyp),b1tilde(2,-maxres:maxres),
+ & b2tilde(2,-maxres:maxres),
& gtb1(2,maxres),gtb2(2,maxres),gtEE(2,2,maxres),
& nloctyp,iloctyp,itype2loc
#endif
cd write (iout,*) 'i',i,' j',j,' eel_loc_ij',eel_loc_ij
- if (energy_dec) write (iout,'(a6,2i5,0pf7.3)')
- & 'eelloc',i,j,eel_loc_ij
+ if (energy_dec) write (iout,'(a6,2i5,0pf7.3,2f7.3)')
+ & 'eelloc',i,j,eel_loc_ij,a22*muij(1),a23*muij(2)
c if (eel_loc_ij.ne.0)
c & write (iout,'(a4,2i4,8f9.5)')'chuj',
c & i,j,a22,muij(1),a23,muij(2),a32,muij(3),a33,muij(4)
zmin=boxzsize
do j=-1,1
- vectube(1)=mod((c(1,i)+c(1,i+1))/2.0d0,boxxsize)
+ vectube(1)=dmod((c(1,i)+c(1,i+1))/2.0d0,boxxsize)
vectube(1)=vectube(1)+boxxsize*j
- vectube(2)=mod((c(2,i)+c(2,i+1))/2.0d0,boxysize)
+ vectube(2)=dmod((c(2,i)+c(2,i+1))/2.0d0,boxysize)
vectube(2)=vectube(2)+boxysize*j
- vectube(3)=mod((c(3,i)+c(3,i+1))/2.0d0,boxzsize)
+ vectube(3)=dmod((c(3,i)+c(3,i+1))/2.0d0,boxzsize)
vectube(3)=vectube(3)+boxzsize*j
- xminact=abs(vectube(1)-tubecenter(1))
- yminact=abs(vectube(2)-tubecenter(2))
- zminact=abs(vectube(3)-tubecenter(3))
+ xminact=dabs(vectube(1)-tubecenter(1))
+ yminact=dabs(vectube(2)-tubecenter(2))
+ zminact=dabs(vectube(3)-tubecenter(3))
if (xmin.gt.xminact) then
xmin=xminact
enecavtube(i)=0.0
faccav=0.0
else
- denominator=(1.0+dcavtubpep*rdiff6*rdiff6)
+ denominator=(1.0d0+dcavtubpep*rdiff6*rdiff6)
enecavtube(i)=
- & (bcavtubpep*rdiff+acavtubpep*sqrt(rdiff)+ccavtubpep)
+ & (bcavtubpep*rdiff+acavtubpep*dsqrt(rdiff)+ccavtubpep)
& /denominator
enecavtube(i)=0.0
- faccav=((bcavtubpep*1.0d0+acavtubpep/2.0d0/sqrt(rdiff))
- & *denominator-(bcavtubpep*rdiff+acavtubpep*sqrt(rdiff)
+ faccav=((bcavtubpep*1.0d0+acavtubpep/2.0d0/dsqrt(rdiff))
+ & *denominator-(bcavtubpep*rdiff+acavtubpep*dsqrt(rdiff)
& +ccavtubpep)*rdiff6**2.0d0/rdiff*dcavtubpep*12.0d0)
& /denominator**2.0d0
C faccav=0.0
enddo
do i=itube_start,itube_end
- enecavtube(i)=0.0
+ enecavtube(i)=0.0d0
C Lets not jump over memory as we use many times iti
iti=itype(i)
C lets ommit dummy atoms for now
ymin=boxysize
zmin=boxzsize
do j=-1,1
- vectube(1)=mod((c(1,i+nres)),boxxsize)
+ vectube(1)=dmod((c(1,i+nres)),boxxsize)
vectube(1)=vectube(1)+boxxsize*j
- vectube(2)=mod((c(2,i+nres)),boxysize)
+ vectube(2)=dmod((c(2,i+nres)),boxysize)
vectube(2)=vectube(2)+boxysize*j
- vectube(3)=mod((c(3,i+nres)),boxzsize)
+ vectube(3)=dmod((c(3,i+nres)),boxzsize)
vectube(3)=vectube(3)+boxzsize*j
- xminact=abs(vectube(1)-tubecenter(1))
- yminact=abs(vectube(2)-tubecenter(2))
- zminact=abs(vectube(3)-tubecenter(3))
+ xminact=dabs(vectube(1)-tubecenter(1))
+ yminact=dabs(vectube(2)-tubecenter(2))
+ zminact=dabs(vectube(3)-tubecenter(3))
if (xmin.gt.xminact) then
xmin=xminact
C Now cavity term E=a(x+bsqrt(x)+c)/(1+dx^12)
if (acavtub(iti).eq.0.0d0) then
C go to 667
- enecavtube(i+nres)=0.0
- faccav=0.0
+ enecavtube(i+nres)=0.0d0
+ faccav=0.0d0
else
- denominator=(1.0+dcavtub(iti)*rdiff6*rdiff6)
+ denominator=(1.0d0+dcavtub(iti)*rdiff6*rdiff6)
enecavtube(i+nres)=
- & (bcavtub(iti)*rdiff+acavtub(iti)*sqrt(rdiff)+ccavtub(iti))
+ & (bcavtub(iti)*rdiff+acavtub(iti)*dsqrt(rdiff)+ccavtub(iti))
& /denominator
C enecavtube(i)=0.0
- faccav=((bcavtub(iti)*1.0d0+acavtub(iti)/2.0d0/sqrt(rdiff))
- & *denominator-(bcavtub(iti)*rdiff+acavtub(iti)*sqrt(rdiff)
+ faccav=((bcavtub(iti)*1.0d0+acavtub(iti)/2.0d0/dsqrt(rdiff))
+ & *denominator-(bcavtub(iti)*rdiff+acavtub(iti)*dsqrt(rdiff)
& +ccavtub(iti))*rdiff6**2.0d0/rdiff*dcavtub(iti)*12.0d0)
& /denominator**2.0d0
C faccav=0.0
double precision VSolvSphere,VSolvSphere_div,long_r_sidechain,
& short_r_sidechain,fac_shield,grad_shield_side,grad_shield,
- & buff_shield,wshield,grad_shield_loc
+ & buff_shield,wshield,grad_shield_loc,lipscale,sslipi,sslipj,
+ & ssgradlipi,ssgradlipj
integer ishield_list,shield_list,ees0plist
common /shield/ VSolvSphere,VSolvSphere_div,buff_shield,
- & long_r_sidechain(ntyp),
+ & long_r_sidechain(ntyp),sslipi,sslipj,
+ & ssgradlipi,ssgradlipj,lipscale,
& short_r_sidechain(ntyp),fac_shield(maxres),wshield,
& grad_shield_side(3,maxcont,-1:maxres),grad_shield(3,-1:maxres),
& grad_shield_loc(3,maxcont,-1:maxres),
fac_shield(j)=1.0
eesij=(el1+el2)
ees=ees+eesij
+ &*((sslipi+sslipj)/2.0d0*lipscale**2+1.0d0)
+
endif
evdw1=evdw1+evdwij*sss
+ &*((sslipi+sslipj)/2.0d0*lipscale**2+1.0d0)
+
c write (iout,'(a6,2i5,0pf7.3,2i5,2e11.3)')
c &'evdw1',i,j,evdwij
c &,iteli,itelj,aaa,evdw1
C
#ifdef SPLITELE
facvdw=-6*rrmij*(ev1+evdwij)*sss
+ & *((sslipi+sslipj)/2.0d0*lipscale**2+1.0d0)
+
facel=-3*rrmij*(el1+eesij)
+ &*((sslipi+sslipj)/2.0d0*lipscale**2+1.0d0)
+
fac1=fac
erij(1)=xj*rmij
erij(2)=yj*rmij
C ggg(3)=facvdw*zj
if (sss.gt.0.0) then
ggg(1)=facvdw*xj+sssgrad*rmij*evdwij*xj
+ & *((sslipi+sslipj)/2.0d0*lipscale**2+1.0d0)
ggg(2)=facvdw*yj+sssgrad*rmij*evdwij*yj
+ & *((sslipi+sslipj)/2.0d0*lipscale**2+1.0d0)
+
ggg(3)=facvdw*zj+sssgrad*rmij*evdwij*zj
+ & *((sslipi+sslipj)/2.0d0*lipscale**2+1.0d0)
+
else
ggg(1)=0.0
ggg(2)=0.0
gvdwpp(k,i)=gvdwpp(k,i)+ghalf
gvdwpp(k,j)=gvdwpp(k,j)+ghalf
enddo
+ gvdwpp(3,j)=gvdwpp(3,j)+
+ & sss*ssgradlipj*evdwij/2.0d0*lipscale**2
+ gvdwpp(3,i)=gvdwpp(3,i)+
+ & sss*ssgradlipi*evdwij/2.0d0*lipscale**2
+
*
* Loop over residues i+1 thru j-1.
*
enddo
#else
facvdw=(ev1+evdwij)*sss
+ & *((sslipi+sslipj)/2.0d0*lipscale**2+1.0d0)
+
facel=el1+eesij
fac1=fac
fac=-3*rrmij*(facvdw+facvdw+facel)
do k=1,3
ggg(k)=ecosb*dcosb(k)+ecosg*dcosg(k)
& *fac_shield(i)**2*fac_shield(j)**2
+ & *((sslipi+sslipj)/2.0d0*lipscale**2+1.0d0)
+
enddo
do k=1,3
ghalf=0.5D0*ggg(k)
& +(ecosa*(dc_norm(k,j)-cosa*dc_norm(k,i))
& + ecosb*(erij(k)-cosb*dc_norm(k,i)))*vbld_inv(i+1)
& *fac_shield(i)**2*fac_shield(j)**2
+ & *((sslipi+sslipj)/2.0d0*lipscale**2+1.0d0)
+
gelc(k,j)=gelc(k,j)+ghalf
& +(ecosa*(dc_norm(k,i)-cosa*dc_norm(k,j))
& + ecosg*(erij(k)-cosg*dc_norm(k,j)))*vbld_inv(j+1)
& *fac_shield(i)**2*fac_shield(j)**2
+ & *((sslipi+sslipj)/2.0d0*lipscale**2+1.0d0)
+
enddo
do k=i+1,j-1
do l=1,3
eel_loc_ij=eel_loc_ij
& *fac_shield(i)*fac_shield(j)
&*((sslipi+sslipj)/2.0d0*lipscale+1.0d0)
-c write (iout,*) 'i',i,' j',j,' eel_loc_ij',eel_loc_ij
-C write (iout,'(a6,2i5,0pf7.3)')
-C & 'eelloc',i,j,eel_loc_ij
+C write (iout,'(a3,i4,a3,i4,a8,4f8.3)')
+C & 'i',i,' j',j,' eel_loc_ij',eel_loc_ij,sslipi,
+C & sslipj,lipscale
+C write (iout,'(a6,2i5,0pf7.3,2f7.3)')
+C & 'eelloc',i,j,eel_loc_ij,a22*muij(1),a23*muij(2)
C write(iout,*) 'muije=',i,j,muij(1),muij(2),muij(3),muij(4)
c write (iout,*) a22,muij(1),a23,muij(2),a32,muij(3)
C eel_loc=eel_loc+eel_loc_ij
eello_t3=0.5d0*(pizda(1,1)+pizda(2,2))
& *fac_shield(i)*fac_shield(j)
&*((sslipi+sslipj)/2.0d0*lipscale+1.0d0)
-
+ write (iout,'(a3,i4,a3,i4,a8,4f8.3)')
+ & 'i',i,' j',j,' eturn3',eello_t3,sslipi,
+ & sslipj,lipscale
cd write (2,*) 'i,',i,' j',j,'eello_turn3',
cd & 0.5d0*(pizda(1,1)+pizda(2,2)),
cd & ' eello_turn3_num',4*eello_turn3_num
eello_turn4=eello_turn4-(s1+s2+s3)
& *fac_shield(i)*fac_shield(j)
+ &*((sslipi+sslipj)/2.0d0*lipscale+1.0d0)
+
eello_t4=-(s1+s2+s3)
& *fac_shield(i)*fac_shield(j)
call reada(controlcard,"ATRISS",atriss,0.3D0)
call reada(controlcard,"BTRISS",btriss,0.02D0)
call reada(controlcard,"CTRISS",ctriss,1.0D0)
+ call reada(controlcard,"LIPSCALE",lipscale,1.3D0)
dyn_ss=(index(controlcard,'DYN_SS').gt.0)
write(iout,*) "ATRISS",atriss
write(iout,*) "BTRISS",btriss