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
25 if (itype(il).eq.ntyp1) cycle
27 if (itype(jl).eq.ntyp1) cycle
29 d0ij=dsqrt((cref(1,jl)-cref(1,il))**2+
30 & (cref(2,jl)-cref(2,il))**2+
31 & (cref(3,jl)-cref(3,il))**2)
33 qqij = dexp(-0.5d0*((dij-d0ij)/(sigm(d0ij)))**2)
35 if (itype(il).ne.10 .or. itype(jl).ne.10) then
38 & (cref(1,jl+nres)-cref(1,il+nres))**2+
39 & (cref(2,jl+nres)-cref(2,il+nres))**2+
40 & (cref(3,jl+nres)-cref(3,il+nres))**2)
41 dijCM=dist(il+nres,jl+nres)
42 qqijCM = dexp(-0.5d0*((dijCM-d0ijCM)/(sigm(d0ijCM)))**2)
45 c write (iout,*) "il",il,itype(il)," jl",jl,itype(jl),
46 c & " qqiij",qqij," qqijCM",qqijCM
50 write (iout,*) "qwolynes: nl",nl
55 if (itype(il).eq.ntyp1) cycle
56 if((seg3-il).lt.3) then
62 if (itype(jl).eq.ntyp1) cycle
64 d0ij=dsqrt((cref(1,jl)-cref(1,il))**2+
65 & (cref(2,jl)-cref(2,il))**2+
66 & (cref(3,jl)-cref(3,il))**2)
68 qqij = dexp(-0.5d0*((dij-d0ij)/(sigm(d0ij)))**2)
70 if (itype(il).ne.10 .or. itype(jl).ne.10) then
73 & (cref(1,jl+nres)-cref(1,il+nres))**2+
74 & (cref(2,jl+nres)-cref(2,il+nres))**2+
75 & (cref(3,jl+nres)-cref(3,il+nres))**2)
76 dijCM=dist(il+nres,jl+nres)
77 qqijCM = dexp(-0.5d0*((dijCM-d0ijCM)/(sigm(d0ijCM)))**2)
79 c write (iout,*) "il",il,itype(il)," jl",jl,itype(jl),
80 c & " qqiij",qqij," qqijCM",qqijCM
86 c write (iout,*) "qq",qq
90 c-------------------------------------------------------------------
91 subroutine qwolynes_prim(seg1,seg2,flag,seg3,seg4)
92 implicit real*8 (a-h,o-z)
94 include 'COMMON.IOUNITS'
95 include 'COMMON.CHAIN'
96 include 'COMMON.INTERACT'
99 integer i,j,jl,k,l,il,nl,seg1,seg2,seg3,seg4,
102 double precision dist
103 double precision dij,d0ij,dijCM,d0ijCM
104 logical lprn /.false./
106 double precision sigm,x,sim,dd0,fac,ddqij
109 write (iout,*) "qwolynes: flag",flag," seg1 seg1",seg1,seg2,
111 write (iout,*) "nperm",nperm
122 if (itype(il).eq.ntyp1) cycle
124 if (itype(jl).eq.ntyp1) cycle
126 d0ij=dsqrt((cref(1,jl)-cref(1,il))**2+
127 & (cref(2,jl)-cref(2,il))**2+
128 & (cref(3,jl)-cref(3,il))**2)
130 sim = 1.0d0/sigm(d0ij)
133 fac = dd0*sim/dij*dexp(-0.5d0*dd0*dd0*sim)
135 ddqij = (c(k,il)-c(k,jl))*fac
136 dqwol(k,il)=dqwol(k,il)+ddqij
137 dqwol(k,jl)=dqwol(k,jl)-ddqij
139 if (itype(il).ne.10 .or. itype(jl).ne.10) then
142 & (cref(1,jl+nres)-cref(1,il+nres))**2+
143 & (cref(2,jl+nres)-cref(2,il+nres))**2+
144 & (cref(3,jl+nres)-cref(3,il+nres))**2)
145 dijCM=dist(il+nres,jl+nres)
146 sim = 1.0d0/sigm(d0ijCM)
149 fac=dd0*sim/dijCM*dexp(-0.5d0*dd0*dd0*sim)
151 ddqij = (c(k,il+nres)-c(k,jl+nres))*fac
152 dxqwol(k,il)=dxqwol(k,il)+ddqij
153 dxqwol(k,jl)=dxqwol(k,jl)-ddqij
157 write (iout,*) "prim il",il,itype(il)," jl",jl,itype(jl),
158 & " dqwol",(dqwol(k,il),k=1,3)," dxqwol",(dxqwol(k,il),k=1,3)
164 if (itype(il).eq.ntyp1) cycle
165 if((seg3-il).lt.3) then
171 if (itype(jl).eq.ntyp1) cycle
173 d0ij=dsqrt((cref(1,jl)-cref(1,il))**2+
174 & (cref(2,jl)-cref(2,il))**2+
175 & (cref(3,jl)-cref(3,il))**2)
177 sim = 1.0d0/sigm(d0ij)
180 fac = dd0*sim/dij*dexp(-0.5d0*dd0*dd0*sim)
182 ddqij = (c(k,il)-c(k,jl))*fac
183 dqwol(k,il)=dqwol(k,il)+ddqij
184 dqwol(k,jl)=dqwol(k,jl)-ddqij
186 if (itype(il).ne.10 .or. itype(jl).ne.10) then
189 & (cref(1,jl+nres)-cref(1,il+nres))**2+
190 & (cref(2,jl+nres)-cref(2,il+nres))**2+
191 & (cref(3,jl+nres)-cref(3,il+nres))**2)
192 dijCM=dist(il+nres,jl+nres)
193 sim = 1.0d0/sigm(d0ijCM)
196 fac = dd0*sim/dijCM*dexp(-0.5d0*dd0*dd0*sim)
198 ddqij = (c(k,il+nres)-c(k,jl+nres))*fac
199 dxqwol(k,il)=dxqwol(k,il)+ddqij
200 dxqwol(k,jl)=dxqwol(k,jl)-ddqij
207 write (iout,*) "qwolynes: nl",nl
211 dqwol(j,i)=dqwol(j,i)/nl
212 dxqwol(j,i)=dxqwol(j,i)/nl
217 c-------------------------------------------------------------------
218 subroutine qwol_num(seg1,seg2,flag,seg3,seg4)
219 implicit real*8 (a-h,o-z)
221 include 'COMMON.IOUNITS'
222 include 'COMMON.CHAIN'
223 include 'COMMON.INTERACT'
225 integer seg1,seg2,seg3,seg4
227 double precision qwolan(3,0:maxres),cdummy(3,0:maxres2),
228 & qwolxan(3,0:maxres),q1,q2
229 double precision delta /1.0d-10/
232 q1=qwolynes(seg1,seg2,flag,seg3,seg4)
235 q2=qwolynes(seg1,seg2,flag,seg3,seg4)
236 qwolan(j,i)=(q2-q1)/delta
242 q1=qwolynes(seg1,seg2,flag,seg3,seg4)
243 cdummy(j,i+nres)=c(j,i+nres)
244 c(j,i+nres)=c(j,i+nres)+delta
245 q2=qwolynes(seg1,seg2,flag,seg3,seg4)
246 qwolxan(j,i)=(q2-q1)/delta
247 c(j,i+nres)=cdummy(j,i+nres)
250 c write(iout,*) "Numerical Q carteisan gradients backbone: "
252 c write(iout,'(i5,3e15.5)') i, (qwolan(j,i),j=1,3)
254 c write(iout,*) "Numerical Q carteisan gradients side-chain: "
256 c write(iout,'(i5,3e15.5)') i, (qwolxan(j,i),j=1,3)
260 c------------------------------------------------------------------------