1 double precision function qwolynes(seg1,seg2,flag,seg3,seg4)
2 implicit real*8 (a-h,o-z)
4 include 'COMMON.IOUNITS'
6 include 'COMMON.INTERACT'
8 integer i,j,jl,k,l,il,kl,nl,np,ip,kp,seg1,seg2,seg3,seg4,
11 double precision dist,qm
12 double precision qq,qqij,qqijCM,dij,d0ij,dijCM,d0ijCM
13 logical lprn /.false./
15 double precision sigm,x
18 write (iout,*) "qwolynes: nperm",nperm," flag",flag,
19 & " seg1",seg1," seg2",seg2," nsep",nsep
28 d0ij=dsqrt((cref(1,jl,kkk)-cref(1,il,kkk))**2+
29 & (cref(2,jl,kkk)-cref(2,il,kkk))**2+
30 & (cref(3,jl,kkk)-cref(3,il,kkk))**2)
32 qqij = dexp(-0.5d0*((dij-d0ij)/(sigm(d0ij)))**2)
34 if (itype(il).ne.10 .or. itype(jl).ne.10) then
37 & (cref(1,jl+nres,kkk)-cref(1,il+nres,kkk))**2+
38 & (cref(2,jl+nres,kkk)-cref(2,il+nres,kkk))**2+
39 & (cref(3,jl+nres,kkk)-cref(3,il+nres,kkk))**2)
40 dijCM=dist(il+nres,jl+nres)
41 qqijCM = dexp(-0.5d0*((dijCM-d0ijCM)/(sigm(d0ijCM)))**2)
44 c write (iout,*) "il",il,itype(il)," jl",jl,itype(jl),
45 c & " qqiij",qqij," qqijCM",qqijCM
49 write (iout,*) "qwolynes: nl",nl
54 if((seg3-il).lt.3) then
61 d0ij=dsqrt((cref(1,jl,kkk)-cref(1,il,kkk))**2+
62 & (cref(2,jl,kkk)-cref(2,il,kkk))**2+
63 & (cref(3,jl,kkk)-cref(3,il,kkk))**2)
65 qqij = dexp(-0.5d0*((dij-d0ij)/(sigm(d0ij)))**2)
67 if (itype(il).ne.10 .or. itype(jl).ne.10) then
70 & (cref(1,jl+nres,kkk)-cref(1,il+nres,kkk))**2+
71 & (cref(2,jl+nres,kkk)-cref(2,il+nres,kkk))**2+
72 & (cref(3,jl+nres,kkk)-cref(3,il+nres,kkk))**2)
73 dijCM=dist(il+nres,jl+nres)
74 qqijCM = dexp(-0.5d0*((dijCM-d0ijCM)/(sigm(d0ijCM)))**2)
76 c write (iout,*) "il",il,itype(il)," jl",jl,itype(jl),
77 c & " qqiij",qqij," qqijCM",qqijCM
84 c write (iout,*) "qq",qq
88 c-------------------------------------------------------------------
89 subroutine qwolynes_prim(seg1,seg2,flag,seg3,seg4)
90 implicit real*8 (a-h,o-z)
92 include 'COMMON.IOUNITS'
93 include 'COMMON.CHAIN'
94 include 'COMMON.INTERACT'
97 integer i,j,jl,k,l,il,nl,seg1,seg2,seg3,seg4,
100 double precision dist
101 double precision dij,d0ij,dijCM,d0ijCM
102 logical lprn /.false./
104 double precision sigm,x,sim,dd0,fac,ddqij
107 write (iout,*) "qwolynes: flag",flag," seg1 seg1",seg1,seg2,
109 write (iout,*) "nperm",nperm
123 d0ij=dsqrt((cref(1,jl,kkk)-cref(1,il,kkk))**2+
124 & (cref(2,jl,kkk)-cref(2,il,kkk))**2+
125 & (cref(3,jl,kkk)-cref(3,il,kkk))**2)
127 sim = 1.0d0/sigm(d0ij)
130 fac = dd0*sim/dij*dexp(-0.5d0*dd0*dd0*sim)
132 ddqij = (c(k,il)-c(k,jl))*fac
133 dqwol(k,il)=dqwol(k,il)+ddqij
134 dqwol(k,jl)=dqwol(k,jl)-ddqij
136 if (itype(il).ne.10 .or. itype(jl).ne.10) then
139 & (cref(1,jl+nres,kkk)-cref(1,il+nres,kkk))**2+
140 & (cref(2,jl+nres,kkk)-cref(2,il+nres,kkk))**2+
141 & (cref(3,jl+nres,kkk)-cref(3,il+nres,kkk))**2)
142 dijCM=dist(il+nres,jl+nres)
143 sim = 1.0d0/sigm(d0ijCM)
146 fac=dd0*sim/dijCM*dexp(-0.5d0*dd0*dd0*sim)
148 ddqij = (c(k,il+nres)-c(k,jl+nres))*fac
149 dxqwol(k,il)=dxqwol(k,il)+ddqij
150 dxqwol(k,jl)=dxqwol(k,jl)-ddqij
154 write (iout,*) "prim il",il,itype(il)," jl",jl,itype(jl),
155 & " dqwol",(dqwol(k,il),k=1,3)," dxqwol",(dxqwol(k,il),k=1,3)
161 if((seg3-il).lt.3) then
168 d0ij=dsqrt((cref(1,jl,kkk)-cref(1,il,kkk))**2+
169 & (cref(2,jl,kkk)-cref(2,il,kkk))**2+
170 & (cref(3,jl,kkk)-cref(3,il,kkk))**2)
172 sim = 1.0d0/sigm(d0ij)
175 fac = dd0*sim/dij*dexp(-0.5d0*dd0*dd0*sim)
177 ddqij = (c(k,il)-c(k,jl))*fac
178 dqwol(k,il)=dqwol(k,il)+ddqij
179 dqwol(k,jl)=dqwol(k,jl)-ddqij
181 if (itype(il).ne.10 .or. itype(jl).ne.10) then
184 & (cref(1,jl+nres,kkk)-cref(1,il+nres,kkk))**2+
185 & (cref(2,jl+nres,kkk)-cref(2,il+nres,kkk))**2+
186 & (cref(3,jl+nres,kkk)-cref(3,il+nres,kkk))**2)
187 dijCM=dist(il+nres,jl+nres)
188 sim = 1.0d0/sigm(d0ijCM)
191 fac = dd0*sim/dijCM*dexp(-0.5d0*dd0*dd0*sim)
193 ddqij = (c(k,il+nres)-c(k,jl+nres))*fac
194 dxqwol(k,il)=dxqwol(k,il)+ddqij
195 dxqwol(k,jl)=dxqwol(k,jl)-ddqij
203 write (iout,*) "qwolynes: nl",nl
207 dqwol(j,i)=dqwol(j,i)/nl
208 dxqwol(j,i)=dxqwol(j,i)/nl
213 c-------------------------------------------------------------------
214 subroutine qwol_num(seg1,seg2,flag,seg3,seg4)
215 implicit real*8 (a-h,o-z)
217 include 'COMMON.IOUNITS'
218 include 'COMMON.CHAIN'
219 include 'COMMON.INTERACT'
221 integer seg1,seg2,seg3,seg4
223 double precision qwolan(3,0:maxres),cdummy(3,0:maxres2),
224 & qwolxan(3,0:maxres),q1,q2
225 double precision delta /1.0d-10/
228 q1=qwolynes(seg1,seg2,flag,seg3,seg4)
231 q2=qwolynes(seg1,seg2,flag,seg3,seg4)
232 qwolan(j,i)=(q2-q1)/delta
238 q1=qwolynes(seg1,seg2,flag,seg3,seg4)
239 cdummy(j,i+nres)=c(j,i+nres)
240 c(j,i+nres)=c(j,i+nres)+delta
241 q2=qwolynes(seg1,seg2,flag,seg3,seg4)
242 qwolxan(j,i)=(q2-q1)/delta
243 c(j,i+nres)=cdummy(j,i+nres)
246 c write(iout,*) "Numerical Q carteisan gradients backbone: "
248 c write(iout,'(i5,3e15.5)') i, (qwolan(j,i),j=1,3)
250 c write(iout,*) "Numerical Q carteisan gradients side-chain: "
252 c write(iout,'(i5,3e15.5)') i, (qwolxan(j,i),j=1,3)
256 c------------------------------------------------------------------------